kafka可靠的数据传递--

文章目录

  • 基本保证
  • broker可靠性
  • 生产者可靠性
  • 消费者可靠性

理论上无论什么组件都会有数据丢失和重复;我们只能从 源头和出口来解决数据的质量。

基本保证

kafka可靠的数据传递--_第1张图片

broker可靠性

  • 副本系数:replication.factor = 3
    • ⼀般设为3,为了更高的安全性,可以设为5,同时考虑副本的分布
  • 不完全的选举:unclean.leader.election.enable = true/false
    • 允许不同步的副本成为首领:可用性和一致性之间权衡
  • 最少同步副本:min.insync.replicas = 2
    • 同步副本小于min.insync.replicas,会阻止生产者继续写入消息 NotEnoughReplicasException

生产者可靠性

  • 发送确认:acks = 0/1/all
    • 0 代表生产者能够通过网络把消息发送出去
    • 1 代表首领副本已经收到消息并把它写入到分区文件
    • ALL 代表所有副本都收到消息
  • 失败重试:retries = 3
    • 可用于解决可重试的错误:如LEADER_NOT_AVAILABLE、网络异常等
  • 额外的异常处理:无法通过自动重试解决的问题
    • 可用于解决不可重试的错误:如消息大小错误、认证错误、序列化错误,或者重试达到上限

消费者可靠性

  • group.id = <集群内唯一>
    • 不同的消费者配置不同的group.id,确保各自能消费topic的全量数据
  • auto.offset.reset = earliest / latest
    • 在没有偏移量提交时或请求的偏移量在broker上不存在时,启用此配置
  • enable.auto.commit = true
  • auto.commit.interval.ms = 300000
    • 自动提交的频度,默认值是每5秒钟一次

你可能感兴趣的:(Kafka学习笔记)