自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CAP,能少了P?你知道嗎?

網(wǎng)絡(luò) 通信技術(shù)
由于網(wǎng)絡(luò)通信肯定會(huì)出現(xiàn)延遲丟包等問題,所以一般情況而言,分區(qū)容錯(cuò)性是必須實(shí)現(xiàn)的。那么分布式系統(tǒng)會(huì)在一致性和可用性之間進(jìn)行權(quán)衡, 即C和A之間的選擇。

哈嘍,大家好,我是指北君。

大型網(wǎng)站幾乎都是分布式系統(tǒng),分布式系統(tǒng)也越來越重要,你也會(huì)發(fā)現(xiàn)周圍的許多事物已經(jīng)是分布式理論的最佳實(shí)踐了。

前言

分布式系統(tǒng)(distributed system)主要有三個(gè)指標(biāo) 一致性 (Consistency),可用性(Availability),分區(qū)容錯(cuò)性(Partition tolerance)。

一致性是指更新操作成功后,所有節(jié)點(diǎn)在同一時(shí)間的數(shù)據(jù)完全一致。

可用性是指用戶訪問數(shù)據(jù)時(shí),系統(tǒng)是否能正常響應(yīng)時(shí)間內(nèi)返回?cái)?shù)據(jù)。

分區(qū)容錯(cuò)性是指分布式系統(tǒng)在遇到某個(gè)節(jié)點(diǎn)或網(wǎng)絡(luò)分區(qū)故障時(shí),仍然能夠?qū)ν馓峁M足一致性和可用性的服務(wù)。

CAP理論基本可以定義為,以上的三個(gè)指標(biāo)不能全部做到,即只能同時(shí)滿足CA, CP, AP。

1. 分區(qū)容錯(cuò)性

分布式系統(tǒng)存在多個(gè)子系統(tǒng),每個(gè)子系統(tǒng)子網(wǎng)絡(luò)可以叫做區(qū)。各個(gè)節(jié)點(diǎn)之間的數(shù)據(jù)需要同步,子系統(tǒng)之間也需要通信。而分區(qū)容錯(cuò)指的是某個(gè)節(jié)點(diǎn)出現(xiàn)故障,而整個(gè)服務(wù)不會(huì)受到大的影響。

若一個(gè)服務(wù)為單節(jié)點(diǎn)服務(wù),那么它可以說是滿足CA。

C表示任何時(shí)間點(diǎn)讀取的數(shù)據(jù)都是相同的,保證了一致性。

A表示只要有節(jié)點(diǎn)可以用,那么就可以提供服務(wù)

由于是單節(jié)點(diǎn)服務(wù),那么總是滿足CA的條件。

而在分布式系統(tǒng)中,大多時(shí)候,單節(jié)點(diǎn)出問題之后,我們是需要保障整個(gè)系統(tǒng)都是可以使用的。所以可以認(rèn)為CAP中的P總是需要成立的。

2. 一致性

一致性指的是分布式系統(tǒng)中所有節(jié)點(diǎn)在同一時(shí)間訪問時(shí),返回?cái)?shù)據(jù)完全一致。

從客戶端看,就是并發(fā)訪問時(shí)獲取數(shù)據(jù)的一致性。

服務(wù)端來看,就是數(shù)據(jù)節(jié)點(diǎn)之間的同步問題,即節(jié)點(diǎn)之間通過通信保持?jǐn)?shù)據(jù)的實(shí)時(shí)更新。

也有對(duì)一致性分成強(qiáng),弱以及最終一致性三類。

強(qiáng)一致性 要求數(shù)據(jù)更新后,對(duì)于其他節(jié)點(diǎn),必須立馬同步,并可見。

弱一致性 可以允許在數(shù)據(jù)更新后,部分節(jié)點(diǎn)不能訪問到最新的數(shù)據(jù)。

最終一致性 要求一段時(shí)間內(nèi)不能訪問最新數(shù)據(jù),但是一段時(shí)間后,分布式系統(tǒng)的所有數(shù)據(jù)需要統(tǒng)一

3. 可用性

相對(duì)來說,可用性比較容易理解,就是說任何時(shí)候,我們都可以從系統(tǒng)中獲取數(shù)據(jù)。系統(tǒng)可以提供正常的用戶服務(wù)。不會(huì)出現(xiàn)操作失敗,訪問超時(shí)等情況

總結(jié)

由于網(wǎng)絡(luò)通信肯定會(huì)出現(xiàn)延遲丟包等問題,所以一般情況而言,分區(qū)容錯(cuò)性是必須實(shí)現(xiàn)的。那么分布式系統(tǒng)會(huì)在一致性和可用性之間進(jìn)行權(quán)衡, 即C和A之間的選擇。

CP without A  即要求一致性,每個(gè)請(qǐng)求都要求服務(wù)之間保持強(qiáng)一致性,分區(qū)則會(huì)使同步時(shí)間無限延長(zhǎng),如果網(wǎng)絡(luò)嚴(yán)重故障,消息丟失的情況下,用戶體驗(yàn)差,需要全部數(shù)據(jù)一致后才能提供訪問。比如Redis,Hbase 等就會(huì)要求數(shù)據(jù)一致性。Zookeeper 也是遵循CP原則,Leader節(jié)點(diǎn)掛掉之后,集群會(huì)進(jìn)行選舉,選舉期間整個(gè)Follower都是不可用的,需要同步數(shù)據(jù),所以需要Zookeeper恢復(fù)之后才可以使用。

AP without C 即要求高可用而且可以分區(qū),此時(shí)需要放棄一致性。分區(qū)節(jié)點(diǎn)出現(xiàn)故障時(shí),為了滿足高可用,每個(gè)節(jié)點(diǎn)只能使用本地的數(shù)據(jù)提供訪問,避免服務(wù)中斷。這種典型的應(yīng)用就是搶票等情形,前一秒還有票,當(dāng)我輸入驗(yàn)證碼之后再點(diǎn)擊,票已售罄。心里的草泥馬無限增生。Eureka是采用AP原則,犧牲一致性,達(dá)到可用性的目的。

在一致性方面做出讓步之后,有些系統(tǒng)會(huì)實(shí)現(xiàn)最終一致性,盡力保證整個(gè)系統(tǒng)的數(shù)據(jù)一致性。

分布式系統(tǒng)的一致性和可用性之間的選擇沒有固定的搭配,而需要根據(jù)不同的業(yè)務(wù)場(chǎng)景進(jìn)行選擇,吹牛沒用,合適才行。

責(zé)任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2023-05-05 09:04:41

文本數(shù)據(jù)ChatGPT

2023-12-12 08:41:01

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2023-04-26 10:21:04

2021-10-14 06:52:47

算法校驗(yàn)碼結(jié)構(gòu)

2022-11-04 14:16:05

2024-09-18 07:00:00

消息隊(duì)列中間件消息隊(duì)列

2025-02-18 08:11:17

2023-03-21 07:39:51

CentOS掛載硬盤

2022-12-02 14:12:52

新能源汽車海爾

2023-01-13 17:02:10

操作系統(tǒng)鴻蒙

2020-02-20 08:30:49

OSPF網(wǎng)絡(luò)協(xié)議路由協(xié)議

2022-11-28 00:04:17

2024-07-08 00:00:01

多線程ThreadC#

2022-09-29 15:32:58

云計(jì)算計(jì)算模式

2021-04-20 23:16:06

SparkSQL語(yǔ)法

2024-01-15 12:16:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)