多租戶—概述

概念:

多租戶(Multi Tenancy/Tenant)是一種軟件架構,其定義是:在一臺服務器上運行單個應用實例,它爲多個租戶提供服務。

在SaaS實施過程中,有一個顯著的考量點,就是如何對應用數據進行設計,以支持多租戶,而這種設計的思路,是要在數據的共享、安全隔離和性能間取得平衡。

傳統的應用,僅僅服務於單個租戶,數據庫多部署在企業內部網絡環境,對於數據擁有者來說,這些數據是自己“私有”的,它符合自己所定義的全部安全標準。而在雲計算時代,隨着應用本身被放到雲端,導致數據層也經常被公開化,但租戶對數據安全性的要求,並不因之下降。同時,多租戶應用在租戶數量增多的情況下,會比單租戶應用面臨更多的性能壓力。

SaaS(Software-as-a-Service)–軟件即服務,實施多租戶模式在數據存儲上存在三種主要的方案:

獨立數據庫

獨立數據庫是一個租戶獨享一個數據庫實例,它提供了最強的分離度,租戶的數據彼此物理不可見,備份與恢復都很靈活;這種方案的用戶數據隔離級別最高,安全性最好,但成本也高。

優點:

爲不同的租戶提供獨立的數據庫,有助於簡化數據模型的擴展設計,滿足不同租戶的獨特需求;如果出現故障,恢復數據比較簡單。

缺點:

增大了數據庫的安裝數量,隨之帶來維護成本和購置成本的增加。

說明:

這種方案與傳統的一個客戶、一套數據、一套部署類似,差別只在於軟件統一部署在運營商那裏。如果面對的是銀行、醫院等需要非常高數據隔離級別的租戶,可以選擇這種模式,提高租用的定價。如果定價較低,產品走低價路線,這種方案一般對運營商來說是無法承受的。

共享數據庫、獨立 Schema(共享數據庫,隔離數據架構)

將每個租戶關聯到同一個數據庫的不同 Schema,即多個或所有租戶共享Database,但一個Tenant一個Schema。租戶間數據彼此邏輯不可見,上層應用程序的實現和獨立數據庫一樣簡單,但備份恢復稍顯複雜;

優點:

爲安全性要求較高的租戶提供了一定程度的邏輯數據隔離,並不是完全隔離;每個數據庫可以支持更多的租戶數量。

缺點:

1.如果出現故障,數據恢復比較困難,因爲恢復數據庫將牽扯到其他租戶的數據;
2 .如果需要跨租戶統計數據,存在一定困難。

共享數據庫、共享 Schema、共享數據表

租戶數據在數據表級別實現共享,它提供了最低的成本,但引入了額外的編程複雜性(程序的數據訪問需要用 tenantId 來區分不同租戶),備份與恢復也更復雜。

優點:

三種方案比較,第三種方案的維護和購置成本最低,允許每個數據庫支持的租戶數量最多。

缺點:

1.隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;
2.數據備份和恢復最困難,需要逐表逐條備份和還原。

說明:

如果希望以最少的服務器爲最多的租戶提供服務,並且租戶接受以犧牲隔離級別換取降低成本,這種方案最適合。

比較:

這三種模式的特點可以用一張圖來概括:

這裏寫圖片描述

總結:

上圖所總結的是一般性的結論,而在常規場景下需要綜合考慮才能決定那種方式是合適的。例如,在佔用成本上,認爲獨立數據庫會高,共享模式較低。但如果考慮到大租戶潛在的數據擴展需求,有時也許會有相反的成本耗用結論。

而多租戶採用的選擇,主要是成本原因,對於多數場景而言,共享度越高,軟硬件資源的利用效率更好,成本也更低。但同時也要解決好租戶資源共享和隔離帶來的安全與性能、擴展性等問題。畢竟,也有客戶無法滿意於將數據與其他租戶放在共享資源中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章