【发布时间】:2021-10-04 12:04:35
【问题描述】:
这更像是一个系统设计问题。
假设我有一个微服务架构,并且我有 X 个实例 Service B(用于对服务的 HTTP 请求进行负载平衡)。但是,Service B 也是某个 Kafka 主题的消费者。如何避免处理相同的消息X 次(X 是Service B 的实例数)?如果处理是幂等的,at least once 可能会很好。不需要是exactly once,但不能是X times。
服务 A 可以是订单服务。它会生成有关用户向 Orders topic 下订单的消息。
服务 B 可以是支付服务。它使用来自 Orders 主题 的消息来向用户收费。
为订单付款可能是幂等操作。但是,如果我有 10 个支付服务实例,我不想浪费 CPU 和 IO 做 10 次。
即使分区是答案,如果我们拥有的特定微服务实例比分区多怎么办?
【问题讨论】:
标签: apache-kafka microservices messaging autoscaling idempotent