二、Kafka组件与角色
Kafka® is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies.
kafka组件
Broker
每个Kafka Server称之为一个Broker,多个Broker可以组成Kafka Clutser
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LV0YsKZ5-1593838910897)(assets/1573614506577.png)]
一个节点上可以有一个或者多个Broker,多个Broker连接到相同的ZK组成了Kafka集群。
Topic
Kafka是一个发布订阅消息系统
Topic就是消息类名,一个Topic中通常存放一类消息,每一个Topic都有一个或者多个订阅者,也就是消费者。
Producer 将消息推送到Topic,有订阅该Topic的Consumer从Topic中拉取消息。
Topic 与 Broker
一个Broker 上可以创建一个或者多个Topic,一个Topic可以同一集群下的多个Broker
Partition
kafka会为每个Topic维护多个分区(partititon),每个分区会映射到一个逻辑的日志(log)文件
一个Topic可以被划分为多个分区(自定义)
Partition Distrbution
对于同一个partiton,它所在任何一个broker,都有能扮演两种角色:leader、follower
每个partiton的Leader用于处理到该partiton的读写请求。
每个partiton的followers是用于异步的从它的leader中复制数据。
Kafka会动态维护一个与Leader保持一致的同步副本(in-sync replicas (ISR))集合,并且会将最新的同步副本(ISR )集合持久化到zookeeper。如果leader出现问题了,就会从该partition的followers中选举一个作为新的leader。
Kafka 角色
Producer
Producer作为消息的生产者,在生产消息后需要将消息投送到指定的目的地(某个topic的某个partition)。Producer可以根据指定选择partiton的算法或者是随机方式来选择发布消息到哪个partiton
Consumer
在Kafka中,同样有consumer group的概念,它是逻辑上将一些consumer分组。因为每个kafka consumer是一个进程。所以一个consumer group中的consumers将可能是由分布在不同机器上的不同的进程组成的。Topic中的每一条消息可以被多个consumer group消费,然而每个consumer group内只能有一个consumer来消费该消息。所以,如果想要一条消息被多个consumer消费,那么这些consumer就必须是在不同的consumer group中。所以也可以理解为consumer group才是topic在逻辑上的订阅者。
每个consumer可以订阅多个topic。
每个consumer会保留它读取到某个partition的offset。而consumer 是通过zookeeper来保留offset的
组内
均分分区组间
广播
献给每一个正在努力的我们,就算在忙,也要注意休息和饮食哦!我就是我,一个在互联网跌跌撞撞,摸爬滚打的热忱,给个三连吧~ 还有就是不要只看,多动手才行!努力呀!