## 概念
* 多租戶技術(英語:multi-tenancy technology)或稱多重租賃技術,是一種軟件架構技術,它是在探討與實現如何于多用戶的環境下共用相同的系統或程序組件,并且仍可確保各用戶間數據的隔離性。
* 多租戶簡單來說是指一個單獨的實例可以為多個組織服務。多租戶技術為共用的數據中心內如何以單一系統架構與服務提供多數客戶端相同甚至可定制化的服務,并且仍然可以保障客戶的數據隔離。一個支持多租戶技術的系統需要在設計上對它的數據和配置進行虛擬分區,從而使系統的每個租戶或稱組織都能夠使用一個單獨的系統實例,并且每個租戶都可以根據自己的需求對租用的系統實例進行個性化配置。
* 多租戶技術可以實現多個租戶之間共享系統實例,同時又可以實現租戶的系統實例的個性化定制。通過使用多租戶技術可以保證系統共性的部分被共享,個性的部分被單獨隔離。通過在多個租戶之間的資源復用,運營管理維護資源,有效節省開發應用的成本。而且在租戶之間共享應用程序的單個實例,可以實現當應用程序升級時,所有租戶可以同時升級。同時,因為多個租戶共享一份系統的核心代碼,因此當系統升級時,只需要升級相同的核心代碼即可。
## 實現方式
* 多租戶技術的實現重點,在于不同租戶間應用程序環境的隔離(application context isolation)以及數據的隔離(data isolation),以維持不同租戶間應用程序不會相互干擾,同時數據的保密性也夠強。
* 應用程序部份:通過進程或是支持多應用程序同時運行的裝載環境(例如Web Server,像是Apache或IIS等)來做進程間的隔離,或是在同一個伺服程序(server)進程內以運行緒的方式隔離。
* 數據部份:通過不同的機制將不同租戶的數據隔離,Force是采用中介數據(metadata)的技術來切割,微軟 MSDN的技術文件則是展示了使用結構描述的方式隔離。
* 多租戶就是說多個租戶共用一個實例,租戶的數據既有隔離又有共享,從而解決數據存儲的問題。從架構層面來分析,SaaS區別于傳統技術的重要差別就是Multi-Tenant模式。SaaS多租戶在數據存儲上存在三種主要的方案,分別是
1. 獨立數據庫
這是第一種方案,即一個租戶一個數據庫,這種方案的用戶數據隔離級別最高,安全性最好,但成本也高。
**優點:** 為不同的租戶提供獨立的數據庫,有助于簡化數據模型的擴展設計,滿足不同租戶的獨特需求;如果出現故障,恢復數據比較簡單。
**缺點:** 增大了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加。
這種方案與傳統的一個客戶、一套數據、一套部署類似,差別只在于軟件統一部署在運營商那里。如果面對的是銀行、醫院等需要非常高數據隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產品走低價路線,這種方案一般對運營商來說是無法承受的。
2. 共享數據庫,隔離數據架構
這是第二種方案,即多個或所有租戶共享Database,但一個Tenant一個Schema。
**優點:** 為安全性要求較高的租戶提供了一定程度的邏輯數據隔離,并不是完全隔離;每個數據庫可以支持更多的租戶數量。
**缺點:** 如果出現故障,數據恢復比較困難,因為恢復數據庫將牽扯到其他租戶的數據;如果需要跨租戶統計數據,存在一定困難。
3. 共享數據庫,共享數據架構
這是第三種方案,即租戶共享同一個Database、同一個Schema,但在表中通過TenantID區分租戶的數據。這是共享程度最高、隔離級別最低的模式。
**優點:** 三種方案比較,第三種方案的維護和購置成本最低,允許每個數據庫支持的租戶數量最多。
**缺點:** 隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;數據備份和恢復最困難,需要逐表逐條備份和還原。如果希望以最少的服務器為最多的租戶提供服務,并且租戶接受以犧牲隔離級別換取降低成本,這種方案最適合。
- 序言
- 開發環境準備
- 環境要求
- 環境安裝
- 基礎環境安裝
- Nacos安裝
- Sentinel安裝
- 插件安裝
- 導入工程
- 運行工程
- 工程測試
- JPower特性
- 系統啟動器
- 多終端令牌認證
- 系統鑒權
- 鑒權API
- 鑒權配置
- API權限配置
- 接口放行配置
- 數據權限
- redis緩存
- 動態網關
- 聚合文檔
- SaaS多租戶
- 概念
- 使用
- Xss防注入
- 日志記錄
- 操作日志&錯誤日志
- SQL打印
- feign請求日志&配置
- gateway日志
- 服務日志打印
- 導入導出
- 字典查詢
- 系統文件上傳下載
- 接口監控
- 代碼生成器
- 配置文件共享
- Mybatis過濾器
- 配置說明
- 高級實戰
- nacos動態配置
- Seata分布式事務
- 簡介
- docker啟動
- 微服務配置
- 微服務遠程調用
- 聲明式服務調用 Feign
- 熔斷機制 Sentinel
- sentinel流控
- 簡介
- 微服務配置
- 配置nacos對接
- APM監控&鏈路追蹤
- 簡介
- 安裝
- 微服務接入
- SpringBootAdmin監控
- ELK分布式日志追蹤系統
- ELK簡介
- ELK一鍵部署
- 微服務日志對接ELK
- JPower-Chat
- 配置說明
- 生產部署
- docker部署
- docker安裝
- docker-compose安裝
- harbor安裝
- 部署步驟
- 版本升級
- 1.0.1升級到2.0.0
- 2.0.0升級到2.0.2
- 2.0.2升級2.1.0
- 2.1.0升級到2.1.1
- 2.1.1升級到2.1.2
- 2.1.2升級到2.1.4