开发者社区> 问答> 正文

分布式系统如拥抱故障?

分布式系统如拥抱故障?

展开
收起
kun坤 2020-04-23 19:41:38 446 0
1 条回答
写回答
取消 提交回答
  • 分布式系统曾经只是计算机科学博士和软件架构师的领地,受众非常小。但现在不同了。 仅仅因为你在笔记本电脑上写程序、无需关心消息如何传递和锁问题,并不意味着你不 需要关心分布式系统:

    你写的程序发起了多少对外部服务的 API 调用? 你的代码是跑在PC 上还是移动设备上 —— 你确切地知道所有可能的设备类型吗? 当你的应用正在运行时,它可能遇到哪些网络方面的限制,关于这些你知道多少? 当软件到达特定规模时,它会遇到哪些瓶颈,关于这些你又知道多少? 在经典分布式计算理论中,我们学到的一件事情是:分布式系统经常会发生故障,而且 大都是局部而非全局故障。这些故障不仅难于诊断和预测,而且很难复现 —— 可 能是某个特定的第三方数据流没数据了,可能是位于某个你从未听说过的地方的路由器挂掉 了。你永远在同短时故障(intermittent failure)作斗争,这注定是一场失败的战役 吗?

    应对复杂分布式系统的方法并不是简单地增加测试,或者采用敏捷开发流程,也不是采用 DevOps 或者持续交付(continuous delivery)。任何单一的技术或方法都无法阻止类似 丰田汽车事故这样的事情再次发生。实际上,类似这样的事情肯定会再次发生。

    解决这类问题我们需要拥抱这样一种观念:无法预知的故障种类太多了 —— 我们面对的是一 片巨大而未知的未知海洋;此外,还需要改变我们构建系统时 —— 以及运维现有系统时 —— 的思考方式。

    2020-04-23 19:41:46
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
攻克痛点:如何保证复杂微服务架构下的数据一致性 立即下载
我看分布式系统架构设计和阿里实践 立即下载
我看分布式系统架构设计 和阿里实践 立即下载