首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kafka和并行消费者:为什么订单在微服务体系结构中很重要

kafka和并行消费者:为什么订单在微服务体系结构中很重要
EN

Stack Overflow用户
提问于 2022-04-21 20:56:48
回答 2查看 342关注 0票数 2

我开始深入卡夫卡生态系统。

我惊讶地发现,在默认情况下,每个消费者一次只消化一个“事件”,顺序!

它是由偏移确认,并行单位是在分区级别和其他一些东西.你可以找到不错的细节这里

如果我需要在我的应用程序节点线程池中并行地使用接收到的消息,我需要使用它并做一些非默认的开发工作来获得它。

另一方面,有几种技术有自己的方法来获得它:夸夸斯/小黑麦,confluentinc有一个并联耗能器,spring,

我希望找到一个默认的代码配置,以获得它。

这提示我,为了直接使用消息,也许其他一些技术更适合.

  • 为什么默认情况下没有将并行使用者提供到库中?
  • 为什么订单在微服务体系结构中很重要?
EN

回答 2

Stack Overflow用户

发布于 2022-04-21 22:28:40

KafkaConsumer是一个相对较低级别的对象,它基本上能够从给定的偏移位置读取记录,寻找特定的偏移量,读取并保存现有卡夫卡存储区(称为__consumer_offsets)中的偏移量。类似地,receive与其poll(Duration)签名完全同步。

如果需要更多的自定义,例如异步行为,那么您可以使用类似并行消费者或spring的包装器。

说到库设计,通常最好只做一件事(基本上是一个应用的单一责任原则)。

例如,如果“主”库是异步的,库提供者将需要提供线程创建和维护语义,在没有记录(与spring的侦听器相比)时会发生什么,等等。通过公开低级别的API,这些与Kafka无关的担忧是可以避免的。

票数 1
EN

Stack Overflow用户

发布于 2022-04-22 18:11:47

如果我需要在我的应用程序节点线程池中并行地使用接收到的消息,我需要使用它并做一些非默认的开发工作来获得它。

卡夫卡主要是建立在这个概念的基础上,允许scale out,而不是scale up来提高性能。

Scale out意味着通过在系统体系结构中添加更多组件来提高性能,其中组件是完整的应用程序,其行为类似于黑匣子。您只需添加更多您所依赖的应用程序或其他应用程序实例(如kafka代理程序)。

按照这种模式,kafka有一个consumer-group,它允许您拥有多个应用程序,每个应用程序都有一个单独的kafka-consumer,但所有应用程序都属于同一个consumer-group

只有一个kafka-consumerconsumer-group将使用需要从源消费的元素。因此,如果一个consumer-group中有10个consumer-group,它们将使用源中的并行元素。这就是kafka通过允许您使用scale-out来提高性能的方式。

您需要的似乎是更多的scale up,因为您希望生成多个线程,以便能够并行地使用更多的元素。当您这样做,您将面临硬件需求,您将能够达到一个特定的性能,通过增加更多的资源,但随后的成本将增加几何级数,也将有一个点,这将是很难提高性能更多。

总之,重新考虑使用多个线程的方法,这意味着scale up,并考虑使用apache-kafka的应用程序的多个实例,以便您可以轻松地使用scale out

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71960788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档