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

什么?你告訴我 Kafka 會(huì)丟消息?

開發(fā) 前端
許多開發(fā)人員普遍認(rèn)為,Kafka 的設(shè)計(jì)本身就能保證不會(huì)丟失消息。然而,Kafka 架構(gòu)和配置的細(xì)微差別會(huì)導(dǎo)致消息的丟失。我們需要了解它如何以及何時(shí)可能丟失消息,并防止此類情況的發(fā)生。

Kafka 會(huì)丟失信息嗎?

許多開發(fā)人員普遍認(rèn)為,Kafka 的設(shè)計(jì)本身就能保證不會(huì)丟失消息。然而,Kafka 架構(gòu)和配置的細(xì)微差別會(huì)導(dǎo)致消息的丟失。我們需要了解它如何以及何時(shí)可能丟失消息,并防止此類情況的發(fā)生。

下圖顯示了消息在 Kafka 的生命周期中可能丟失的場景。

圖片圖片

01 生產(chǎn)者(Producer)

當(dāng)我們調(diào)用 producer.send() 發(fā)送消息時(shí),消息不會(huì)直接發(fā)送到代理。

消息發(fā)送過程涉及兩個(gè)線程和一個(gè)隊(duì)列:

  1. 應(yīng)用程序線程
  2. 消息累加器
  3. 發(fā)送線程(I/O 線程)

我們需要為生產(chǎn)者配置適當(dāng)?shù)?"acks "和 "retries",以確保消息被發(fā)送到代理。

02 消息代理(Broker)

當(dāng)代理集群正常運(yùn)行時(shí),它不應(yīng)該丟失消息。但是,我們需要了解哪些極端情況可能會(huì)導(dǎo)致消息丟失:

  1. 為了提高 I/O 吞吐量,消息通常會(huì)異步刷到磁盤上,因此如果實(shí)例在刷新之前宕機(jī),消息就會(huì)丟失。
  2. Kafka 集群中的副本需要正確配置,以保持?jǐn)?shù)據(jù)的有效副本。數(shù)據(jù)同步的確定性非常重要。

03 消費(fèi)者(Consumer)

Kafka 提供了不同的提交消息的方式。自動(dòng)提交可能會(huì)在實(shí)際處理記錄之前確認(rèn)對記錄的處理。當(dāng)消費(fèi)者在處理過程中宕機(jī)時(shí),有些記錄可能永遠(yuǎn)不會(huì)被處理。

一個(gè)好的做法是將同步提交和異步提交結(jié)合起來,在處理消息的循環(huán)中使用異步提交以提高吞吐量,在異常處理中使用同步提交以確保最后的偏移始終被提交。

下圖是這個(gè)方法的偽代碼:

try {
    while (true) {
    ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000));

    for (ConsumerRecord<String, String> record : records) {
        // process records one by one
    }

    consumer.commitAsync();
    }
} catch (Exception e){
    // exception handling 
} finally {
    try {
        consumer.commitSync();
    } finally {
        consumer.close();
    }      
}


責(zé)任編輯:武曉燕 來源: ByteByteGo
相關(guān)推薦

2018-01-10 15:15:47

2018-01-03 08:31:43

前端開發(fā)圖標(biāo)

2018-03-26 09:05:18

CTO

2017-07-17 12:17:38

2021-03-08 10:19:59

MQ消息磁盤

2024-09-03 09:20:45

2009-06-12 13:59:04

2013-11-11 11:10:03

WE大會(huì)馬化騰

2025-04-08 09:40:00

DWD數(shù)據(jù)倉庫大數(shù)據(jù)

2022-09-05 08:01:20

JWTWeb安全

2020-11-20 16:13:01

Android手機(jī)上網(wǎng)

2021-05-22 06:56:18

OpenWrt 路由器刷機(jī)

2025-04-15 09:00:00

2022-09-12 18:29:49

kafka緩存數(shù)據(jù)

2022-04-29 08:00:36

web3區(qū)塊鏈比特幣

2020-09-08 12:15:40

應(yīng)用程序安全DevSecOps漏洞

2013-04-26 17:48:04

WWDC

2025-02-03 22:07:43

2024-04-15 10:16:38

2021-05-12 10:19:21

CPU程序運(yùn)維
點(diǎn)贊
收藏

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