V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dataman
V2EX  ›  问与答

面对大规模系统故障,看 Facebook 如何修复(二)

  •  
  •   dataman · 2017-04-01 14:33:25 +08:00 · 1402 次点击
    这是一个创建于 2818 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作者介绍: Ben Maurer 是 Facebook 的网络基础团队的技术领先者,主要负责整个 Facebook 面向用户产品的性能和可靠性。 Ben 于 2010 年正式加入 Facebook ,基础设施团队的成员。在加入 Facebook 之前,他与 Luis von Ahn 共同创立的验证码。最近,本与美国数字服务公司合作,以改进在联邦政府的技术使用。

    昨天,数人云已经为大家带来了 Ben Maurer 分享的“面对大规模系统工程,看 Facebook 如何处理故障排查(一)”的上半部分,主要涉及导致故障的原因、以及可以使用一个通用的系统等相关内容,今天,正式为大家带来了最终的解决方案,跟数人云一起来了解下吧~

    故障是任何大规模工程系统的一部分。 Facebook 的文化价值之一就是拥抱失败。这可以从挂在门洛帕克总部墙上的海报上得到体现:“如果你无所畏惧,你会怎样?”“天佑勇者。”

    为了使 Facebook 的系统在快速变化的情况下保持可靠,专门为其研究了常见的故障模式,并建立抽象理念来解决这些问题。这些理念确保最佳实践应用于的整个基础设施。通过建立工具来诊断问题,并创建一种复盘事故的文化来推动并作出改进,防止未来发生故障。

    帮助诊断故障的工具

    一个服务器即使有最好的预防措施,但是也会发生一些故障。在停机期间,正确的方式可以迅速解决问题,最大限度地减少故障持续时间。

    高密度的仪表板与立体主义理念

    在处理故障时,快速的获取信息也是至关重要的。良好的仪表板会让工程师快速评估一些可能会出现的异常指标,然后利用这些异常指标来推测原因。然而,仪表板增长速度越来越快,以至于很难迅速对其进行监控,如图 3 所示,仪表板显示的线程比会逐渐增多。

    为了解决这个问题, Facebook 专门为其制定了一个专业的仪表板,其采用了立体主义理念,主要用于创建图表折线图,折线部分用不同颜色来编码,使其更容易监测信息且看起来更加明了,同时可以将多个相似的数据放在一起进行比较,当然,立体主义也可以将多个不同的数据标准进行比较。上述的“立体主义理念”,可以更便捷的使用键盘进行操控,以此保证工程师可以快速查看多个指标。如图 4 所示,在不同高度情况下,面积图和平行线图表所显示相同的数据集,在区域图版本中,所显示的 30 像素点很难被监测,但是,立体主义理念可以使它更容易找到峰值,即使在 30 像素点也能很好的被检测到。

    解决故障的有效办法

    一般来说,导致故障的首要原因就是人为原因,而调试故障的最有效的方法是寻找人对其所做的更改,对这些已更改的信息进行收集整理,从配置更改入手,使用“ opsstreamm ”新软件。之前,由于较多的工程师对数据进行更改,致使数据源就变得越来越复杂,导致人们对其无法进行评估。

    学习和借鉴

    故障发生后,其中的故障审查过程可以更好的了解这些故障。

    故障审查过程中,无论是谁都没有必要推卸责任,也没有人会因为这个故障被批评,其实,审查的目的是为了了解故障的起因,以及修复故障是否会引起一些不良现象出现,同时提出最为安全有效解决办法,以此来减少此类故障的再次发生。

    如今, Facebook 已经开发出一种解决方案,称为 DERP (检测、升级、修复、预防),它可以提出更及时有效的解决方法。

    • 检测:故障如何检测报警,仪表板的用户报告如何做?
    • 升级:相关的人员能够很快的介入吗?这些人可能是通过警报而不是手动引入吗?
    • 修复:应该采取怎样的措施来解决这个问题?这些步骤可能采取自动化吗?
    • 预防:哪些改进可以消除此种故障再次发生?怎样汲取教训,以减少此种故障发生概率? DERP 可以分析故障的每一步,可以借助这种分析,即使不能确保此类故障不再发生,但至少可以保证下次恢复的更快。 “快速移动”的理念与稳定性不相矛盾,二者可以相互兼容。

    Facebook 的基础设施提供了安全:配置系统可以防止快速部署不良配置,其中核心服务是为客户提供 API ,以此避免故障发生;核心库是为了解决因资源枯竭所引发的延迟问题,建立更方便的仪表板和工具助力解决可能引起的问题,同时对故障进行改进,最重要的是,故障发生后,应该汲取经验教训,进行更改,使基础信息更稳定。

    以上内容是数人云今天为大家带来的 Facebook 面对大规模系统工程故障时所提供的的解决方案,可以通过高密度的仪表板与立体主义理念进行故障排查,然后通过 DERP 对其进行实时监测、升级、修复等,以此来确保信息更稳定,保证故障发生的频率逐渐降低。

    作者: Ben Maurer

    原文: Fail at Scale Reliability in the face of rapid change

    http://queue.acm.org/detail.cfm?id=2839461

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3008 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:23 · PVG 22:23 · LAX 06:23 · JFK 09:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.