提高基于微服务的系统的可扩展性
Posted
技术标签:
【中文标题】提高基于微服务的系统的可扩展性【英文标题】:Increasing Scalability of a microservice based system 【发布时间】:2020-08-10 05:44:49 【问题描述】:我正在使用 KAFKA 从源获取数据。 我想知道,如果我在微服务架构中串行增加组件的数量,是否会使其更具可扩展性?或者只是增加相同组件类型的 KAFKA 消费者数量会增加它? PS:不好意思,第一次发帖。
【问题讨论】:
【参考方案1】:每个主题分区由每个消费者组中的单个线程使用。如果要增加吞吐量,则需要对默认为 1 的特定主题进行分区。如果对主题进行分区,则可以使用每个分区的单独线程并行使用该主题。这些线程可能在不同的部署中,这取决于你的架构,这里没有限制。
当您对主题进行分区时,您可能需要在生产者端和消费者端做一些额外的工作,以便在这些微服务之间提供数据一致性。可能有一些消息需要按照它们产生的顺序被消费。在这种情况下,您需要将相关消息发送到同一分区,从而强制它们按顺序被消费。
【讨论】:
【参考方案2】:我建议您阅读 kafka 文档或一些书,例如 o'reilly 的 kafka 权威指南,以更好地理解。但基本上在kafka中你有消费者组和所有消费者(服务),共享同一个消费者组将协作,这意味着这些服务之一消费的事件不会被其他人消费,所以这样你就可以并行化消费者过程。
当您为同一服务创建更多实例时,会发生这种情况,因为两个服务将共享相同的配置,因此它们将共享相同的消费者组。
另一方面,如果这两个服务属于不同的消费者组,则将独立处理所有事件
【讨论】:
以上是关于提高基于微服务的系统的可扩展性的主要内容,如果未能解决你的问题,请参考以下文章