降级设计的本质是什么?降级需要牺牲掉哪些东西?降级设计的要点有哪些?
打卡Day19:今天学习了《50|弹力设计篇之“降级设计”》,我的收获如下:
降级设计(Degradation)的本质
为了解决资源不足和访问量过大的问题。
降级需要牺牲掉的东西
- 降低一致性
- 停止次要功能
- 简化功能
降低一致性
- 使用异步简化流程(最终一致性)
- 降低数据的一致性(缓存)
停止次要功能
限制次要功能流量 => 次要功能退化成简单功能 => 完全停止次要功能。
停止功能影响用户体验,考虑补偿。
简化功能
比如API有两个版本,一个返回全量数据,一个返回部分或最小可用数据。
降级设计的要点
- 对业务做非常仔细的梳理和分析。
- 清楚定义降级的关键条件。吞吐量过大、响应时间过慢、失败次数过多、网络或服务故障、做好应急预案。
- 梳理业务功能。哪些必须保障,哪些可以牺牲,设计好简化的或应急的业务流程。
- 降级时记录流水方便对账。
- 降级开关可动态配置。
- 数据方面的降级需要前端程序的配合。
- 降级功能需要平时演练。