SaaS “可配置”和“多租戶”架構(gòu)的技術(shù)實(shí)現(xiàn)方式

依據(jù)是否具有“可配置”、“高性能”、“可伸縮”的特性 ,我們將SaaS劃分為四級(jí)成熟度模型。

從上圖不難看出,初級(jí)成熟度模型并不具備“可配置”、“高性能”或“可伸縮”特性,而三、四級(jí)成熟度模型都是基于多租戶的。那么,繼開源框架構(gòu)建CRM系統(tǒng)初級(jí)SaaS成熟度模型之后,如何通過技術(shù)手段,實(shí)現(xiàn)“可配置”和“多租戶”架構(gòu)呢?今天我們就來探討這個(gè)話題。

一、SaaS “可配置” ?架構(gòu)的技術(shù)實(shí)現(xiàn)方式

利用元數(shù)據(jù)建模的MDA(Modle Driven ?Architecture,模型驅(qū)動(dòng)架構(gòu)),是我們實(shí)現(xiàn)“可配置化”常用的技術(shù)架構(gòu)。

MDA,是為應(yīng)對(duì)“上世紀(jì)90年代以來,基礎(chǔ)平臺(tái)和技術(shù)工具快速迭代,以及無數(shù)系統(tǒng)整合與改造需求陡增” 的趨勢而提出的,用以解決“企業(yè)和技術(shù)快速變化,給軟件從業(yè)者帶來的”難以應(yīng)對(duì)難題的技術(shù)模型。

它通過“企業(yè)應(yīng)用系統(tǒng)”與“技術(shù)實(shí)現(xiàn)平臺(tái)”的分離、平臺(tái)無關(guān)PIM(Platform Independent Model)建模語言統(tǒng)一化,以及特定平臺(tái)PSM(Platform Specific Model)模型化的方式,分別封裝”企業(yè)應(yīng)用系統(tǒng)”與“技術(shù)實(shí)現(xiàn)平臺(tái)”兩者的變化,達(dá)到了降低技術(shù)干擾,簡化技術(shù)開發(fā)人員工作的目的。

1.?MDA架構(gòu)

內(nèi)圈:MDA主要使用了UML(Unified Modeling Language) 、MOF(Meta-Object Facility)及CWM(Common Warehouse Metamodel)這三項(xiàng)建模標(biāo)準(zhǔn),作為PIM及PSM的建模基礎(chǔ)。不過,一般的開發(fā)人員,只要熟知UML統(tǒng)一建模語言,就可以開發(fā)MDA項(xiàng)目了。

中圈:為公開標(biāo)準(zhǔn)或私有技術(shù)實(shí)現(xiàn)平臺(tái),包括CORBA,XMI/XML,.NET,JAVA及WEB SERVICE等等。MDA希望制定出各式平臺(tái)專屬的PSM轉(zhuǎn)換規(guī)則,并由廠商配合設(shè)計(jì)MDA開發(fā)工具,將中立的PIM自動(dòng)轉(zhuǎn)換為平臺(tái)專屬的PSM模型。

外圈:代表跨平臺(tái)的通用服務(wù)(Pervasive Services)——目錄服務(wù)(Directory Services),事務(wù)服務(wù)(Transaction Services)、安全服務(wù)(Security Services)和分布式事件及通知服務(wù)(Distributed Event and Notification Services),目的在于讓任何平臺(tái)上的應(yīng)用程序或客戶端,都可以通過MDA環(huán)境,取得跨平臺(tái)服務(wù)。

圈外:代表MDA可以應(yīng)用在各式不同的領(lǐng)域環(huán)境中,諸如電子商務(wù)(E-Commerce),電信(Telecom),醫(yī)療保健(HealthCare),運(yùn)輸(Transportation),航空(Space),制造(Manufacturing),金融(Finance)等領(lǐng)域。

2. ?MDA的四層模型

M0-實(shí)例層: M1 層模型的實(shí)例化,即對(duì)應(yīng)UML模型的具體程序。

M1 -模型層:是建模人員通常所面對(duì)的模型,例如圖中的?UML 模型,是分析和設(shè)計(jì),包括開發(fā)人員最為熟悉不過的了。

M2 -元模型層:對(duì)應(yīng)著?M1 層模型的元模型(?UML 、?SPEM 等),通過提取不同領(lǐng)域的抽象概念和關(guān)系結(jié)構(gòu),為?M1 層建模提供建模符號(hào),為不同領(lǐng)域提供對(duì)應(yīng)的建模語言。

M3:元-元模型層

MOF 就位于這一層,?提供了定義?M2 層元模型所需要的更抽象一級(jí)的建模支持。?MOF 是?M2 層所有元模型的元模型,同時(shí),它也是自描述的,?MOF 可以描述?MOF 元模型自身。注意,在?MDA 框架中,?M3 層只有?MOF 這一個(gè)模型,它是?MDA 中最基礎(chǔ)和核心的標(biāo)準(zhǔn),它為?MDA 框架中的所有模型?/ 元模型提供了統(tǒng)一的語義基礎(chǔ),使得基于?MOF 的統(tǒng)一的模型操作成為可能。

3. 用MDA開發(fā)的過程

第一階段: CIM(Computation Independent Model)- 聚焦于系統(tǒng)環(huán)境及需求,但不涉及系統(tǒng)內(nèi)部的結(jié)構(gòu)與運(yùn)作細(xì)節(jié)。

