具體的SaaS架構(gòu)必須
1.先仔細(xì)選擇最適合應(yīng)用程序需求的租戶模型,
2.需要根據(jù)租戶模型來(lái)選定最終的架構(gòu),即應(yīng)用程序設(shè)計(jì)和管理、每個(gè)租戶的數(shù)據(jù)如何映射到存儲(chǔ)等等。
避免因租戶模型的切換而付出昂貴的代價(jià)。
租戶模型--》應(yīng)用程序設(shè)計(jì)+數(shù)據(jù)設(shè)計(jì)方案
影響租戶模型的相關(guān)因素包括:
可擴(kuò)展性(Scalability)
租戶的數(shù)量級(jí);
每個(gè)租戶的存儲(chǔ)級(jí)別;
整體存儲(chǔ);
工作負(fù)載;
租戶隔離性(Tenant isolation)
數(shù)據(jù)隔離和性能(是否一個(gè)租戶的負(fù)載會(huì)影響到其他租戶);
單租戶成本(Per-tenant cost)
數(shù)據(jù)庫(kù)成本;
開(kāi)發(fā)復(fù)雜度(Development complexity)
數(shù)據(jù)結(jié)構(gòu)的變化;
查詢語(yǔ)句的變化;
運(yùn)維復(fù)雜度(Operational complexity)
性能監(jiān)控;
數(shù)據(jù)結(jié)構(gòu)schema管理;
租戶數(shù)據(jù)恢復(fù);
災(zāi)備;
可定制化程度(Customizability)
根據(jù)租戶的需求自定義架構(gòu)的容易程度;
這個(gè)租戶的討論集中在數(shù)據(jù)層。但考慮一下應(yīng)用層。應(yīng)用程序?qū)颖灰暈橐粋€(gè)整體實(shí)體。如果將應(yīng)用程序劃分為許多小型組件,您的租戶模型選擇可能會(huì)發(fā)生變化。對(duì)于租戶和存儲(chǔ)技術(shù)或使用的平臺(tái),您可以對(duì)其他組件進(jìn)行不同的處理。
常見(jiàn)的架構(gòu)模式有以下幾種:
這個(gè)模型中,應(yīng)用層和數(shù)據(jù)層都是隔離的。
應(yīng)用程序的每個(gè)實(shí)例都是獨(dú)立實(shí)例。
租戶擁有自己獨(dú)立的數(shù)據(jù)庫(kù),每個(gè)應(yīng)用程序?qū)嵗恍枰粋€(gè)數(shù)據(jù)庫(kù)。
對(duì)租戶的管理獨(dú)立于系統(tǒng)之外,對(duì)于每一個(gè)租戶,整個(gè)應(yīng)用程序需要重復(fù)安裝一次。供應(yīng)商都可以為租戶管理軟件。每個(gè)應(yīng)用程序?qū)嵗寂渲脼檫B接到其相應(yīng)的數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立的應(yīng)用實(shí)例和數(shù)據(jù)庫(kù),有助于簡(jiǎn)化數(shù)據(jù)模型和業(yè)務(wù)模型的擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求;如果出現(xiàn)故障,恢復(fù)系統(tǒng)或數(shù)據(jù)均比較簡(jiǎn)單,系統(tǒng)間也不會(huì)相互影響。
問(wèn)題:
數(shù)據(jù)庫(kù)層面,每個(gè)租戶數(shù)據(jù)庫(kù)都作為獨(dú)立數(shù)據(jù)庫(kù)進(jìn)行部署。該模型提供了最大的數(shù)據(jù)庫(kù)隔離。但隔離需要為每個(gè)數(shù)據(jù)庫(kù)分配足夠的資源來(lái)處理其高峰負(fù)載。這里重要的是,彈性池不能用于部署在不同資源組或不同訂閱中的數(shù)據(jù)庫(kù)。這種限制使得這種獨(dú)立的單租戶應(yīng)用程序模型成為從整體數(shù)據(jù)庫(kù)成本角度來(lái)看最昂貴的解決方案;應(yīng)用層面,每個(gè)租戶若存在個(gè)性化定制,則需要對(duì)項(xiàng)目進(jìn)行橫向擴(kuò)展,擴(kuò)展時(shí)務(wù)必需要保證與主干版本的兼容性問(wèn)題。
運(yùn)維層面,應(yīng)用和數(shù)據(jù)庫(kù)的安裝數(shù)量會(huì)隨租戶的數(shù)量線性遞增,隨之帶來(lái)維護(hù)成本和購(gòu)置成本的增加。
這個(gè)模型中,應(yīng)用層是共享的,數(shù)據(jù)層都是隔離的。
應(yīng)用程序僅部署一套,所有租戶實(shí)例共享。
租戶仍擁有自己獨(dú)立的數(shù)據(jù)庫(kù),應(yīng)用程序需對(duì)接多個(gè)租戶的數(shù)據(jù)庫(kù)。
對(duì)租戶的管理由配置中心(Config Server)管理,配置中心提供了配置,監(jiān)視和管理共享所需的功能,供應(yīng)商使用這些工具為租戶管理軟件。對(duì)于每一個(gè)租戶,整個(gè)應(yīng)用程序僅需要安裝一次,應(yīng)用程序?qū)嶋H請(qǐng)求結(jié)合配置中心請(qǐng)求相應(yīng)的數(shù)據(jù)庫(kù)。
優(yōu)點(diǎn):
為不同的租戶提供獨(dú)立數(shù)據(jù)庫(kù),有助于簡(jiǎn)化數(shù)據(jù)模型擴(kuò)展設(shè)計(jì),滿足不同租戶的獨(dú)特需求;如果出現(xiàn)故障,數(shù)據(jù)恢復(fù)均比較簡(jiǎn)單,也可以自動(dòng)將單個(gè)租戶恢復(fù)到較早的時(shí)間點(diǎn)。因?yàn)榛謴?fù)只需要恢復(fù)存儲(chǔ)租戶的一個(gè)單租戶數(shù)據(jù)庫(kù)。這種恢復(fù)對(duì)其他租戶沒(méi)有影響,這證實(shí)了管理運(yùn)營(yíng)處于每個(gè)租戶的細(xì)粒度級(jí)別。應(yīng)用層面的維護(hù)成本和購(gòu)置成本有所減少。
問(wèn)題:
數(shù)據(jù)庫(kù)層面,同模型一;應(yīng)用層面,每個(gè)租戶若存在個(gè)性化定制,則需要對(duì)項(xiàng)目進(jìn)行橫向擴(kuò)展,擴(kuò)展時(shí)務(wù)必需要保證與主干版本的兼容性問(wèn)題。運(yùn)維層面,數(shù)據(jù)庫(kù)的運(yùn)維問(wèn)題同模式一,應(yīng)用層面的運(yùn)維在版本控制的問(wèn)題上難度有所增加。
這個(gè)模型中,應(yīng)用層是共享的,數(shù)據(jù)庫(kù)共享,但數(shù)據(jù)是隔離的。
應(yīng)用程序和數(shù)據(jù)庫(kù)僅部署一套,所有租戶共享。
多個(gè)或所有租戶共享Database,也就是說(shuō)共同使用一個(gè)數(shù)據(jù)庫(kù),但是每個(gè)租戶一個(gè)Schema(也可叫做一個(gè)user),使用表進(jìn)行數(shù)據(jù)隔離數(shù)據(jù)庫(kù)。底層庫(kù)比如是:DB2、ORACLE等,一個(gè)數(shù)據(jù)庫(kù)下可以有多個(gè)SCHEMA。
應(yīng)用程序需對(duì)接多個(gè)租戶的數(shù)據(jù)庫(kù)。
對(duì)租戶的管理由配置中心(Config Server)管理,同模式二。
優(yōu)點(diǎn):
為安全性要求較高的租戶提供了一定程度的邏輯數(shù)據(jù)隔離,并不是完全隔離;每個(gè)數(shù)據(jù)庫(kù)可支持更多的租戶數(shù)量。
問(wèn)題:
數(shù)據(jù)庫(kù)層面,如果出現(xiàn)故障,數(shù)據(jù)恢復(fù)比較困難,因?yàn)榛謴?fù)數(shù)據(jù)庫(kù)將牽涉到其他租戶的數(shù)據(jù);應(yīng)用層面,配置中心需要對(duì)租戶信息進(jìn)行完整且合理的分配和維護(hù)。
模型與模型三的差別在于共享數(shù)據(jù)庫(kù),共享Schema,共享數(shù)據(jù)表。也就是說(shuō)共同使用一個(gè)數(shù)據(jù)庫(kù)一個(gè)表使用字段進(jìn)行數(shù)據(jù)隔離。如表中增加TenantID多租戶的數(shù)據(jù)字段。這是共享程度最高、隔離級(jí)別最低的模式。
簡(jiǎn)單來(lái)講,即每插入一條數(shù)據(jù)時(shí)都需要有一個(gè)客戶的標(biāo)識(shí)。這樣才能在同一張表中區(qū)分出不同客戶的數(shù)據(jù),這也是我們系統(tǒng)目前用到的(tenant_id)。
優(yōu)點(diǎn):
方案的維護(hù)和購(gòu)置成本低,允許每個(gè)數(shù)據(jù)庫(kù)支持的租戶數(shù)量最多。
缺點(diǎn):
隔離級(jí)別最低,安全性最低,需要在設(shè)計(jì)開(kāi)發(fā)時(shí)加大對(duì)安全的開(kāi)發(fā)量;數(shù)據(jù)備份和恢復(fù)最困難,需要逐表逐條備份和還原。
模式五與之前的模式的最大區(qū)別是,在原有的web Service進(jìn)行細(xì)化拆分,優(yōu)化成網(wǎng)關(guān)+前臺(tái)+中臺(tái)+數(shù)據(jù)存儲(chǔ)的模式。
網(wǎng)關(guān)用于接收租戶的請(qǐng)求,并發(fā)送給前臺(tái)。
前臺(tái)的數(shù)量與租戶一致,每一個(gè)租戶對(duì)應(yīng)一個(gè)前臺(tái)服務(wù),方便針對(duì)租戶進(jìn)行個(gè)性化定制。
中臺(tái)負(fù)責(zé)提供處理所有的業(yè)務(wù)請(qǐng)求,中臺(tái)不關(guān)心租戶是誰(shuí),將重心關(guān)注在業(yè)務(wù)的處理上。配置中心用于配置租戶的接口權(quán)限、流程定制等相關(guān)配置信息。結(jié)合業(yè)務(wù)邏輯返回給前臺(tái)特定租戶的相關(guān)信息。
數(shù)據(jù)庫(kù)模式參考模式四。
優(yōu)點(diǎn):
有利于定制不同租戶的個(gè)性化需求。例如:交互界面不同、工作流不同等等。
服務(wù)只需要根據(jù)用戶需求在前臺(tái)做相應(yīng)的橫向擴(kuò)展即可;
不同租戶間服務(wù)相互獨(dú)立,互不影響。
缺點(diǎn):
模塊劃分需要做好劃分,重點(diǎn)注重業(yè)務(wù)之間的低耦合;
調(diào)用鏈路變長(zhǎng),需要做一定的優(yōu)化處理;
模塊縱向拆分后,后期研發(fā)和運(yùn)維難度均會(huì)有所增加;
數(shù)商云全鏈數(shù)字化產(chǎn)品解決方案, 實(shí)現(xiàn)供應(yīng)鏈上中下游資源整合管理
--------
SCM供應(yīng)鏈 / SRM供應(yīng)商 / B2B電商 / 采購(gòu)管理 / DMS渠道商 / 經(jīng)銷商管理
SaaS多租戶 / S2B2C電商 / S2B2B電商
0 費(fèi) 用 系 統(tǒng) 演 示
▼
文章來(lái)源:CSDN,作者:hp15;
編輯:云朵匠 | 數(shù)商云(微信ID:shushangyun_com)
【數(shù)商云www.zhimaihui.cn】專注為企業(yè)提供SaaS多租戶系統(tǒng)搭建服務(wù),長(zhǎng)期為大中型企業(yè)打造數(shù)據(jù)化、商業(yè)化、智能化的b2b電子商務(wù)平臺(tái)服務(wù)解決方案,為傳統(tǒng)企業(yè)搭建一站式供應(yīng)鏈系統(tǒng)服務(wù)平臺(tái)閉環(huán)體系,實(shí)現(xiàn)供應(yīng)商系統(tǒng)服務(wù)平臺(tái)數(shù)據(jù)互通、全鏈融合,綜合提升平臺(tái)運(yùn)營(yíng)效率與平臺(tái)收益。
評(píng)論