我有一个用例,我将读取一组键/值对,其中键只是一个字符串,值是一个 JSON。我必须将这些值作为 JSON 公开给 REST 端点,我将使用 kafka 流消费者来做。
现在我的问题是:
我如何处理 Kafka 分区?我打算为消费者使用火花流
制片人呢?我想以恒定的时间间隔从外部服务轮询数据,并将生成的键/值对写入 Kafka 主题。是流媒体制作人吗?
这甚至是使用 Kafka 的有效用例吗?我的意思是,我可以有另一个消费者组,将传入的键/值对记录到数据库中。这正是吸引我使用 Kafka 的原因,可以让多个消费群体做不同的事情!
我认为对主题进行分区是为了增加并行性,从而增加消费者吞吐量。与不分区相比,此吞吐量如何?我有一个用例,我必须确保排序,因此我无法对主题进行分区,但同时我希望为我的消费者提供非常高的吞吐量。我该怎么做?
有什么建议?
只是想分享一些关于这个的想法
主题是 Kafka 中并行的主要级别。具有N分区的主题可以被N多个线程并行使用。但是拥有多个分区主要会在数据排序方面产生问题。例如,如果您有 N 个分区 P 并且您将生产者配置为随机发布消息(默认行为),那么在时间 T1 生成的消息 M1 可能会转到分区 P1,消息 M2 @T2 到 P2,M3 @T3 到 P2,然后是 M4再次到P1。您可以配置自定义规则以将消息生成到特定分区(使用称为 的东西Key),但需要在您的最后进行处理。
不确定您对制作人的确切含义。一般来说,您可以创建观察者来监听这些事件并在它们到达时调用生产者。您也可以选择批量发送消息。
选择 Kafka 的关键原因之一是与不同的计算引擎(如 apachestorm、apache spark 等)的兼容性。但据我所知,Kafka 的主要目标是高吞吐量,期望数据在非常频繁的时间内发布。如果在您的情况下,事件之间的间隔很长,那么在最终确定 Kafka 之前可能值得考虑其他可能性,因为维护空闲集群不是一个好主意。
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |