技术驱动越来越成为企业打造核心竞争力的标准战略。日前,百合网CTO杨溢欣接受《腾讯云会客厅》及CSDN记者采访,介绍了百合网在云计算、大数据、机器学习方面的技术实践和心得,以及未来的一些规划。
百合网是一家实名认证的婚恋网站,创立至今十年,目前注册用户9500万。担任百合网CTO的杨溢欣,负责百合网的线上技术,以及部分项目的产品、运营等工作,下辖团队成员100多人,包括客户端、服务端的研发工程师,算法研究员,测试、运维团队,产品、运营团队等。
目前,百合网在探索如何将品牌扩展到整个婚恋生态圈,除了婚纱照、婚礼、情感咨询、婚介等,甚至还有金融、理财、婚礼成本相关的规划。
业务的快速扩张也意味着技术部门的新挑战。杨溢欣认为,对于百合网,基于良好的技术视野设计架构、采用敏捷开发控制进度、优化团队间沟通等方面都很重要。基于公司亿级的用户群和婚恋产业链领导者的定位,百合网技术部门强调数据驱动,要求团队勇于创新:
目标的实现并不容易。具体而言,挑战主要来自以下几个方面:
问题的最终解决,也意味着云计算和大数据技术从开始探索到成熟应用。杨溢欣将百合网解决问题的技术架构分三个阶段:
业务决定技术的架构,业务变更频繁,技术与业务的耦合度很高,但是很少的人就可以维护一个大型业务;
分层分平台的架构,将共性功能抽象成组件,多个组件组成平台,与业务层分离,这样前端业务开发更灵活,后端管理也集中,可以做到服务治理,业务负载随时可扩容;
大数据及虚拟化的架构,数据体量促使架构必须升级,基于大数据的计算融汇到各个业务中,系统部署的复杂度增大,所以采用虚拟化技术,实现程序构建,打包,发布,部署,容错自动化,基础层引入云,实现弹性部署。
在杨溢欣看来,云计算在最近两三年已经进入成熟期,现在的云计算可以成为开展新业务的很好的技术平台,成为百合网婚恋生态圈的一个基石。
百合网各种业务的发展非常快,对快速部署、对可扩展性的要求非常高。云计算支持极快地完成从开发到部署的工作,能聚焦到真正的算法、架构上,不用太操心底层的东西。
云计算提供一种很灵活地分配资源的方式,特别是新的业务开始的时候,可以先分配一些比较小的资源,随着业务的扩张,可以迅速扩展到很大的服务容量,既可以优化成本结构,又无需担心突发的高并发流量导致业务中断。
云计算可以说是成长型公司业务发展的一个基石,会为运维和各种算法、技术上的实现提供很扎实的基础,在未来的三到五年之内,绝大部分的互联网应用且使用云计算。
实践阶段,综合考虑技术稳定性、服务品质、成本、主机以外的附加服务等因素,百合网调研测试过国内外所有主流的云计算技术,最终认为腾讯云能提供稳定的技术、高质量的服务,综合水平位于行业的顶级位置。另一方面,百合网经营多年,已经有大量的服务器、存储资源以及数据,所以需要对混合云部署和应用的支持。
腾讯云发布的“黑石”产品非常适合已有大量托管服务器、又希望拥抱云计算的公司。此外腾讯还开放了内部使用的一些技术和基础设施,以及一些SaaS服务。由于腾讯和百合都是社交类应用,面对类似的技术问题,我们的技术和基础设施复用很方便,比如IM消息、安全、反垃圾、多媒体、CDN等方面都有合作。
在杨溢欣看来,腾讯云的一个特色是社交出身,百合也是做社交出身的,所以双方应用的底层有一部分技术是相通的。以CDN为例,腾讯有大量看图片跟视频的需求,百合也是一样,腾讯在全国布了大量的节点,终端节点离用户是很近,将节点以及积累的图片/视频加速技术开放出来成为CDN服务,既可以节约成本,也可以为用户提供更好的网络。
当然,由于具体业务的差异性,上云的挑战不可避免,这就需要云服务团队专业的技术支持。杨溢欣介绍了两个例子。
在最早讨论云服务迁移方案时,百合网发现考虑到已有服务器和托管机房,引入云服务时在网络架构上有很大的挑战——可能导致增加大量成本、或者导致网络品质下降,并增加单点故障率。百合网要求整个迁移过程稳定、可逆,保证现场出问题可以回滚。后来双方的架构师开了一天会,做头脑风暴,并在深夜确定了一套稳健而高效的方案,其中的部分需求也融入到了腾讯云后来的产品里。
百合网使用了腾讯云的CDN服务,以让全国各地都能有最快的网络连接速度。而同时,百合使用了WebP压缩编码,其效率比传统的JPEG高30%。但WebP格式比较新,腾讯云一开始并不支持。双方又一次技术合作,腾讯云在很短的时间内完成了相关的开发、支持和部署。解决这些挑战,不仅提升了百合的服务质量和开发效率,也通过腾讯云的技术演进,对所有的互联网公司提供了潜在的便利。
从与腾讯云的合作结果,百合网认为,腾讯云是一家独特的云计算技术提供商,有独特的一套技术体系,特别是社交相关的技术,能够为创业的公司会做各种各样的功能,同时也具有专业的团队和服务。
对于企业如何选择云计算技术,杨溢欣认为,最好的办法是参考各种互联网公司公开的架构,仔细思考这些架构设计的原理。因为云计算的架构跟传统的架构是不太一样的,一般传统的书或者是讲座会稍微偏落后一些,一定要看一下最新的公司,特别是创业公司,因为创业公司是最早拥抱云计算的公司,在一、两年之内快速地起来,他们的架构实现对创业公司很有帮助的。
而对于云计算技能的提升以及云计算问题的解决,杨溢欣表示,可以去参加云计算服务商的开发者大会,会有很多过来人分享在云计算使用过程的架构,以及实施中遇到的很多问题,这对于技术选型和问题解决来说都会有启发。
大数据对于百合网的作用,杨溢欣用iOS之于苹果的重要性来类比。百合网提出的心灵匹配算法(可以看到两个人心灵的契合程度),不仅仅是一个心理学模型,更是一个算法模型。然而,婚恋不同于电商,要求你情我愿,双向匹配的实现难度更高。
“心灵匹配算法”是基于百合网与北师大心理学院、中科院心理所、北京大学人格与社会心理学研究所多年的研究成果,集合机器智能学习理论,基于中国用户的心理特征、兴趣爱好以及海量行为数据,采用聚类算法结合协同过滤算法搭建的心灵匹配智能推荐引擎。
杨溢欣认为,婚恋匹配的难度是电商推荐难度的平方:如果电商基于user、item推荐成功的概率是P,则双向匹配成功的概率则是P*P。此外,电商推荐的item是严重冷热不均的,而百合需要保证item的被推荐次数处于冷热合理的区间。
对百合网来说,对用户匹配的难度和技术含量相当高。所以我们采用了一些很大量的大数据的数据挖掘和机器学习的手段,比如说我们的用户属性,直接提供的用户属性共有160多项,加上用户行为分析得出来的数据,可能是1000项左右的数,每个用户有这样的属性,包括有大量的用户行为。我们尝试这些用户行为和属性,为用户寻找到最匹配的另一半。
百合网的算法需要考虑基本的用户画像、单向推荐模型(即经典的user/item推荐,基于用户属性和用户行为),用户的活跃、沟通方式模型(基于用户行为),双方成功建立联系的模型(基于行为与一部分属性),以及用户对收发信的偏好模型等等因素。其中一部分环节可以参考标准、流行的模型,比如“单向推荐”模型结合了协同过滤、决策树等。有一部分技术是独特的,百合网正在申请专利。
谈及数据的预处理的挑战和处理,杨溢欣介绍:一来百合一直在做新功能和产品体验的改进,导致不同时期,用户的特征和行为会有天然的区别;二来百合有将近一亿用户,用户的性别、年龄段、职业和受教育程度等都决定了有不同的用户诉求和使用习惯。所以在处理的时候要采用一些分类器和离群点检测的方法,结合信息熵,针对性的调整数据、采样方式和模型。
在深度学习方面,百合网也尝试了一些应用,目前主要是在图像领域,人脸识别、匹配等等,这是DL非常擅长的领域,他认为这些对婚恋应用来讲也很重要。百合网尝试了人脸识别和人脸打分,供择偶参考,同时还有美颜的尝试(取代PS),不过需要保证让网友可控,并保证不会太失真。
另外,百合网也正在设计将深度学习应用于自然语言文本方面的一些工作。杨溢欣介绍,婚恋匹配方面,深度学习处于原理论证阶段,因为涉及到的特征比较具体,并且需要考虑社会学、心理学和产品体验的一些问题。
大数据架构,百合网基于开源的Hadoop体系,包括HDFS、YARN、MapReduce、HBase、Hive、Pig等,实时处理的部分用Spark,这和流行的框架基本一致。
事实上,百合网使用的大部分基础设施都来自开源项目,也都是业界流行的,从LVS、HAProxy、MongoDB、Redis、Kafka、ZooKeeper、Spark、Mahout到Hadoop的一套东西,等等。正在引入Docker,最近还关注在深度学习中使用Google新开源的TensorFlow。
此外,百合网也在探索公有云上的大数据。杨溢欣认为,公有云上的大数据分析系统是非常有前途的,因为理论上讲它可以让计算和负载均匀很多,并采用专用硬件,形成较大的成本优势,还能通过弹性服务提供更快的速度和扩展性。
不过云上的大数据系统需要更加成熟——百合网在试用中发现包括AWS的EMR在内,稳定性、特别是使用较长时间之后的性能都有进步空间。
2016年初,百合网还投资了一家叫做兰亭数字的VR公司,希望让VR技术在婚恋行业之中得到应用。百合网认为,VR技术在婚恋体验上有更深一层的效果,例如婚礼全景记录,会很好的一个效果。这同样对基础IT提出更多的需求。
百合网现在的发展目标是做好婚恋全产业链,从恋爱到婚姻,有非常多的线上线下用户需求,需要围绕大数据,提供敏捷、高弹性的技术架构。既有性能、数据量、计算量方面的要求,又需要保证研发速度。既需要控制成本,又需要高可扩展性。这其实是云计算比较擅长的事情。
杨溢欣表示,百合网对云计算有比较高的期望。套用“面向方面”的概念,希望一些公用的、可伸缩的应用层功能可以通过SaaS等方式更多的提供出来,百合愿意与腾讯共同开发。这样可以让互联网应用开发专注于其独特的技术部分,敏捷、快速、稳定、高效,提高整个行业的生产效率。