SaaS “可配置”和“多租戶”架構的技術實現方式

依據是否具有“可配置”蓉驹、“高性能”曹宴、“可伸縮”的特性 搂橙,我們將SaaS劃分為四級成熟度模型。

從上圖不難看出笛坦,初級成熟度模型并不具備“可配置”区转、“高性能”或“可伸縮”特性,而三版扩、四級成熟度模型都是基于多租戶的废离。那么,繼開源框架構建CRM系統(tǒng)初級SaaS成熟度模型之后礁芦,如何通過技術手段蜻韭,實現“可配置”和“多租戶”架構呢?今天我們就來探討這個話題柿扣。

一肖方、SaaS “可配置” ?架構的技術實現方式

利用元數據建模的MDA(Modle Driven ?Architecture,模型驅動架構)未状,是我們實現“可配置化”常用的技術架構俯画。

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

它通過“企業(yè)應用系統(tǒng)”與“技術實現平臺”的分離、平臺無關PIM(Platform Independent Model)建模語言統(tǒng)一化吨岭,以及特定平臺PSM(Platform Specific Model)模型化的方式拉宗,分別封裝”企業(yè)應用系統(tǒng)”與“技術實現平臺”兩者的變化,達到了降低技術干擾辣辫,簡化技術開發(fā)人員工作的目的旦事。

1.?MDA架構

內圈:MDA主要使用了UML(Unified Modeling Language) 、MOF(Meta-Object Facility)及CWM(Common Warehouse Metamodel)這三項建模標準急灭,作為PIM及PSM的建慕愀。基礎。不過葬馋,一般的開發(fā)人員卖鲤,只要熟知UML統(tǒng)一建模語言肾扰,就可以開發(fā)MDA項目了。

中圈:為公開標準或私有技術實現平臺蛋逾,包括CORBA集晚,XMI/XML,.NET区匣,JAVA及WEB SERVICE等等偷拔。MDA希望制定出各式平臺專屬的PSM轉換規(guī)則,并由廠商配合設計MDA開發(fā)工具亏钩,將中立的PIM自動轉換為平臺專屬的PSM模型莲绰。

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

圈外:代表MDA可以應用在各式不同的領域環(huán)境中,諸如電子商務(E-Commerce)留拾,電信(Telecom)钙蒙,醫(yī)療保健(HealthCare)间驮,運輸(Transportation)躬厌,航空(Space),制造(Manufacturing),金融(Finance)等領域竞帽。

2. ?MDA的四層模型

M0-實例層: M1 層模型的實例化扛施,即對應UML模型的具體程序。

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

M2 -元模型層:對應著?M1 層模型的元模型(?UML 妄荔、?SPEM 等),通過提取不同領域的抽象概念和關系結構谍肤,為?M1 層建模提供建模符號啦租,為不同領域提供對應的建模語言。

M3:元-元模型層

MOF 就位于這一層荒揣,?提供了定義?M2 層元模型所需要的更抽象一級的建模支持篷角。?MOF 是?M2 層所有元模型的元模型,同時系任,它也是自描述的恳蹲,?MOF 可以描述?MOF 元模型自身虐块。注意,在?MDA 框架中嘉蕾,?M3 層只有?MOF 這一個模型贺奠,它是?MDA 中最基礎和核心的標準,它為?MDA 框架中的所有模型?/ 元模型提供了統(tǒng)一的語義基礎错忱,使得基于?MOF 的統(tǒng)一的模型操作成為可能敞嗡。

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

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

第二階段:PIM(Platform Independent Model)- 聚焦于系統(tǒng)內部細節(jié),但不涉及實現系統(tǒng)的具體平臺棱貌。

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

第四階段:Coding – 依據PSM的UML模型內容,按圖施工障贸,編寫出適用于特定具體平臺的代碼错森。

二、SaaS “多租戶” ?架構的技術實現方式

1篮洁、數據存儲方式的選擇

多租戶(Multi-Tenant )涩维,即多個租戶共用一個實例,租戶的數據既有隔離又有共享袁波,說到底是要解決數據存儲的問題瓦阐。

常用的數據存儲方式有三種。

方案一:獨立數據庫


”一個Tenant篷牌,一個Database“的數據存儲方式睡蟋。隔離級別最高、最安全枷颊,但成本也高戳杀。

優(yōu)點:

a.為不同租戶提供獨立數據庫,有助于簡化數據模型的擴展設計夭苗,滿足個性化需求信卡;

b.數據恢復簡單;

