徹底理解微商城多租戶Saas架構設計

来源:https://www.cnblogs.com/qingmiaokeji/archive/2020/07/28/13389428.html
-Advertisement-
Play Games

徹底理解微商城多租戶Saas架構設計 原文鏈接:https://blog.csdn.net/haponchang/article/details/104246317,感謝作者提供這麼好的總結! 1.具體的SaaS架構必須 1.先仔細選擇最適合應用程式需求的租戶模型, 2.需要根據租戶模型來選定最終的 ...


徹底理解微商城多租戶Saas架構設計

原文鏈接:https://blog.csdn.net/haponchang/article/details/104246317,感謝作者提供這麼好的總結!

1.具體的SaaS架構必須

1.先仔細選擇最適合應用程式需求的租戶模型,

2.需要根據租戶模型來選定最終的架構,即應用程式設計和管理、每個租戶的數據如何映射到存儲等等。

避免因租戶模型的切換而付出昂貴的代價。

租戶模型  --》 應用程式設計 + 數據設計方案

2.影響租戶模型的相關因素包括:

2.1可擴展性(Scalability)

  • 租戶的數量級
  • 每個租戶的存儲級別
  • 整體存儲
  • 工作負載

2.2租戶隔離性(Tenant isolation)

  • 數據隔離和性能(是否一個租戶的負載會影響到其他租戶)

2.3單租戶成本(Per-tenant cost)

  • 資料庫成本

2.4 開發複雜度(Development complexity)

  • 數據結構的變化
  • 查詢語句的變化

2.5運維複雜度(Operational complexity)

  • 性能監控
  • 數據結構schema管理
  • 租戶數據恢復
  • 災備

2.4可定製化程度(Customizability)

根據租戶的需求自定義架構的容易程度
這個租戶的討論集中在數據層。但考慮一下應用層。應用程式層被視為一個整體實體。如果將應用程式劃分為許多小型組件,您的租戶模型選擇可能會發生變化。對於租戶和存儲技術或使用的平臺,您可以對其他組件進行不同的處理。

3 常見的架構模式有以下幾種:

3.1獨立服務+獨立資料庫

這個模型中,應用層和數據層都是隔離的。

應用程式的每個實例都是獨立實例。

租戶擁有自己獨立的資料庫,每個應用程式實例只需要一個資料庫。

對租戶的管理獨立於系統之外,對於每一個租戶,整個應用程式需要重覆安裝一次。供應商都可以為租戶管理軟體。每個應用程式實例都配置為連接到其相應的資料庫。

優點:為不同的租戶提供獨立的應用實例和資料庫,有助於簡化數據模型和業務模型的擴展設計,滿足不同租戶的獨特需求;如果出現故障,恢復系統或數據均比較簡單,系統間也不會相互影響。

問題:資料庫層面,每個租戶資料庫都作為獨立資料庫進行部署。該模型提供了最大的資料庫隔離。但隔離需要為每個資料庫分配足夠的資源來處理其高峰負載。這裡重要的是, 彈性池不能用於部署在不同資源組或不同訂閱中的資料庫。這種限制使得這種獨立的單租戶應用程式模型成為從整體資料庫成本角度來看最昂貴的解決方案;應用層面,每個租戶若存在個性化定製,則需要對項目進行橫向擴展,擴展時務必需要保證與主幹版本的相容性問題。運維層面,應用和資料庫的安裝數量會隨租戶的數量線性遞增,隨之帶來維護成本和購置成本的增加。

3.2一套服務+獨立資料庫

這個模型中,應用層是共用的,數據層都是隔離的

應用程式僅部署一套,所有租戶實例共用。

租戶仍擁有自己獨立的資料庫,應用程式需對接多個租戶的資料庫。

對租戶的管理由配置中心(Config Server)管理,配置中心提供了配置,監視和管理共用所需的功能,供應商使用這些工具為租戶管理軟體。對於每一個租戶,整個應用程式僅需要安裝一次,應用程式實際請求結合配置中心請求相應的資料庫。

優點:為不同的租戶提供獨立資料庫,有助於簡化數據模型擴展設計,滿足不同租戶的獨特需求;如果出現故障,數據恢復均比較簡單,也可以自動將單個租戶恢復到較早的時間點。因為恢復只需要恢復存儲租戶的一個單租戶資料庫。這種恢復對其他租戶沒有影響,這證實了管理運營處於每個租戶的細粒度級別。應用層面的維護成本和購置成本有所減少。

