cap理論和base理論,base cap 分布式_分布式系統一致性問題、CAP定律以及 BASE 理論

 2023-12-12 阅读 30 评论 0

摘要:一致性問題在介紹分布式系統一致性問題之前,我們先來了解一下副本概念。分布式系統會存在許多異常問題,比如機器宕機;為了提供高可用服務,一般會將數據或者服務部署到很多機器上,這些機器中的數據或服務可以稱為副本。如果其中任何一臺節點

一致性問題

在介紹分布式系統一致性問題之前,我們先來了解一下副本概念。分布式系統會存在許多異常問題,比如機器宕機;為了提供高可用服務,一般會將數據或者服務部署到很多機器上,這些機器中的數據或服務可以稱為副本。如果其中任何一臺節點出現故障,用戶可以訪問其他機器上的數據或服務。由于副本的存在,如何保證這些節點上的副本數據或服務一致性,是整個分布式系統需要解決的核心問題,這也就是本文提到的一致性問題。

cap理論和base理論,如果想及時了解Spark、Hadoop或者Hbase相關的文章,歡迎關注微信公共帳號:iteblog_hadoop

一致性按照不同的角度可以分為客戶端以及系統。從客戶端角度看,就是客戶端讀寫操作是否符合某種特性;從系統角度看,就是系統更新如何復制分布到整個系統,以保證數據最終一致。

如果從客戶端角度看,一致性又可以分為以下幾種:

分布式事務的CAP定理、強一致性(Strong Consistency):在任何時候,用戶或節點都可以讀到最近一次成功更新的副本數據。這種一致性肯定是我們最想要的,但是很遺憾,強一致性在實踐中很難實現,而且一般都會犧牲可用性。

弱一致性(Weak Consistency):某個進程更新了副本的數據,但是系統不能保證后續進程能夠讀取到最新的值。

最終一致性(Eventual Consistency):最終一致性是弱一致性的一種特例。某個A 進程更新了副本的數據,如果沒有其他進程更新這個副本的數據,系統最終一定能夠保證后續進程能夠讀取到A進程寫進的最新值。但是這個操作存在一個不一致性的窗口,也就是 A 進程寫入數據,到其他進程讀取 A 寫進去的值所用的時間。最終一致性又可以根據更新數據后各進程訪問到數據的時間和方式的不同,又可以區分為以下幾種:因果一致性(Causal Consistency):如果進程A通知進程B它已更新了一個數據項,那么進程B的后續訪問將返回更新后的值,且一次寫入將保證取代前一次寫入。與進程A無因果關系的進程C的訪問遵守一般的最終一致性規則。

分布式cap定理。讀寫一致性(Read-Your-Writes Consistency):當進程A自己更新一個數據項之后,它總是訪問到更新過的值,絕不會看到舊值。這是因果一致性模型的一個特例。

會話一致性(Session Consistency):這是上一個模型的實用版本,它把訪問存儲系統的進程放到會話的上下文中。只要會話還存在,系統就保證讀寫一致性。如果由于某些失敗情形令會話終止,就要建立新的會話,而且系統的保證不會延續到新的會話。

單調讀一致性(Monotonic Read Consistency):如果進程已經看到過數據對象的某個值,那么任何后續訪問都不會返回在那個值之前的值。

單調寫一致性(Monotonic Write Consistency):系統保證來自同一個進程的寫操作順序執行。

當然,還存在其他的一些一致性變種,這里就不再敖述。

CAP 定律

2000 年 7月,來自加州大學伯克利分校的 Eric Brewer 教授提出了著名的 CAP 猜想。2年后,來自麻省理工學院的 Seth Gilbert 和 Nancy Lynch 從理論上證明了 CAP 可行性,從此 CAP 定理在學術上成為了分布式計算領域公認的定理,影響著分布式計算的發展。

如果想及時了解Spark、Hadoop或者Hbase相關的文章,歡迎關注微信公共帳號:iteblog_hadoop

CAP原則包含如下三個元素:C(Consistency) : 一致性。在分布式系統中的所有數據備份,在同一時刻具有同樣的值,所有節點在同一時刻讀取的數據都是最新的數據副本。

A(Availability):可用性,好的響應性能。完全的可用性指的是在任何故障模型下,服務都會在有限的時間內處理完成井進行響應。

P(Partition tolerance) :分區容忍性。盡管網絡上有部分消息丟失,但系統仍然可繼續工作。

CAP 原理證明,任何分布式系統只可同時滿足以上兩點,無法三者兼顧。由于關系型數據庫是單節點無復制的,因此不具有分區容忍性,但是具有一致性和可用性;而分布式的服務化系統都需要滿足分區容忍性,那么我們必須在一致性和可用性之間進行權衡。如果在網絡上有消息丟失,也就是出現了網絡分區,則復制操作可能會被延后,如果這時我們的使用方等待復制完成再返回,則可能導致在有限時間內無法返回,就失去了可用性;而如果使用方不等待復制完成, 而在主分片寫完后直接返回,則具有了可用性,但是失去了一致性。因此,系統架構師需要把精力放在如何根據業務在 C 和 A 之間進行選擇。

BASE 理論

BASE 是 Basically Available(基本可用)、Soft state(軟狀態)和 Eventually consistent(最終一致性)三個短語的簡寫,由 eBay 架構師 Dan Pritchett 于 2008 年在《BASE: An Acid Alternative》(論文地址點 這里)論文中首次提出。BASE 思想與 ACID 原理截然不同,它滿足 CAP 原理,通過犧牲強一致性獲得可用性, 一般應用于服務化系統的應用層或者大數據處理系統中,通過達到最終一致性來盡量滿足業務的絕大多數需求。

BASE 模型包含如下三個元素:BA:(Basically Available ),基本可用。

S:( Soft State),軟狀態,狀態可以在一段時間內不同步。

E:(Eventually Consistent ),最終一致,在一定的時間窗口內, 最終數據達成一致即可。

關于最終一致的幾種變種參見上面,在實際系統實踐中,可以將若干變種結合起來,來實現各種業務需求。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/194556.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息