一句话聊聊「降级」设计

集中管理降级开关

通过推送/拉取机制,将开关同步到各个应用(比如 1 次/s)。

这种需要借助「配置中心」。

读降级

不调用 api,只读本地/分布式缓存,没有数据返回默认数据。

这种需要借助LRU Cache、Redis Cache。

写降级

写场景大多数不能降级。一般解决方法是将同步改成异步,并且将数据写入到 redis,redis 可以给读请求提供数据;由异步任务定时将数据刷到 DB 中。保证的是数据最终一致性。

这种需要借助 MQ、Redis等基础组件。

限流降级

通过限流来限制流量,排队页面、直接告知没有库存、显示错误页。

这种需要借助 Redis 实现 限流算法-漏桶和令牌桶

业务降级

保证核心功能,非核心功能同步改成异步调用。

这种需要判断业务功能优先级,进行取舍。

控制开发前置化

越靠近用户进行拦截,越安全有效,放置流量打到后台 DB。比如在 Nginx 做降级拦截。