SaaS軟體即服務聽了多年,不知原理,原來是這樣實現的……

寫這篇文章的目的其實也很簡單,聽了多年的SAAS。這次的這家企業購買的就是SAAS軟件。本人之前從事過軟件項目,對技術談不上精通,當對整個開發管理過程,技術實現原理還是非常瞭解的。所以對技術方面知識的求知心,還是非常強的。

問題:軟件是第三方的,要求對方修改,告知無法修改,需要開發週期1個半,要是原來傳統的方案,一個客戶、一套數據、一套部署,分分中秒殺。但是自己不懂SaaS開發原理與模式,溝通上就會存在問題。被騙也不知道。所以就請教了,又一城的運維,告訴我一個關鍵詞。

多租戶模式,就去百度了下。以下文章分三段?什麼是saas?什麼是多租戶模式?遺留的問題?

英文單詞解釋:本人英文太落。

database:數據庫

schema:架構

TenantID:租戶ID

multi tenant:多租戶

一、Saas介紹

SaaS是Software-as-a-Service(軟件即服務)的簡稱,隨著互聯網技術的發展和應用軟件的成熟, 在21世紀開始興起的一種完全創新的軟件應用模式。

二、多租戶模式

多租戶技術的實現重點,在於不同租戶間應用程序環境的隔離(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區分租戶的數據。這是共享程度最高、隔離級別最低的模式。

優點:

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

缺點:

隔離級別最低,安全性最低,需要在設計開發時加大對安全的開發量;

數據備份和恢復最困難,需要逐表逐條備份和還原。

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

總結:

文章開篇提到的:應用程序部分與程序部分的理解。

以下為應用程序

1.服務器系統:Windowsserver、UNIX、Linux、NetWare這四大陣容。

2.軟件環境:IIS+ASP+ASP.net+PHP+MySQL+FTP+PhpMyAdmin+偽靜態

(這裡只做舉例)

以下為程序部分:

就是數據庫:MySQL,MSSQL,Oracle,等等。

多租戶的三種模式:

1.獨立數據庫:這種模式最好理解,就是一個租戶一個獨立的數據庫。

2.共享數據庫,隔離數據架構:

數據庫只有一個,但是數據架構隔離。

即多個或所有租戶共享Database,但一個Tenant一個Schema。

SaaS軟件即服務聽了多年,不知原理,原來是這樣實現的……

關於這個數據架構隔離,只是理解但是,還是不懂。後面再補。或者把schema當成一個集合理解吧。

3.共享數據庫,共享數據架構

這是第三種方案,即租戶共享同一個Database、同一個Schema,但在表中通過TenantID區分租戶的數據。這是共享程度最高、隔離級別最低的模式。

我對這個的理解就是:表名不一樣。

以上文章只能提供,有需要的夥伴對多租戶模式的理解。其他的本人能力有限,到此為止。後期再續。


分享到:


相關文章: