干貨收藏丨微服務架構下的9大經(jīng)典隔離策略
??目錄
1 前言
2 隔離
3 動靜隔離
4 讀寫隔離
5 核心隔離
6 熱點隔離
7 用戶隔離
8 進程隔離
9 線程隔離
10 集群隔離
11 機房隔離
01
02
03
-
指需要實時計算或從數(shù)據(jù)庫中檢索的數(shù)據(jù),通常由后端服務提供; -
可以通過緩存、數(shù)據(jù)庫優(yōu)化等方法來提高動態(tài)內容的處理速度。
-
指可以直接從文件系統(tǒng)中獲取的數(shù)據(jù),例如圖片、音視頻、前端的 CSS、JS 文件等靜態(tài)資源; -
可以存儲到 OSS 并通過 CDN 進行訪問加速。
04
-
大部分的系統(tǒng)里讀寫操作都是不均衡的,寫數(shù)據(jù)可能遠遠少于讀數(shù)據(jù); -
讀寫隔離得以讓讀服務和寫服務獨立擴展。
-
負責處理所有的寫操作,例如創(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è)務可以搭建多集群通過冗余資源來提升吞吐和容災能力; -
按照服務的核心程度進行分級。 -
1級:系統(tǒng)中最關鍵的服務,如果出現(xiàn)故障會導致用戶或業(yè)務產(chǎn)生重大損失; -
2級:對于業(yè)務非常重要,如果出現(xiàn)故障會導致用戶體驗受到影響,但不會導致系統(tǒng)完全無法使用; -
3級:會對用戶造成較小的影響,不容易注意或很難發(fā)現(xiàn); -
4級:即使失敗,也不會對用戶體驗造成影響。
06
-
可以幫助微服務系統(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
網(wǎng)關根據(jù) tenant_id 識別出對應的服務實例進行轉發(fā)
用戶服務根據(jù) tenant_id 確定操作哪一個數(shù)據(jù)庫
用戶服務根據(jù) tenant_id 確定操作數(shù)據(jù)庫的哪一行記錄
08
09
-
如圖,接口A 和 接口B 共用相同的線程池,當 接口A 的訪問量激增時,接口C 的處理效率就會被影響,進而可能產(chǎn)生雪崩效應; -
使用線程隔離機制,可以將 接口A 和 接口B 做一個很好的隔離。
10
11
-
解決數(shù)據(jù)容量大、計算和 I/O 密集度高的問題。將不同區(qū)域的用戶隔離到不同的地區(qū),比如將湖北的數(shù)據(jù)存儲在湖北的服務器,浙江的數(shù)據(jù)存儲在浙江的服務器,這種區(qū)域化的數(shù)據(jù)管理能有效地分散流量和系統(tǒng)負載; -
增強數(shù)據(jù)安全性和災難恢復能力。通過在不同地理位置建立服務的完整副本(包括計算服務和數(shù)據(jù)存儲),系統(tǒng)可以實現(xiàn)異地多活或冷備份。這樣,即使一個機房因自然災害或其他緊急情況受損,其他機房仍能維持服務,確保數(shù)據(jù)安全和業(yè)務連續(xù)性。


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

(長按圖片立即掃碼)
評論
圖片
表情