問題:資料庫層面,同模型一;應用層面,每個租戶若存在個性化定製,則需要對項目進行橫向擴展,擴展時務必需要保證與主幹版本的相容性問題。運維層面,資料庫的運維問題同模式一,應用層面的運維在版本控制的問題上難度有所增加。

3.3 一套服務+一套資料庫(不同schema)

這個模型中,應用層是共用的,資料庫共用,但數據是隔離的。

應用程式和資料庫僅部署一套,所有租戶共用。

多個或所有租戶共用Database,也就是說共同使用一個資料庫,但是每個租戶一個Schema(也可叫做一個user),使用表進行數據隔離資料庫。底層庫比如是:DB2、ORACLE等,一個資料庫下可以有多個SCHEMA。

應用程式需對接多個租戶的資料庫。

對租戶的管理由配置中心(Config Server)管理,同模式二。

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

問題:資料庫層面,如果出現故障,數據恢複比較困難,因為恢複數據庫將牽涉到其他租戶的數據;應用層面,配置中心需要對租戶信息進行完整且合理的分配和維護。

3.4 一套服務+一套資料庫(相同schema)

模型與模型三的差別在於共用資料庫,共用 Schema,共用數據表。也就是說共同使用一個資料庫一個表使用欄位進行數據隔離。如表中增加TenantID多租戶的數據欄位。這是共用程度最高、隔離級別最低的模式。

簡單來講,即每插入一條數據時都需要有一個客戶的標識。這樣才能在同一張表中區分出不同客戶的數據,這也是我們系統目前用到的(tenant_id)。

優點:方案的維護和購置成本低,允許每個資料庫支持的租戶數量最多。

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

3.5網關+前臺+中台+數據存儲

模式五與之前的模式的最大區別是,在原有的web Service進行細化拆分,優化成 網關+前臺+中台+數據存儲的模式。

網關用於接收租戶的請求,併發送給前臺。

前臺的數量與租戶一致,每一個租戶對應一個前臺服務,方便針對租戶進行個性化定製。

中台負責提供處理所有的業務請求,中台不關心租戶是誰,將重心關註在業務的處理上。配置中心用於配置租戶的介面許可權、流程定製等相關配置信息。結合業務邏輯返回給前臺特定租戶的相關信息。

資料庫模式參考模式四。

優點:有利於定製不同租戶的個性化需求。例如:交互界面不同、工作流不同等等。

服務只需要根據用戶需求在前臺做相應的橫向擴展即可;

不同租戶間服務相互獨立,互不影響。

缺點:模塊劃分需要做好劃分,重點註重業務之間的低耦合;

調用鏈路變長,需要做一定的優化處理;

模塊縱向拆分後,後期研發和運維難度均會有所增加;

