您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

云服務(wù)架構(gòu)的演進(jìn)過(guò)程

大?。?/span>0.6 MB 人氣: 2017-10-10 需要積分:1
從應(yīng)用到平臺(tái) - 云服務(wù)架構(gòu)的演進(jìn)過(guò)程2016-07-12 15:48
  介紹
  MaxLeap早期是一家研發(fā)、運(yùn)營(yíng)移動(dòng)應(yīng)用和手機(jī)游戲公司,發(fā)展過(guò)程中積累了很多通用組件。這些組件很大程度幫公司在移動(dòng)研發(fā)過(guò)程中節(jié)省了時(shí)間和成本,有沒(méi)有可能以云服務(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接口,可以說(shuō)是非常普通的接口服務(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ù)概念
  常見(jiàn)的云服務(wù)有幾種方式。
  IaaS(Infrastructure as a Service),基礎(chǔ)設(shè)施即服務(wù)。提供云端的基礎(chǔ)設(shè)施為主,比如提供主機(jī)、存儲(chǔ)、網(wǎng)絡(luò)、CDN、域名解析等功能,知名廠商有阿里云、AWS、Azure等。
  PaaS(Platform),平臺(tái)即服務(wù)。提供云端的發(fā)布、數(shù)據(jù)庫(kù)服務(wù)、文件存儲(chǔ)、緩存服務(wù)、容器管理等基礎(chǔ)存儲(chǔ)和管理組件,自動(dòng)化了程序的配置、發(fā)布、管理–Heroku、Google App Engine、Force.com等。
  SaaS(Software as a Service),軟件即服務(wù)。提供云端的應(yīng)用服務(wù),ERP、HR、CRM等在線系統(tǒng),每個(gè)賬戶或者每家公司有獨(dú)立的數(shù)據(jù)存儲(chǔ),通過(guò)賬戶進(jìn)行權(quán)限和訪問(wèn)隔離,知名廠商有Salesforce、Successfactor、Zendesk等。
  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ù)。
  云服務(wù)架構(gòu)的演進(jìn)過(guò)程
  圖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)單但給力。
  云服務(wù)架構(gòu)的演進(jìn)過(guò)程
  圖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ù)訪問(wèn)接口。Redis作為緩存方案,支持多個(gè)shard水平擴(kuò)容,TPS高、性能好。Cassandra作為數(shù)據(jù)存儲(chǔ)引擎,無(wú)中心、可水平擴(kuò)展、易維護(hù),沒(méi)有專門的運(yùn)維人員,對(duì)研發(fā)人員非常友好,由于沒(méi)有事務(wù)場(chǎng)景,NoSQL完全滿足當(dāng)時(shí)的需求。RabbitMQ作為消息中間件方案,不同進(jìn)程間通信,支持HA,支持持久化。Zookeeper用于存儲(chǔ)基礎(chǔ)配置信息
  小結(jié)
  這種簡(jiǎn)單的設(shè)計(jì),有效支持了公司幾十款應(yīng)用的運(yùn)行,日訪問(wèn)量達(dá)數(shù)十億級(jí)別。統(tǒng)一后臺(tái)基礎(chǔ)服務(wù)和移動(dòng)端SDK后,提高了移動(dòng)應(yīng)用的研發(fā)和上線速度,研發(fā)了用戶管理、推送這些基礎(chǔ)功能,在移動(dòng)端幾行代碼搞定。通過(guò)控制臺(tái),能有效管理應(yīng)用和配置信息。其實(shí)對(duì)于多數(shù)十多個(gè)研發(fā)人員的公司來(lái)講,這樣的單應(yīng)用架構(gòu)性價(jià)比最高,解決商業(yè)上的問(wèn)題才是關(guān)鍵。
  也有不少需要改進(jìn)的地方,Cassandra作為業(yè)務(wù)數(shù)據(jù)的存儲(chǔ),查詢非常不靈活,依賴設(shè)計(jì)時(shí)對(duì)row key和composit key的精確把握,擴(kuò)展非常困難,再加上對(duì)翻頁(yè)、排序等支持有限,在數(shù)據(jù)層做了很多特殊處理。整個(gè)系統(tǒng)沒(méi)有脫單,Redis、Nginx還有單點(diǎn)問(wèn)題,脫單是高可用系統(tǒng)中首要需要解決的問(wèn)題。所有服務(wù)部署在一起,出問(wèn)題時(shí)相互影響,項(xiàng)目耦合度高,擴(kuò)展困難。開發(fā)效率低,發(fā)布新功能時(shí)相互依賴等,這些都是單用架構(gòu)設(shè)計(jì)最明顯的問(wèn)題。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?