降级设计的本质是什么?降级需要牺牲掉哪些东西?降级设计的要点有哪些?

打卡Day19:今天学习了《50|弹力设计篇之“降级设计”》,我的收获如下:

降级设计(Degradation)的本质

为了解决资源不足和访问量过大的问题。

降级需要牺牲掉的东西

  • 降低一致性
  • 停止次要功能
  • 简化功能

降低一致性

  • 使用异步简化流程(最终一致性)
  • 降低数据的一致性(缓存)

停止次要功能

限制次要功能流量 => 次要功能退化成简单功能 => 完全停止次要功能。

停止功能影响用户体验,考虑补偿。

简化功能

比如API有两个版本,一个返回全量数据,一个返回部分或最小可用数据。

降级设计的要点

  • 对业务做非常仔细的梳理和分析。
  • 清楚定义降级的关键条件。吞吐量过大、响应时间过慢、失败次数过多、网络或服务故障、做好应急预案。
  • 梳理业务功能。哪些必须保障,哪些可以牺牲,设计好简化的或应急的业务流程。
  • 降级时记录流水方便对账。
  • 降级开关可动态配置。
  • 数据方面的降级需要前端程序的配合。
  • 降级功能需要平时演练。

左耳朵耗子带你重学《左耳听风》

https://time.geekbang.org/column/article/4252