<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          干貨收藏丨微服務架構下的9大經(jīng)典隔離策略

          共 6422字,需瀏覽 13分鐘

           ·

          2024-04-12 05:06



          ??目錄


          1 前言

          2 隔離

          3 動靜隔離

          4 讀寫隔離

          5 核心隔離

          6 熱點隔離

          7 用戶隔離

          8 進程隔離

          9 線程隔離

          10 集群隔離

          11 機房隔離




          01



          前言

          單體應用中,一個組件的故障往往會拖垮整個系統(tǒng)。而微服務架構的一個好處便在于更好的容錯性——微服務之間可以實現(xiàn)更好的故障隔離,單個服務內的內存泄露等故障不容易影響其他服務。

          但微服務架構由于服務數(shù)變多也帶來了復雜度的問題,由此引來了經(jīng)典的服務治理問題,這也是許多程序員走上架構師方向的必由之路。微服務中的隔離策略,便是其中的關鍵,本文將詳解 9 大隔離策略的具體做法,為你的系統(tǒng)可用性添磚加瓦。



          02



          隔離

          微服務系統(tǒng)中,隔離策略是流量治理的關鍵組成部分,其主要目的是避免單個服務的故障引發(fā)整個系統(tǒng)的連鎖反應。

          通過隔離,系統(tǒng)能夠局部化問題,確保單個服務的問題不會影響到其他服務,從而維護整體系統(tǒng)的穩(wěn)定性和可靠性。

          常見的隔離策略:




          03



          動靜隔離

          動靜隔離通常是指將系統(tǒng)的動態(tài)內容和靜態(tài)內容分開處理

          動態(tài)內容

          • 指需要實時計算或從數(shù)據(jù)庫中檢索的數(shù)據(jù),通常由后端服務提供;
          • 可以通過緩存、數(shù)據(jù)庫優(yōu)化等方法來提高動態(tài)內容的處理速度。

          靜態(tài)內容

          • 指可以直接從文件系統(tǒng)中獲取的數(shù)據(jù),例如圖片、音視頻、前端的 CSS、JS 文件等靜態(tài)資源;
          • 可以存儲到 OSS 并通過 CDN 進行訪問加速。




          04



          讀寫隔離

          讀寫隔離通常是指將讀操作和寫操作分離到不同的服務或實例中處理

          • 大部分的系統(tǒng)里讀寫操作都是不均衡的,寫數(shù)據(jù)可能遠遠少于讀數(shù)據(jù);
          • 讀寫隔離得以讓讀服務和寫服務獨立擴展。

          DDD中有一種常用的模式:CQRS(Command Query Responsibility Segregation,命令查詢職責分離)來實現(xiàn)讀寫隔離

          寫服務
          • 負責處理所有的寫操作,例如創(chuàng)建、更新和刪除數(shù)據(jù);
          • 通常會有一個或多個數(shù)據(jù)庫或數(shù)據(jù)存儲,用于保存系統(tǒng)的數(shù)據(jù)。

          讀服務
          • 負責處理所有的讀操作,例如查詢和檢索數(shù)據(jù);
          • 可以有獨立的數(shù)據(jù)庫或數(shù)據(jù)存儲,也可以使用緩存來提高查詢的性能。

          事件驅動
          • 當寫服務處理完一個寫操作后,通常會發(fā)布一個事件,通知讀服務數(shù)據(jù)已經(jīng)發(fā)生變化;
          • 讀服務可以監(jiān)聽這些事件,并更新其數(shù)據(jù)庫或緩存,以保證數(shù)據(jù)的一致性。

          獨立擴展
          • 通過 CQRS 模式,讀服務和寫服務可以獨立地進行擴展;
          • 如果系統(tǒng)的讀負載較高,可以增加讀服務的實例數(shù)量;如果寫負載較高,可以增加寫服務的實例數(shù)量。




          05



          核心隔離

          核心隔離通常是指將資源按照 “核心業(yè)務”與 “非核心業(yè)務”進行劃分,優(yōu)先保障“核心業(yè)務”的穩(wěn)定運行AI助手

          • 核心/非核心故障域的差異隔離(機器資源、依賴資源);
          • 核心業(yè)務可以搭建多集群通過冗余資源來提升吞吐和容災能力;
          • 按照服務的核心程度進行分級。
            • 1級:系統(tǒng)中最關鍵的服務,如果出現(xiàn)故障會導致用戶或業(yè)務產(chǎn)生重大損失;
            • 2級:對于業(yè)務非常重要,如果出現(xiàn)故障會導致用戶體驗受到影響,但不會導致系統(tǒng)完全無法使用;
            • 3級:會對用戶造成較小的影響,不容易注意或很難發(fā)現(xiàn);
            • 4級:即使失敗,也不會對用戶體驗造成影響。
              


          06



          熱點隔離

          熱點隔離通常是指一種針對高頻訪問數(shù)據(jù)(熱點數(shù)據(jù))的隔離策略

          • 可以幫助微服務系統(tǒng)更高效地處理熱點數(shù)據(jù)的訪問請求;
          • 需要有機制來識別和監(jiān)控熱點數(shù)據(jù);
            • 分析系統(tǒng)的歷史訪問記錄;
            • 觀察系統(tǒng)的監(jiān)控告警信息等。
          • 將訪問頻次最高的 Top K 數(shù)據(jù)緩存起來,可以顯著減少對后端存儲服務的訪問壓力,同時提高數(shù)據(jù)訪問的速度;
          • 可以創(chuàng)建一個獨立的緩存服務來存儲和管理熱點數(shù)據(jù),實現(xiàn)熱點數(shù)據(jù)的隔離。



          07



          用戶隔離

          用戶隔離通常是指按照不同的分組形成不同的服務實例。這樣某個服務實例宕機了也只會影響對應分組的用戶,而不會影響全部用戶

          基于 O2-SAAS 系統(tǒng)的租戶概念,按照隔離級別的從高到低有如下幾種隔離方式:

          1.每個租戶有獨立的服務與數(shù)據(jù)庫
          網(wǎng)關根據(jù) tenant_id 識別出對應的服務實例進行轉發(fā)


          2.每個租戶有共享的服務與獨立的數(shù)據(jù)庫
          用戶服務根據(jù) tenant_id 確定操作哪一個數(shù)據(jù)庫


          3.每個租戶有共享的服務與數(shù)據(jù)庫
          用戶服務根據(jù) tenant_id 確定操作數(shù)據(jù)庫的哪一行記錄




          08



          進程隔離

          進程隔離通常是指系統(tǒng)中每一個進程擁有獨立的地址空間,提供操作系統(tǒng)級別的保護區(qū)。一個進程出現(xiàn)問題不會影響其他進程的正常運行,一個應用出錯也不會對其他應用產(chǎn)生副作用

          容器化部署便是進程隔離的最佳實踐:




          09



          線程隔離

          線程隔離通常是指線程池的隔離,在應用系統(tǒng)內部,將不同請求分類發(fā)送給不同的線程池,當某個服務出現(xiàn)故障時,可以根據(jù)預先設定的熔斷策略阻斷線程的繼續(xù)執(zhí)行


          • 如圖,接口A 和 接口B 共用相同的線程池,當 接口A 的訪問量激增時,接口C 的處理效率就會被影響,進而可能產(chǎn)生雪崩效應;
          • 使用線程隔離機制,可以將 接口A 和 接口B 做一個很好的隔離。 



          10



          集群隔離

          集群隔離通常是指將某些服務單獨部署成集群,或對于某些服務進行分組集群管理

          具體來說就是每個服務都獨立成一個系統(tǒng),繼續(xù)拆分模塊,將功能微服務化:




          11



          機房隔離

          機房隔離通常是指在不同的機房或數(shù)據(jù)中心部署和運行服務,實現(xiàn)物理層面的隔離

          機房隔離的主要目的有兩個:
          1. 解決數(shù)據(jù)容量大、計算和 I/O 密集度高的問題。將不同區(qū)域的用戶隔離到不同的地區(qū),比如將湖北的數(shù)據(jù)存儲在湖北的服務器,浙江的數(shù)據(jù)存儲在浙江的服務器,這種區(qū)域化的數(shù)據(jù)管理能有效地分散流量和系統(tǒng)負載;
          2. 增強數(shù)據(jù)安全性和災難恢復能力。通過在不同地理位置建立服務的完整副本(包括計算服務和數(shù)據(jù)存儲),系統(tǒng)可以實現(xiàn)異地多活或冷備份。這樣,即使一個機房因自然災害或其他緊急情況受損,其他機房仍能維持服務,確保數(shù)據(jù)安全和業(yè)務連續(xù)性。


          -End-
          原創(chuàng)作者丨孔奕凱

           


          你覺得小公司幾個人的團隊適合微服務架構嗎?為什么?歡迎評論留言。我們將選取1則優(yōu)質的評論,送出騰訊Q哥公仔1個(見下圖)。4月7日中午12點開獎。


          ????歡迎加入騰訊云開發(fā)者社群,享前沿資訊、大咖干貨,找興趣搭子,交同城好友,更有鵝廠招聘機會、限量周邊好禮等你來~


          (長按圖片立即掃碼)






          瀏覽 24
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  蜜臀久久99精品久久久久酒店更新时间 | 国产精品久久久久久妇女6080 | 成人视频观看网站 | 久久久久久日产精品 | 色婷婷在线视频观看免费 |