日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

分布式系统的概念

發(fā)布時(shí)間:2023/12/2 windows 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分布式系统的概念 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、分布式系統(tǒng)的基本概念
    • 1、分布式存儲(chǔ)
    • 2、分布式系統(tǒng)需要解決的問題
  • 二、分布式系統(tǒng)的CAP理論
    • 1、CAP理論
      • (1)Consistency 一致性
      • (2)Availability 可用性
      • (3)Partition Tolerance分區(qū)容錯(cuò)性
    • 2、CAP的證明
    • 3、CAP的權(quán)衡
      • (1)CA without P
      • (2)CP without A
      • (3)AP wihtout C

一、分布式系統(tǒng)的基本概念

??分布式系統(tǒng)即把數(shù)據(jù)放在多個(gè)能獨(dú)立運(yùn)行的計(jì)算機(jī)(稱為結(jié)點(diǎn))上,各個(gè)結(jié)點(diǎn)利用計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行信息傳遞,合作完成共同的任務(wù)。分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng),在多臺(tái)不同的服務(wù)器中部署不同的服務(wù)模塊,通過遠(yuǎn)程調(diào)用協(xié)同工作,對(duì)外提供服務(wù)。【集群(cluster)是指在多臺(tái)不同的服務(wù)器中部署相同應(yīng)用或服務(wù)模塊,構(gòu)成一個(gè)集群,通過負(fù)載均衡設(shè)備對(duì)外提供服務(wù)。】

1、分布式存儲(chǔ)

即通過大量的PC連入互聯(lián)網(wǎng),統(tǒng)一對(duì)外提供存儲(chǔ)服務(wù)。分為以下幾部分:

(1)分布式文件系統(tǒng):以文件的方式進(jìn)行存儲(chǔ),對(duì)外提供文件的操作。

(2)分布式鍵值系統(tǒng):以kv存儲(chǔ),對(duì)外提供GUID操作。

(3)分布式表格系統(tǒng):用大表格的方式存儲(chǔ),對(duì)外提供表格的增刪操作。

(4)分布式數(shù)據(jù)庫:以數(shù)據(jù)庫表的形式存儲(chǔ),對(duì)外提供SQL的相關(guān)語句操作。

2、分布式系統(tǒng)需要解決的問題

(1)數(shù)據(jù)的分布、負(fù)載均衡問題。

(2)主從備份數(shù)據(jù)一致性問題

(3)容錯(cuò),故障恢復(fù)問題

(4)讀寫流程問題。

二、分布式系統(tǒng)的CAP理論

1、CAP理論

??CAP理論:一個(gè)分布式系統(tǒng)最多只能同時(shí)滿足一致性(Consistency)、可用性(Availability)和分區(qū)容錯(cuò)性(Partition tolerance)這三項(xiàng)中的兩項(xiàng)

(1)Consistency 一致性

??更新操作成功并返回客戶端后,所有節(jié)點(diǎn)在同一時(shí)間的數(shù)據(jù)完全一致(返回給客戶端的數(shù)據(jù)永遠(yuǎn)是最新的),即數(shù)據(jù)一致性,一致性是因?yàn)橛胁l(fā)讀寫才有的問題。

  • 對(duì)于關(guān)系型數(shù)據(jù)庫,要求更新過的數(shù)據(jù)能被后續(xù)的訪問都能看到,這是強(qiáng)一致性

  • 如果能容忍后續(xù)的部分或者全部訪問不到,則是弱一致性

  • 如果經(jīng)過一段時(shí)間后要求能訪問到更新后的數(shù)據(jù),則是最終一致性

??CAP中說,不可能同時(shí)滿足的這個(gè)一致性指的是強(qiáng)一致性

(2)Availability 可用性

??可用性即服務(wù)一直可用,而且是正常響應(yīng)時(shí)間。對(duì)于一個(gè)可用性的分布式系統(tǒng),每一個(gè)非故障的節(jié)點(diǎn)必須對(duì)每一個(gè)請(qǐng)求作出響應(yīng)。所以,一般我們?cè)诤饬恳粋€(gè)系統(tǒng)的可用性的時(shí)候,都是通過停機(jī)時(shí)間來計(jì)算的。

??通常我們描述一個(gè)系統(tǒng)的可用性時(shí),我們說淘寶的系統(tǒng)可用性可以達(dá)到5個(gè)9,意思就是說他的可用水平是99.999%,即全年停機(jī)時(shí)間不超過 (1-0.99999)36524*60 = 5.256 min,這是一個(gè)極高的要求。

(3)Partition Tolerance分區(qū)容錯(cuò)性

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

??分區(qū)容錯(cuò)性和擴(kuò)展性緊密相關(guān)。在分布式應(yīng)用中,可能因?yàn)橐恍┓植际降脑驅(qū)е孪到y(tǒng)無法正常運(yùn)轉(zhuǎn)。好的分區(qū)容錯(cuò)性要求能夠使應(yīng)用雖然是一個(gè)分布式系統(tǒng),而看上去卻好像是在一個(gè)可以運(yùn)轉(zhuǎn)正常的整體。比如現(xiàn)在的分布式系統(tǒng)中有某一個(gè)或者幾個(gè)機(jī)器宕掉了,其他剩下的機(jī)器還能夠正常運(yùn)轉(zhuǎn)滿足系統(tǒng)需求,或者是機(jī)器之間有網(wǎng)絡(luò)異常,將分布式系統(tǒng)分隔未獨(dú)立的幾個(gè)部分,各個(gè)部分還能維持分布式系統(tǒng)的運(yùn)作,這樣就具有好的分區(qū)容錯(cuò)性。

