基於PaaS和SaaS研發的商業雲平臺實戰 轉 (從此全部的IT行業會持續集成,往虛擬化方向更快更深的發展,商業化纔是這些技術的最終目的)

封面

背景介紹

SaaS、PaaS、IaaS等雲服務模式已經被你們廣泛承認,在研發過程當中借力一些PaaS和SaaS平臺,可以提高產品的研發速度和功能穩定程度。本文將經過真實的商業平臺案例-MaxWon研發實戰,分享一下咱們在項目研發過程使用SaaS和PaaS服務的技術要點和心得。 MaxLeap是一個爲企業提供移動業務研發與運營的一站式雲服務平臺,提供雲數據庫、雲容器、雲代碼等PaaS服務,雲支付、雲即時通訊、雲社交、雲分析、雲參數、推送營銷等SaaS服務。git

案例介紹

先介紹實踐的案例,MaxWon一站式移動營銷平臺,案例有以下特色。shell

快速搭建全網營銷平臺

可以提供20多個營銷模塊靈活組合,個性化配置風格和首屏,一鍵生成App + 微信商城 + PC網站。數據庫

全網多渠道營銷

可以讓營銷人員同時在App,微信商城,手機網站,PC網站平臺展開營銷,提高企業的業績。api

一站式管理,最小運營成本

有統一後臺,同時管理多端營銷,使用最小人員配置,得到最大運營效率。數組

數據驅動運營

提供多維度運營分析,快速反饋運營效果,數據驅動高效運營。緩存

精準營銷,高效轉化

大數據分析全面洞悉客戶消費行爲,精準廣告投放,提高銷售轉化。安全

案例模型

整個案例項目由「三端四平臺」組成。「三端」指創做端、管理端和服務端。創做端負責生成各個平臺應用,包括Android、iOS、網站、微官網。管理端用於管理應用、用戶、權限, 管理後臺數據和重要的信息設置等。服務端提供移動應用和後臺管理所需的全部的API接口。「四平臺「指iOS、Android、微信和移動官網。商戶經過創做端生成各端應用和網站,營銷和管理人員經過管理端運營和管理後臺數據, 造成了製做、運營、營銷的閉環。服務器

案例模型

接下來咱們一塊兒梳理下功能需求。創做端須要包含模板管理、佈局管理、配置管理、構建應用等功能。管理端須要包含用戶組織、權限、帳戶、數據、設置管理等功能。 組件服務部分,須要提供三大類別的服務,覆蓋電商、設計、營銷領域的二十多個功能組件。微信

功能需求

接着梳理下架構上的需求,着重從數據和服務兩個角度來看。數據對於商戶相當重要,也是用戶最關注的點,由於是多租戶系統,商戶的數據首先要作到隔離,而且當商戶規模不斷擴大時可以支持不斷的擴容, 對於個別商戶有數據遷出需求的也須要知足。服務是另一個要點,如何在確保商戶間服務不相互影響的前提下,合理控制資源,下降用戶成本,是咱們面臨的挑戰。服務需同時支持多租戶共享模式、單租戶獨享模式、私有部署。網絡

其它方面也有些要求,時間上,須要3個月左右上線運行,上線後可以快速迭代新功能。安全上,要支持數據容災、傳輸加密、防止一些基層的網絡攻擊。

方案介紹

瞭解完需求後,就是方案選型階段。實現這樣的SaaS系統面臨兩種選擇,一種方案是全部功能獨立研發,保障整個系統的可控和靈活性。另外一種方案是借力PaaS或者SaaS服務,提升研發速度,利用SaaS/PaaS的自適應、安全、專業等優點,下降研發難度和成本。

方案選擇

肯定實施的最終方案如圖所示,獨立研發部分包括,創做端、管理端和服務端的多數電商類服務。確保核心業務系統的靈活性和可控程度,這部分功能的特色是業務具體、需求繁瑣、定製性比較強。經過調用後發現,沒有成熟的方案能直接知足項目需求, 而且這部分需求也會根據市場反應作出適當調整,所以保證研發的靈活和可控度很是重要。 使用的SaaS服務包括,即時通信、推送、支付、客服系統、統計分析和社交/圈子等,這部分功能的特色是需求普遍存在,也有公認統一比較成熟的解決方案,單獨實現卻要花費不小精力,而且通用和擴展性很難作到很是成熟的程度,經過集成第三方SDK和API接口可以知足研發需求。 使用的PaaS服務包括,MySQL雲數據庫、MongoDB雲數據庫,使用統一的數據訪問層,研發人員能夠無需考慮數據庫的底層架構、可用性、擴展等問題,徹底透明,將精力專一在項目研發便可。

MaxWon實現

總體架構如圖,研發重點爲藍色部分,MaxWon的API層和業務邏輯層。API層整合MaxWon的服務和MaxLeap的SaaS服務,實現具體接口功能,提供給各個終端,主要是各類接口業務實現,工做量大、業務需求多。 MaxWon的服務層,整合MaxLeap PaaS和SaaS的功能,並實現具體的業務需求。基礎存儲、緩存、全文檢索、大數據計算由MaxLeap雲的PaaS和SaaS服務提供。從架構圖中能夠發現,PaaS服務標準化了MongoDB、MySQL、緩存、隊列等複雜的存儲系統, SaaS服務封裝了大數據計算,Hadoop、Spark等複雜的計算系統。整個項目在實現的過程當中,專一於業務模塊的研發便可,節省了去研發、研究這些基礎組件的時間和資源。

總體架構

關鍵設計

爲何存儲可以作到隔離、擴展

