(2)彈力設(shè)計(jì)篇之“隔離設(shè)計(jì)”

概要:系統(tǒng)的分離有兩種方式,以服務(wù)、以用戶來做分離;隔離設(shè)計(jì)的重點(diǎn):

一、按服務(wù)的種類來做分離

系統(tǒng)分成了用戶、商品、社區(qū)三個(gè)版塊。使用不同的域名、服務(wù)器和數(shù)據(jù)庫,從接入層到應(yīng)用層再到數(shù)據(jù)層三層完全隔離。每個(gè)服務(wù)都有自己的一個(gè)數(shù)據(jù)庫,保存相關(guān)業(yè)務(wù)的數(shù)據(jù)和相應(yīng)的處理狀態(tài)。每個(gè)服務(wù)對外暴露。微服務(wù)所推薦的架構(gòu)方式。

隔離存在以下一些問題:

1.調(diào)用多個(gè)服務(wù)(同時(shí)獲得多個(gè)板塊數(shù)據(jù)),會降低性能。性能指的是響應(yīng)時(shí)間,而不是吞吐量(這種架構(gòu)下,吞吐量可以得到提高)。所以不要在一個(gè)頁面上獲得所有的數(shù)據(jù),好在手機(jī)頁面小。

2.增加了數(shù)據(jù)合并的復(fù)雜度。需要一個(gè)框架、間件來對數(shù)據(jù)進(jìn)行相應(yīng)的抽取。

3.導(dǎo)致整體業(yè)務(wù)故障,如果業(yè)務(wù)流程跨版塊的話,所以業(yè)務(wù)流程Step-by-Step 的方式,交互的每一步都可以保存,以便故障恢復(fù)后繼續(xù)執(zhí)行,而不是從頭執(zhí)行。

4.跨版塊復(fù)雜。高可用并持久化的消息中間件(類似Pub/Sub),打通各個(gè)版塊的數(shù)據(jù)和信息交換。

5.多版塊分布式事務(wù)問題。采用“二階段提交”方案。亞馬遜使用的是 Plan – Reserve – Commit/Cancel 模式。也就是說,先做一個(gè) plan 的 API 調(diào)用,各個(gè)子系統(tǒng) reserve 住相應(yīng)的資源,成功Commit;一個(gè)失敗體 Cancel。很像阿里的 TCC – try confirm/cancel。引入大量的異步處理模型。

二·、按用戶的請求來做分離

這樣系統(tǒng)掛掉時(shí),只影響一部分。

“多租戶”模式:大客戶,設(shè)置專門獨(dú)立服務(wù)實(shí)例,或是服務(wù)集群與其他客戶隔離開來,小用戶,共享一個(gè)服務(wù)實(shí)例。

“多租戶”架構(gòu)來引入復(fù)雜度。完全隔離,資源浪費(fèi),共享,程序設(shè)計(jì)復(fù)雜。

多租戶的做法有三種:

(1)完全獨(dú)立的設(shè)計(jì)。每個(gè)租戶有自己完全獨(dú)立的服務(wù)和數(shù)據(jù)。

(2)獨(dú)立的數(shù)據(jù)分區(qū),共享的服務(wù)。多租戶的服務(wù)是共享的,但數(shù)據(jù)是分開隔離的。

(3)共享的服務(wù),共享的數(shù)據(jù)分區(qū)。每個(gè)租戶的數(shù)據(jù)和服務(wù)都是共享的。

這三種方案各有優(yōu)缺點(diǎn),如圖所示。

在虛擬化技術(shù)非常成熟的今天,我們完全可以使用“完全獨(dú)立”(完全隔離)的方案,通過底層的虛擬化技術(shù)(Hypervisor 的技術(shù),如 KVM,或是 Linux Container 的技術(shù),如Docker)來實(shí)現(xiàn)物理資源的共享和成本的節(jié)約。

三、隔離設(shè)計(jì)的重點(diǎn):

定義好隔離業(yè)務(wù)的大小和粒度,不過大過小。業(yè)務(wù)上的需求和系統(tǒng)分析。

考慮系統(tǒng)的復(fù)雜度、成本、性能、資源使用的問題,無論是做系統(tǒng)版塊還是多租戶的隔離,定義好要什么和不要什么,一個(gè)合適的均衡方案/分布實(shí)施的方案尤其重要,。

配置高可用、重試、異步、消息中間件,流控、熔斷等配套使用。

自動(dòng)化運(yùn)維的工具:使用像容器或是虛擬機(jī)更方便地管理

看到所有服務(wù)的監(jiān)控系統(tǒng)。

評論:

我們目前系統(tǒng)中采用隔離的點(diǎn)包括:

1、服務(wù)集群隔離,我們可以配置不同的請求訪問不同的服務(wù)集群,我們通過服務(wù)別名來區(qū)分

2、數(shù)據(jù)存儲隔離,包括數(shù)據(jù)庫隔離、緩存集群隔離。數(shù)據(jù)庫隔離一般通過分庫分表,讀寫分離

3、線程池隔離,在同一個(gè)應(yīng)用中,不同的任務(wù)處理通過線程池隔離

4、網(wǎng)絡(luò)帶寬隔離

隔離的本質(zhì)是當(dāng)系統(tǒng)出盡現(xiàn)故障時(shí),將影響范圍降到最低。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,285評論 2 89
  • 概念:微服務(wù)就是一些可獨(dú)立運(yùn)行、可協(xié)同工作的小的服務(wù)。微服務(wù)是現(xiàn)在特別流行的服務(wù),微服務(wù)的字面意思是大家都很好理解...
    程序員技術(shù)圈閱讀 3,451評論 2 47
  • 目錄 ·大型網(wǎng)站軟件系統(tǒng)的特點(diǎn) ·大型網(wǎng)站架構(gòu)演化發(fā)展歷程 ·初始階段的網(wǎng)站架構(gòu) ·需求/解決問題 ·架構(gòu) ·應(yīng)用...
    zhyang0918閱讀 2,837評論 0 16
  • 【0325能量按鈕】 3344-施小施 推薦人:二連老鐵進(jìn)階蝸牛 這是一部關(guān)于人性的6分鐘短片《雇傭人生》,全片沒...
    施小施閱讀 238評論 0 1
  • 炎炎此夏,最美如你。 你是夏日初臨時(shí)的一張照片,照片中有你湖水般澄澈的眼睛,時(shí)過境遷,那初逢時(shí)的感情會始終不變。還...
    白壁閱讀 529評論 8 11

友情鏈接更多精彩內(nèi)容