日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
框架篇:分布式理論CAP、BASE

框架篇:分布式理論CAP、Base

作者: cscw 2021-06-02 22:16:56

開發(fā)

架構

分布式 隨著業(yè)務的拓展,功能越來越多。把所有的功能都放在同一個服務下,代碼混合交錯,造成維護困難,也容易造成某一小bug導致整個服務不可用。

本文轉(zhuǎn)載自微信公眾號「潛行前行」,作者cscw 。轉(zhuǎn)載本文請聯(lián)系潛行前行公眾號。

前言

隨著業(yè)務的拓展,功能越來越多。把所有的功能都放在同一個服務下,代碼混合交錯,造成維護困難,也容易造成某一小bug導致整個服務不可用。因此我們會按業(yè)務功能會拆分成多個不同的服務(微服務的形成),多個服務組成的系統(tǒng),有個響亮的名字:分布式系統(tǒng);而系統(tǒng)中的服務狀態(tài)我們該怎么去管理,有什么相關的理論呢?

  • 分布式和集群
  • 數(shù)據(jù)庫事務
  • 分布式事務
  • 分布式數(shù)據(jù)一致性
  • CAP 理論
  • BASE理論

分布式和集群

分布式是指通過網(wǎng)絡連接的多個服務或組件,通過交換信息協(xié)作而形成的系統(tǒng)

集群是指同一種服務組件的多個實例形成的整體

這兩個概念并不完全沖突,分布式系統(tǒng)也可以是一個集群。zookeeper集群也是一種分布式系統(tǒng),它的服務之間會互相通信協(xié)作

集群不是分布式系統(tǒng)的情況,比如多個經(jīng)過負載均衡的HTTP服務器,它們之間不會互相通信,如果不帶上負載均衡的部分的話,則不能稱作分布式系統(tǒng)

數(shù)據(jù)庫事務

  • 事務是基于數(shù)據(jù)進行操作,需要保證事務的數(shù)據(jù)通常存儲在數(shù)據(jù)庫中,所以介紹到事務,就不得不介紹數(shù)據(jù)庫事務的 ACID 特性
  • 原子性(Atomicity),整個事務中的所有操作,要么全部完成,要么全部不完成,不可能停滯在中間某個環(huán)節(jié)
  • 一致性(Consistency),在事務開始之前和事務結束以后,數(shù)據(jù)庫數(shù)據(jù)的一致性約束沒有被破壞
  • 隔離性(Isolation),隔離性可以防止多個事務并發(fā)執(zhí)行時由于交叉執(zhí)行而導致數(shù)據(jù)的不一致
  • 持久性(Durability),事務處理結束后,對數(shù)據(jù)的修改就是永久的,即便系統(tǒng)故障也不會丟失

分布式事務

分布式系統(tǒng)一般由多個獨立的子系統(tǒng)組成,多個子系統(tǒng)通過網(wǎng)絡通信互相協(xié)作配合完成各個功能;這個協(xié)作過程需要保證各個系統(tǒng)的數(shù)據(jù)一致性,我們稱這種跨系統(tǒng)的事務為分布式事務

上面的場景會存在多種情況;庫存服務和訂單服務全部成功?;蛘邘齑娣蘸陀唵畏詹糠殖晒Γ鴤鹘y(tǒng)的單機事務理論不再適用

分布式事務的難點

原子性:事務操作跨不同節(jié)點,當多個節(jié)點某一節(jié)點操作失敗時,需要保證多節(jié)點操作的要么什么都不做,要么都做

一致性:當發(fā)生網(wǎng)絡傳輸故障或者節(jié)點故障,節(jié)點間數(shù)據(jù)復制通道中斷,在進行事務操作時需要保證數(shù)據(jù)一致性

隔離性:在分布式事務控制中,可能會出現(xiàn)提交不同步的現(xiàn)象,會出現(xiàn)“部分已經(jīng)提交”的事務

分布式數(shù)據(jù)一致性

ACID并不適合分布式事務,而分布式事務的難點涉及的問題,最終影響是導致數(shù)據(jù)出現(xiàn)不一致,因此在分布式系統(tǒng)會著重關注保證系統(tǒng)的一致性。

