kafka

kafka集群的组成?
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是一个有序的队列。
7)Replica:副本,为保证集群中的某个节点发生故障时,该节点上的 partition 数据不丢失,使得kafka仍然能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干个副本,一个leader和若干个follower。
8 )leader:每个分区多个副本的主节点,负责数据的读写,即生产者发送数据的对象,以及消费者消费数据的对象都是leader。
9 )follower:每个分区多个副本中的从节点,实时从leader中同步数据,保持和leader数据
同步。leader发生故障时,某个follower会成为新的leader。

kafka高可用性:
分布式存储:每个 partition 可以存在于不同的 broker 上,每个 partition就放一部分数据。每个 partition 的数据都会同步到其它机器上,形成自己的多个 replica 副本。即每个broker存放的是不同topic的partition。
所有 replica 会选举一个 leader 出来,那么生产和消费都跟这个 leader 打交道,然后其他 replica 就是follower。写的时候,leader 会负责把数据同步到所有 follower 上去,读的时候就直接读 leader上的数据即可。
如果某个 broker 宕机了,那个 broker 上面的 partition 在其他机器上都有副本的。如果这个宕机的 broker上面有某个 partition 的 leader,那么此时会从 follower 中重新选举一个新的 leader出来,大家继续读写那个新的 leader 即可。

kafka 的 ack 的三种机制?
acks 参数,是控制发送出去的消息的持久化机制的
1、acks=0 at-most-once
producer根本不管写入broker的消息到底成功没有,发送一条消息出去,立马就可以发送下一条消息,这是吞吐量最高的方式,可能消息丢失
2、acks=all/acks=-1 at-least-once
这个leader写入成功以后,必须等待其他ISR中的副本都写入成功,才可以返回响应说这条消息写入成功了,此时你会收到一个回调通知
3、acks=1 at-exactly-once
只要leader写入成功,就认为消息成功了。
为何Kafka这么"快"

作者:高旭原文地址:https://segmentfault.com/a/1190000043482946

%s 个评论

要回复文章请先登录注册