成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SaaS 系統架構設計經驗總結

云計算 SaaS
最近一年,有幸架構一個CRM SaaS 系統,上線了幾個月來,各方面都比滿意。整個系統創建過程,踩了很多坑,收獲也比較多。通過本文總結一下SaaS系統架構一些特點。

2B SaaS系統最近幾年都很火。很多創業公司都在嘗試創建企業級別的應用 cRM, HR,銷售, Desk SaaS系統。很多SaaS創業公司也拿了大額風投。畢竟SaaS相對傳統軟件的優勢非常明顯。

最近一年,有幸架構一個Crm SaaS 系統,上線了幾個月來,各方面都比滿意。整個系統創建過程,踩了很多坑,收獲也比較多。總結一下SaaS系統架構一些特點:

1.分層設計

SaaS 系統架構經驗總結

SaaS系統分層大概是:

 

租戶識別>應用層>數據訪問層>緩存層>數據庫

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

2.數據隔離要透明

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

  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; 

對于復雜業務的SaaS系統,這樣做法非常危險,而且開發效率很低。你想想如果那個程序員寫sql時候忘了加 “ and tenant_id =1” . 結果不堪設想。

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

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

在連接池根據TenatnContext改寫Sql.

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

3. 租戶識別方案

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

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

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

4. 智能DNS

(以后補充。)

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

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

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

6. 定制化開發

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

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

7. 灰度升級

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

8. 容量估計

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

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

責任編輯:Ophira 來源: cnblogs
相關推薦

2015-09-30 14:40:47

WebAPI接口設計

2009-10-15 09:27:00

2009-12-16 14:32:14

Linux Mint系

2009-10-20 16:04:28

家庭綜合布線系統

2009-09-16 17:13:54

學習Linq

2009-08-19 09:24:43

AJAX引擎經驗總結

2009-09-29 16:32:11

OJB Hiberna

2010-06-07 11:00:53

Hadoop分布式文件

2009-11-17 11:24:00

PHP應用技巧

2009-08-20 17:35:47

Servlet和JSP

2009-09-11 13:29:31

LINQ查詢操作

2009-09-16 17:44:54

LINQ to SQL

2009-10-22 15:07:12

綜合布線工程

2011-07-08 13:15:52

JSP

2010-06-12 17:37:18

UML實踐指南

2009-09-08 16:02:47

Linq使用Group

2009-09-08 10:57:55

LINQ查詢操作

2010-01-14 16:14:15

VB.NET界面設計

2010-01-26 13:28:11

Android開發要點

2010-01-27 18:12:14

Android dia
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品一区二区三区 | 国产精品久久一区二区三区 | 亚洲精品久久久久久一区二区 | 日韩视频一区二区在线 | 中文字幕欧美日韩一区 | 国产日韩亚洲欧美 | 成人福利在线 | 久久精品 | www.99精品 | 黄网站涩免费蜜桃网站 | 国产永久免费 | 亚洲精品一区二区三区蜜桃久 | 国产精品天堂 | 91观看| 欧美国产日韩一区二区三区 | 黄色电影在线免费观看 | 亚洲精品日韩欧美 | 91精品国产欧美一区二区成人 | 国产精品久久久久国产a级 欧美日韩国产免费 | 中文字幕高清 | 91精品久久| 国产欧美一区二区三区免费 | 天天插天天操 | 中文字幕在线三区 | 亚洲精品国产电影 | 欧美大片一区 | 日韩在线免费视频 | 亚洲深夜福利 | 91精品国产一区二区三区 | 欧美日韩综合精品 | 69精品久久久久久 | 欧美二三区 | 91色在线视频 | 99精品国产一区二区青青牛奶 | 羞羞的视频免费在线观看 | 国产japanhdxxxx麻豆 | 宅女噜噜66国产精品观看免费 | 精品久| 日本a级大片 | 午夜精品久久久久久久久久久久久 | 在线国产一区二区 |