弹性
在分布式系统会出现故障,有个公式去计算系统的可靠性:
- MTTF指的是系统平均能够正常运行多长时间,系统可靠性越高,MTTF越高。
- MTTR是平均修复时间,故障出现到故障修复这段时间,越短越好。
总结一句话:为了提高系统可用性,我们要么提高系统的无故障时间,要么减少系统的故障恢复时间。
故障是不可避免的,我们能做的是延长MTTF时间
隔离
预防服务出现问题导致系统崩溃,我们用船舱的隔离板方式做服务隔离。
当海水淹没其他隔离板时,将会导致整艘船下沉。
按照两种方式分离
- 用户
- 服务种类:接入层,应用层,数据层隔离
服务种类
服务拆分板块不会影响其他板块,但是访问其他服务的数据比较麻烦。
我们把数据抽离出来用中间件Kafka来处理,跨服务交互也可以用。
用户分组
用户分成不同的组,后端的同一个服务根据不同用户分成不同的实例。当服务实例挂掉,只会影响一部分用户,而不会导致全部用户无法访问。
多租户种类
完全独立:每个租户独有自己的服务和数据,不受任何人打扰
独立的数据分区:服务共享,数据分开隔离 共享服务:数据和服务共享
推荐采用折中方案,服务共享,数据分开隔离,重要的租户使用完全独立。
关键
- 定义隔离的大小根据业务需求和系统分析
- 考虑复杂度、成本、性能、资源使用问题考虑哪种隔离方式
- 配合一些中间件
- 虚拟容器技术管理
- 监控系统