千萬(wàn)融資與聯(lián)合國(guó)接見(jiàn) 移動(dòng)社交Blued背后技術(shù)支持
2012年Blued上線,正值移動(dòng)社交火爆之時(shí),由于Blued極具中國(guó)同志特色,大大填補(bǔ)了國(guó)內(nèi)這一垂直領(lǐng)域的空白,很快贏得了大量用戶的青睞,上線以來(lái)一直維持著用戶量、在線時(shí)長(zhǎng)的穩(wěn)定高速增長(zhǎng)。從誕生至今,Blued很快經(jīng)歷了十萬(wàn)、百萬(wàn)、千萬(wàn)的訪問(wèn)級(jí)別,從最早的Web到數(shù)據(jù)庫(kù)的簡(jiǎn)單架構(gòu),快速成長(zhǎng)為集群化高可用架構(gòu),這正是Blued和UCloud工程技術(shù)團(tuán)隊(duì)聯(lián)手打造的成功。
Blued是一款基于地理定位的交友程序,與國(guó)外流行的Grindr和Jack'd類似。大約70%用戶每月至少登錄一次Blued,1/4用戶每天都會(huì)登錄。2014年,Blued的團(tuán)隊(duì)已經(jīng)擴(kuò)張至 30人而Blued注冊(cè)用戶已超過(guò)200萬(wàn)人,并于2014年2月獲得了千萬(wàn)元融資。
初創(chuàng)團(tuán)隊(duì)各種人才都是緊缺的,所有研發(fā)力量都必須用在刀刃上,解決方案必須盡可能簡(jiǎn)單可靠,還要保證在用戶高速增長(zhǎng)過(guò)程中保持足夠的靈活性、穩(wěn)定性和服務(wù)質(zhì)量。而對(duì)于初創(chuàng)團(tuán)隊(duì),由于初期服務(wù)容量很小,難得有運(yùn)維人才加入;但當(dāng)面臨高速增長(zhǎng)時(shí),缺乏運(yùn)維人才帶來(lái)的技術(shù)瓶頸對(duì)工程技術(shù)團(tuán)隊(duì)來(lái)是也是最煎熬的。
“云平臺(tái)服務(wù)所提供的解決方案凝結(jié)了大量?jī)?yōu)秀運(yùn)維人才的長(zhǎng)期經(jīng)驗(yàn),這無(wú)疑對(duì)于我們這種初創(chuàng)團(tuán)隊(duì)來(lái)說(shuō)幫助是巨大的。將底層的難題統(tǒng)一交給更專業(yè)的人,是云服務(wù)能夠如此便捷的最重要原因之一。那么及時(shí)有效快速響應(yīng)就顯得必不可少。UCloud為Blued專門建立了7x24小時(shí)的服務(wù)小組,任何時(shí)候都能提供及時(shí)的咨詢響應(yīng)。不僅如此,在遇到一些緊急問(wèn)題的時(shí)候,也能非常及時(shí)地主動(dòng)通知我們,提前做好相應(yīng)的預(yù)案。”Blued CTO Calvin 這樣向我們闡述道。
目前Blued有數(shù)十臺(tái)云主機(jī),完全基于UCloud底層服務(wù)搭建起具備高可用性的服務(wù)架構(gòu)——而到目前為之,Blued團(tuán)隊(duì)依然只有3位服務(wù)端工程師,包攬了服務(wù)端開(kāi)發(fā)、運(yùn)維在內(nèi)的一切工作。
看看Blued是如何做到的。
1.如何為“三高”產(chǎn)品快速搭建穩(wěn)定底層架構(gòu)?
Blued是高訪問(wèn)量、高數(shù)據(jù)流、高交互性質(zhì)的“三高”產(chǎn)品,因此需要堅(jiān)固穩(wěn)定的集群底層進(jìn)行維護(hù)和支撐,不能容忍單點(diǎn)故障。因此,我們一開(kāi)始就選定了CPU密集型、大內(nèi)存、高I/O三類主機(jī)配置;我們的集群并不是一開(kāi)始就擁有數(shù)十臺(tái)云主機(jī)來(lái)搭建底層集群,這樣對(duì)我們的成本壓力很大,因此一個(gè)快速擴(kuò)容的彈性架構(gòu)非常重要。如何做到快速?我們把每一類服務(wù)都做好鏡像,可以通過(guò)實(shí)現(xiàn)制作好的鏡像快速在集群中添加服務(wù)器,實(shí)現(xiàn)分鐘級(jí)的服務(wù)擴(kuò)容;此外,通過(guò)鏡像功能,集群中單主機(jī)服務(wù)故障時(shí)可以也可以快速新增節(jié)點(diǎn)替換故障節(jié)點(diǎn);
事實(shí)上,Blued在初期確實(shí)經(jīng)歷過(guò)服務(wù)單點(diǎn)不可橫向擴(kuò)展的階段,那時(shí)最快的解決辦法是升級(jí)主機(jī)配置,UHost主機(jī)的CPU、內(nèi)存、磁盤擴(kuò)容非常簡(jiǎn)單快捷,幾乎感覺(jué)不到服務(wù)中斷。
2.如何讓網(wǎng)絡(luò)層擁有“靈活”性?
對(duì)國(guó)內(nèi)移動(dòng)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),移動(dòng)服務(wù)與傳統(tǒng)互聯(lián)網(wǎng)的最大不同就是網(wǎng)絡(luò)運(yùn)營(yíng)商的變化,以及由此帶來(lái)的訪問(wèn)速度問(wèn)題。我們選擇了BGP機(jī)房,經(jīng)過(guò)實(shí)地測(cè)試,2G/3G網(wǎng)絡(luò)下的訪問(wèn)速度相比傳統(tǒng)雙線機(jī)房提升近20%;靈活設(shè)置的防火墻省去了逐臺(tái)配置IPTables的繁瑣,運(yùn)維效率大大提升了;大量?jī)?nèi)容帶來(lái)的帶寬上升,Blued啟用“共享帶寬”通過(guò)疊加“帶寬包”實(shí)現(xiàn)帶寬的靈活快速擴(kuò)容。
3. 如何用簡(jiǎn)單的方法解決“安全、可靠”問(wèn)題?
Blued在使用“共享帶寬”后,所有服務(wù)器外網(wǎng)IP都轉(zhuǎn)為彈性IP(EIP),我們使用了3個(gè)Nginx節(jié)點(diǎn)進(jìn)行后端服務(wù)的流量接入和負(fù)載均衡,通過(guò)EIP綁定Nginx接入節(jié)點(diǎn),可以做到無(wú)需調(diào)整DNS即可更換出現(xiàn)故障的接入主機(jī)。此外EIP接入對(duì)靈活應(yīng)對(duì)網(wǎng)絡(luò)攻擊非常有幫助,譬如遇到部分用戶無(wú)法訪問(wèn)某一IP的情況(如網(wǎng)絡(luò)封禁等),可以先換IP再做追查;高可用性也可以通過(guò)EIP來(lái)實(shí)現(xiàn),譬如單臺(tái)服務(wù)故障,可以先新建服務(wù)重新綁定EIP,實(shí)現(xiàn)服務(wù)快速恢復(fù),接下來(lái)再查問(wèn)題。Blued同時(shí)也使用了內(nèi)網(wǎng)彈性IP,作為內(nèi)部分布式隊(duì)列的快速切換方案。
3.怎樣的方案能解決“高數(shù)據(jù)流”的問(wèn)題?
Blued將關(guān)鍵的核心數(shù)據(jù)運(yùn)行在UDB,數(shù)據(jù)庫(kù)集群,快速增加從庫(kù),快速升級(jí)配置,可視化操作實(shí)現(xiàn)從庫(kù)提升主庫(kù);而UMem構(gòu)成的NoSQL存儲(chǔ)支持大部分Redis協(xié)議的方案使得我們可以利用Redis高效的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的同時(shí),還節(jié)省了運(yùn)維成本;
此外,高性能I/O磁盤對(duì)高速用戶增長(zhǎng)帶來(lái)了大量的新增圖片上傳非常有用。通常,每個(gè)用戶每次刷新會(huì)查看20-40張縮略圖,如此頻繁的訪問(wèn),使得磁盤I/O非常容易成為瓶頸,因此針對(duì)圖片這種頻繁讀寫小文件的應(yīng)用場(chǎng)景,高性能I/O磁盤對(duì)于整體性能幫助非常大。
云平臺(tái)帶來(lái)的還有更多
“透過(guò)靈活使用云平臺(tái)服務(wù),我們真正實(shí)現(xiàn)了網(wǎng)絡(luò)層、前端服務(wù)層、后端服務(wù)、存儲(chǔ)都能夠靈活可插拔、可擴(kuò)展,實(shí)現(xiàn)真正的高可用性。對(duì)于創(chuàng)業(yè)者來(lái)說(shuō),成本是很重要的考慮因素。創(chuàng)業(yè)者不僅要關(guān)注采購(gòu)、人力所產(chǎn)生的實(shí)際成本,也需要關(guān)注服務(wù)運(yùn)維、技術(shù)研究、問(wèn)題解決等帶來(lái)的附加時(shí)間精力成本,而后者往往是隱形的、難以衡量、代價(jià)高昂的。降低隱形技術(shù)成本的關(guān)鍵因素,是選擇經(jīng)過(guò)實(shí)踐檢驗(yàn)的解決方案。我們?cè)诎l(fā)展過(guò)程中考慮過(guò)眾多時(shí)下新技術(shù),但最終卻是一個(gè)簡(jiǎn)單的選擇——UCloud服務(wù)所具備的高度可運(yùn)維性和優(yōu)質(zhì)的服務(wù),在和阿里云和騰訊云的比較重中“獨(dú)樹一幟”,這是我們所看中的。”Blued Calvin