Kafka的基础架构
代码语言:java复制1、Producer:消息生产者,就是向 kafka broker 发消息的客户端;
2、Consumer:消息消费者,从 kafka broker 拉取消息的服务端;
3、Consumer Group:消费者组,由多个 consumer 组成。消费者组内每个消费者负责消费不同分区的数据,
一个分区只能由一个组内消费者消费;消费者组之间互不影响。所有的消费者都属于某个消费者组,
即消费者组是逻辑上的一个订阅者。
"某一个分区中的消息只能够一个消费者组中的一个消费者所消费"
例如:该分组正消费的消费者挂了,可由该分组的其他消费者消费
4、Broker:经纪人,一台Kafka服务器就是一个Broker,一个集群由多个Broker组成,一个Broker可以容纳多个Topic。
5、Topic:主题,可以理解为一个队列,生产者和消费者都是面向一个Topic
6、Partition:分区,为了实现扩展性,一个非常大的Topic可以分布到多个Broker上,
一个Topic可以分为多个Partition,每个Partition是一个有序的队列
"分区有序,不能保证全局有序;若要全局有序,则只能使用一个Partition"
7、Replication:副本Replication,为保证集群中某个节点发生故障,节点上的Partition数据不丢失,Kafka可以正常的工作,
Kafka提供了副本机制,一个Topic的每个分区有若干个副本,一个Leader和多个Follower
8、leader:每个分区多个副本的主角色,生产者发送数据的对象,以及消费者消费数据的对象都是Leader。
9、follower:每个分区多个副本的从角色,实时的从Leader中同步数据,保持和Leader数据的同步,
Leader发生故障的时候,某个Follower会成为新的Leader。
kafka的作用:
解耦
冗余(存储)
扩展性
削峰
可恢复性
顺序保证
缓冲
异步通信
Kafka的消费模式主要有两种:
代码语言:java复制1、一对一消费,也即点对点的通信,即一个发送一个接收。
2、一对多消费,即一个消息发送到消息队列,消费者根据消息队列的订阅拉取消息消费。
一对一
代码语言:java复制消息生产者发布消息到Queue队列中,通知消费者从队列中拉取消息进行消费,消息被消费之后则删除。
Queue支持多个消费者,但对于一条消息而言,只有一个消费者可以消费,即一条消息只能被一个消费者消费。
一对多
代码语言:java复制这种模式也称为发布/订阅模式,即利用Topic存储消息,消息生产者将消息发布到Topic中,
同时有多个消费者订阅此topic,消费者可以从中消费消息。
注意发布到Topic中的消息会被多个消费者消费,消费者消费数据之后,数据不会被清除,
Kafka会默认保留一段时间,然后再删除。