左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家,骨灰级程序员
立即订阅
40357 人已学习
课程目录
已完结 108 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 | 洞悉技术的本质,享受科技的乐趣
免费
01 | 程序员如何用技术变现(上)
02 | 程序员如何用技术变现(下)
03 | Equifax信息泄露始末
04 | 从Equifax信息泄露看数据安全
05 | 何为技术领导力?
06 | 如何才能拥有技术领导力?
07 | 推荐阅读:每个程序员都该知道的知识
08 | Go语言,Docker和新技术
09 | 答疑解惑:渴望、热情和选择
10 | 如何成为一个大家愿意追随的Leader?
11 | 程序中的错误处理:错误返回码和异常捕捉
12 | 程序中的错误处理:异步编程以及我的最佳实践
13 | 魔数 0x5f3759df
14 | 推荐阅读:机器学习101
15 | 时间管理:同扭曲时间的事儿抗争
16 | 时间管理:如何利用好自己的时间?
17 | 故障处理最佳实践:应对故障
18 | 故障处理最佳实践:故障改进
19 | 答疑解惑:我们应该能够识别的表象和本质
20 | Git协同工作流,你该怎么选?
21 | 分布式系统架构的冰与火
22 | 从亚马逊的实践,谈分布式系统的难点
23 | 分布式系统的技术栈
24 | 分布式系统关键技术:全栈监控
25 | 分布式系统关键技术:服务调度
26 | 分布式系统关键技术:流量与数据调度
27 | 洞悉PaaS平台的本质
28 | 推荐阅读:分布式系统架构经典资料
29 | 推荐阅读:分布式数据调度相关论文
30 | 编程范式游记(1)- 起源
31 | 编程范式游记(2)- 泛型编程
32 | 编程范式游记(3) - 类型系统和泛型的本质
33 | 编程范式游记(4)- 函数式编程
34 | 编程范式游记(5)- 修饰器模式
35 | 编程范式游记(6)- 面向对象编程
36 | 编程范式游记(7)- 基于原型的编程范式
37 | 编程范式游记(8)- Go 语言的委托模式
38 | 编程范式游记(9)- 编程的本质
39 | 编程范式游记(10)- 逻辑编程范式
40 | 编程范式游记(11)- 程序世界里的编程范式
41 | 弹力设计篇之“认识故障和弹力设计”
42 | 弹力设计篇之“隔离设计”
43 | 弹力设计篇之“异步通讯设计”
44 | 弹力设计篇之“幂等性设计”
45 | 弹力设计篇之“服务的状态”
46 | 弹力设计篇之“补偿事务”
47 | 弹力设计篇之“重试设计”
48 | 弹力设计篇之“熔断设计”
49 | 弹力设计篇之“限流设计”
50 | 弹力设计篇之“降级设计”
51 | 弹力设计篇之“弹力设计总结”
52 | 管理设计篇之“分布式锁”
53 | 管理设计篇之“配置中心”
54 | 管理设计篇之“边车模式”
55 | 管理设计篇之“服务网格”
56 | 管理设计篇之“网关模式”
57 | 管理设计篇之“部署升级策略”
58 | 性能设计篇之“缓存”
59 | 性能设计篇之“异步处理”
60 | 性能设计篇之“数据库扩展”
61 | 性能设计篇之“秒杀”
62 | 性能设计篇之“边缘计算”
63 | 区块链技术的本质
64 | 区块链技术细节:哈希算法
65 | 区块链技术细节:加密和挖矿
66 | 区块链技术细节:去中心化的共识机制
67 | 区块链技术细节:智能合约
68 | 区块链技术 - 传统金融和虚拟货币
69 | 程序员练级攻略:开篇词
70 | 程序员练级攻略:零基础启蒙
71 | 程序员练级攻略:正式入门
72 | 程序员练级攻略:程序员修养
73 | 程序员练级攻略:编程语言
74 | 程序员练级攻略:理论学科
75 | 程序员练级攻略:系统知识
76 | 程序员练级攻略:软件设计
77 | 程序员练级攻略:Linux系统、内存和网络
78 | 程序员练级攻略:异步I/O模型和Lock-Free编程
79 | 程序员练级攻略:Java底层知识
80 | 程序员练级攻略:数据库
81 | 程序员练级攻略:分布式架构入门
82 | 程序员练级攻略:分布式架构经典图书和论文
83 | 程序员练级攻略:分布式架构工程设计
84 | 程序员练级攻略:微服务
85 | 程序员练级攻略:容器化和自动化运维
86 | 程序员练级攻略:机器学习和人工智能
87 | 程序员练级攻略:前端基础和底层原理
88 | 程序员练级攻略:前端性能优化和框架
89 | 程序员练级攻略:UI/UX设计
90 | 程序员练级攻略:技术资源集散地
91 | 程序员面试攻略:面试前的准备
92 | 程序员面试攻略:面试中的技巧
93 | 程序员面试攻略:面试风格
94 | 程序员面试攻略:实力才是王中王
95 | 高效学习:端正学习态度
96 | 高效学习:源头、原理和知识地图
97 | 高效学习:深度,归纳和坚持实践
98 | 高效学习:如何学习和阅读代码
99 | 高效学习:面对枯燥和量大的知识
左耳听风
登录|注册

