浅谈服务接口的高可用设计
作者:京东零售 王磊
前言
作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端 HTTP 或者是供其他服务 RPC 远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的欢迎批评指正。
到底啥是高可用
复制代码
为啥做高可用
复制代码
高可用的关键点
我们说过高可用的本质是系统是否具备应对和规避风险的能力,那么从这个角度出发来设计高可用接口的有以下几个关键因素:Dependence(依赖)、Probability(概率)、Time(时长)、Scope(范围)
复制代码
接口高可用设计的几个原则
结合这些关键点,我们来看一下具体具体注意事项
1、控制依赖
能少依赖就少依赖,能不强依赖就不强依赖
复制代码
2、避免单点
避免单点故障的核心是通过备份或者冗余快速的进行容错
复制代码
3、负载均衡
将风险进行分摊避免分险扩散
复制代码
4、资源隔离
隔离的目的将风险控制在可控范围内,避免风险扩散
复制代码
5、接口限流
限流是一种保护措施,目的是将风险控制在可控范围内
复制代码
6、服务熔断
熔断也是一种保护措施,目的是将风险控制在可控范围内,避免风险扩散
复制代码
7、异步处理
将同步操作转为异步操作
复制代码
8、降级方案
服务降级属于一种问题发生后的补救措施,通过服务降级可以减少一部分风险影响范围
复制代码
9、灰度发布
通过灰度发布降低风险影响范围
复制代码
10、混沌工程
通过提前对系统进行一些破坏性的手段,提前发现潜在问题
复制代码
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/1543dd7131903dcbda68e41cb】。文章转载请联系作者。
评论