淺談關(guān)于云服務(wù)架構(gòu)的演進(jìn)過程
大?。?/span>0.3 MB 人氣: 2017-10-10 需要積分:1
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:云服務(wù)架構(gòu)(1576)
摘要:MaxLeap從一個(gè)對(duì)內(nèi)的私有云服務(wù)平臺(tái),發(fā)展到對(duì)外服務(wù)的BaaS平臺(tái),其功能覆蓋了移動(dòng)領(lǐng)域開發(fā)、運(yùn)營(yíng)的完整服務(wù)鏈,近期還會(huì)推出PaaS服務(wù)。在這個(gè)過程中,支撐整個(gè)平臺(tái)的基礎(chǔ)架構(gòu)也在不斷演進(jìn)。本文結(jié)合了云平臺(tái)的業(yè)務(wù)發(fā)展,介紹基礎(chǔ)架構(gòu)演進(jìn)過程的主要思路、遇到的難題、用到的開源技術(shù)和未來的規(guī)劃。前言
MaxLeap早期是一家研發(fā)、運(yùn)營(yíng)移動(dòng)應(yīng)用和手機(jī)游戲公司,發(fā)展過程中積累了很多通用組件。這些組件很大程度幫公司在移動(dòng)研發(fā)過程中節(jié)省了時(shí)間和成本,有沒有可能以云服務(wù)的方式開放出去,創(chuàng)造更大的價(jià)值?延續(xù)這個(gè)思路,公司成立了云服務(wù)部門,嘗試服務(wù)的商業(yè)化。
從對(duì)內(nèi)提供接口服務(wù)到對(duì)外提供云服務(wù),經(jīng)歷了三個(gè)階段發(fā)展:1.0時(shí)代,定位對(duì)內(nèi)服務(wù),為公司研發(fā)的幾十款應(yīng)用提供服務(wù)端功能,推送、統(tǒng)一用戶管理等API接口,可以說是非常普通的接口服務(wù);2.0時(shí)代,定位對(duì)外服務(wù),除了支撐公司的移動(dòng)研發(fā)以外,同時(shí)對(duì)外開放服務(wù),提供更多的功能接口,也參考了行業(yè)的通用做法,形成了針對(duì)移動(dòng)研發(fā)加速和提高運(yùn)營(yíng)效率的BaaS云平臺(tái);3.0時(shí)代,定位基礎(chǔ)研發(fā)平臺(tái),工具鏈逐漸完整,從研發(fā)、上線、運(yùn)維到運(yùn)營(yíng),提供應(yīng)用管理、支付、IM、推送等SaaS功能,也提供托管、發(fā)布、監(jiān)控、日志等PaaS功能,逐步形成SaaS + PaaS的研發(fā)平臺(tái)。
云服務(wù)概念
常見的云服務(wù)有幾種方式:
1. IaaS(Infrastructure as a Service),基礎(chǔ)設(shè)施即服務(wù)。提供云端的基礎(chǔ)設(shè)施為主,比如提供主機(jī)、存儲(chǔ)、網(wǎng)絡(luò)、CDN、域名解析等功能,知名廠商有阿里云、AWS、Azure等;
2. PaaS(Platform),平臺(tái)即服務(wù)。提供云端的發(fā)布、數(shù)據(jù)庫服務(wù)、文件存儲(chǔ)、緩存服務(wù)、容器管理等基礎(chǔ)存儲(chǔ)和管理組件,自動(dòng)化了程序的配置、發(fā)布、管理,有Heroku、Google App Engine、Force.com等;
3. SaaS(Software as a Service),軟件即服務(wù)。提供云端的應(yīng)用服務(wù),ERP、HR、CRM等在線系統(tǒng),每個(gè)賬戶或者每家公司有獨(dú)立的數(shù)據(jù)存儲(chǔ),通過賬戶進(jìn)行權(quán)限和訪問隔離,知名廠商有Salesforce、Successfactor、Zendesk等;
4. BaaS(Backen as a Service),后端即服務(wù),起初專指針對(duì)移動(dòng)端研發(fā)提供的云服務(wù),降低移動(dòng)研發(fā)的復(fù)雜度,讓開發(fā)者關(guān)注與移動(dòng)端開發(fā)即可。流行的服務(wù)有幾大類:綜合類:Parse、Kinvey;分析類:友盟、TalkingData、神策數(shù)據(jù);支付類:Beecloud、Ping++;IM類:環(huán)信、網(wǎng)易;消息類:極光、個(gè)推等。
我們?cè)?.0時(shí)代把自己定位于BaaS,隨著功能的不斷演進(jìn)3.0著眼于PaaS和SaaS。
1.0 單應(yīng)用架構(gòu)
背景
當(dāng)時(shí)公司有幾十款A(yù)pp需要研發(fā)和運(yùn)營(yíng),每個(gè)應(yīng)用功能各異,種類包括瀏覽器、音視頻工具、社交工具、清理大師、圖片存儲(chǔ)類和手游等,門類很多、很雜。如何提高研發(fā)效率,實(shí)現(xiàn)一套統(tǒng)一的研發(fā)、管理和運(yùn)營(yíng)體系,是當(dāng)時(shí)的主要訴求。對(duì)主要功能進(jìn)行梳理之后發(fā)現(xiàn),各類應(yīng)用共同需要依賴的組件包括,用戶體系、云參數(shù)體系、推送服務(wù)、數(shù)據(jù)存儲(chǔ)和廣告服務(wù)。

