欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)激活碼778899分享:KafKa核心概念

柚子快報(bào)激活碼778899分享:KafKa核心概念

http://yzkb.51969.com/

傳統(tǒng)的消息隊(duì)列的概念 Java中關(guān)于消息隊(duì)列是有規(guī)范在的—JMS(Java Message Service)規(guī)范,概念如下圖: KafKa有哪些自己的特性呢?

分區(qū)和集群

將數(shù)據(jù)流分成多個分區(qū),每個分區(qū)可以獨(dú)立地進(jìn)行讀寫操作。每個Topic由多個分區(qū)組成,這些分區(qū)可以分布在集群中的不同Broker上。

以發(fā)布訂閱的模式為例,消息的生產(chǎn)和消費(fèi)都是面向Topic的,既然Topic是分成多個分區(qū)的,每個分區(qū)又能獨(dú)立的進(jìn)行讀寫操作,所以在生產(chǎn)和消費(fèi)的時候能夠?qū)崿F(xiàn)多實(shí)例并發(fā)操作,減輕單個實(shí)例的負(fù)載。

多個Broker協(xié)作組成了集群。

Controller選舉過程

(搶占----上線----唯一----監(jiān)聽等待):

第一次啟動Kafka集群時,會同時啟動多個Broker節(jié)點(diǎn),每一個Broker節(jié)點(diǎn)就會連接ZooKeeper,并嘗試創(chuàng)建一個臨時節(jié)點(diǎn) /controller(搶占)因?yàn)閆ooKeeper中一個節(jié)點(diǎn)不允許重復(fù)創(chuàng)建,所以多個Broker節(jié)點(diǎn),最終只能有一個Broker節(jié)點(diǎn)可以創(chuàng)建成功,那么這個創(chuàng)建成功的Broker節(jié)點(diǎn)就會自動作為Kafka集群控制器節(jié)點(diǎn),用于管理整個Kafka集群。沒有選舉成功的其他Slave節(jié)點(diǎn)會創(chuàng)建Node監(jiān)聽器,用于監(jiān)聽 /controller節(jié)點(diǎn)的狀態(tài)變化。一旦Controller節(jié)點(diǎn)出現(xiàn)故障或掛掉了,那么對應(yīng)的ZooKeeper客戶端連接就會中斷。ZooKeeper中的 /controller 節(jié)點(diǎn)就會自動被刪除,而其他的那些Slave節(jié)點(diǎn)因?yàn)樵黾恿吮O(jiān)聽器,所以當(dāng)監(jiān)聽到 /controller 節(jié)點(diǎn)被刪除后,就會馬上向ZooKeeper發(fā)出創(chuàng)建 /controller 節(jié)點(diǎn)的請求,一旦創(chuàng)建成功,那么該Broker就變成了新的Controller節(jié)點(diǎn)了, 稱為Controller節(jié)點(diǎn)后會接管管理工作,加載最新的元數(shù)據(jù),并將元數(shù)據(jù)同步給其他Slave Broker。

Controller作為管理人員主要的管理內(nèi)容:

監(jiān)聽Broker的狀態(tài),上下線,數(shù)據(jù)在/brokers/ids進(jìn)行Topic的管理,增刪改查。 /brokers/topicsPartition的管理。分區(qū)Leader的選舉。分區(qū)副本的分配。

Broker包含的服務(wù):

kafka 的消息可靠性

生產(chǎn)端的ACK參數(shù):

ACK值含義0當(dāng)生產(chǎn)數(shù)據(jù)時,生產(chǎn)者對象將數(shù)據(jù)通過網(wǎng)絡(luò)客戶端將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)數(shù)據(jù)流中的時候,Kafka就對當(dāng)前的數(shù)據(jù)請求進(jìn)行了響應(yīng)(確認(rèn)應(yīng)答)1當(dāng)生產(chǎn)數(shù)據(jù)時,Kafka Leader副本將數(shù)據(jù)接收到并寫入到了日志文件后,就會對當(dāng)前的數(shù)據(jù)請求進(jìn)行響應(yīng)(確認(rèn)應(yīng)答)-1默認(rèn)當(dāng)生產(chǎn)數(shù)據(jù)時,Kafka Leader副本和ISR Follower副本都已經(jīng)將數(shù)據(jù)接收到并寫入到了日志文件后,再對當(dāng)前的數(shù)據(jù)請求進(jìn)行響應(yīng)(確認(rèn)應(yīng)答)

問題優(yōu)化過程 ACK參數(shù)可以根據(jù)不同業(yè)務(wù)場景對數(shù)據(jù)響應(yīng)速度以及數(shù)據(jù)響應(yīng)的準(zhǔn)確度的要求進(jìn)行配置。 實(shí)際業(yè)務(wù)場景中會存在不可預(yù)知的消息不可靠問題,比如網(wǎng)絡(luò)因素發(fā)送不成功,或者響應(yīng)的丟失等,由此kafka增加數(shù)據(jù)重試機(jī)制。 數(shù)據(jù)重試直接能導(dǎo)致的問題就是重復(fù)和亂序。解決方法是數(shù)據(jù)的冪等性。 冪等性是給Batch Data一個SeqNum并且結(jié)合生產(chǎn)者的ProducerID,給批數(shù)據(jù)一個唯一性的標(biāo)識,同時消耗時間和性能(做部分緩沖比對)達(dá)到數(shù)據(jù)的有序和唯一。