50 | 弹力设计篇之“降级设计”

陈皓 2018-03-22
所谓的降级设计(Degradation),本质是为了解决资源不足和访问量过大的问题。当资源和访问量出现矛盾的时候,在有限的资源下,为了能够扛住大量的请求,我们就需要对系统进行降级操作。也就是说,暂时牺牲掉一些东西,以保障整个系统的平稳运行。
我记得我在伦敦参与诺丁山狂欢节的时候,以及看阿森纳英超足球比赛的时候,散场时因为人太多,所有的公交系统(公交车,地铁)完全免费,就是为了让人通行得更快。而且早在散场前,场外就备着一堆公交车和地铁了,这样就是为了在最短时间内把人疏散掉。
虽然亏掉了一些钱,但是相比因为人员拥塞造成道路交通拥塞以及还可能出现的一些意外情况所造成的社会成本的损失,公交免费策略真是很明智的做法。与此类似,我们的系统在应对一些突发情况的时候也需要这样的降级流程。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《左耳听风》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(11)

  • 我们现在的降级分为功能降级和服务降级。我们目前将降级开关放到配置中心。
    一、功能降级
    1、通过降级开关控制功能可用不可用,一般为页面和按钮
    2、简化业务操作流程,当降级后简化业务操作步骤,快速完成业务操作
    二、服务降级
    1、读降级,降级前会读缓存,缓存中不存在的话读数据库,降级后读缓存,缓存中不存在的话,返回默认值,不再读数据库
    2、写降级,将之前的同步写数据库降级为先写缓存,然后异步写库
    3、服务调用降级,之前两个系统模块通过mq来交互,当mq消息积压或mq宕机出问题后,降级为服务直接调用
    2018-06-09
    4
  • 关于降级突然想到了生活中一个类似降级的场景:
    现在小饭馆都支持网上订餐,当餐厅内客人不多的时候,餐厅老板或者服务员会去出去送餐,而当餐厅内客户突然增多,服务员忙不过来的时候,一般会进行降级,降级的策略是将外卖配送交给第三方来配送,或者在某个时间段内暂不支持网上订餐,这种情况类似于功能降级。还有一个场景就是关于餐厅炒菜,当餐厅内食客少的时候,大厨一般会现点现炒,而当食客多忙不过来的时候,一般会提前将菜炒好,客人点完就可以吃到,将热菜降级为快餐,这种情况类似于服务降级。纯属个人理解,如有不妥,还请见谅。
    2018-06-09
    3
  • 丁英才
    耗子叔的文章给人行云流水之感,每篇文章从核心介绍,应用场景,分例介绍,架构补图到篇末小节,不仅详略得当,而且读起来感觉畅快。最近响应耗子叔号召,重温基础 tcp/ip 详解,书是好书但没有畅快的感觉。耗子叔要不按你风格写本基础的书,会帮助更多的人

    作者回复: 谢谢。TCP/IP的,我写在CoolShell上了

    2018-03-23
    2
  • Geek_122dd9
    可以理解为TCC吗
    2018-04-23
    1
  • edisonhuang
    服务降级有三种方式,降低一致性,减少非必要功能,简化功能。这就好比学习过程中一门课很难而又想要提高通过率,只能期待老师降低考试要求,或者自己抓稳那些必得分项,舍弃自己没把握的部分
    2019-07-12
  • godtrue
    很棒
    我们系统的降级主要有两类,一类是因基础服务不可用的降级,比如:缓存集群不可用,另一类是其他依赖的服务不可用了,我们也会进行降级处理
    2019-02-08
  • Geek_fb3db2
    能够多一些实战以及具体的落地方式就更好了 感觉理论比较重
    2018-11-19
  • 幻想
    好文好文。。。
    2018-03-24
  • hsy
    高产似** 点赞👏
    2018-03-22
  • 徐卫
    从代码层面,是不是要写两套,分别针对正常情况和降级后?

    作者回复: 一般来说不需要两套,用开关控制就好。

    2018-03-22
  • 黄无由
    总结的很好
    2018-03-22
收起评论
11
返回
顶部