当前位置: 首页 > 科技观察

把Kafka的核心概念图解一下,一看就懂!

时间:2023-03-20 11:04:19 科技观察

图片来自Pexels1。BasicKafka是一个流处理系统,可以让后端服务轻松地相互通信。它是微服务架构中常用的组件。2、生产者Consumer生产者服务Producer向Kafka发送消息,消费者服务Consumer监听Kafka接收消息。服务既可以是生产者,也可以是消费者。3.TopicsTopic是生产者发送消息的目标地址,是消费者的监控目标。一个服务可以监控并发送多个主题。Kafka中有一个【consumer-group(消费者组)】的概念。这是一组服务,充当消费者。如果消费者组收到消息,Kafka会将消息路由到组中的某个服务。这样有利于消息的负载均衡,也便于扩展消费者。主题充当消息队列。首先,发送消息。然后,消息被记录并存储在这个队列中,不允许修改。接下来,消息将发送给该??主题的消费者。但是,消息不会被删除,而是会保留在队列中。继续发信息。和以前一样,消息会发送给消费者,不允许修改,永远留在队列中。(消息能在队列中停留多长时间,可以修改Kafka的配置)4、Partitions分区上面对Topic的描述中,把Topic看成一个队列。其实一个Topic是由多个queue组成的,这叫做【Partition(分区)】。这样可以方便Topic的扩展。当生产者发送消息时,消息会被路由到这个Topic中的一个Partition。消费者监听所有分区并消费来自所有分区的事件。生产者发送消息时,默认是面向Topic的,由Topic决定放到哪个Partition中,默认采用轮询策略。也可以配置Topic,让相同类型的消息在同一个Partition中。例如,处理用户消息,可以将某个用户的所有消息存储在一个Partition中。例如,用户1发送了3条消息:A、B、C。默认情况下,这3条消息在不同的Partition中(如P1、P2、P3)。配置后可以保证用户1的所有消息都发送到同一个分区(比如P1)。这个功能有什么用?这是为了提供消息的[可订购性]。不能保证不同Partition中的消息是有序的,只有一个Partition中的消息是有序的。5.架构Kafka是一个集群架构,ZooKeeper是一个重要的组件。ZooKeeper管理所有主题和分区。Topic和Partition存储在Node物理节点中,ZooKeeper负责维护这些Node。例如,有2个Topic,每个Topic有2个Partition。这是一种逻辑形式,但Kafka集群中的实际存储可能是这样的:TopicA的Partition#1有3个副本,分布在每个Node上。这增加了Kafka的可靠性和系统弹性。在3Partition#1中,ZooKeeper会指定一个Leader负责接收来自生产者的消息。另外两个Partition#1将充当Followers,Leader收到的消息将被复制到Followers。这样每个Partition就包含了全量的消息数据。即使一个Node节点出现故障,也不用担心消息损坏。TopicA和TopicB的所有Partition分布可能是这样的:感谢阅读,希望对您有所帮助!编辑:陶佳龙来源:https://timothystepro.medium.com/visualizing-kafka-20bc384803e7