好文收集不易,請轉發或在看,謝謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • MVC 與 Vue 本文寫於 2020 年 7 月 27 日 首先有個問題:Vue 是 MVC 還是 MVVM 框架? 維基百科告訴我們:MVVM 是 PM 的變種,而 PM 又是 MVC 的變種。 所以一定程度上來說,三者的思想方向是一樣的。所以不管 Vue 是 MVC 還是 MVVM 或者都不是 ...
  • 如果父組件監聽到子組件掛載mounted做一些邏輯處理 1、使用on和emit 子組件emit觸發一個事件,父組件emit觸發一個事件,父組件on監聽相應事件。 // Parent.vue <Child @mounted="doSomething"/> // Child.vue mounted() ...
  • 動態規劃整體思路是用遞歸問題求解,然後對遞歸過程中存在的大量重疊子問題進行優化, 自頂向下的求解的思路為記憶化搜索,自底向上的解決問題的思想就是動態規劃,自頂向下的求解通常更好理解,我們理解後在改成自底向上的動態規劃求解; 劍指 Offer 10- I. 斐波那契數列寫一個函數,輸入 n ,求斐波那 ...
  • 實現在父組件中促發子組件裡面的方法 子組件: <template> <div> 我是子組件 </div> </template> <script> export default { name: "child", methods: { parentHandleclick(e) { console.lo ...
  • 在實現客服系統的過程中,需要有新消息的時候標題欄閃爍提示 因為聊天框是被iframe框進去的頁面,所以在聊天框中收到websocket消息以後要把消息發送給父集頁面,在父頁面中閃爍標題 測試頁面地址: https://gofly.sopans.com/ 子頁面發送到父頁面的實現是,在父頁面增加消息監 ...
  • 本教程案例線上演示 有路網PC端 有路網移動端 免費配套視頻教程 免費配套視頻教程 教程配套源碼資源 教程配套源碼資源 字體樣式 屬性名 含義 舉例 font-family 設置字體類型 font-family:"隸書"; font-size 設置字體大小 font-size:12px; font- ...
  • 一、Nacos 介紹 Nacos 是 Alibaba 公司推出的開源工具,用於實現分散式系統的服務發現與配置管理。英文全稱 Dynamic Naming and Configuration Service,Na 為 Naming/NameServer 即註冊中心,co 為 Configuration ...
  • 特別註意:本代碼為 Springboot 工作流 前後分離 + 跨域 版本 (許可權控制到菜單和按鈕) 後臺框架:springboot2.3.0+ Flowable6.5.0+ mybaits+maven+介面 前端頁面:html +vue.js 形式 jquery ajax 非同步跨域 json 格式 ...
一周排行
    -Advertisement-
    Play Games
  • 一:背景 準備開個系列來聊一下 PerfView 這款工具,熟悉我的朋友都知道我喜歡用 WinDbg,這東西雖然很牛,但也不是萬能的,也有一些場景他解決不了或者很難解決,這時候藉助一些其他的工具來輔助,是一個很不錯的主意。 很多朋友喜歡在項目中以記錄日誌的方式來監控項目的流轉情況,其實 CoreCL ...
  • 什麼是工業物聯網網關 工業物聯網網關是連接工業場景本地設備(如PLC、掃碼槍、機器人、數控機床等)與遠端業務系統(如SCADA系統、MES系統等)之間的硬體設備或軟體程式。終端設備和遠端業務系統之間的所有數據通信都通過工業物聯網網關來實現。 我們為什麼需要工業物聯網網關 因為從事汽車工業行業,在我們 ...
  • 在.NET Core的依賴註入框架中,服務註冊的信息將會被封裝成ServiceDescriptor對象,而這些對象都會存儲在IServiceCollection介面類型表示的集合中,另外,IServiceCollection介面類型預設使用的實現類型為ServiceCollection。這樣來看,實 ...
  • 如果業務邏輯比較簡單的話,一條主管道就夠了,確實用不到分支管道。不過當業務邏輯比較複雜的時候,有時候我們可能希望根據情況的不同使用特殊的一組中間件來處理 HttpContext。這種情況下如果只用一條管道,處理起來會非常麻煩和混亂。此時就可以使用 Map/MapWhen/UseWhen 建立一個分支 ...
  • .NET nanoFramework 安裝教程 準備材料​ esp32單片機(支持wifi藍牙) 安卓數據線(需要支持傳輸) 註意!請先安裝esp32驅動程式​ ESP32驅動鏈接 安裝 .NET nanoFramework固件快閃記憶體​ 安裝工具 dotnet tool install -g nano ...
  • Redis是大規模互聯網應用常用的記憶體高速緩存資料庫,它的讀寫速度非常快,據官方 Bench-mark的數據,它讀的速度能到11萬次/秒,寫的速度是8.1萬次/秒。 1. 認識Spring Cache 在很多應用場景中通常是獲取前後相同或更新不頻繁的數據,比如訪問產品信息數據、網頁數據。如果沒有使用 ...
  • 1、應用場景 1.1 kafka場景 ​ Kafka最初是由LinkedIn公司採用Scala語言開發,基於ZooKeeper,現在已經捐獻給了Apache基金會。目前Kafka已經定位為一個分散式流式處理平臺,它以 高吞吐、可持久化、可水平擴展、支持流處理等多種特性而被廣泛應用。 ​ Apache ...
  • Python帶我起飛——入門、進階、商業實戰_ 免費下載地址 內容簡介 · · · · · · 《Python帶我起飛——入門、進階、商業實戰》針對Python 3.5 以上版本,採用“理論+實踐”的形式編寫,通過大量的實例(共42 個),全面而深入地講解“Python 基礎語法”和“Python ...
  • 原文連接:https://www.zhoubotong.site/post/67.html Go 標準庫的net/url包提供的兩個函可以直接檢查URL合法性,不需要手動去正則匹配校驗。 下麵可以直接使用ParseRequestURI()函數解析URL,當然這個只會驗證url格式,至於功能變數名稱是否存在或 ...
  • 多商戶商城系統,也稱為B2B2C(BBC)平臺電商模式多商家商城系統。可以快速幫助企業搭建類似拼多多/京東/天貓/淘寶的綜合商城。 多商戶商城系統支持商家入駐加盟,同時滿足平臺自營、旗艦店等多種經營方式。平臺可以通過收取商家入駐費,訂單交易服務費,提現手續費,簡訊通道費等多手段方式,實現整體盈利。 ...