赞
踩
kafka broker集群接收到数据后会将数据进行持久化存储到磁盘,消息都是先写入到页缓存,然后由操作系统负责具体的刷盘任务或者使用fsync强制刷盘,如果此时Broker宕机,且选举一个落后leader副本很多的follower副本成为新的leader副本,那么落后的消息数据就会丢失。
1、同步刷盘(不太建议)。同步刷盘可以提高消息的可靠性,防止由于机器掉电等异常造成处于页缓存而没有及时写入磁盘的消息丢失。但是会严重影响性能。
2、利用partition的多副本机制(建议)
unclean.leader.election.enable=false:数据丢失太多的副本不能选举为leader副本,防止落后太多的消息数据而引起丢失;
replication.factor >= 3:消息分区的副本个数,这个值建议设为>=3;
min.insync.replicas >1:消息写入多少副本才算已提交,这个值必须大于1,这个是要求一个leader 至少感知到有至少一个 follower还跟自己保持联系;(replication.factor>min.insync.replicas 这样消息才能保存成功)
消息生产服务A 所有消息入库,然后通过 定时任务job 直接调用 消息消费服务B。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。