2、CAP的證明


??作為一個(gè)分布式系統(tǒng),它和單機(jī)系統(tǒng)的最大區(qū)別,就在于網(wǎng)絡(luò),現(xiàn)在假設(shè)一種極端情況,N1和N2之間的網(wǎng)絡(luò)斷開了,我們要支持這種網(wǎng)絡(luò)異常,相當(dāng)于要滿足分區(qū)容錯(cuò)性,能不能同時(shí)滿足一致性和響應(yīng)性呢?還是說要對(duì)他們進(jìn)行取舍。

??假設(shè)在N1和N2之間網(wǎng)絡(luò)斷開的時(shí)候,有用戶向N1發(fā)送數(shù)據(jù)更新請(qǐng)求,那N1中的數(shù)據(jù)V0將被更新為V1,由于網(wǎng)絡(luò)是斷開的,所以分布式系統(tǒng)同步操作M,所以N2中的數(shù)據(jù)依舊是V0;這個(gè)時(shí)候,有用戶向N2發(fā)送數(shù)據(jù)讀取請(qǐng)求,由于數(shù)據(jù)還沒有進(jìn)行同步,應(yīng)用程序沒辦法立即給用戶返回最新的數(shù)據(jù)V1,怎么辦呢?有二種選擇:

  • 第一,犧牲數(shù)據(jù)一致性,保證可用性響應(yīng)舊的數(shù)據(jù)V0給用戶(并不是錯(cuò)亂的數(shù)據(jù),而是舊數(shù)據(jù),只不過不是最新的)

  • 第二,犧牲可用性,保證數(shù)據(jù)一致性。阻塞等待,直到網(wǎng)絡(luò)連接恢復(fù),數(shù)據(jù)更新操作M完成之后,再給用戶響應(yīng)最新的數(shù)據(jù)V1

??這個(gè)過程,證明了要滿足分區(qū)容錯(cuò)性的分布式系統(tǒng),只能在一致性和可用性兩者中,選擇其中一個(gè)。

3、CAP的權(quán)衡

(1)CA without P

??這種情況在分布式系統(tǒng)中幾乎是不存在的。首先在分布式環(huán)境下,網(wǎng)絡(luò)分區(qū)是一個(gè)自然的事實(shí)。因?yàn)榉謪^(qū)是必然的,所以如果舍棄P,意味著要舍棄分布式系統(tǒng)。那也就沒有必要再討論CAP理論了。這也是為什么在前面的CAP證明中,我們以系統(tǒng)滿足P為前提論述了無法同時(shí)滿足C和A。

??比如我們熟知的關(guān)系型數(shù)據(jù)庫,如MySql和Oracle就是保證了可用性和數(shù)據(jù)一致性,但是他并不是個(gè)分布式系統(tǒng)。

(2)CP without A

??一個(gè)保證了CP而一個(gè)舍棄了A的分布式系統(tǒng),一旦發(fā)生網(wǎng)絡(luò)故障或者消息丟失等情況,就要犧牲用戶的體驗(yàn),等待所有數(shù)據(jù)全部一致了之后再讓用戶訪問系統(tǒng)

??設(shè)計(jì)成CP的系統(tǒng)其實(shí)也不少,其中最典型的就是很多分布式數(shù)據(jù)庫,他們都是設(shè)計(jì)成CP的在發(fā)生極端情況時(shí),優(yōu)先保證數(shù)據(jù)的強(qiáng)一致性,代價(jià)就是舍棄系統(tǒng)的可用性。如Redis、HBase等,還有分布式系統(tǒng)中常用的Zookeeper也是在CAP三者之中選擇優(yōu)先保證CP的。

(3)AP wihtout C

??要高可用并允許分區(qū),則需放棄一致性。一旦網(wǎng)絡(luò)問題發(fā)生,節(jié)點(diǎn)之間可能會(huì)失去聯(lián)系。為了保證高可用,需要在用戶訪問時(shí)可以馬上得到返回,則每個(gè)節(jié)點(diǎn)只能用本地?cái)?shù)據(jù)提供服務(wù),而這樣會(huì)導(dǎo)致全局?jǐn)?shù)據(jù)的不一致性

??這種舍棄強(qiáng)一致性而保證系統(tǒng)的分區(qū)容錯(cuò)性和可用性的場(chǎng)景和案例非常多。前面我們介紹可用性的時(shí)候說到過,很多系統(tǒng)在可用性方面會(huì)做很多事情來保證系統(tǒng)的全年可用性可以達(dá)到N個(gè)9,所以,對(duì)于很多業(yè)務(wù)系統(tǒng)來說,比如淘寶的購物,12306的買票。都是在可用性和一致性之間舍棄了一致性而選擇可用性。

??但是,我們說很多網(wǎng)站犧牲了一致性,選擇了可用性,這其實(shí)也不準(zhǔn)確的。就比如12306買票的例子,其實(shí)舍棄的只是強(qiáng)一致性,退而求其次保證了最終一致性。也就是說,雖然下單的瞬間,關(guān)于車票的庫存可能存在數(shù)據(jù)不一致的情況,但是過了一段時(shí)間,還是要保證最終一致性的

參考:https://www.hollischuang.com/archives/666
https://blog.csdn.net/wuxians/article/details/81275441
https://zhuanlan.zhihu.com/p/32052223

總結(jié)

以上是生活随笔為你收集整理的分布式系统的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。