實例分析關于百合網的混合云、大數據與機器學習實踐
大小:0.5 MB 人氣: 2017-10-10 需要積分:1
目標與挑戰
百合網是一家實名認證的婚戀網站,創立至今十年,目前注冊用戶9500萬。擔任百合網CTO的楊溢欣,負責百合網的線上技術,以及部分項目的產品、運營等工作,下轄團隊成員100多人,包括客戶端、服務端的研發工程師,算法研究員,測試、運維團隊,產品、運營團隊等。
目前,百合網在探索如何將品牌擴展到整個婚戀生態圈,除了婚紗照、婚禮、情感咨詢、婚介等,甚至還有金融、理財、婚禮成本相關的規劃。
業務的快速擴張也意味著技術部門的新挑戰。楊溢欣認為,對于百合網,基于良好的技術視野設計架構、采用敏捷開發控制進度、優化團隊間溝通等方面都很重要。基于公司億級的用戶群和婚戀產業鏈領導者的定位,百合網技術部門強調數據驅動,要求團隊勇于創新:
用快速、敏捷的方式完成產品需求,并注意各種技術積累,以讓各功能、算法和模塊在不同的項目里可以復用,提升開發效率;通過技術驅動的方式,嘗試在婚戀、情感這種領域,用互聯網、機器學習、多媒體的技術去創新。
目標的實現并不容易。具體而言,挑戰主要來自以下幾個方面:
用戶量大、活躍度高引起的各種服務器的性能和穩定性問題,尤其是雙11、情人節這樣的時間節點;作為嚴肅交友應用,用戶畫像、匹配度和雙向選擇相關的算法問題;產品需求的快速迭代問題。
問題的最終解決,也意味著云計算和大數據技術從開始探索到成熟應用。楊溢欣將百合網解決問題的技術架構分三個階段:
業務決定技術的架構,業務變更頻繁,技術與業務的耦合度很高,但是很少的人就可以維護一個大型業務;
分層分平臺的架構,將共性功能抽象成組件,多個組件組成平臺,與業務層分離,這樣前端業務開發更靈活,后端管理也集中,可以做到服務治理,業務負載隨時可擴容;
大數據及虛擬化的架構,數據體量促使架構必須升級,基于大數據的計算融匯到各個業務中,系統部署的復雜度增大,所以采用虛擬化技術,實現程序構建,打包,發布,部署,容錯自動化,基礎層引入云,實現彈性部署。
百合網混合云實踐
在楊溢欣看來,云計算在最近兩三年已經進入成熟期,現在的云計算可以成為開展新業務的很好的技術平臺,成為百合網婚戀生態圈的一個基石。
百合網各種業務的發展非常快,對快速部署、對可擴展性的要求非常高。云計算支持極快地完成從開發到部署的工作,能聚焦到真正的算法、架構上,不用太操心底層的東西。
云計算提供一種很靈活地分配資源的方式,特別是新的業務開始的時候,可以先分配一些比較小的資源,隨著業務的擴張,可以迅速擴展到很大的服務容量,既可以優化成本結構,又無需擔心突發的高并發流量導致業務中斷。
云計算可以說是成長型公司業務發展的一個基石,會為運維和各種算法、技術上的實現提供很扎實的基礎,在未來的三到五年之內,絕大部分的互聯網應用且使用云計算。
技術選型
實踐階段,綜合考慮技術穩定性、服務品質、成本、主機以外的附加服務等因素,百合網調研測試過國內外所有主流的云計算技術,最終認為騰訊云能提供穩定的技術、高質量的服務,綜合水平位于行業的頂級位置。另一方面,百合網經營多年,已經有大量的服務器、存儲資源以及數據,所以需要對混合云部署和應用的支持。
騰訊云發布的“黑石”產品非常適合已有大量托管服務器、又希望擁抱云計算的公司。此外騰訊還開放了內部使用的一些技術和基礎設施,以及一些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在內,穩定性、特別是使用較長時間之后的性能都有進步空間。
未來:支持婚戀VR的探索
2016年初,百合網還投資了一家叫做蘭亭數字的VR公司,希望讓VR技術在婚戀行業之中得到應用。百合網認為,VR技術在婚戀體驗上有更深一層的效果,例如婚禮全景記錄,會很好的一個效果。這同樣對基礎IT提出更多的需求。
百合網現在的發展目標是做好婚戀全產業鏈,從戀愛到婚姻,有非常多的線上線下用戶需求,需要圍繞大數據,提供敏捷、高彈性的技術架構。既有性能、數據量、計算量方面的要求,又需要保證研發速度。既需要控制成本,又需要高可擴展性。這其實是云計算比較擅長的事情。
楊溢欣表示,百合網對云計算有比較高的期望。套用“面向方面”的概念,希望一些公用的、可伸縮的應用層功能可以通過SaaS等方式更多的提供出來,百合愿意與騰訊共同開發。這樣可以讓互聯網應用開發專注于其獨特的技術部分,敏捷、快速、穩定、高效,提高整個行業的生產效率。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%