首页 >

Kafka是如何保证数据可靠性和一致性 – 数据库 – 前端|

摩拜单车怎么设置导航,400流量转化率是多少,驱动人生怎么下载鼠标驱动Kafka是如何保证数据可靠性和一致性 - 数据库 - 前端|Kafka是如何保证数据可靠性和一致性

什么是可靠性

对于消息系统来说,所谓可靠性就是指消息可以从生产者(producer)准确的送达到消费者(consumer)。可靠性保证有三个层次:

At most once 最多一次。消息可能会丢失,但是决不重复。At least once 至少一次。消息决不丢失,但可能会重复。Exactly once 恰好一次。这是最完美的,既不丢失,也不重复。

如果要可靠的准确的传达消息,需要生产者程序,消息系统和消费者程序相互合作。

什么是一致性

对于消息系统来说,一致性是指,如果一个消费者c1读到消息m1的offset是x,那么之后的任何消费者读到的offset是x的消息一定也是c1。

可以参看偶的一个视频《分布式系统中的强一致性和弱一致性》

Kafka如何保证可靠性和一致性

如果要可靠的准确的传达消息,需要生产者程序,消息系统和消费者程序相互合作。

生产者程序 Producer

生产者需要确认消息成功送达kafka的服务区broker,并且得到broker的返回消息,确认消息已经提交(commit)。如果没有成功返回需要重发,直到发送成功。

详细的配置解释,可以参考偶的头条文章《Kafka的可靠性保证 – 生产者的配置》

Kafka服务器集群 Cluster

Kafka的服务器是一个集群,集群中至少需要包含3个以上的节点。通过主从备份可以保证不丢消息。只要提交的消息就保证不丢。

详细的配置解释,可以参考偶的头条文章《Kafka的一致性保证》

消费者程序 Consumer

消费者从Kafka读取消息以后要妥善处理。所谓妥善处理,就是完成自己获取这一条消息的目标,比如生成一条业务数据存入数据库,或者发送消息到其他的系统。

消费者需要准确的维护offset,也就是消费到哪一条消息了。如果维护不好,就会导致丢消息或者重复消费。可以参考偶的头条动画视频《[动画] 如何设计可靠的Kafka的消费者程序 – exactly once》。

详细的配置解释,可以参考偶的头条文章《Kafka的可靠性保证 – 消费者的配置》

本人,@小马过河Vizit,专注于分布式系统原理和实践分享。希望利用动画生动而又准确的演示抽象的原理。欢迎关注。

关于偶的名字。小马过河Vizit,意为凡事像小马过河一样,需要自己亲自尝试,探索才能获得乐趣和新知。Vizit是指Visualize it的缩写。一图胜千言,希望可以利用动画来可视化一些抽象的原理。


Kafka是如何保证数据可靠性和一致性 - 数据库 - 前端|
  • gb15239质量指标是什么 - 数据库 - 前端|
  • gb15239质量指标是什么 - 数据库 - 前端| | gb15239质量指标是什么 - 数据库 - 前端| ...

    Kafka是如何保证数据可靠性和一致性 - 数据库 - 前端|
  • revit标高单位默认怎么改成米 - 数据库 - 前端|
  • revit标高单位默认怎么改成米 - 数据库 - 前端| | revit标高单位默认怎么改成米 - 数据库 - 前端| ...

    Kafka是如何保证数据可靠性和一致性 - 数据库 - 前端|
  • 封神演义中哪件法宝最厉害 - 数据库 - 前端|
  • 封神演义中哪件法宝最厉害 - 数据库 - 前端| | 封神演义中哪件法宝最厉害 - 数据库 - 前端| ...