如何在微服务中扩展并行用户

cbjzeqam  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(303)

对于一个新项目,我们正在考虑将微服务与rabbitmq或kafka结合使用。对于这两种技术,我有相同的问题,但答案可能不同。
考虑三个事件:
创建产品1
创建配置文件1
删除产品1
我们希望使用这些事件在服务之间“复制”数据。当使用一个使用者时,所有消息都将以正确的顺序执行,并且数据库将保持一致。
但是,当这一个使用者处理消息的速度变慢时,可能需要并行添加另一个使用者。此时不确定事件1是否在事件3之前执行,这可能导致数据库不一致(先删除,后创建)。
在这里找到了一些关于这个主题的信息,但这两种解决方案似乎都很难实现。如何扩大这些消费者的规模?使用rabbitmq或kafka处理这个问题有什么不同吗?

7ivaypg9

7ivaypg91#

对于基于kafka的实现,您只需要确保属于同一“逻辑组”(id?)的所有事件都在同一个分区上登陆—在这种情况下,您可以添加更多的使用者(最多为若干个分区)来并行处理事件,但每个使用者将仅为其逻辑组处理事件。
您可以通过选择正确的键/分区方法来实现此行为—或者使用id作为键,或者使用更复杂的分区实现。

相关问题