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这么"快"