分布式故障

82 阅读2分钟

弹性

在分布式系统会出现故障,有个公式去计算系统的可靠性:

image.png

  • MTTF指的是系统平均能够正常运行多长时间,系统可靠性越高,MTTF越高。
  • MTTR是平均修复时间,故障出现到故障修复这段时间,越短越好。

总结一句话:为了提高系统可用性,我们要么提高系统的无故障时间,要么减少系统的故障恢复时间。

故障是不可避免的,我们能做的是延长MTTF时间

隔离

预防服务出现问题导致系统崩溃,我们用船舱的隔离板方式做服务隔离。

image.png 当海水淹没其他隔离板时,将会导致整艘船下沉。

按照两种方式分离

  • 用户
  • 服务种类:接入层,应用层,数据层隔离

服务种类

image.png 服务拆分板块不会影响其他板块,但是访问其他服务的数据比较麻烦。

我们把数据抽离出来用中间件Kafka来处理,跨服务交互也可以用。

用户分组

image.png 用户分成不同的组,后端的同一个服务根据不同用户分成不同的实例。当服务实例挂掉,只会影响一部分用户,而不会导致全部用户无法访问。

多租户种类
完全独立:每个租户独有自己的服务和数据,不受任何人打扰
独立的数据分区:服务共享,数据分开隔离 共享服务:数据和服务共享

image.png

推荐采用折中方案,服务共享,数据分开隔离,重要的租户使用完全独立。

关键

  • 定义隔离的大小根据业务需求和系统分析
  • 考虑复杂度、成本、性能、资源使用问题考虑哪种隔离方式
  • 配合一些中间件
  • 虚拟容器技术管理
  • 监控系统