客戶管家基于暢捷通公司自主研發(fā)的CSP開發(fā)平臺進行開發(fā),主要采用Java、PostgreSQL、Geronimo等技術(shù),使用虛擬機方式部署,應(yīng)用服務(wù)與數(shù)據(jù)庫服務(wù)具有良好的擴展性和穩(wěn)定性。
客戶管家服務(wù)所采用的虛機部署模式,每個企業(yè)用戶都會獲得有如銀行保險柜一般的對立虛機,數(shù)據(jù)單獨存放,企業(yè)信息相互隔離,有別于傳統(tǒng)SaaS僅一層加密的模式。對單個企業(yè)或用戶可以提供更多的獨享資源,應(yīng)用服務(wù)器隔離,互相不受影響,有效避免了并發(fā)、數(shù)據(jù)量大、效率低下等問題,技術(shù)本身在國內(nèi)外都處于領(lǐng)先地位等。對應(yīng)所有核心數(shù)據(jù)全部采用SSL加密傳輸,使用世界級VerSign證書,杜絕數(shù)據(jù)傳輸過程中出現(xiàn)任何問題。
云服務(wù)對核心數(shù)據(jù)每天進行本地、本地異機與異地異機三重機制備份,解決極端事件給數(shù)據(jù)帶來的安全隱患。每周日對數(shù)據(jù)庫進行全備,非周日每天進行增量備份,并且每月進行一次代碼容災(zāi)演練和數(shù)據(jù)庫容災(zāi)演練。
系統(tǒng)架構(gòu)、容災(zāi)和故障處理方案
客戶管家所用的基礎(chǔ)架構(gòu)為X3系統(tǒng)。X3系統(tǒng)中的所有組件都可以分布式部署多個實例,只要有一個實例可以正常工作,就不會影響整個系統(tǒng)的可用性。X3為運行在其上的應(yīng)用提供了多重監(jiān)控機制,各個計算節(jié)點通過心跳機制保證應(yīng)用服務(wù)的在線,同時會周期性的對應(yīng)用做七層健康檢查,檢測到錯誤會及時發(fā)出報警,嚴重錯誤會自動重置應(yīng)用服務(wù)器,保證應(yīng)用的業(yè)務(wù)能夠及時恢復(fù)。
X3系統(tǒng)基于流行開源PaaS系統(tǒng)CloudFoundry開發(fā),除了利用原生的CloudFoundry高可用機制,X3完善了很多關(guān)鍵的高可用環(huán)節(jié)。作為系統(tǒng)各個組件相互通信的核心消息總線組件,利用成熟的Keepalived實現(xiàn)了高可用消息總線集群。
由調(diào)度服務(wù)器器集群和真實服務(wù)器集群組成。調(diào)度器集群負責(zé)將客戶端連接請求路由到可用的真實服務(wù)器;真實服務(wù)器集群負責(zé)具體的消息轉(zhuǎn)發(fā)工作。
調(diào)度服務(wù)器器集群為高可用集群,主調(diào)度器出現(xiàn)故障時,備調(diào)度器被激活,使用相同的虛擬ip提供服務(wù)。
真實服務(wù)器集群由多個nats服務(wù)器組成,具有高可用性可可擴展性。每個nats服務(wù)器同時是其他所有服務(wù)器的路由器,能夠轉(zhuǎn)發(fā)消息到其他服務(wù)器。消息最多經(jīng)過一個路由器就能被發(fā)送給訂閱者。
調(diào)度服務(wù)器能夠監(jiān)控真實服務(wù)器的狀態(tài),根據(jù)監(jiān)控結(jié)果更新路由表。保證客戶端請求總能被轉(zhuǎn)發(fā)到可用的真實服務(wù)器。
由于真實服務(wù)器互為路由,所以即使發(fā)布者和訂閱者連接到不同的服務(wù)器,也能夠?qū)崿F(xiàn)消息通信。
業(yè)務(wù)系統(tǒng)概要設(shè)計(彈性設(shè)計方案)
Cloud Foundry彈性運行時系統(tǒng)在DEA(Droplet執(zhí)行代理)中運行名為droplet的封包應(yīng)用程序,而droplet是一種打包文件,包括你應(yīng)用程序的所有代碼以及依賴項。DEA由Cloud Controller(云控制器)管理,由Health Manager(健康管理器)監(jiān)控,而Routers(路由器)負責(zé)管理應(yīng)用程序流量、進行負載均衡以及合并日志。反過來,DEA調(diào)用服務(wù)代理節(jié)點,這些節(jié)點通過消息總線進行聯(lián)系。云控制器可訪問二進制大對象(blob)存儲區(qū)以及內(nèi)有應(yīng)用程序元數(shù)據(jù)和服務(wù)憑據(jù)的數(shù)據(jù)庫。X3保留了Cloud Foundry彈性運行時的相關(guān)架構(gòu),作為運行資源的DEA、控制器Cloud Controller、請求路由器Routers都可以線性擴展,同時對健康檢查組件HM做了優(yōu)化,實現(xiàn)其按照stack分區(qū)的擴展方案,一組HM只管理一個stack分組的應(yīng)用,具體實現(xiàn)如下:
數(shù)據(jù)私密性,隔離方法
客戶管家的基層X3系統(tǒng)使用linux container作為企業(yè)應(yīng)用運行的沙箱(虛機),linux container使用cgroup,可以實現(xiàn)內(nèi)存、磁盤IO及網(wǎng)絡(luò)帶寬等計算資源的隔離。X3通過warden server創(chuàng)建并管理計算節(jié)點上的linux container,不同container中的進程/進程組之間是資源隔離的,container相當(dāng)于一個運行沙箱,企業(yè)app運行在這個沙箱中,不同企業(yè)的app之間實現(xiàn)了資源隔離,不會發(fā)生熱點應(yīng)用搶占大量系統(tǒng)計算資源影響其他應(yīng)用的情況,計算節(jié)點通過warden client與warden server間的交互控制container,每個container都有一個虛擬網(wǎng)卡,然后warden通過配置iptablesnat規(guī)則完成計算節(jié)點物理端口到container內(nèi)端口的映射,讓容器中的應(yīng)用可以接受并應(yīng)答來自外部的用戶請求。
Cpu、內(nèi)存及設(shè)備的隔離通過cgroup實現(xiàn),cgroup是Linux內(nèi)核提供的一種可以限制、記錄、隔離進程組(process groups)所使用的物理資源的機制。cgroup表現(xiàn)為一個簡單的文件系統(tǒng),對進程組使用的資源的統(tǒng)計/設(shè)置是通過讀/寫cgroup文件系統(tǒng)中的文件控制的。對內(nèi)存資源和設(shè)備訪問的控制是絕對值的控制,對CPU資源的控制是相對值的控制。也就是說,我們可以通過cgroup限制一組進程使用內(nèi)存的最大值,比如限制為2GB;但是我們無法絕對的限制一組進程的CPU利用率,只能夠控制多個進程組爭用CPU時的權(quán)重。對磁盤使用的控制通過quota實現(xiàn),Quota是linux用來配置磁盤限額的一個工具,可以配置用戶的磁盤限額,也可以配置用戶組的磁盤限額。不同用戶訪問各自的容器。
用戶的數(shù)據(jù)庫分布在多臺DB服務(wù)器上,所有DB服務(wù)器都是主備雙活模式,同時實現(xiàn)了在其它數(shù)據(jù)中心的災(zāi)備,保證數(shù)據(jù)的安全性。數(shù)據(jù)庫的管理由DBManager組件負責(zé),DB服務(wù)器通過高可用消息總線周期性匯報自身負載情況,由DBManager負責(zé)DB服務(wù)器資源的管理。
|