producer端:
宏观上看保证数据的可靠安全性,肯定是依据分区数做好数据备份,设立副本数。
broker端:
topic设置多分区,分区自适应所在机器,为了让各分区均匀分布在所在的broker中,分区数要大于broker数。
分区是kafka进行并行读写的单位,是提升kafka速度的关键。
consumer端
consumer端丢失消息的情形比较简单:如果在消息处理完成前就提交了offset,那么就有可能造成数据的丢失。由于Kafka consumer默认是自动提交位移的,所以在后台提交位移前一定要保证消息被正常处理了,因此不建议采用很重的处理逻辑,如果处理耗时很长,则建议把逻辑放到另一个线程中去做。
为了避免数据丢失,现给出两点建议:
enable.auto.commit=false 关闭自动提交位移
在消息被完整处理之后再手动提交位移
博客讨论了Kafka在producer、broker和consumer端的数据可靠性保障措施。producer通过设置副本数确保数据备份,broker通过多分区实现负载均衡。consumer端,避免数据丢失的关键在于正确管理offset提交,推荐关闭自动提交并确保消息处理后再手动提交。同时,提出了enable.auto.commit=false和消息完整处理后提交位移的建议。
5280

被折叠的 条评论
为什么被折叠?



