1.broker:代理,对于MQ的消息服务器,消息队列服务。只管存消息和删消息,不维护消息状态
2.zk:记录消息的内容
3.consumer:监听到zk,而进行消费
4.kafka:数据大量堆积不会出现borker卡死活不响应现象
5.partition:一个partition中的消息对应一个consumer,当然consumer是同一个consumer group的, 每个partition是一个有序的队列。Partition中的每条消息都会被非配一个有序的id(offset)
6.consumer 是一个逻辑概念,实际是一个Consumer Group中的consumer,一个consumer只对应一个Partition
7.Consumer Group 消费者组,可以并行消费Topic中的partition的消息
Producers:生产消息的过程
Consumers:消费消息的过程 异步发送:批量发送,达到一定的阀值时批量发送
8.Borker是没有副本的,一旦宕机,消息便作废。但是可以通过消息本身是有副本的。 SLA 服务水平保证,一般保存七天,后会被删除
9.Consumer 故障之后,zk记录了已读取的消息,然后在通过索引的机制继续读取未读的消息(配合zk)
10.Kafka存储日志时是线性存储的。不会有并发问题,不限制消息大小 Partitioin是以文件的形式存储在文件系统中的
11.索引机制:稀疏索引,二分查找,找到传过去的偏移量附近的,不断二分查找。提高速度。 Producer不断的将消息push到kafka中
12.Zk在watch到producer在push消息时,就会通知consumer去消费消息,consumer在消费消息时,也会通知zk
13.Broker的master和salver中,本身并无主从,只是topic有副本。 Consumer的pull的通信协议
14.Producer,borker和consumer采用的是一套自行设计的基于TCP层的协议。
15.Message中打上是否需要CRC校验的标志,让consumer来进行CRC校验
16.At most once:最多一次 当consumer处理消息时,出现异常了,当重新连上zk时,不会再去处理了
17.At least once:至少一次 consumer在消费了消息后,当zk出现问题时,consumer重新脸上zk时,会再一次消费消息
18.Exactly once:只读一次