CAP理論

  • 前面介紹到的分布式事務的難點涉及的問題,最終影響是導致數(shù)據(jù)出現(xiàn)不一致,下面對分布式系統(tǒng)的一致性問題進行理論分析,后面將基于這些理論進行分布式方案的介紹(可用性和一致性的沖突:CAP理論)
  • 一致性(Consistence): 所有節(jié)點訪問最新相同的數(shù)據(jù)副本
  • 可用性(Availability): 非故障的節(jié)點在合理的時間內(nèi)返回合理的響應(不是錯誤或者超時的響應)
  • 分區(qū)容錯性(Partition tolerance): 分布式系統(tǒng)出現(xiàn)網(wǎng)絡分區(qū)的時候,仍然能夠?qū)ν馓峁┓?/li>

當發(fā)生網(wǎng)絡分區(qū)的時候,如果我們要繼續(xù)服務,那么強一致性和可用性只能 2 選 1。也就是說當網(wǎng)絡分區(qū)之后 P 是前提,決定了 P 之后才有 C 和 A 的選擇。也就是說分區(qū)容錯性(Partition tolerance)我們是必須要實現(xiàn)的

為啥無法同時保證 CA 呢?

若系統(tǒng)出現(xiàn)“分區(qū)”,系統(tǒng)中的某個節(jié)點在進行寫操作。為了保證一致性C, 必須要禁止其他節(jié)點的讀寫操作,這就和 A 發(fā)生沖突了;如果為了保證A,其他節(jié)點的讀寫操作正常的話,那就無法保證數(shù)據(jù)一致性,和C沖突

CAP 實際應用案例

ZooKeeper保證的是CP。任何時刻對ZooKeeper的讀請求都能得到一致性的結果,但是ZooKeeper不保證每次請求的可用性比如在Leader選舉過程中或者半數(shù)以上的機器不可用的時候服務就是不可用的

Eureka保證的則是AP。Eureka在設計的時候就是優(yōu)先保證A(可用性)。在 Eureka中不存在什么Leader節(jié)點,每個節(jié)點都是一樣的、平等的。因此 Eureka 不會像 ZooKeeper 那樣出現(xiàn)選舉過程中或者半數(shù)以上的機器不可用的時候服務就是不可用的情況。Eureka 保證即使大部分節(jié)點掛掉也不會影響正常提供服務,只要有一個節(jié)點是可用的就行了。只不過這個節(jié)點上的數(shù)據(jù)可能并不是最新的

BASE理論

BASE是Basically Available(基本可用) 、Soft-state(軟狀態(tài)) 和 Eventually Consistent(最終一致性)。BASE理論是對CAP中一致性(C)和可用性(A)權衡的結果

最終一致性是弱一致性的一個特例,系統(tǒng)會保證在一定時間內(nèi),能夠達到一個數(shù)據(jù)一致的狀態(tài)

基本可用

基本可用是指分布式系統(tǒng)在出現(xiàn)不可預知故障的時候,允許損失部分可用性;那什么又是允許損失部分可用性呢?

響應時間上的損失: 正常情況下,處理用戶請求需要0.5s返回結果,但是由于系統(tǒng)出現(xiàn)故障,處理用戶請求的時間變?yōu)?s

系統(tǒng)功能上的損失:正常情況下,用戶可以使用系統(tǒng)的全部功能,但是由于系統(tǒng)訪問量突然劇增,系統(tǒng)的部分非核心功能無法使用

軟狀態(tài)

軟狀態(tài)指允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài)(CAP理論中的數(shù)據(jù)不一致),并認為該中間狀態(tài)的存在不會影響系統(tǒng)的整體可用性,即允許系統(tǒng)在不同節(jié)點的數(shù)據(jù)副本之間進行數(shù)據(jù)同步的過程存在延時

最終一致性

最終一致性強調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本,在經(jīng)過一段時間的同步后,最終能夠達到一個一致的狀態(tài)。因此,最終一致性的本質(zhì)是需要系統(tǒng)保證最終數(shù)據(jù)能夠達到一致,而不需要實時保證系統(tǒng)數(shù)據(jù)的強一致性

參考文章

CAP和BASE理論了解么?可以結合實際案例說下不?

分布式與集群的區(qū)別是什么?[1]

數(shù)據(jù)一致性問題[2]


新聞標題:框架篇:分布式理論CAP、BASE
網(wǎng)頁地址:http://www.5511xx.com/article/copocjs.html