久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

分布式系統(tǒng)架構(gòu)

時間:2024-09-27 05:12:27 系統(tǒng)架構(gòu)師 我要投稿
  • 相關(guān)推薦

關(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)中進行權(quán)衡。細化到框架,ActiveMQ、RocketMQ、Kafka、Redis、ZooKeeper等等都可以實現(xiàn)消息隊列模型,具體使用哪個就需要結(jié)合場景進行權(quán)衡了。

  分與合

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

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

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

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

  隔離

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

  轉(zhuǎn)換

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

  重復與唯一(冪等)

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

  最終一致

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

  并行與串行

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

  主動與被動

  主動與被動主要是針對客戶端如何獲取服務(wù)端內(nèi)容的場景,典型的就是消息隊列中的推模式(push)和拉模式(pull)。具體底層實現(xiàn)上,無外乎輪詢、長鏈接等等,其中使用輪詢不一定就是拉模型,很多推模型其底層也是通過輪詢實現(xiàn)的。

  同步與異步

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

  點到為止

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

  降級:當面對流量高峰時(例如大促)往往將次要的服務(wù)停掉,以便節(jié)省資源給主要服務(wù);另外當某個服務(wù)不可用時,直接返回默認結(jié)果也是降級的一種表現(xiàn);

  熔斷:對于金融系統(tǒng),當出現(xiàn)bug時可能會造成資損,此時需要旁路系統(tǒng)進行不斷的核對,當發(fā)現(xiàn)異常時能夠及時終止處理。

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

  以上一切問題都是由于量(數(shù)據(jù)量、請求量等等)產(chǎn)生的,當量很小時不需要架構(gòu),通過增加內(nèi)存、CPU、機器等都能解決;當量增加到一定的程度時,才需要考慮架構(gòu),而架構(gòu)的道與術(shù)卻又是“道可道,非常道,名可名,非常名”。


【分布式系統(tǒng)架構(gòu)】相關(guān)文章:

如何搭建系統(tǒng)CSS架構(gòu)12-31

系統(tǒng)架構(gòu)設(shè)計模式大全08-22

系統(tǒng)架構(gòu)師是做什么的12-30

如何成為優(yōu)秀的系統(tǒng)架構(gòu)師06-03

圖書檢索系統(tǒng)體系架構(gòu)研究12-05

基于云架構(gòu)的系統(tǒng)安全設(shè)計08-08

系統(tǒng)架構(gòu)師的就業(yè)前景分析01-11

系統(tǒng)架構(gòu)設(shè)計師要素01-11

系統(tǒng)架構(gòu)師必須具備哪些能力05-07

MES系統(tǒng)安全架構(gòu)設(shè)計09-19