01 隔離設(shè)計(jì)

1. 隔離設(shè)計(jì)概述

  • 現(xiàn)實(shí)生活中的隔離設(shè)計(jì)(Bulkheads 設(shè)計(jì))
    • 造船上有防漏水的隔板,一般的船無(wú)論大小都有這個(gè)東西,大一點(diǎn)的船回把船艙隔成若干個(gè)空間。這樣如果船艙漏水,只會(huì)進(jìn)到一個(gè)小空間里,不會(huì)讓船艙都進(jìn)水,導(dǎo)致整個(gè)船沉。
    • image.png
  • 軟件設(shè)計(jì)中
    • 為了不讓故障蔓延開來(lái),需要使用隔板技術(shù),來(lái)將架構(gòu)隔成多個(gè) 船艙 來(lái)隔離故障。
    • 在分布式軟件架構(gòu)中,一般來(lái)說(shuō)分離有兩種方式
      • 一種是以服務(wù)的種類來(lái)做分離
      • 一種是以用戶來(lái)做分離。

2.系統(tǒng)的隔離方式

2.1 服務(wù)的種類來(lái)做分離

  • image.png

1. 微服務(wù)架構(gòu),將大系統(tǒng),分離成不同的核心域。

  • 不同核心域,有自己的數(shù)據(jù)庫(kù),從用戶接口層,到應(yīng)用層,領(lǐng)域?qū)油耆綦x。
  • 一個(gè)核心域的故障不會(huì)影響到另一個(gè)板塊。

2. 問(wèn)題

  • 同時(shí)獲取多個(gè)核心域的數(shù)據(jù),就需要調(diào)用多個(gè)服務(wù),會(huì)降低性能。
    • 性能底 是指響應(yīng)時(shí)間,而不是吞吐量(吞吐量跟性能是反比)
    • 解決方案
      • 設(shè)計(jì)好用戶交互,不讓用戶在一個(gè)頁(yè)面上獲取所有的數(shù)據(jù)。
  • 大數(shù)據(jù)平臺(tái) ,需要把這些數(shù)據(jù)抽取到一個(gè)數(shù)據(jù)倉(cāng)庫(kù)計(jì)算,增加了數(shù)據(jù)合并的復(fù)雜度
    • 一般用一個(gè)框架或一個(gè)中間件來(lái)對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的抽取。
  • 如果業(yè)務(wù)邏輯,跨領(lǐng)域,一個(gè)領(lǐng)域的故障也會(huì)導(dǎo)致流程走不下去。導(dǎo)致整個(gè)業(yè)務(wù)故障
    • 一方面 保證這個(gè)業(yè)務(wù)流程各個(gè)子系統(tǒng)的高可用。
    • 并且在業(yè)務(wù)流程做出 step-by-step 的方式,這樣用戶交互每一步都可以保存,以便故障恢復(fù)后可以繼續(xù)執(zhí)行。
  • 如果跨領(lǐng)域交互變得復(fù)雜,
    • 我們需要一個(gè) Pub/Sub 的高可用,且可以持久化的消息訂閱通知中間件來(lái)打通各個(gè)板塊的數(shù)據(jù)和信息交互。
  • 多個(gè)領(lǐng)域中分布式事務(wù)問(wèn)題。
    • 采用 兩階段,或者三階段的模式。

2.2 按用戶的請(qǐng)求來(lái)做分離

image.png

1. 多租戶模式

  • 將用戶分成不同的組,并把后端的同一個(gè)服務(wù)根據(jù)這些不同組分成不同的實(shí)例。
  • 讓同一個(gè)服務(wù)對(duì)于不同的用戶進(jìn)行冗余和隔離,這樣一來(lái)當(dāng)服務(wù)實(shí)例掛斷時(shí),只會(huì)影響其中一部分用戶,而不會(huì)導(dǎo)致所有用戶無(wú)法訪問(wèn)。
  • 對(duì)于大客服,可以設(shè)置獨(dú)立分服務(wù)實(shí)例,或是服務(wù)集群與其他客服隔離開來(lái),對(duì)于較小的用戶,共享一個(gè)服務(wù)實(shí)例,這樣可以節(jié)省相關(guān)的資源。

2. 多租戶的做法

  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)
  • image.png

3. 隔離設(shè)計(jì)的重點(diǎn)

  1. 定義號(hào)隔離業(yè)務(wù)的大小和粒度,過(guò)大和過(guò)小都不會(huì),這需要認(rèn)真的做業(yè)務(wù)上的需求和系統(tǒng)分析。
  2. 無(wú)論是做系統(tǒng)種類分離 還是多租戶模式的隔離, 都需要考慮系統(tǒng)的復(fù)雜度,成本,性能,資源。定義好要什么和不要什么。
  3. 隔離模式要配置一些高可用,重試,異步,消息中間件,流控,熔斷等設(shè)計(jì)模式的方法配套使用。
  4. 分布式系統(tǒng)中運(yùn)維的復(fù)雜度的提升,需要很多自動(dòng)化運(yùn)維的工具。
  5. 需要一個(gè)完整的能夠看得到所有服務(wù)的監(jiān)控系統(tǒng)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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