事故一

背景:

服务old一个前后端不分离的老项目,服务new是一个前后端分离的新服务。部分功能从服务old迁移到服务new,采用了请求重定向的方式,前端请求服务old的老接口后重定向到新服务。

现象:

大促前5分钟,应用tp99,tp999开始有个别报警超时,tp999响应时间超过20s。

事故二

经验:

永远不相信任何服务提供方,永远不强依赖服务提供方。

熔断、降级

熔断机制:

对R2M依赖过强,当R2M出现不可用了,实名没有熔断机制。

合理的设计应该是,假如分布式缓存服务不可用,则启用本地缓存并使用LRU机制,放弃峰值TPS和一定的成功率保证服务可用。

降级:

任何一个服务都要提供日志降级方式(这里又要引入熔断机制,假如依赖的动态配置服务挂了,那么所有的配置项应该启用默认配置,并且该配置应该是优先保证服务可用,可以牺牲可观察性,牺牲服务能力)