先看架構圖,咱們的數據庫服務器主要採用兩種。事物依賴或者強一致性要求的數據,用MySQL來存儲。用戶的數據庫訪問請求通過負載均衡和代理,到達目標數據庫服務器和對應DB。 MySQL和MongoDB均是相似,差異在於MySQL和MongoDB的集羣組織方式差異比較大。MySQL採用主備讀寫分離方式,咱們經過MHA實現集羣的高可用和Master節點的監控、故障自動轉移,大型應用採用代理加數據分片。 MongoDB採用複製集方式,一個集羣的最小組成是一個Master節點、一個Slave節點和一個Arbiter節點,一般狀況下Master承擔讀寫任務,經過oplog保證數據的最終一致性,Slave和Arbiter保證了系統的高可用和故障自動轉移。 大型應用採用Mongos、MongoConfig和數據分片方案。 設計上遵循三個設計原則:第一個原則,一應用一庫;第二個原則,一庫一帳戶;第三個原則用戶需求分級。經過分庫將數據在物理上隔離,且方便擴展和遷移。 經過一庫一帳戶原則,區分數據的訪問權限。經過用戶需求分級,規模比較小的用戶能夠共享數據庫服務器資源,規模慢慢增大時,能夠獨享資源,繼續增大是能夠獨享更多的服務器資源。

存儲隔離

PaaS服務對數據接入進行了抽象。商戶規模小的時候,使用共享的數據庫資源,經過代理層控制數據請求的服務器,規模慢慢擴大後,使用獨立的數據資源。咱們經過自研的數據遷移工具,實現數據的平滑遷移。 MySQL實現的代理叫Circe,徹底兼容MySQL5.7版本協議。MongoDB代理叫Pandora,兼容MongoDB3.0以上協議。在數據代理層實現了數據訪問路由,鑑權,Metrics採集,流控能力,可以支持共享、獨享、定製多種部署模式支持遷出。

和主流PaaS的雲數據庫對比

以AWS的RDS爲例,資源申請以RDS實例數爲單位,每一個RDS是由兩個配置相同的EC2實例以及運行在EC2上的主備數據庫組成,在成本上也是按照兩臺EC2響應配置的主機來計算。若是作到應用間數據和權限的隔離,而且對應用代碼透明、無侵入, 須要每一個應用單獨申請一臺RDS。這樣作顯然能達到隔離的效果,可是成本也有點高。

PaaS RDS

相比之下,MaxLeap的雲數據源,以應用爲單位,在物理和訪問權限上進行隔離,應用A和B規模較小,可使用公共服務器,可是數據和訪問權限獨立。應用C規模通常,使用獨立的數據服務器資源。應用X規模很大,能夠根據需求定製集羣方案。

MaxLeapPaaS

所以,雲數據源在成本和靈活性上有很大優點,小規模時期,使用共享資源,下降成本,中、大規模時變動爲獨享,甚至使用集羣方案。

爲何服務可以作到隔離和擴展

架構圖中,用戶請求通過負載均衡器和網關,到達目標服務的容器,同一個服務爲由多個無狀態的容器組成,達到負載均衡和水平擴容的目的,經過Docker容器技術處理服務間的資源隔離,Docker的資源隔離使用了Linux Kernel中的Namespaces功能。 Namespaces主要是經過Linux的clone內核調用來使用,根據傳入的不一樣參數組合來啓用對應的Namespace隔離。經過cgroup控制不一樣Container之間搶奪CPU、IO、磁盤等資源。 可擴展性經過網關和容器技術同時保障,小規模的應用共享服務資源,規模擴大後能夠啓動獨立的服務,並能夠根據場景決定須要的資源數量。網關會根據用戶的設定,動態路由請求到對應容器實例。 整個Docker容器環境,基於Mesos構建,Mesos是Apache基金會下的集羣資源管理工具,它經過抽象主機的 CPU、內存、存儲等計算資源來搭建一套高效、容錯、彈性的分佈式系統。Mesos生態自己支持水平無線擴展,經過Marathon對容器的資源調度進行管理。 Marathon是Mesos生態圈裏的一個輕量級、擴展性很強的調度long-running service的調度框架。支持RESTful api來建立和管理app,自動爲app作容錯遷移,凡是能用shell起的任務,理論上均可以經過Marathon在Mesos上簡單地啓動和管理起來。 從底向上,IaaS層、Mesos層、Docker層,每層均可以水平擴展。

服務隔離擴展

對架構進行總結和梳理。整個服務基於Docker容器構建,達到資源隔離、快速擴展的特性,Docker容器基於Marathon和Mesos構建,管理、調度、監控、Failover等方案成熟, 支持水平擴展。網關支持服務的路由。整個架構支持多租戶共享服務和獨享模式。

安全設計也很是重要。網絡經過https對請求進行加密,針對DDOS對整個網絡基礎架構進行了部署,VPC內部對防火牆進行規劃。服務中對不一樣級別的請求進行分級和鑑權操做, 服務針對不一樣領域進行了拆分,在設計和部署上相互獨立。對敏感數據加密、數據訪問支持ACL、應用分庫物理隔離、每一個度權限獨立,訪問隔離。業務數據進行容災備份。

總結

基於MaxLeap一站式研發和雲平臺之上,構建MaxWon雲平臺,在短短的3個月,產品第一個版本上線,穩定運行至今。有效解決掉了隔離和擴展問題,下降運維團隊的壓力。MaxWon如今支持20多個營銷模塊的自由組合, 更多模塊快速研發中,支持電商、社交、教育、餐飲等多個行業,支持上千家商戶的穩定運行。

相關文章
相關標籤/搜索