第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們?nèi)绾卧趉afka中快速寫入單個消息(而不是批量)?

我們?nèi)绾卧趉afka中快速寫入單個消息(而不是批量)?

Go
慕田峪4524236 2023-07-17 16:58:09
我是 Golang 和 Kafka 的新手,我正在使用 Segmentio kafka-go 使用 Golang 連接到 Kafka 服務(wù)器。截至目前,我想推送 Kafka 中用戶的每個事件,所以我想推送單個消息(而不是批量),但由于該庫提供的寫入操作對于批量或單個消息需要相同的時間,因此需要很多時間。有沒有什么方法可以快速編寫單條消息,以便我可以在更短的時間內(nèi)推送卡夫卡中的數(shù)百萬個事件?我已經(jīng)對單條消息和批量消息進(jìn)行了測試,它花費(fèi)相同的時間(最短為 10 毫秒)。
查看完整描述

2 回答

?
RISEBY

TA貢獻(xiàn)1856條經(jīng)驗 獲得超5個贊

我認(rèn)為你的問題只是 WriterConfig。


例如,如果您的配置類似于segmentio/kafka-go 文檔上的示例:


w := kafka.NewWriter(kafka.WriterConfig{

    Brokers:      []string{"localhost:9092"},

    Topic:        "topic-A",

    Balancer:     &kafka.LeastBytes{},

})

您可以嘗試設(shè)置批量大小和批量超時:


w := kafka.NewWriter(kafka.WriterConfig{

    Brokers:      []string{"localhost:9092"},

    Topic:        "topic-A",

    Balancer:     &kafka.LeastBytes{},

    BatchSize:    1,

    BatchTimeout: 10 * time.Millisecond,

})

發(fā)生這種情況是因為 kafka-go 默認(rèn)等待 1 秒,直到批次達(dá)到最大大?。J(rèn)為 100 條消息),正如我們在代碼中看到的。


希望對您有幫助。


更新:請注意,一條一條地發(fā)送消息會減慢該過程。例如:批量發(fā)送100條消息在我的電腦上花費(fèi)了0.0107s。一條一條發(fā)送相同的 100 條消息花費(fèi)了 0.0244 秒。


查看完整回答
反對 回復(fù) 2023-07-17
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗 獲得超8個贊

我對golang了解不多。但以下使用Writer.WriteMessages 的函數(shù)具有同步發(fā)送選項。

寫入速度快(使用同步發(fā)送)實際上取決于您的網(wǎng)絡(luò)往返時間,即將消息發(fā)送到 Kafka 所需的時間加上從 Kafka 獲取確認(rèn)所需的時間。

如果您使用同步發(fā)送,那么您的發(fā)送將被阻塞,直到收到確認(rèn)為止。因此,為了加快速度,一種方法是減少確認(rèn)。最好將其設(shè)置為 1(這意味著領(lǐng)導(dǎo)者已將消息寫入其日志,但不會復(fù)制到追隨者)。但如果領(lǐng)導(dǎo)者宕機(jī)并且消息沒有被復(fù)制,這可能會導(dǎo)致?lián)p失。

因此,您可以將其設(shè)置為acks=all并更改min.insync.replicas=2主題。值越小,send()返回的速度就越快,并且將下一條消息推送到 Kafka 的速度也就越快。


查看完整回答
反對 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號