从Kafka的可靠性设计体验软件设计之美

目录

1. Kafka可靠性概述

2. 副本剖析

     2.1 什么是副本

   2.2 副本失效场景

  2.3 数据丢失场景

2.4 解决数据丢失方案

3. 日志同步机制

4. 可靠性分析


1. Kafka可靠性概述

     Kafka 中采用了多副本的机制,这是大多数分布式系统中惯用的手法,以此来实现水平扩展、提供容灾能力、提升可用性和可靠性等。

2. 副本剖析

     2.1 什么是副本

            副本(Replica)是分布式系统中常见的概念之一,指的是分布式系统对数据和服务提供的一种冗余方式。

   2.2 副本失效场景

        a.  follower副本进程卡住,在一段时间内根本没有向leader副本发起同步请求,比如频繁的Full GC。

       b.   follower副本进程同步过慢,在一段时间内都无法追赶上leader副本,比如I/O开销过大。

       c.   如果通过工具增加了副本因子,那么新增加的副本在赶上leader副本之前也都是处于失效状态的。

  2.3 数据丢失场景

      在某一时刻,B中有2条消息m1和m2,A从B中同步了这两条消息,此时A和B的LEO都为2,同时HW都为1;之后A再向B中发送请求以拉取消息,FetchRequest请求中带上了A的LEO信息,B在收到请求之后更新了自己的HW为2;B中虽然没有更多的消息,但还是在延时一段时间之后返回FetchResponse,并在其中包含了HW信息;最后A根据FetchResponse中的HW信息更新自己的HW为2。

                                           数据丢失场景(part 1)
        可以看到整个过程中两者之间的HW同步有一个间隙,在A写入消息m2之后(LEO更新为2)需要再一轮的FetchRequest/FetchResponse才能更新自身的HW为2。如果在这个时候A宕机了,那么

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10年JAVA大数据技术研究者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值