首页 > 解决方案 > 在带有分区和多个“事件处理器”客户端的 Azure 事件中心中按顺序处理

问题描述

我计划利用 Azure 事件中心中的所有 32 个分区。要求:每个分区的“有序”处理至关重要。问题:如果我将 TU(吞吐量单位)增加到所有32 个分区的最大可用 20,我得到 40 MB 的出口。假设我计算出我需要 500 个并行客户端线程并行处理 (EventProcessorClient) 来满足我的吞吐量需求。如何在满足我的“订购”要求的同时使用 EventProcessorClient 实现这种级别的并行性?顺便说一句,在 Kafka 中,我可以在一个主题中创建 500 个分区,而 Kafka 每个分区只允许 1 个线程来保证事件顺序。

标签: azureapache-kafkaazure-eventhubevent-stream-processing

解决方案


简而言之,你真的不能按照你描述的方式做你想做的事情。

绑定到给定的EventProcessorClient事件中心和消费者组组合,并将与使用相同事件中心/消费者组的其他处理器协作以均匀分配负载。添加比分区数量更多的处理器将导致它们处于空闲状态。您可以通过使用其他消费者组来解决此问题,但EventProcessorClient实例只会与同一消费者组中的其他人协调;每个消费者组的处理器将独立运行,您最终会多次处理相同的事件。

您可能没有考虑到服务端的配额。假设您使用的是标准层,则对于一个事件中心,您可以在所有分区中拥有标准层的最大并发读取数为 100。对于给定的事件中心,您最多可以创建 20 个使用者团体。每个消费者组一次最多可以有 5 个活跃的读者。事件中心配额页面讨论了这些限制。也就是说,专用实例允许更高的限制,但您仍然与您希望实现的严格排序存在差距。

在不了解您的具体应用场景、处理事件需要多长时间、事件主体的相对大小以及您的吞吐量目标是什么的情况下,很难提供更适合您需求的替代建议。


推荐阅读