分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

31 | 分布式高可用之故障恢复:知错能改,善莫大焉

思考题
知识扩展
故障恢复策略
故障检测
故障类型
分布式系统的故障恢复技术

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
在上一篇文章,我带你学习了故障隔离。故障隔离的目的是,对故障组件进行隔离,以避免其影响系统中的其他组件,尽可能保证分布式系统的可用性。
在分布式系统中,故障在所难免,发生故障后仅仅进行隔离还远远不够,还需要进行故障恢复。比如,现在集群中有 3 个节点,节点 1 故障后,对节点 1 进行隔离,如果节点 2、节点 3 紧接着故障了,又隔离了这两个节点。那么,整个集群就无法继续提供服务了,何谈分布式系统的高可用呢?
为了解决这种问题,分布式领域还有一个关键技术来保证系统的高可用,即故障恢复。
接下来,我们就一起打卡分布式系统的故障恢复技术吧。

分布式故障基础知识

在介绍故障恢复之前,我先与你说说分布式系统中会有哪些故障类型。

故障类型

在任何一个分布式系统中,故障都是不可避免的。这里的故障,通常包括两类:
一类是物理故障,比如硬盘损坏、断电断网、硬件升级等;
另一类是软件层故障,比如系统存在 Bug 导致系统崩溃、系统负载过高导致系统崩溃等。
在讨论分布式系统故障时,我们通常还会从是否是网络导致的故障的角度来进行故障划分,包括节点故障和网络故障,而这两类故障可能同时包括物理故障和软件层故障。由于软件层故障和具体的程序实现等相关,因此主要由开发者根据自己的实现去解决;而物理故障通常具有很多共同特征,因此今天我主要针对物理故障导致软件不可用的情况进行讲解
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式系统的故障恢复是确保系统高可用性的关键技术之一。故障检测方法包括固定心跳检测策略和根据历史心跳信息预测故障策略。$φ$值故障检测方法基于心跳间隔符合正态分布的假设进行计算,通过设置阈值来自由调控误判的可能性。故障恢复策略包括主备策略和C、A、P选择的问题,以及网络故障恢复后节点间数据同步的问题。备升主策略可以大大提高分布式系统的可用性,而网络故障恢复问题也可以看作数据复制的问题,采用半同步复制技术能有效保证数据安全并满足系统高性能的要求。文章内容涵盖了分布式系统的故障类型、故障检测和故障恢复原理,对于保障系统的高可用性至关重要。 在分布式系统中,故障恢复技术是确保系统高可用性的关键。文章介绍了故障检测方法,包括固定心跳检测和$φ$值故障检测,以及故障恢复策略,如主备策略和网络故障恢复后的数据同步问题。固定心跳检测适用于网络状况稳定的场景,而$φ$值故障检测适用于网络状况有规律变化的场景。备升主策略能显著提高系统可用性,而半同步复制技术可保证数据安全和系统高性能。这些内容对于设计适用于不同业务场景的故障检测和恢复策略具有重要指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • 阿卡牛
    个人理解,网络分区故障一般是针对不同集群来说的,单个集群一般在同一个网络中,集群内的单点故障并不会出现网络分区。当整个集群的网络出故障时。才会有分区的说话。能想到检测办法是单独有机器对不同集群的主节点进行心跳检测来判断
    2019-12-10
    1
    4
  • benny
    收集每个节点返回的主节点信息,如果出现两个主节点,就是分区了
    2020-02-24
    2
  • 哈哈😄,看到那一堆公式,一下感受到了自己和大牛的差距,如果让我思考,除了心跳检测+TCP连接,貌似不知道还有什么,不过心跳检测也不是那么简单的,之前只认为心跳检测就是固定心跳检测,还是知道的少,有许多学问的。
    2020-02-20
    1
  • Jackey
    心跳检测原来有这么多学问。个人认为可以使用一个独立于系统之外的机器来对集群的各个机器进行检测。如果发生网络分区时,可以摘掉机器数量少的分区,将流量都分到机器数量较多的集群上。
    2019-12-10
    1
    1
  • 魏颖琪
    老师,我想问一下“第二步:通过样本计算出心跳到达时间间隔的分布。”中, Plater(t) 我应为应该表示接收到上一次心跳之后 t 个时间片还没能收到下一次心跳的概率,而不是接收到的概率。因为t->+∞。而且tnow-Tlast,last既然是上一次,也就是这段时间内没有收到新的。
    2020-02-10
  • 花儿少年
    通过不同层面的心跳机制,来监控系统中是否发生了网络分区
    2019-12-11
  • QQ怪
    没想到一个心跳策略就可以有那么多知识,学到了
    2019-12-09
  • 许童童
    老师讲得好,故障恢复确实是保证高可用很重要的一环,如何能够快递检测出故障,就显得很关键了,我们一般都是使用心跳检测,另外自动的故障恢复也显示很重要。 问个问题,系统在故障的这个期间,系统还没有恢复,那这个期间用户肯定能感受到服务异常,那系统还能叫高可用吗?
    2019-12-09
    1
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部