kafka基本原理,kafka史上原理最详解
卡夫卡是主流的消息流体系,里面还有很多概念。在这里,我们将通过图解的方式对卡夫卡的核心概念进行梳理,从而在头脑中有一个清晰的认识。
01基础Kafka是一套流处理系统(也叫消息队列),允许后端服务之间轻松通信。它是微服务架构中的常见组件。
02生产者消费者生产者服务生产者向卡夫卡发送消息,消费者服务消费者监控卡夫卡接收消息。
服务既可以是生产者,也可以是消费者。
0Topics主题是生产者发送消息的目标地址,也是消费者的监控目标。
一个服务可以监听和发送多个主题。
卡夫卡有一个[消费群体]的概念。
这是一组服务,充当消费者。
如果一个消费群体收到一条消息,Kafka会将消息路由到该群体中的一个服务。
这有助于平衡消息负载并扩大消费者。
主题充当消息队列。首先,发送了一个消息。
然后,该消息被记录并存储在该队列中,并且不允许被修改。
接下来,消息将被发送给该主题的消费者。
但是,此消息不会被删除,将保留在队列中。
继续发消息。
和以前一样,这条信息将被发送给消费者,并且不会被更改。它将停留在队列中(消息可以在队列中停留多长时间取决于Kafka的配置)。
0分区在上面对主题的描述中,主题被视为一个队列。实际上,一个主题是由多个队列组成的,称为[分区]。
这样可以方便话题的展开。
当生成器发送消息时,该消息将被路由到本主题中的一个分区。
消费者监听所有分区,消费每个人的事件。
发送生产者消息时,默认是面向主题的,哪个分区由主题决定,默认使用轮询策略。
您还可以配置Topic,以便相同类型的所有消息都在同一个分区中。
例如,在处理用户消息时,某个用户的所有消息可以在一个分区中。
例如,用户1发送了三条消息:A、B和c。默认情况下,这三条消息位于不同的分区(如P1、P2和P3)。
配置后,可以保证用户1的所有消息都发送到同一个分区(如P1)。
这个功能有什么用?这是为了提供消息的[有序性]。
不同分区中的邮件不能排序,只能排序一个分区中的邮件。
05架构卡夫卡是集群架构,ZooKeeper是其中的重要组成部分。
ZooKeeper管理所有主题和分区。
主题和分区存储在物理节点中,ZooKeeper负责维护这些节点。
例如,有两个主题,每个主题有两个分区。
这是逻辑形式,但是Kafka集群中的实际存储可能是这样的:
主题A的分区#1有三个副本,分布在每个节点上。
这可以增加Kafka的可靠性和系统灵活性。
在3个分区#1中,ZooKeeper将指定一个领导者,负责接收来自生产者的消息。
另外两个分区#1将充当跟随者,领导者收到的消息将被复制到跟随者。
这样,每个分区都包含了完整的消息数据。
即使一个节点出现故障,您也不必担心消息损坏。
话题A和话题B的所有分区分布可能都是这样的:
这样,你对卡夫卡的构成有了初步的了解。关于Kafka或者消息队列的更多信息,可以查阅相关资料。感谢您的阅读,希望对您有所帮助。
版权归作者所有:原创作品来自博主、程序员二黑,转载请联系作者获得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。