成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Kafka的存儲機制以及可靠性

存儲 存儲軟件 大數據 Kafka
kafka通過topic來分主題存放數據,主題內有分區,分區可以有多個副本,分區的內部還細分為若干個segment。所謂的分區其實就是在kafka對應存儲目錄下創建的文件夾,文件夾的名字是主題名加上分區編號,編號從0開始。

目錄

1.Kafka簡介及安裝配置

2.Kafka的存儲機制以及可靠性

Kafka的存儲機制以及可靠性

一、kafka的存儲機制

kafka通過topic來分主題存放數據,主題內有分區,分區可以有多個副本,分區的內部還細分為若干個segment。

所謂的分區其實就是在kafka對應存儲目錄下創建的文件夾,文件夾的名字是主題名加上分區編號,編號從0開始。

[[228394]]

1、segment

所謂的segment其實就是在分區對應的文件夾下產生的文件。

一個分區會被劃分成大小相等的若干segment,這樣一方面保證了分區的數據被劃分到多個文件中保證不會產生體積過大的文件;另一方面可以基于這些segment文件進行歷史數據的刪除,提高效率。

一個segment又由一個.log和一個.index文件組成。

1..log

.log文件為數據文件用來存放數據分段數據。

2..index

.index為索引文件保存對對應的.log文件的索引信息。

在.index文件中,保存了對對應.log文件的索引信息,通過查找.index文件可以獲知每個存儲在當前segment中的offset在.log文件中的開始位置,而每條日志有其固定格式,保存了包括offset編號、日志長度、key的長度等相關信息,通過這個固定格式中的數據可以確定出當前offset的結束位置,從而對數據進行讀取。

3.命名規則

這兩個文件的命名規則為:

partition全局的***個segment從0開始,后續每個segment文件名為上一個segment文件***一條消息的offset值,數值大小為64位,20位數字字符長度,沒有數字用0填充。

2、讀取數據

開始讀取指定分區中某個offset對應的數據時,先根據offset和當前分區的所有segment的名稱做比較,確定出數據在哪個segment中,再查找該segment的索引文件,確定當前offset在數據文件中的開始位置,***從該位置開始讀取數據文件,在根據數據格式判斷結果,獲取完整數據。

二、可靠性保證

1、AR

在Kafka中維護了一個AR列表,包括所有的分區的副本。AR又分為ISR和OSR。

AR = ISR + OSR。

AR、ISR、OSR、LEO、HW這些信息都被保存在Zookeeper中。

1.ISR

ISR中的副本都要同步leader中的數據,只有都同步完成了數據才認為是成功提交了,成功提交之后才能供外界訪問。

在這個同步的過程中,數據即使已經寫入也不能被外界訪問,這個過程是通過LEO-HW機制來實現的。

2.OSR

OSR內的副本是否同步了leader的數據,不影響數據的提交,OSR內的follower盡力的去同步leader,可能數據版本會落后。

最開始所有的副本都在ISR中,在kafka工作的過程中,如果某個副本同步速度慢于replica.lag.time.max.ms指定的閾值,則被踢出ISR存入OSR,如果后續速度恢復可以回到ISR中。

3.LEO

LogEndOffset:分區的***的數據的offset,當數據寫入leader后,LEO就立即執行該***數據。相當于***數據標識位。

4.HW

HighWatermark:只有寫入的數據被同步到所有的ISR中的副本后,數據才認為已提交,HW更新到該位置,HW之前的數據才可以被消費者訪問,保證沒有同步完成的數據不會被消費者訪問到。相當于所有副本同步數據標識位。

在leader宕機后,只能從ISR列表中選取新的leader,無論ISR中哪個副本被選為新的leader,它都知道HW之前的數據,可以保證在切換了leader后,消費者可以繼續看到HW之前已經提交的數據。

所以LEO代表已經寫入的***數據位置,而HW表示已經同步完成的數據,只有HW之前的數據才能被外界訪問。

5.HW截斷機制

如果leader宕機,選出了新的leader,而新的leader并不能保證已經完全同步了之前leader的所有數據,只能保證HW之前的數據是同步過的,此時所有的follower都要將數據截斷到HW的位置,再和新的leader同步數據,來保證數據一致。

當宕機的leader恢復,發現新的leader中的數據和自己持有的數據不一致,此時宕機的leader會將自己的數據截斷到宕機之前的hw位置,然后同步新leader的數據。宕機的leader活過來也像follower一樣同步數據,來保證數據的一致性。

2、生產者可靠性級別

通過以上的講解,已經可以保證kafka集群內部的可靠性,但是在生產者向kafka集群發送時,數據經過網絡傳輸,也是不可靠的,可能因為網絡延遲、閃斷等原因造成數據的丟失。

kafka為生產者提供了如下的三種可靠性級別,通過不同策略保證不同的可靠性保障。

其實此策略配置的就是leader將成功接收消息信息響應給客戶端的時機。

通過request.required.acks參數配置:

