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

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中你有消费者组和所有消费者(服务),共享同一个消费者组将协作,这意味着这些服务之一消费的事件不会被其他人消费,所以这样你就可以并行化消费者过程。

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

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

【讨论】:

以上是关于提高基于微服务的系统的可扩展性的主要内容,如果未能解决你的问题,请参考以下文章

抗住“亿级流量”—微服务高可用架构演化

期末考点

基于微服务的应用性能监控方案

微服务了解

微服务的价值

微服务-netflix套件-openfeign