2023年分布式系統(tǒng)架構(gòu)_第1頁
2023年分布式系統(tǒng)架構(gòu)_第2頁
2023年分布式系統(tǒng)架構(gòu)_第3頁
2023年分布式系統(tǒng)架構(gòu)_第4頁
2023年分布式系統(tǒng)架構(gòu)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第頁2023分布式系統(tǒng)架構(gòu)關(guān)于分布式系統(tǒng)架構(gòu)

對于軟件架構(gòu),更多的是一種思想,即內(nèi)功修為。在道與術(shù)層面,那么更偏重道的修煉,道的深度確定架構(gòu)的境界。相對而言,術(shù)是手段,隨不同的環(huán)境應(yīng)運而生,就像太極劍法和獨孤九劍,能做到隨境而變。

架構(gòu)是一種權(quán)衡

沒有一種架構(gòu)可以應(yīng)用到全部環(huán)境,也沒有一個技術(shù)或框架可以解決全部問題,即使是針對同一種場景也往往存在多種解決方案。在架構(gòu)的時候,更多的是方案和手段的權(quán)衡,例如高可用性、高并發(fā)性、一樣性本身就存在肯定的沖突;而異步還是同步、是否須要事務(wù)、如何應(yīng)用事務(wù)、緩存、拆分、容災(zāi)、發(fā)布等等,每一項都須要從各種技術(shù)實現(xiàn)中進(jìn)行權(quán)衡。細(xì)化到框架,ActiveMQ、RocketMQ、Kafka、Redis、ZooKeeper等等都可以實現(xiàn)消息隊列模型,詳細(xì)運用哪個就須要結(jié)合場景進(jìn)行權(quán)衡了。

分與合

天下大事,合久必分、分久必合,在解決高并發(fā)分布式的問題時絕大局部都在運用分與合的思想。

當(dāng)數(shù)據(jù)量很大、并發(fā)量許多的時候就須要考慮拆分(分而治之),例如分層設(shè)計、橫向拆分、縱向拆分、分IDC、分庫分表...等等。并且這些拆分本身就是分層的,例如在DNS層可以將流量根據(jù)地域或運營商安排到不同的IDC、業(yè)務(wù)層可以將業(yè)務(wù)處理邏輯安排到多個子系統(tǒng)、系統(tǒng)層可以依據(jù)用戶進(jìn)行橫向拆分、而存儲層可以依據(jù)規(guī)那么將數(shù)據(jù)安排到不同的庫不同的表;另外讀寫分別、熱點分別、獨立出緩存層也表達(dá)了分布式系統(tǒng)架構(gòu)中分的思想。

為什么要做這么多的拆分,拆分就是為了化多為少,在單節(jié)點處理實力有限的狀況下,通過橫向拆分供應(yīng)無線的擴(kuò)展實力,當(dāng)巨大的流量通過拆分后,每個節(jié)點要處理的QPS就會下降;拆分是為了化繁為簡,簡化單節(jié)點的困難度,現(xiàn)在的微效勞(當(dāng)然微效勞引發(fā)的效勞治理須要另說)、二階段事務(wù)提交,就是將困難的業(yè)務(wù)通過多維度的拆分降解單節(jié)點困難度的手段。

拆多了就要合,hadoop將困難的任務(wù)分解到一個個的mapreducejob處理和聚合后,處理效率得到了極大的提升,而這種分解必定伴隨著聚合。而在有些業(yè)務(wù)場景,兩類節(jié)點相互調(diào)用特別頻繁,通過合并將原本的RPC調(diào)用轉(zhuǎn)換為本地JVM調(diào)用,那么可以很大的提升系統(tǒng)性能。

隔離

隔離也是一種思想,其中也包含了分的意思,例如灰度、壓測隔離、動靜隔離、多版本發(fā)布等。

轉(zhuǎn)換

路由與轉(zhuǎn)換,可以看做是分思想的衍生物。分的太多,就須要能將懇求轉(zhuǎn)發(fā)到正確的位置,此外也須要將各種通信格式與協(xié)議進(jìn)行轉(zhuǎn)換。

重復(fù)與唯一(冪等)

冪等伴隨著懇求的靠套投遞而產(chǎn)生,在發(fā)送懇求時可能會存在如下幾個場景:接收端不肯定要接收、接收端只能接收一次、接收端可重復(fù)接收。對于配置推送平臺,大多場景要求接收端可重復(fù)接收配置信息,但只保存最終一次消息即可;而對于一筆付款懇求,假設(shè)重復(fù)發(fā)送,接收端要限制只能處理一次(即要進(jìn)行冪等限制)。

最終一樣

在分布式系統(tǒng)架構(gòu)中,面對事務(wù)性業(yè)務(wù)有兩種選擇,一種是分布式事務(wù)、一種是最終一樣性處理。分布式事務(wù)限制比較困難,一般采納二階段提交的方式,其思想是要么勝利要么失敗,留意要么失敗是指其中有一步出錯就全部回滾,看似是保證了數(shù)據(jù)一樣性但實際業(yè)務(wù)卻失敗了。而最終一樣性相對于分布式事務(wù)的核心思想是讓業(yè)務(wù)盡可能勝利,即當(dāng)業(yè)務(wù)處理過程中可能會存在中間步驟失敗的狀況,但通過補(bǔ)償邏輯可以保障失敗的步驟后續(xù)接著執(zhí)行,此時就應(yīng)當(dāng)盡可能的標(biāo)記業(yè)務(wù)勝利。

并行與串行

將大量的計算分散到多個節(jié)點、多個進(jìn)程、多個線程進(jìn)行并行處理,是應(yīng)對大數(shù)據(jù)計算的常用技巧。而伴隨并行的就是串行(或者說是并發(fā)鎖)的處理,在分布式環(huán)境,并發(fā)鎖的可以通過數(shù)據(jù)庫、zookeeper等進(jìn)行實現(xiàn)。

主動與被動

主動與被動主要是針對客戶端如何獲得效勞端內(nèi)容的場景,典型的.就是消息隊列中的推模式(push)和拉模式(pull)。詳細(xì)底層實現(xiàn)上,無外乎輪詢、長鏈接等等,其中運用輪詢不肯定就是拉模型,許多推模型其底層也是通過輪詢實現(xiàn)的。

同步與異步

同步與異步也是常常要面臨選擇的事情,異步可以削減系統(tǒng)的堵塞,例如Ajax、消息隊列(還可以到達(dá)消峰填谷的作用)等等。此外流式計算與離線計算,也可以看做是同步與異步的衍生技術(shù)。再深一層次,會衍生批量計算、全量、增量等思想。

點到為止

限流:當(dāng)巨大的流量打過來時,通過犧牲局部懇求處理可保證整個系統(tǒng)可用;

降級:當(dāng)面對流量頂峰時(例如大促)往往將次要的效勞停掉,以便節(jié)約資源給主要效勞;另外當(dāng)某個效勞不行用時,干脆返回默認(rèn)結(jié)果也是降級的一種表現(xiàn);

熔斷:對于金融系統(tǒng),當(dāng)出現(xiàn)bug時可能會造成資損,此時須要旁路系統(tǒng)進(jìn)行不斷的核對,當(dāng)覺察異樣時能夠剛好終止處理。

對于以上幾個方面,系統(tǒng)要能做到自動限流、自動降級和自動熔斷。

以上一切問題都是由于量(數(shù)據(jù)量、懇求量等等)產(chǎn)生的,當(dāng)量很

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論