我计划利用azure事件中心中的所有32个分区。要求:每个分区的“有序”处理至关重要。。问:如果我将所有32个分区的tu(吞吐量单位)增加到最大可用的20个,我将得到40mb的出口。假设我计算出需要500个并行客户机线程并行处理(eventprocessorclient)来实现吞吐量需求。如何在满足“订购”要求的同时实现eventprocessorclient的这种并行度?顺便说一句,在kafka中,我可以在一个主题中创建500个分区,kafka只允许每个分区有一个线程来保证事件顺序。
我计划利用azure事件中心中的所有32个分区。要求:每个分区的“有序”处理至关重要。。问:如果我将所有32个分区的tu(吞吐量单位)增加到最大可用的20个,我将得到40mb的出口。假设我计算出需要500个并行客户机线程并行处理(eventprocessorclient)来实现吞吐量需求。如何在满足“订购”要求的同时实现eventprocessorclient的这种并行度?顺便说一句,在kafka中,我可以在一个主题中创建500个分区,kafka只允许每个分区有一个线程来保证事件顺序。
1条答案
按热度按时间mbyulnm01#
简而言之,你真的不能按照你描述的方式去做你想做的事情。
这个
EventProcessorClient
绑定到给定的事件中心和使用者组组合,并将与使用同一事件中心/使用者组的其他处理器协作以平均分配负载。添加的处理器数量超过分区的数量会导致它们处于空闲状态。你可以通过使用额外的消费者群体来解决这个问题,但是EventProcessorClient
示例将只与同一消费群中的其他示例协调;每个消费群体的处理器将独立工作,并且最终会多次处理相同的事件。服务端还有一些配额,您可能没有考虑到。假设您使用的是标准层,那么对于一个事件集线器,在所有分区中,使用标准层的最大并发读取数是100。对于给定的事件中心,最多可以创建20个使用者组。每个消费群体一次最多可以有5个活动读卡器。“事件中心配额”页讨论这些限制。也就是说,一个专用的示例允许更高的限制,但与您希望实现的严格排序仍有差距。
如果不了解具体的应用程序场景、处理事件所需的时间、事件体的相对大小以及吞吐量目标是什么,就很难提供更适合您需要的其他建议。