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