剖析Force.com的多租戶架構(2)- 多租戶的介紹

    雖然對我們而言,多租戶(Multitenancy)可以算是一個非常新穎的概念,但是其實這個概念已經由來已久了。簡單而言,多租戶指得就是一個單獨的軟件實例可以爲多個組織服務。一個支持多租戶的軟件需要在設計上能對它的數據和配置信息進行虛擬分區,從而使得每個使用這個軟件的組織能使用到一個單獨的虛擬實例,並且可以對這個虛擬實例進行定製化。但是要讓一個軟件支持多租戶並非易事,因爲不僅對它的軟件架構進行相應的修改,而且需要對它的數據庫結構進行特殊的設計,同時在安全和隔離性方面也要有所保障。還有,爲了幫助大家進一步理解多租戶這個概念,特別選取兩個和多租戶比較接近的概念來進行進一步的辨析。
多租戶和多用戶的區別
    多用戶的關鍵點在於不同的用戶擁有不同的訪問權限,但是多個用戶共享同一個的實例。而在多租戶中,多個組織使用的實例各不相同。
多租戶和虛擬化的區別
     多租戶和虛擬化在概念是比較類似,都是給每個用戶一個虛擬的實例,並且都支持定製化,但是它們作用的層次不同:虛擬化主要是虛擬出一個操作系統的實例,而多租戶則是主要虛擬出一個應用的實例。
優缺點
多租戶的優點:
    • 經濟:因爲通過一個軟件實例被多個組織共享,從而減低了整體資源的消耗,也同時減低應用運行的成本和相應的管理開支。
    • 易於更新和開發:因爲所有組織都共享同一套核心代碼,所以能夠讓軟件更新和開發更簡單。
    • 管理方便:首先,通過使用了多租戶架構能減少物理資源和軟件資源,這將簡化管理。其次。由於多租戶軟件主要由有經驗的雲供應商運營,所以能依賴那些非常經驗的管理人員來提升效率。
多租戶的缺點:
    • 更復雜:由於一個軟件需要做出極大地修改,才能支持多租戶架構,而且這種修改,往往會增加整個軟件在架構方面的複雜性。
    • 不夠安全:因爲衆多組織的應用和數據共享同一套軟件和基礎設施,如果出現機器宕機,軟件出現問題或者大規模的數據被暴露等情況,將會造成更嚴重的後果,因爲影響面更大。


幾種模型
     在現有的實現中,主要有三種常見的模型,而且區別主要在於採用不同的數據庫模式(Database Schema):
     • 私有表(圖1-a):它是最簡單的擴展模式,就是爲每個租戶的自定義數據創建一個新表。優點是簡單。缺點是涉及到高成本的DDL操作,並且它的整合度不高。
     • 擴展表(圖1-b):總體而言,比較類似於私有表,但是一個擴展表會被多個租戶共享,所以無論是共享表還是基本表都會有租戶欄位。好處是比私有表更高的整合度和更少的DDL操作,但是在架構上比私有表更復雜。
     • 通用表(圖1-c): 主要通過一個通用表來存放所有自定義信息,裏面有租戶欄位和許許多多統一的數據欄位(比如500個)。像這種統一的數據欄位會使用非常靈活的格式讓轉儲各種類型的數據,比如VARCHAR。由於在每一行中的數據欄位都會以一個Key一個Value形式存放所有自定義數據,導致通用表的行都會很寬,而且會出現很多空值,所以通用表這種方式也被稱爲"Sparse Column"。好處是極高的整合度並避免了DDL操作,但是在處理數據方面難度加大。


 
 

差異與取捨
模型
機制
優點
缺點
私有表
爲每個租戶的自定義數據創建一個新表
簡單
需要DDL操作,低整合度
擴展表
一個擴展表會被多個租戶共享
高整合度,少DDL操作
有點複雜
通用表
通過一個通用表來存放所有自定義信息
極高整合度,無DDL操作
實現難度高
     在實戰中,具體選擇那個模型,主要還是看那個模型更適合。關於多租戶的介紹已經基本結束了,下一篇將詳細介紹Force.com的多租戶架構。

 

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