问题标签 [ruby-kafka]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1434 浏览

apache-kafka - Kafka异步和Kafka同步acks = 0之间的区别?

根据我的阅读,带有 acks=0 的 Kafka 基本上只是将消息推送到生产者缓冲区。它不等待任何类型的确认。有了这个,我想知道它与异步生产者有什么不同?acks 如何影响异步生产者?

0 投票
1 回答
150 浏览

ruby - 处理两个连续 kafka 批次之间的长时间延迟(使用 ruby​​/karafka 消费者)

我正在使用 karafka 从主题中读取,并调用外部服务。每次调用外部服务大约需要 300 毫秒。并且在消费者组中运行 3 个消费者(k8s 中的 3 个 pod),我预计每秒可以实现 10 个事件。我看到了这些日志,它们也证实了处理每个单独事件的 300 毫秒预期。但是,总吞吐量并没有增加。每个 karafka 进程似乎在处理两批事件之间停留了很长时间。

围绕该consume方法进行检测意味着消费者代码本身不需要时间。

https://github.com/karafka/karafka/blob/master/lib/karafka/backends/inline.rb#L12

但是,我注意到两件事:

  1. 当我在 3 个 pod 上跟踪日志时,3 个 pod 中只有一个似乎一次发出日志。这对我来说没有意义。由于所有分区都有足够的事件,每个消费者应该能够并行消费。

  2. 虽然,上述消息大致显示每个事件 321 毫秒 (2571/8),但实际上我看到日志在处理两个批次之间长时间停滞。我很好奇,那个时间去哪儿了?

====== 编辑:

跨代理的数据分布存在一些偏差——因为我们最近将代理从 3 个扩展到总共 6 个。但是,没有一个代理处于 CPU 或磁盘压力之下。这是一个新集群,在高峰期几乎不使用 4-5% 的 cpu。

我们的数据均匀分布在 3 个分区中——我说这是因为每个分区的最后一个偏移量大致相同。

分割 第一次
偏移
最后
偏移量
尺寸 领导
节点
副本
节点
同步
副本
节点
离线
副本
节点
首选
领导者
复制不足
[0] 2174152 3567554 1393402 5 5,4,3 3,4,5 是的
1 2172222 3566886 1394664 4 4,5,6 4,5,6 是的
[2] 2172110 3564992 1392882 1 1,6,4 1,4,6 是的

然而,我确实看到一个消费者永远落后于另外两个消费者。下表显示了我的消费者的滞后。每个分区有一个消费者进程:

分割 第一次偏移 最后偏移量 消费者抵消 落后
0 2174152 3566320 2676120 890200
1 2172222 3565605 3124649 440956
2 2172110 3563762 3185587 378175
综合滞后 1709331

这是来自所有 3 个消费者的日志的屏幕截图。consume您可以注意到每次函数调用所花费的时间和两次相邻调用之间的间隔之间的巨大差异。基本上,我想解释和/或减少等待时间。该主题中有 100k+ 事件,我的虚拟 karafka 应用程序能够快速检索它们,因此 kafka 代理不是问题。

karafka 消费者日志

将 max_wait_time 设置为 1 秒(之前为 5 秒)后更新

减少等待配置后,问题似乎得到了解决。现在两个连续日志的差值大致等于consume花费的时间

0 投票
0 回答
37 浏览

ruby - Ruby Kafka 使用 snappy 压缩需要在 Gemfile 中添加对 `snappy` gem 的依赖。(加载错误)

我正在使用ruby-kafkagem,我有一个简单的生产者和消费者:

制片人

消费者

当我运行消费者时,我得到一个错误

在我的config/producer-config.sh我有这个(没碰它)

当我使用 CLI 运行生产者和消费者时,它工作正常并且我没有收到任何错误。这是一个错误还是我错过了什么?

0 投票
0 回答
32 浏览

ruby-on-rails - 什么是 ruby​​-kafka gem 中的 connection_builder ?

我试图实现 gem 的功能ruby-kafka

在尝试其中一个时,我遇到了connection_builder. 我发现很难了解更多关于connection_builder.I 的信息。我不知道需要作为 connection_builder 传递什么,尝试使用“localhost”传递它,但最终得到了错误。非常感谢您在此处解释什么是 connection_builder 或需要传递哪些值的任何帮助!下面是我正在尝试的代码片段