kafka如何保证不丢失消息?
发布于 2020-05-19 18:13:16
关注者
0
被浏览
581
1 个回答
-
- 复制因子:创建topic的时候指定复制因子大于1时,一个分区被分配到一个broker上,同时会在其他broker上维护一个分区副本;
- isr列表:分区及其副本分别为leader和follower,leader对外提供读写服务,follower会向leader发送同步请求,拉取最新的数据,如果follower和leader的消息差距保持在一定范围之内,那么这个follower在isr列表内;当分区leader所在broker宕机,会从isr列表中选举一个follower作为新的leader提供服务
- 通过kafka的acks参数可以控制消息的发送行为,acks可选的值有0、1、all;当设置为0时,生产者消息发送成功即为成功,不关心是否写入到磁盘及后续操作;当设置为1时,消息发送到分区leader后写入磁盘即为成功;当设置为all时,消息发送到分区leader并写入磁盘后,同步给isr列表中的所有分区副本后即为成功