7.数据的安全性

7.数据的安全性

producer delivery guarantee

0. At least one 消息绝不会丢,但可能会重复传输
1. At most once 消息可能会丢,但绝不会重复传输
2. Exactly once 每条消息肯定会被传输一次且仅传输一次
  • Producers可以选择是否为数据的写入接收ack,有以下几种ack的选项:request.required.acks
    • acks=0 * Producer 在 ISR 中的 Leader 已成功收到的数据并得到确认后发送下一条 Message。
    • acks=1 * 这意味着 Producer 无需等待来自 Broker 的确认而继续发送下一批消息。
    • acks=all * Producer 需要等待 ISR 中的所有 Follower 都确认接收到数据后才算一次发送完成,可 靠性最高。

ISR机制

  • 关键词
    • AR : Assigned Replicas 用来标识副本的全集
    • OSR : out -sync Replicas 离开同步队列的副本
    • ISR : in -sync Replicas 加入同步队列的副本
    • ISR = Leader + 没有落后太多的副本;AR = OSR+ ISR。
  • 我们备份数据就是防止数据丢失,当主节点挂掉时,可以启用备份节点
    • producer–push–>leader
    • leader–pull–>follower
    • Follower每间隔一定时间去Leader拉取数据,来保证数据的同步
  • ISR(in-syncReplica
    • 当主节点挂点,并不是去Follower选择主,而是从ISR中选择主
    • 判断标准
      • 超过10秒钟没有同步数据
        • replica.lag.time.max.ms=10000
      • 主副节点差4000条数据
        • rerplica.lag.max.messages=4000
    • 脏节点选举
      • kafka采用一种降级措施来处理:
      • 选举第一个恢复的node作为leader提供服务,以它的数据为基准,这个措施被称为脏 leader选举

broker数据存储机制

  • 无论消息是否被消费,kafka 都会保留所有消息。有两种策略可以删除旧数据:
1. 基于时间:log.retention.hours=168
2. 基于大小:log.retention.bytes=1073741824