kafka有两种发送数据的模式,异步和同步,默认选择的是同步发送消息。
同步:在同步模式如果ack消息确认机制为1只保证主节点写入成功,在进行主从复制如果主节点宕机,从节点将没有数据,数据就会丢失。
所以设置ack消息确认机制为-1,消息写入主节点和从节点才算成功。
异步:在异步模式当缓冲区满了,如果ack=0就会清空缓冲池消息。
所以在kafka配置文件设置成不限制阻塞超时时间,一直等待就保证数据不会丢失。
同步和异步区别:
同:发送消息到分区再进行主从复制,客户端收到服务器确认。
异:发送消息到缓冲区,然后写入集群中,速度比较快。
ack=0只发送一次,不管是否成功。
ack=1主写入就成功。
ack=-1主副本都写入成功。
消息组里面有多个消费者,消费topic下面所有分区,
每个分区只能由同一个消费组内一个消费者来消费。
1)顺序读写,不断追加到文件。
2)零拷贝,数据从内核到内核再到网卡。
3)分区,并行消费。
4)批量发送消息。
5)数据压缩,生产者对数据进行压缩,消费者解压。
老版本存元数据信息。
新版本进行选举和检测broker是否存活。
原文:https://www.cnblogs.com/chong-zuo3322/p/12778562.html