第二階段:PIM(Platform Independent Model)- 聚焦于系統(tǒng)內(nèi)部細(xì)節(jié),但不涉及實(shí)現(xiàn)系統(tǒng)的具體平臺(tái)。

第三階段:PSM(Platform Specific Model)- 聚焦于系統(tǒng),落實(shí)特定平臺(tái)的細(xì)節(jié)(如EJB,J2EE或.NET都是一種具體平臺(tái)),并用統(tǒng)一編程語言UML將PSM模型化。

第四階段:Coding – 依據(jù)PSM的UML模型內(nèi)容,按圖施工,編寫出適用于特定具體平臺(tái)的代碼。

二、SaaS “多租戶” ?架構(gòu)的技術(shù)實(shí)現(xiàn)方式

1、數(shù)據(jù)存儲(chǔ)方式的選擇

多租戶(Multi-Tenant ),即多個(gè)租戶共用一個(gè)實(shí)例,租戶的數(shù)據(jù)既有隔離又有共享,說到底是要解決數(shù)據(jù)存儲(chǔ)的問題。

常用的數(shù)據(jù)存儲(chǔ)方式有三種。

方案一:獨(dú)立數(shù)據(jù)庫


”一個(gè)Tenant,一個(gè)Database“的數(shù)據(jù)存儲(chǔ)方式。隔離級(jí)別最高、最安全,但成本也高。

優(yōu)點(diǎn):

a.為不同租戶提供獨(dú)立數(shù)據(jù)庫,有助于簡化數(shù)據(jù)模型的擴(kuò)展設(shè)計(jì),滿足個(gè)性化需求;

b.數(shù)據(jù)恢復(fù)簡單;

缺點(diǎn):增大了數(shù)據(jù)庫的安裝數(shù)量,購置和維護(hù)成本高;

方案二:共享數(shù)據(jù)庫,隔離數(shù)據(jù)架構(gòu)


多個(gè)租戶或所有租戶共享Database,但一個(gè)Tenant,一個(gè)Schema的方式。

優(yōu)點(diǎn):

a.一定程度的邏輯數(shù)據(jù)隔離(并非完全),可滿足較高程度的安全性保障;

b.每個(gè)數(shù)據(jù)庫,可支持更多租戶數(shù)量;

缺點(diǎn):

a.恢復(fù)數(shù)據(jù)較困難,因?yàn)閷砍兜狡渌鈶魯?shù)據(jù);

b.跨租戶統(tǒng)計(jì)數(shù)據(jù),實(shí)現(xiàn)難度大;

方案三:共享數(shù)據(jù)庫,共享數(shù)據(jù)架構(gòu)


一種租戶共享同一個(gè)Database、同一個(gè)Schema,而另行通過TenantID區(qū)分租戶數(shù)據(jù)的方式。

優(yōu)點(diǎn):每個(gè)數(shù)據(jù)庫可支持租戶數(shù)量多,維護(hù)和購置成本低;

缺點(diǎn):

A.?隔離級(jí)別低,安全性低,開發(fā)時(shí)需做大量安全開發(fā)工作;

B.?逐表逐條備份和還原數(shù)據(jù),數(shù)據(jù)備份和恢復(fù)困難。

三種數(shù)據(jù)存儲(chǔ)方案的比較


但究竟選擇何種方式,則取決于產(chǎn)品定價(jià)策略和租戶對(duì)數(shù)據(jù)安全的接受程度。

2.?系統(tǒng)安全性設(shè)計(jì)

系統(tǒng)級(jí):

A.?使用HTTPS傳輸協(xié)議,以SSL(Security Socket Layer)交換數(shù)據(jù),加強(qiáng)通信安全

B.?使用數(shù)字簽名,防止傳輸過程被篡改;

C.?使用DES數(shù)據(jù)加密算法,設(shè)計(jì)用戶身份識(shí)別;

D.?定時(shí)備份業(yè)務(wù)數(shù)據(jù);

程序級(jí):

A.?權(quán)限配置(功能權(quán)限、數(shù)據(jù)權(quán)限等)

B.?客戶端輸入校驗(yàn),防止JS和XXS攻擊、SQL注入等;

C.?輔助安全設(shè)計(jì),如密碼控件、圖片驗(yàn)證、手機(jī)驗(yàn)證等。

3.?租戶管理

注冊(cè)、訂購、計(jì)費(fèi)等管理。

注冊(cè)


Tenant:租戶

User: 租戶下 的用戶,同一租戶下可以有多個(gè)用戶;

Tenant的status屬性,用于定義租戶狀態(tài)(待審核、已審核、啟用、禁用、取消),賦予租戶能否登陸的權(quán)限。

訂購


PricePolicy:價(jià)格策略,支持按時(shí)間(年、月、日)、次數(shù)計(jì)價(jià),以u(píng)nit表示;

Subsciber: 訂購記錄,記錄租戶選用了何種價(jià)格策略,以及服務(wù)期限或服務(wù)次數(shù)。

計(jì)費(fèi)


Journal:流水賬,記錄租戶使用服務(wù)的日志,用于生成賬單和報(bào)表;

4、數(shù)據(jù)隔離


為每個(gè)需要隔離的業(yè)務(wù)表加上Tenant_ID字段,以實(shí)現(xiàn)租戶數(shù)據(jù)間的隔離,這是最通常的做法。

(部分內(nèi)容參考了網(wǎng)絡(luò))

公眾號(hào)(ID:9z營銷大數(shù)據(jù))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容