缺點:增大了數據庫的安裝數量题造,購置和維護成本高坐求;

方案二:共享數據庫,隔離數據架構


多個租戶或所有租戶共享Database晌梨,但一個Tenant桥嗤,一個Schema的方式须妻。

優(yōu)點:

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

b.每個數據庫荒吏,可支持更多租戶數量;

缺點:

a.恢復數據較困難渊鞋,因為將牽扯到其他租戶數據绰更;

b.跨租戶統(tǒng)計數據,實現難度大锡宋;

方案三:共享數據庫儡湾,共享數據架構


一種租戶共享同一個Database、同一個Schema执俩,而另行通過TenantID區(qū)分租戶數據的方式徐钠。

優(yōu)點:每個數據庫可支持租戶數量多,維護和購置成本低役首;

缺點:

A.?隔離級別低尝丐,安全性低,開發(fā)時需做大量安全開發(fā)工作衡奥;

B.?逐表逐條備份和還原數據爹袁,數據備份和恢復困難。

三種數據存儲方案的比較


但究竟選擇何種方式矮固,則取決于產品定價策略和租戶對數據安全的接受程度失息。

2.?系統(tǒng)安全性設計

系統(tǒng)級:

A.?使用HTTPS傳輸協(xié)議,以SSL(Security Socket Layer)交換數據档址,加強通信安全

B.?使用數字簽名根时,防止傳輸過程被篡改;

C.?使用DES數據加密算法辰晕,設計用戶身份識別蛤迎;

D.?定時備份業(yè)務數據;

程序級:

A.?權限配置(功能權限含友、數據權限等)

B.?客戶端輸入校驗替裆,防止JS和XXS攻擊、SQL注入等窘问;

C.?輔助安全設計辆童,如密碼控件、圖片驗證惠赫、手機驗證等把鉴。

3.?租戶管理

注冊、訂購、計費等管理庭砍。

注冊


Tenant:租戶

User: 租戶下 的用戶场晶,同一租戶下可以有多個用戶;

Tenant的status屬性怠缸,用于定義租戶狀態(tài)(待審核诗轻、已審核、啟用揭北、禁用扳炬、取消),賦予租戶能否登陸的權限搔体。

訂購


PricePolicy:價格策略恨樟,支持按時間(年、月疚俱、日)劝术、次數計價,以unit表示计螺;

Subsciber: 訂購記錄,記錄租戶選用了何種價格策略瞧壮,以及服務期限或服務次數登馒。

計費


Journal:流水賬,記錄租戶使用服務的日志咆槽,用于生成賬單和報表陈轿;

4、數據隔離


為每個需要隔離的業(yè)務表加上Tenant_ID字段秦忿,以實現租戶數據間的隔離麦射,這是最通常的做法。

(部分內容參考了網絡)

公眾號(ID:9z營銷大數據)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末灯谣,一起剝皮案震驚了整個濱河市潜秋,隨后出現的幾起案子,更是在濱河造成了極大的恐慌胎许,老刑警劉巖峻呛,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異辜窑,居然都是意外死亡钩述,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門穆碎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牙勘,“玉大人,你說我怎么就攤上這事所禀》矫妫” “怎么了放钦?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葡幸。 經常有香客問我最筒,道長,這世上最難降的妖魔是什么蔚叨? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任床蜘,我火速辦了婚禮,結果婚禮上蔑水,老公的妹妹穿的比我還像新娘邢锯。我一直安慰自己,他們只是感情好搀别,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布丹擎。 她就那樣靜靜地躺著,像睡著了一般歇父。 火紅的嫁衣襯著肌膚如雪蒂培。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天榜苫,我揣著相機與錄音护戳,去河邊找鬼。 笑死垂睬,一個胖子當著我的面吹牛媳荒,可吹牛的內容都是我干的。 我是一名探鬼主播驹饺,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼钳枕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赏壹?” 一聲冷哼從身側響起鱼炒,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝌借,沒想到半個月后田柔,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡骨望,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年硬爆,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擎鸠。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡缀磕,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情袜蚕,我是刑警寧澤糟把,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站牲剃,受9級特大地震影響遣疯,放射性物質發(fā)生泄漏。R本人自食惡果不足惜凿傅,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一缠犀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聪舒,春花似錦辨液、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至被辑,卻和暖如春燎悍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盼理。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工谈山, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榜揖。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓勾哩,卻偏偏與公主長得像抗蠢,于是被迫代替她去往敵國和親举哟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容