2 回答

TA貢獻1856條經驗 獲得超5個贊
我認為你的問題只是 WriterConfig。
例如,如果您的配置類似于segmentio/kafka-go 文檔上的示例:
w := kafka.NewWriter(kafka.WriterConfig{
Brokers: []string{"localhost:9092"},
Topic: "topic-A",
Balancer: &kafka.LeastBytes{},
})
您可以嘗試設置批量大小和批量超時:
w := kafka.NewWriter(kafka.WriterConfig{
Brokers: []string{"localhost:9092"},
Topic: "topic-A",
Balancer: &kafka.LeastBytes{},
BatchSize: 1,
BatchTimeout: 10 * time.Millisecond,
})
發生這種情況是因為 kafka-go 默認等待 1 秒,直到批次達到最大大小(默認為 100 條消息),正如我們在代碼中看到的。
希望對您有幫助。
更新:請注意,一條一條地發送消息會減慢該過程。例如:批量發送100條消息在我的電腦上花費了0.0107s。一條一條發送相同的 100 條消息花費了 0.0244 秒。

TA貢獻1834條經驗 獲得超8個贊
我對golang了解不多。但以下使用Writer.WriteMessages 的函數具有同步發送選項。
寫入速度快(使用同步發送)實際上取決于您的網絡往返時間,即將消息發送到 Kafka 所需的時間加上從 Kafka 獲取確認所需的時間。
如果您使用同步發送,那么您的發送將被阻塞,直到收到確認為止。因此,為了加快速度,一種方法是減少確認。最好將其設置為 1(這意味著領導者已將消息寫入其日志,但不會復制到追隨者)。但如果領導者宕機并且消息沒有被復制,這可能會導致損失。
因此,您可以將其設置為acks=all
并更改min.insync.replicas=2
主題。值越小,send()
返回的速度就越快,并且將下一條消息推送到 Kafka 的速度也就越快。
- 2 回答
- 0 關注
- 194 瀏覽
添加回答
舉報