提高基于微服务的系统的可扩展性

Increasing Scalability of a microservice based system

我正在使用 KAFKA 从源获取数据。 我想知道如果我在微服务架构中串行增加组件的数量,是否会使其更具可扩展性?或者只是增加相同组件类型的 KAFKA 消费者的数量会增加吗? PS: 第一次发帖请见谅

我建议您阅读 kafka 文档或像 o'reilly 的 kafka 权威指南这样的书以更好地理解。但基本上在 kafka 中你有消费者组和所有消费者(服务),共享同一个消费者组将协作,这意味着其中一个服务消费的事件不会被其他服务消费,所以这样你可以并行化消费者过程。

当您为同一个服务创建更多实例时,就会发生这种情况,因为两个服务将共享相同的配置,因此它们将共享同一个使用者组。

另一方面,如果这两个服务属于不同的消费者组,则将独立处理所有事件

每个主题分区由每个使用者组中的单个线程使用。如果您想增加吞吐量,您需要对默认为 1 的特定主题进行分区。如果对主题进行分区,则可以使用每个分区的单独线程并行使用该主题。这些线程可能在不同的可部署文件中,这取决于您的架构,这里没有限制。

当您对主题进行分区时,您可能需要在生产者端和消费者端做一些额外的工作,以便在这些微服务之间提供数据一致性。可能有些消息需要按照它们生成的顺序使用。在这种情况下,您需要将相关消息发送到同一分区,以强制它们按顺序使用。