KafKa實(shí)現(xiàn)事務(wù)的必要條件:原子性、一致性、隔離性和永久性(ACID)基本滿足。

冪等性(Idempotence):事務(wù)支持確保生產(chǎn)者的冪等性,即同一條消息不會被重復(fù)寫入。Kafka通過為每個生產(chǎn)者分配一個唯一的PID(Producer ID)來實(shí)現(xiàn)冪等性。原子性(Atomicity):事務(wù)操作要么全部成功要么全部失敗,保證消息的一致性。隔離性(Isolation):事務(wù)消息對消費(fèi)者不可見,直到事務(wù)提交。消費(fèi)者可以配置isolation.level=read_committed來確保只讀取已提交的消息。持久性(Durability):一旦事務(wù)提交,消息被持久化到Kafka日志中,保證消息不會丟失。

所以實(shí)現(xiàn)數(shù)據(jù)傳輸精準(zhǔn)一次的條件:

ack=-1 + 分區(qū)副本數(shù)>=2 + ISR最小副本數(shù)量>=2開啟事務(wù)冪等性

附錄: 消息隊(duì)列的對比:

Zookeeper中元數(shù)據(jù)的節(jié)點(diǎn)和作用

節(jié)點(diǎn)類型說明/admin/delete_topics持久化節(jié)點(diǎn)配置需要刪除的topic,因?yàn)閯h除過程中,可能broker下線,或執(zhí)行失敗,那么就需要在broker重新上線后,根據(jù)當(dāng)前節(jié)點(diǎn)繼續(xù)刪除操作,一旦topic所有的分區(qū)數(shù)據(jù)全部刪除,那么當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)才會進(jìn)行清理/brokers/ids持久化節(jié)點(diǎn)服務(wù)節(jié)點(diǎn)ID標(biāo)識,只要broker啟動,那么就會在當(dāng)前節(jié)點(diǎn)中增加子節(jié)點(diǎn),brokerID不能重復(fù)/brokers/topics持久化節(jié)點(diǎn)服務(wù)節(jié)點(diǎn)中的主題詳細(xì)信息,包括分區(qū),副本/brokers/seqid持久化節(jié)點(diǎn)seqid主要用于自動生產(chǎn)brokerId/config/changes持久化節(jié)點(diǎn)kafka的元數(shù)據(jù)發(fā)生變化時,會向該節(jié)點(diǎn)下創(chuàng)建子節(jié)點(diǎn)。并寫入對應(yīng)信息/config/clients持久化節(jié)點(diǎn)客戶端配置,默認(rèn)為空/config/brokers持久化節(jié)點(diǎn)服務(wù)節(jié)點(diǎn)相關(guān)配置,默認(rèn)為空/config/ips持久化節(jié)點(diǎn)IP配置,默認(rèn)為空/config/topics持久化節(jié)點(diǎn)主題配置,默認(rèn)為空/config/users持久化節(jié)點(diǎn)用戶配置,默認(rèn)為空/consumers持久化節(jié)點(diǎn)消費(fèi)者節(jié)點(diǎn),用于記錄消費(fèi)者相關(guān)信息/isr_change_notification持久化節(jié)點(diǎn)ISR列表發(fā)生變更時候的通知,在kafka當(dāng)中由于存在ISR列表變更的情況發(fā)生,為了保證ISR列表更新的及時性,定義了isr_change_notification這個節(jié)點(diǎn),主要用于通知Controller來及時將ISR列表進(jìn)行變更。/latest_producer_id_block持久化節(jié)點(diǎn)保存PID塊,主要用于能夠保證生產(chǎn)者的任意寫入請求都能夠得到響應(yīng)。/log_dir_event_notification持久化節(jié)點(diǎn)主要用于保存當(dāng)broker當(dāng)中某些數(shù)據(jù)路徑出現(xiàn)異常時候,例如磁盤損壞,文件讀寫失敗等異常時候,向ZooKeeper當(dāng)中增加一個通知序號,Controller節(jié)點(diǎn)監(jiān)聽到這個節(jié)點(diǎn)的變化之后,就會做出對應(yīng)的處理操作/cluster/id持久化節(jié)點(diǎn)主要用于保存kafka集群的唯一id信息,每個kafka集群都會給分配要給唯一id,以及對應(yīng)的版本號

柚子快報(bào)激活碼778899分享:KafKa核心概念

http://yzkb.51969.com/

好文閱讀

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19581451.html

發(fā)布評論

您暫未設(shè)置收款碼

請?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