1:生產者發送數據給leader,leader收到數據后發送成功信息,生產者收到后認為發送數據成功,如果一直收不到成功消息,則生產者認為發送數據失敗會自動重發數據。

當leader宕機時,可能丟失數據。

0:生產者不停向leader發送數據,而不需要leader反饋成功消息。

這種模式效率***,可靠性***。可能在發送過程中丟失數據,也可能在leader宕機時丟失數據。

-1:生產者發送數據給leader,leader收到數據后要等到ISR列表中的所有副本都同步數據完成后,才向生產者發送成功消息,如果一只收不到成功消息,則認為發送數據失敗會自動重發數據。

這種模式下可靠性很高,但是當ISR列表中只剩下leader時,當leader宕機讓然有可能丟數據。

此時可以配置min.insync.replicas指定要求觀察ISR中至少要有指定數量的副本,默認該值為1,需要改為大于等于2的值

這樣當生產者發送數據給leader但是發現ISR中只有leader自己時,會收到異常表明數據寫入失敗,此時無法寫入數據,保證了數據絕對不丟。

雖然不丟但是可能會產生冗余數據,例如生產者發送數據給leader,leader同步數據給ISR中的follower,同步到一半leader宕機,此時選出新的leader,可能具有部分此次提交的數據,而生產者收到失敗消息重發數據,新的leader接受數據則數據重復了。

3、leader選舉

當leader宕機時會選擇ISR中的一個follower成為新的leader,如果ISR中的所有副本都宕機,怎么辦?

有如下配置可以解決此問題:

unclean.leader.election.enable=false

策略1:必須等待ISR列表中的副本活過來才選擇其成為leader繼續工作。

unclean.leader.election.enable=true

策略2:選擇任何一個活過來的副本,成為leader繼續工作,此follower可能不在ISR中。

策略1,可靠性有保證,但是可用性低,只有***掛了leader活過來kafka才能恢復。

策略2,可用性高,可靠性沒有保證,任何一個副本活過來就可以繼續工作,但是有可能存在數據不一致的情況。

4、kafka可靠性的保證

At most once:消息可能會丟,但絕不會重復傳輸。

At least once:消息絕不會丟,但可能會重復傳輸。

Exactly once:每條消息肯定會被傳輸一次且僅傳輸一次。

kafka最多保證At least once,可以保證不丟,但是可能會重復,為了解決重復需要引入唯一標識和去重機制,kafka提供了GUID實現了唯一標識,但是并沒有提供自帶的去重機制,需要開發人員基于業務規則自己去重。

責任編輯:武曉燕 來源: oschina博客
相關推薦

2023-11-17 09:00:00

Kafka開發

2017-06-23 18:25:51

kafka數據可靠性

2010-12-28 19:50:21

可靠性產品可靠性

2010-01-15 09:44:52

嵌入式存儲交換技術

2019-08-30 12:10:05

磁盤數據可靠性RAID

2019-11-29 09:49:34

Kafka系統監控

2010-12-28 19:55:20

軟件架構可靠性

2020-12-06 14:51:23

物聯網可靠性IOT

2010-12-28 20:04:10

網絡的可靠性網絡解決方案可靠性

2011-05-25 19:31:07

Stratus信息化

2010-12-28 20:16:24

2025-03-03 03:00:00

2017-12-27 09:21:19

分布式存儲系統

2021-02-02 11:01:31

RocketMQ消息分布式

2018-09-27 14:13:27

云服務可靠故障

2013-11-04 17:05:37

銀行容錯

2024-02-28 10:26:04

物聯網數據存儲

2011-05-04 19:17:36

VPLSVPN技術

2009-04-08 10:23:00

軟交換網絡可靠

2013-11-04 17:04:22

容錯可靠
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 特级丰满少妇一级aaaa爱毛片 | 日本黄色免费视频 | 欧美精品一区二区在线观看 | 欧美日韩成人影院 | 日韩一区在线播放 | 中文字幕一区二区三 | 国产一级在线 | av先锋资源 | 日韩一区二区在线免费观看 | 欧美一级免费 | 精品国产一区二区国模嫣然 | 亚洲人免费视频 | a黄毛片| 亚洲第一色av | 国产激情在线播放 | 国产精品久久久久久模特 | 欧美男人天堂 | 91久久久久久久久 | 久久久精品一区二区三区 | 亚洲国产一区二区三区在线观看 | 91精品国产91久久久久久密臀 | 天堂中文av | 天天插天天操 | 成人精品国产免费网站 | 久操av在线| 91在线区| 国产精品午夜电影 | 色综合桃花网 | 亚洲男人网 | 荷兰欧美一级毛片 | 操皮视频| 国产精品久久在线 | 午夜视频在线播放 | 国产成人精品一区二 | 亚洲欧美在线观看 | 一本色道精品久久一区二区三区 | 亚洲福利 | 日韩精品av一区二区三区 | 播放一级黄色片 | 玖草资源| 男人午夜视频 |