前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >服务的容灾与容错

服务的容灾与容错

作者头像
静儿
发布2020-03-18 18:01:07
2.9K0
发布2020-03-18 18:01:07
举报
文章被收录于专栏:编程一生编程一生

引子

先介绍几个概念,同步一下认知:

容灾:是指系统冗余部署,当一处由于意外停止工作,整个系统应用还可以正常工作。

容错:是指在运行中出现错误(如上下游故障或概率性失败)仍可正常提供服务。

可用性:描述的是系统可提供服务的时间长短。用公式来说就是A=MTBF/(MTBF+MTTR),即正常工作时间/(正常工作时间+故障时间)。

可靠性:描述的是系统指定时间单位内无故障的次数。比如:一年365天,以天为单位来衡量。有天发生了故障,哪怕只有1秒,这天算不可靠。其他没有故障的是可靠的。

稳定性:这个业界没有明确的定义,我的理解是:在受到各种干扰时仍然能够提供符合预期的服务的能力。

从要求的严格程度上:可用性<可靠性<稳定性。

可用性和可靠性更侧重于容灾,而对稳定性同时包含容灾和容错。

服务的容灾

服务容灾的解决方案就是冗余。多几个备份来切换。常用的有N+1容灾和两地三中心。N和中心实际上都是机房的意思。所谓中心就是数据中心。N是数据中心的电力配置部分。电力配置有市电和备用发动机供电,但是一般互联网公司是不支持备用发动机供电的。所以一般一个机房就是一个N。

N+1容灾就是要多出一个机房做容灾。而两地三中心,是提高了安全级别,除了同城两个中心外,在异地再多出来一个中心。如果整个地区市电都不供电了,还有个备份。

这个备份的冷备和热备不同于数据库的冷备和热备。数据库的冷备是离线备份,就是不接收新流量的情况下备份。热备是一边接收流量一边备份。

而通常服务的冷备是服务还没有接收流量。而热备是指备份数据也在接收流量,比如负载均衡或者master-slave模式的slave承担读流量的副本。这些热备由于一直在运行所以避免了要切换前的服务检查等步骤,可以快速切换。

服务的容错

Everything fails!

服务容错的难点在于存在未知和不可预测。所以对服务容错要处理两个问题:发现和解决。

可以自下而上和自上而下两个角度来发现问题。自下而上主要是根据海因法则,从根本上解决遇到的每一个问题,以避免引起更大的问题。自上而下是系统化的思考,根据已知和可预测的,推演出未知和不可预测的。

在解决问题方面,衍生出很多派系。比如调研到阿里那边更倾向于从流程上做把控:

隔离术

1>领域拆分解耦

    ACL防止损坏层

    有界上下文

    提炼核心、支撑和通用域

    分层架构

     CRUD增删改查简单架构

    CQRS命令查询隔离

    依赖消弱控

2>服务部署隔离

    环境拆分

    机房隔离

    通道隔离

    单元化

    泳道

    热点隔离

    读写隔离

    容器隔离

    拆库拆表

    动静隔离

    非核心流量隔离

3>服务间交互隔离

    熔断降级

4>服务内资源隔离

    线程池隔离

    信号量隔离

风险巡检术

慢查询

超时治理

依赖治理:消除依赖、弱化依赖、控制依赖

系统破窗户

废弃代码资源治理

系统异常治理

告警治理

数据一致性治理

稳定性设计术

请参考《稳定性三十六计》

超时重试:推荐spring-retryer

熔断:推荐hystrix

限流:推荐Guava RateLimiter

spring cloud提供了超时重试、熔断、限流的综合解决方案

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档