2012年Blued上線,正值移動社交火爆之時,因爲Blued極具中國同志特點,大大填補了國內這一垂直領域的空白,很快贏得了大量用戶的青睞,上線以來一直維持着用戶量、在線時長的穩定高速增加。從誕生至今,Blued很快經歷了十萬、百萬、千萬的訪問級別,從最先的Web到數據庫的簡單架構,快速成長爲集羣化高可用架構,這正是Blued和UCloud工程技術團隊聯手打造的成功。前端
Blued是一款基於地理定位的交友程序,與國外流行的Grindr和Jack'd相似。大約70%用戶每個月至少登陸一次Blued,1/4用戶天天都會登陸。2014年,Blued的團隊已經擴張至 30人而Blued註冊用戶已超過200萬人,並於2014年2月得到了千萬元融資。數據庫
初創團隊各類人才都是緊缺的,全部研發力量都必須用在刀刃上,解決方案必須儘量簡單可靠,還要保證在用戶高速增加過程當中保持足夠的靈活性、穩定性和服務質量。而對於初創團隊,因爲初期服務容量很小,可貴有運維人才加入;但當面臨高速增加時,缺少運維人才帶來的技術瓶頸對工程技術團隊來是也是最煎熬的。segmentfault
目前Blued有數十臺雲主機,徹底基於UCloud底層服務搭建起具有高可用性的服務架構——而到目前爲之,Blued團隊依然只有3位服務端工程師,包攬了服務端開發、運維在內的一切工做。後端
如何爲「三高」產品快速搭建穩定底層架構?安全
Blued是高訪問量、高數據流、高交互性質的「三高」產品,所以須要堅固穩定的集羣底層進行維護和支撐,不能容忍單點故障。所以,咱們一開始就選定了CPU密集型、大內存、高I/O三類主機配置;咱們的集羣並非一開始就擁有數十臺雲主機來搭建底層集羣,這樣對咱們的成本壓力很大,所以一個快速擴容的彈性架構很是重要。如何作到快速?咱們把每一類服務都作好鏡像,能夠經過實現製做好的鏡像快速在集羣中添加服務器,實現分鐘級的服務擴容;此外,經過鏡像功能,集羣中單主機服務故障時能夠也能夠快速新增節點替換故障節點;服務器
事實上,Blued在初期確實經歷過服務單點不可橫向擴展的階段,那時最快的解決辦法是升級主機配置,UHost主機的CPU、內存、磁盤擴容很是簡單快捷,幾乎感受不到服務中斷。網絡
如何讓網絡層擁有「靈活」性?數據結構
對國內移動應用開發者來講,移動服務與傳統互聯網的最大不一樣就是網絡運營商的變化,以及由此帶來的訪問速度問題。咱們選擇了BGP機房,通過實地測試,2G/3G網絡下的訪問速度相比傳統雙線機房提高近20%;靈活設置的防火牆省去了逐臺配置IPTables的繁瑣,運維效率大大提高了;大量內容帶來的帶寬上升,Blued啓用「共享帶寬」經過疊加「帶寬包」實現帶寬的靈活快速擴容。架構
如何用簡單的方法解決「安全、可靠」問題?負載均衡
Blued在使用「共享帶寬」後,全部服務器外網IP都轉爲彈性IP(EIP),咱們使用了3個Nginx節點進行後端服務的流量接入和負載均衡,經過EIP綁定Nginx接入節點,能夠作到無需調整DNS便可更換出現故障的接入主機。此外EIP接入對靈活應對網絡攻擊很是有幫助,譬如遇到部分用戶沒法訪問某一IP的狀況(如網絡封禁等),能夠先換IP再作追查;高可用性也能夠經過EIP來實現,譬如單臺服務故障,能夠先新建服務從新綁定EIP,實現服務快速恢復,接下來再查問題。Blued同時也使用了內網彈性IP,做爲內部分佈式隊列的快速切換方案。
怎樣的方案能解決「高數據流」的問題?
Blued將關鍵的核心數據運行在UDB,數據庫集羣,快速增長從庫,快速升級配置,可視化操做實現從庫提高主庫;而UMem構成的NoSQL存儲支持大部分Redis協議的方案使得咱們能夠利用Redis高效的數據結構存儲的同時,還節省了運維成本;
此外,高性能I/O磁盤對高速用戶增加帶來了大量的新增圖片上傳很是有用。一般,每一個用戶每次刷新會查看20-40張縮略圖,如此頻繁的訪問,使得磁盤I/O很是容易成爲瓶頸,所以針對圖片這種頻繁讀寫小文件的應用場景,高性能I/O磁盤對於總體性能幫助很是大。
「透過靈活使用雲平臺服務,咱們真正實現了網絡層、前端服務層、後端服務、存儲都可以靈活可插拔、可擴展,實現真正的高可用性。對於創業者來講,成本是很重要的考慮因素。創業者不只要關注採購、人力所產生的實際成本,也須要關注服務運維、技術研究、問題解決等帶來的附加時間精力成本,然後者每每是隱形的、難以衡量、代價高昂的。下降隱形技術成本的關鍵因素,是選擇通過實踐檢驗的解決方案。咱們在發展過程當中考慮過衆多時下新技術,但最終倒是一個簡單的選擇——UCloud服務所具有的高度可運維性和優質的服務,在和阿里雲和騰訊雲的比較重中「獨樹一幟」,這是咱們所看中的。」Blued Calvin