服务熔断设计

一、熔断的目的

系统微服务化后,分布式部署,系统之间通过RPC框架进行通信,系统发生故障的概率随着系统规模的增长而加大;

在调用服务时,一些非关键路径发生问题,不能影响整个系统的服务。

 

二、熔断系统需求

1、熔断返回默认值,或者null,最好RPC client就能支持,无需业务改动;

2、熔断发生时,进行报警,并打印异常日志;

3、可以实时下发配置,手动和自动都可以实现熔断;

4、可视化监控平台,能看到是否发生熔断。

 

三、方案

业界方案:Netflex OSS Hystrix,业务侵入较大

优雅方案:RPC Client+服务治理平台方式

    基于RPC Client实现熔断,统计调用决定是否进行熔断,服务治理平台存储相关配置。

 

四、业务流程

1、创建代理层,避免对业务侵入,所有熔断业务在代理层完成

2、代理层拉取熔断配置

3、Client发起RPC调用,通过代理层

4、是否触发本地熔断,如果熔断,返回默认值,并报警,熔断的配置可以设置过期时间,设置两个key,key1表示所有熔断,key2表示部分熔断,key1过期时间比key2短,当key1过期是,开始尝试部分恢复请求,如果都成功,则删除key2;如果还是失败,重新设置key1恢复全部熔断,并延长key2时间,重复以上步骤。

 

 

 

 

你可能感兴趣的:(互联网架构设计)