多租戶技術(英語:multi-tenancy technology)或稱多重租賃技術,是一種軟體架構技術,它是在探討與實現如何於多使用者的環境下共用相同的系統或程式元件,並且仍可確保各使用者間資料的隔離性。
多租戶在資料儲存上存在三種主要的方案,分別是
1.獨立資料庫
這是第一種方案,即一個租戶一個資料庫,這種方案的使用者資料隔離級別最高,安全性最好,但成本也高。
優點:
為不同的租戶提供獨立的資料庫,有助於簡化資料模型的擴充套件設計,滿足不同租戶的獨特需求;
如果出現故障,恢復資料比較簡單。
缺點:
增大了資料庫的安裝數量,隨之帶來維護成本和購置成本的增加。
這種方案與傳統的一個客戶、一套資料、一套部署類似,差別只在於軟體統一部署在運營商那裡。如果面對的是銀行、醫院等需要非常高資料隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產品走低價路線,這種方案一般對運營商來說是無法承受的。
2.共享資料庫,隔離資料架構
這是第二種方案,即多個或所有租戶共享Database,但一個Tenant一個Schema。
優點:
為安全性要求較高的租戶提供了一定程度的邏輯資料隔離,並不是完全隔離;每個資料庫可以支援更多的租戶數量。
缺點:
如果出現故障,資料恢復比較困難,因為恢復資料庫將牽扯到其他租戶的資料;
如果需要跨租戶統計資料,存在一定困難。
3.共享資料庫,共享資料架構
這是第三種方案,即租戶共享同一個Database、同一個Schema,但在表中通過TenantID區分租戶的資料。這是共享程度最高、隔離級別最低的模式。
優點:
三種方案比較,第三種方案的維護和購置成本最低,允許每個資料庫支援的租戶數量最多。
缺點:
隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;
資料備份和恢復最困難,需要逐表逐條備份和還原。
如果希望以最少的伺服器為最多的租戶提供服務,並且租戶接受以犧牲隔離級別換取降低成本,這種方案最適合。
資料層租戶隔離方式:
1 每個表上加租戶的標識欄位,查詢時候帶上標識的判斷。 優缺點:程式碼侵入強,租戶隔離級別較低,同時使用一個單表時容易出現效能問題
2 切換多資料庫例項,為每一個租戶建立一個資料庫例項。 優缺點:租戶隔離級別最高,一個租戶的資料操作完全不會影響到其他租戶,但是需要為每個租戶建立一個資料庫例項,成本高,沒有辦法做到瞬時開戶、銷戶。同時如果資料庫例項採用雲產品如阿里雲RDS,實現成本更高;
3 使用同一個資料庫例項,動態切換schema。 優缺點:租戶的資料層隔離級別適中,維護成本較低,開發成本較高,需要在執行期動態切換DataSource。
多租戶有什麼好處
總結起來主要有以下幾點:
第一,系統維護成本低
多租戶系統在系統升級時,只需要更新一次。
維護人員不需要對每個使用者更新,節省了很大的運維成本!
第二,提高了資料安全性
在雲端計算環境下,很多應用都放到了雲端,導致在應用入口,敏感資料洩露、資料訪問無詳細記錄、應用冒名訪問開放介面;
在運維入口,開發人員賬號混用、操作無詳細記錄、高危險誤操作無法控制、敏感資料洩露
通過多租戶資料資源隔離機制,就可以保證資料的安全性。
二、多租戶與多使用者、單租戶有什麼區別呢?
(一)與多使用者的區別
首先,租戶與使用者是兩個完全不同的概念
每個租戶都有專用的虛擬計算環境,且部署在應用外部而使用者是指應用的使用者。