Kafka排队:Apache Kafka作为消息传递系统
1.目标
在这个Apache Kafka教程中,我们将学习Apache Kafka Queuing 的概念 。基本上,Kafka中的排队是传统消息传递的模型之一。所以,让我们首先简要介绍Kafka作为消息传递系统,这将有助于我们更好地理解Kafka排队。此外,我们将看到Kafka Queue的一些应用程序更好地清除这个概念。那么,让我们从Kafka Queuing教程开始吧。
2.卡夫卡作为消息系统
传统上有两种消息传递模型,例如Kafka中的Kafka排队和发布 - 订阅。
让我们详细讨论两个Kafka模型:
一世。卡夫卡队列
在此Kafka消息传递系统中,Kafka消费者池 可以从服务器读取。此外,每个记录都在这里转到其中一个。它有一些优势和一些弱点。它的优势在于它允许我们在多个消费者实例上划分数据处理,这有助于我们扩展处理。但它的弱点是,它不是多用户,只要一个进程读取它已经消失的数据。
II。Kafka Publish-Subscribe
在这个Kafka Publish-Subscribe系统中,记录被广播给所有Kafka消费者。它允许我们将数据广播到多个进程。但是,它也有一些限制,例如无法进行扩展处理,因为每个消息都发送给每个用户。
在卡夫卡,这两个概念由卡夫卡消费者群体推广。但是,Kafka中的消费者群体允许我们使用Kafka队列来分割处理集合上的处理。这里的进程集合指的是消费者组的成员。此外,Kafka允许我们使用Kafka发布 - 订阅向多个消费者群体广播消息。
学习Apache Kafka工作流程| Kafka Pub-Sub Messaging
因此,Kafka模型的主要优点是每个Kafka主题都可以使用这些属性 - 它可以扩展处理,也可以是多用户。因此,这意味着我们不必选择其中一个。
与传统的消息系统相比,Kafka具有更强的订购保证。
由于传统系统中的处理没有并行性,因此Kafka在并行性概念上表现良好。因为Kafka可以在一组消费者流程中提供订购保证和负载平衡。
3.需要卡夫卡队列
Kafka Queuing应用程序之一是Microservice架构。它本质上要求某种消息排队系统。让我们先了解微服务架构。它是将互连的单片应用程序解耦为不同的独立模块以及外部数据源以及API的概念。因此,为了处理微服务 - 外部源和微微服务和通信,消息队列就出现了。
此外,虽然我们将一个大的单片应用程序划分为更小的微服务(松散耦合),但那时REST API调用增加了这些微服务,并且与外部数据源的连接数也增加了。
阅读Kafka性能调优 - Kafka优化的方法
但是,保持这个庞大的系统同步是不可取的,因为它可以使整个应用程序无响应。而且,它首先可以打破分成微服务的整个目的。
因此,当时拥有Kafka使整个数据流更容易。因为它是分布式的,高度容错的,并且它还通过Zookeeper等服务持续监控代理节点。因此,它使工作效率提高。
4. ML Solutions Pipeline中的消息队列
除此之外,我们还可以使用Kafka排队等各种ML解决方案管道。但是,ML解决方案构建为:
用户界面(在客户端,移动/网络) - →API服务器和数据库 - →机器学习(黑盒子)。
但是,ML黑盒子计算量很大,并且在阻塞同步模式下使这些请求实际上并不容易。此外,在这种情况下,所有请求都可以在队列中并配置使用者API以逐个获取这些请求并将其提供给ML黑盒子。因此,虽然涉及计算密集型任务,但此管道可以轻松处理,例如从数千个图像中识别对象,即使不丢失任何请求也可能需要相当长的时间。
让我们修改Apache Kafka Producer For Beginners 2018
基本上,微服务部署到容器中,例如通过容错的分布式Kafka代理 节点集群进行 调解,并使用它监控它的Zookeeper,这似乎是一种进取软件开发的新方法。
所以,这完全是关于Kafka Queuing:Kafka作为消息传递系统。希望你喜欢我们的解释。
5.结论
因此,我们已经看到了Kafka排队的完整概念。此外,我们讨论了为什么Kafka作为消息排队。与此同时,我们学习了两个模型--Kafka队列和Kafka发布 - 订阅。此外,我们看到了为什么我们需要Kafka Queuing。最后,我们讨论了ML解决方案管道中的消息队列。但是,如果在Kafka中发生任何关于排队的查询,请随时通过评论部分询问。
另请参阅 -
最佳Apache Kafka测验 - 3分钟解决,以
供参考