首页 > 技术文章 > kafka入门第五篇 无消息丢失配置怎么实现

tugeboke 2019-10-29 17:50 原文

kafka在什么情况下才能保证消息的不丢失?
一句话概括,kafka只对”已提交“的消息(committed message)做有限度的持久化保证
 
 
第一个核心要素: 已提交的消息
什么是以提交的消息?当kafka的若干个Broker成功的接收到一条消息并写入到日志文件后,他们会告诉生产者程序消息已经成功提交。此时,这条消息在kafka看来就是”已提交的消息“。
那为什么是若干个Broker呢?这取决你对”以提交“的定义。你可以选择只要有一个Broker成功保存该消息就算已提交,也可以是令所有Broker都成功保存该消息才算是已提交(也就是指定数量的副本写入成功)。不论,那种情况,kafka只对已提交的消息做持久化保证这件事情是不变的。
第二个核心要素: 有限度的持久保证
假如整个集群全部挂掉,消息就会丢失,这个就是有限的持久化保证
假如你的消息保存在N个Broker上,那么这个前提条件就是这N个Broker中至少有一个存活。只要这个条件成立,kafka就能保证你的消息永远不丢失。
 

推荐阅读