圖1 1.0業(yè)務(wù)模型
需求基本明確后,目標(biāo)是快速上線,然后小版本迭代。
設(shè)計(jì)
當(dāng)時(shí)4個(gè)后端研發(fā)人員,Java出身,人少但是技術(shù)精干。結(jié)合團(tuán)隊(duì)情況和產(chǎn)品需求,決定采用如下架構(gòu),簡(jiǎn)單但給力。

圖2 1.0架構(gòu)
典型的Web應(yīng)用架構(gòu)方式,使用Nginx做反向代理和負(fù)載均衡,后面跟了多個(gè)JVM實(shí)例。每個(gè)JVM實(shí)例由Jetty作為應(yīng)用服務(wù)器,提供REST接口,服務(wù)層實(shí)現(xiàn)具體的邏輯。DAL層對(duì)DB和緩存進(jìn)行封裝,提供統(tǒng)一的數(shù)據(jù)訪問接口。Redis作為緩存方案,支持多個(gè)shard水平擴(kuò)容,TPS高、性能好。Cassandra作為數(shù)據(jù)存儲(chǔ)引擎,無中心、可水平擴(kuò)展、易維護(hù),沒有專門的運(yùn)維人員,對(duì)研發(fā)人員非常友好,由于沒有事務(wù)場(chǎng)景,NoSQL完全滿足當(dāng)時(shí)的需求。RabbitMQ作為消息中間件方案,不同進(jìn)程間通信,支持HA,支持持久化。Zookeeper用于存儲(chǔ)基礎(chǔ)配置信息。
小結(jié)
這種簡(jiǎn)單的設(shè)計(jì),有效支持了公司幾十款應(yīng)用的運(yùn)行,日訪問量達(dá)數(shù)十億級(jí)別。統(tǒng)一后臺(tái)基礎(chǔ)服務(wù)和移動(dòng)端SDK后,提高了移動(dòng)應(yīng)用的研發(fā)和上線速度,研發(fā)了用戶管理、推送這些基礎(chǔ)功能,在移動(dòng)端幾行代碼搞定。通過控制臺(tái),能有效管理應(yīng)用和配置信息。其實(shí)對(duì)于多數(shù)十多個(gè)研發(fā)人員的公司來講,這樣的單應(yīng)用架構(gòu)性價(jià)比最高,解決商業(yè)上的問題才是關(guān)鍵。
也有不少需要改進(jìn)的地方,Cassandra作為業(yè)務(wù)數(shù)據(jù)的存儲(chǔ),查詢非常不靈活,依賴設(shè)計(jì)時(shí)對(duì)row key和composit key的精確把握,擴(kuò)展非常困難,再加上對(duì)翻頁、排序等支持有限,在數(shù)據(jù)層做了很多特殊處理。整個(gè)系統(tǒng)沒有脫單,Redis、Nginx還有單點(diǎn)問題,脫單是高可用系統(tǒng)中首要需要解決的問題。所有服務(wù)部署在一起,出問題時(shí)相互影響,項(xiàng)目耦合度高,擴(kuò)展困難。同時(shí),開發(fā)效率低,發(fā)布新功能時(shí)相互依賴等,這些都是單用架構(gòu)設(shè)計(jì)最明顯的問題。
2.0 服務(wù)化架構(gòu)
背景
隨著業(yè)務(wù)不斷發(fā)展以及新的產(chǎn)品定位,單應(yīng)用架構(gòu)的弊端不斷暴露出來,要求我們?cè)谛碌囊?guī)劃中,重新設(shè)計(jì)整個(gè)后端架構(gòu)。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%