日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SaaS系統(tǒng)架構(gòu)設(shè)計經(jīng)驗總結(jié)

SaaS 系統(tǒng)架構(gòu)設(shè)計經(jīng)驗總結(jié)

作者:garytalk 2015-10-16 14:35:05

云計算

SaaS 最近一年,有幸架構(gòu)一個CRM SaaS 系統(tǒng),上線了幾個月來,各方面都比滿意。整個系統(tǒng)創(chuàng)建過程,踩了很多坑,收獲也比較多。通過本文總結(jié)一下SaaS系統(tǒng)架構(gòu)一些特點。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了獻縣免費建站歡迎大家使用!

2B SaaS系統(tǒng)最近幾年都很火。很多創(chuàng)業(yè)公司都在嘗試創(chuàng)建企業(yè)級別的應(yīng)用 cRM, HR,銷售, Desk SaaS系統(tǒng)。很多SaaS創(chuàng)業(yè)公司也拿了大額風(fēng)投。畢竟SaaS相對傳統(tǒng)軟件的優(yōu)勢非常明顯。

最近一年,有幸架構(gòu)一個Crm SaaS 系統(tǒng),上線了幾個月來,各方面都比滿意。整個系統(tǒng)創(chuàng)建過程,踩了很多坑,收獲也比較多??偨Y(jié)一下SaaS系統(tǒng)架構(gòu)一些特點:

1.分層設(shè)計

SaaS系統(tǒng)分層大概是:

租戶識別>應(yīng)用層>數(shù)據(jù)訪問層>緩存層>數(shù)據(jù)庫

  • 業(yè)務(wù)代碼都是寫在應(yīng)用層。
  • 租戶識別可以用spring攔截器實現(xiàn),然后使用ThreadLocal傳遞給后端
  • 數(shù)據(jù)庫和緩存層對應(yīng)用層應(yīng)該是透明的。程序員在寫代碼的時候,只關(guān)心業(yè)務(wù)邏輯,不應(yīng)該擔心多租戶的問題。

2.數(shù)據(jù)隔離要透明

SaaS系統(tǒng)說起來很簡單,任何系統(tǒng)似乎加個tenant_id(租戶id)就變成SaaS系統(tǒng)了。比如原來的用戶登錄是:

  
 
 
 
  1. select username,password from users where email='abc@qq.com' 

改成

  
 
 
 
  1. select username,password from users where email='abc@qq.com' and tenant_id =1; 

對于復(fù)雜業(yè)務(wù)的SaaS系統(tǒng),這樣做法非常危險,而且開發(fā)效率很低。你想想如果那個程序員寫sql時候忘了加 “ and tenant_id =1” . 結(jié)果不堪設(shè)想。

比較好做法是在數(shù)據(jù)庫訪問層對SQL進行改寫。

  
 
 
 
  1. TenantContext.exec("select username,password from users where email='abc@qq.com' "); 

在連接池根據(jù)TenatnContext改寫Sql.

這樣做好處是,一來程序猿最多把系統(tǒng)搞down了,也不至于信息串了互相泄露。二來將來做分表分庫也很方便,上層應(yīng)用不用修改。

3. 租戶識別方案

比較好做法是通過url識別租戶。系統(tǒng)是給租戶生成一個隨機的三級域名,比如 abc.crm.baidu.com. 如果客戶想使用自己的域名,可以在cname到我們生成的三級域名,并在管理系統(tǒng)里面做綁定。

這樣一個租戶可以有兩個域名,訪問SaaS,一個隨機生成的三級域名,另外一個租戶自己的域名.代碼里面可以根據(jù)過來的域名,判斷是那個租戶然后初始化TenantContext.

如果不想通過域名來做,也可以通過登錄名來判斷。這種方式要涉及到租戶切換問題。

4. 智能DNS

(以后補充。)

5. 租戶管理系統(tǒng)(計費,訂購,定制,充值,催繳)

SaaS系統(tǒng)是必須考慮計費系統(tǒng)和租戶控制系統(tǒng)。這個系統(tǒng)需要都是獨立設(shè)計。比如那個租戶購買了那些模塊,一個月多少錢。租戶可以創(chuàng)建最多的用戶數(shù)。計費到期郵件提醒等功能。

計費方式一般有兩種,周期性計費,類似月租方案,和使用量計費,用多少付多少。 周期性計費比較簡單。也可以兩者結(jié)合起來。

6. 定制化開發(fā)

SaaS的優(yōu)勢在于一套系統(tǒng)多人使用,似乎和定制化開發(fā)有沖突。比如A客戶想要A功能,B客戶不想要。但定制化開發(fā)是無法避免的,比如CRM系統(tǒng)這樣復(fù)雜的系統(tǒng),不可能一套系統(tǒng)滿足所有公司的要求。定制化開發(fā)盡可能分系統(tǒng),分模塊去做。然后通過控制臺中配置不同租戶訂購不同模塊,那些模塊可以在前端頁面上顯示。不同的子系統(tǒng)需要分開部署。前端可通過nginx根據(jù)url分發(fā),比如 abc.crm.baidu.com/bi/xxx/xx這個地址,就分發(fā)到BI子系統(tǒng)。不要嘗試OSGI去搞模塊化,這個是個大坑。

還有開發(fā)和產(chǎn)品,現(xiàn)有需求一定要分析清楚,不要一上線發(fā)現(xiàn)后患無窮。新功能盡量做的獨立可以配置。

7. 灰度升級

SaaS付費企業(yè)客戶對系統(tǒng)問題都特別敏感。 為了減少升級可能出現(xiàn)問題的影響范圍,一般都采用灰度升級策略。如果使用了url來區(qū)分不同租戶,灰度升級配置就會很方便??梢耘渲胣ginx 來根據(jù)域名做分發(fā),比如租戶A(aaa.com)到實例1(版本1.0),租戶B(bbb.com)到實例2(版本). 當需要域名配置非常多的時候,nginx配置文檔會亂。這塊時候可以考慮使用nignx_lua來寫一些擴展模塊。

8. 容量估計

暫時先寫這么多了。有時間再補充。


網(wǎng)站名稱:SaaS系統(tǒng)架構(gòu)設(shè)計經(jīng)驗總結(jié)
本文來源:http://www.5511xx.com/article/dpedgse.html