偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

1.分層設(shè)計(jì)

SaaS 系統(tǒng)架構(gòu)經(jīng)驗(yàn)總結(jié)

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

 

租戶(hù)識(shí)別>應(yīng)用層>數(shù)據(jù)訪問(wèn)層>緩存層>數(shù)據(jù)庫(kù)

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

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

SaaS系統(tǒng)說(shuō)起來(lái)很簡(jiǎn)單,任何系統(tǒng)似乎加個(gè)tenant_id(租戶(hù)id)就變成SaaS系統(tǒng)了。比如原來(lái)的用戶(hù)登錄是:

  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; 

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

比較好做法是在數(shù)據(jù)庫(kù)訪問(wèn)層對(duì)SQL進(jìn)行改寫(xiě)。

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

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

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

3. 租戶(hù)識(shí)別方案

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

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

如果不想通過(guò)域名來(lái)做,也可以通過(guò)登錄名來(lái)判斷。這種方式要涉及到租戶(hù)切換問(wèn)題。

4. 智能DNS

(以后補(bǔ)充。)

5. 租戶(hù)管理系統(tǒng)(計(jì)費(fèi),訂購(gòu),定制,充值,催繳)

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

計(jì)費(fèi)方式一般有兩種,周期性計(jì)費(fèi),類(lèi)似月租方案,和使用量計(jì)費(fèi),用多少付多少。 周期性計(jì)費(fèi)比較簡(jiǎn)單。也可以?xún)烧呓Y(jié)合起來(lái)。

6. 定制化開(kāi)發(fā)

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

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

7. 灰度升級(jí)

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

8. 容量估計(jì)

暫時(shí)先寫(xiě)這么多了。有時(shí)間再補(bǔ)充。

原文鏈接:http://www.cnblogs.com/codemind/

責(zé)任編輯:Ophira 來(lái)源: cnblogs
相關(guān)推薦

2015-09-30 14:40:47

WebAPI接口設(shè)計(jì)

2009-10-20 16:04:28

家庭綜合布線系統(tǒng)

2009-10-15 09:27:00

2009-12-16 14:32:14

Linux Mint系

2009-08-19 09:24:43

AJAX引擎經(jīng)驗(yàn)總結(jié)

2009-09-29 16:32:11

OJB Hiberna

2009-09-16 17:13:54

學(xué)習(xí)Linq

2010-06-07 11:00:53

Hadoop分布式文件

2010-01-26 13:28:11

Android開(kāi)發(fā)要點(diǎn)

2010-01-27 18:12:14

Android dia

2010-03-08 15:12:27

Python語(yǔ)言

2009-08-13 18:13:27

C#學(xué)習(xí)經(jīng)驗(yàn)

2009-09-25 17:26:55

使用Hibernate

2011-07-21 13:40:17

java

2010-07-16 09:14:49

Perl模式

2013-12-18 15:54:21

2010-06-13 13:44:07

UML學(xué)習(xí)筆記

2009-09-27 14:53:38

Hibernate S

2009-12-24 16:46:03

WPF性能優(yōu)化

2009-11-17 11:24:00

PHP應(yīng)用技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)