读发布!设计与部署稳定的分布式系统(第2版)笔记15_快速失败和替换

 

1. 快速失败而非缓慢响应

1.1. 如果响应缓慢比没有响应更糟,那么最坏的情况肯定是缓慢的失败响应

1.2. 如果系统能够预先确定某次调用会失败,那么最好快速失败

2. 快速失败模式通过避免响应缓慢来提高整个系统的稳定性

2.1. 当系统由于部分失效而面临压力时,快速失败模式还有助于保持系统容量

2.2. 与超时模式配合使用,快速失败模式有助于避免层叠失效

3. 预留资源并尽早验证集成点有效

3.1. 确保在开始之前就能完成事务

3.1.1. 关键资源不可用,比如所需调用的断路器已跳闸,那么就不要再浪费精力去调用

3.2. 在事务的开始阶段和中间阶段,关键资源可用状态发生变化的可能性极小

3.3. 应用程序或服务可以从传入的请求或消息中,大致了解需要哪些数据库连接和外部集成点,然后可以快速检查所需的连接,并查看集成点周围的断路器状态

4. 使用输入验证

4.1. 即使在预留资源之前,也要进行基本的用户输入验证

4.2. 找到未输入的必需参数才是关键

5. 任其崩溃并替换

5.1. 有时,为了实现系统级稳定性,放弃组件级稳定性就是所能做的最好的事情

5.1.1. 通过组件崩溃保护系统

5.1.2. 通过组件级不稳定性构建系统级稳定性

5.1.3. 这可能是将系统恢复到已知良好状态的最佳方式

5.1.4. 隔离组件以实现独立崩溃

5.2. 在Erlang语言中,这被称为“任其崩溃并替换”的哲学

5.2.1. 任其崩溃并替换的方法认为错误恢复难以完成且不可信赖,所以我们的目标应该是尽快回到刚完成启动时的干净状态

5.3. 程序所能拥有的最干净的状态,就是在刚刚完成启动的那一刻

5.4. 前提

5.4.1. 有限的粒度

5.4.1.1. 必须为崩溃定义边界
5.4.1.2. 发生崩溃的组件应该是独立的,系统的其余部分必须能够自我防护,避免受到层叠失效的影响
5.4.1.3. 在微服务架构中,服务的整个实例可能是正确的崩溃粒度
5.4.1.4. 在Erlang和Elixir中,崩溃的自然边界就是actor

5.4.2. 快速替换

5.4.2.1. actor这样的进程内组件,重启时间以微秒为单位
5.4.2.2. 在容器中运行Go二进制文件
5.4.2.2.1. 启动一个新容器及其内部一个进程的时间以毫秒为单位计算,此时就可以通过让整个容器崩溃实现快速替换
5.4.2.3. NodeJS服务在AWS中一个长时间运行的虚拟机上运行
5.4.2.3.1. 启动NodeJS进程需要花几毫秒,但启动一台新的虚拟机则需要几分钟
5.4.2.3.2. 只需要让NodeJS进程崩溃,就可以实现快速替换
5.4.2.4. 不要让单体系统崩溃
5.4.2.4.1. 运行时负载较大或启动时间较长的大型进程,不适合运用“任其崩溃并替换”策略
5.4.2.4.2. 将许多特性耦合到单个进程中的应用程序,也不推荐运用该策略
5.4.2.4.3. 在数据中心的几台虚拟机上,运行着一个老旧的前端安装API的JavaEE应用程序
5.4.2.4.3.1. 启动时间以分钟为单位计算,此时,“任其崩溃并替换”并不是正确的策略

5.4.3. 监管

5.4.3.1. 监管器不是服务的消费者
5.4.3.2. 管理工人与要求服务是两码事
5.4.3.3. 如果把两者混淆,就会损害系统

5.4.4. 重新归队

5.4.4.1. 在一个actor或实例先崩溃然后由监管器重新将其启动之后,系统必须要恢复对新启动的服务提供方的调用
5.4.4.2. 如果实例被直接调用,则调用方的断路器应该自动将该实例重新归队
5.4.4.3. 如果实例是负载均衡池中的一部分,那么必须能够将实例加回池中,接受工作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 郑君里《信号与系统》(第3)笔记和课后习题.pdf是一本非常好的信号与系统学习资料。本书主要围绕着信号和系统的分析与设计展开讲解,分别从连续时间信号、离散时间信号以及连续时间线性系统、离散时间线性系统四个方面进行了深入浅出的阐述。不仅涵盖了基本概念、重要理论和实用技巧,还通过大量的例题对知识进行了实际应用,有助于者更好地理解和掌握信号与系统学科。同时,本书还提供了丰富的习题练习,对于巩固知识点和提高解题能力也非常有帮助。 笔记和习题集的编写都非常系统和清晰,针对性很强,符合学生自学的需求。笔记部分通过梳理主要知识点,减少冗余,帮助理清思路,建立整体认识,并附加详尽的例题,非常适合课后巩固和复习。习题部分则涵盖了不同难度和范围的题目,包括选择题、填空题、计算题和应用题等,题目设置合理,大多数都有详细的解答和思路,更有大量的练习题供学生深入练习。 总体而言,郑君里《信号与系统》(第3)笔记和课后习题.pdf是一本值得推荐的信号与系统学习资料,内容全面、易于理解、重点突出,可以帮助者有效地提升对信号与系统的认知和应用能力。 ### 回答2: 《信号与系统》(第3)笔记和课后习题.pdf是一本非常重要的教材,它涵盖了信号与系统的基本知识和相关概念。这本教材很深入地探讨了不同种类的信号,如正弦波、方波、脉冲信号以及复杂的信号等等。 笔记和课后习题是这本教材的重要组成部分。它们是帮助学生更好地理解和掌握信号与系统知识的重要工具。笔记包含了教材中的重要概念和概述,可以帮助学生在学习时有一个快速的回顾。 而课后习题则可以帮助学生在取得基本知识后,更好地理解和应用相关概念。这些习题包含了多种难度和不同类型的题目,从基础的多项式到复杂的微分方程,可以帮助学生深入理解系统的特性和信号分析的方法。 总的来说,《信号与系统》(第3)笔记和课后习题.pdf是这本教材的重要组成部分,对于学生学习信号与系统的知识非常有用。通过认真的阅和掌握,学生可以更好地理解信号与系统的基本知识和相关概念,从而更好地应用到实际生活和工作中。 ### 回答3: 郑君里教授的《信号与系统》(第3)笔记和课后习题.pdf是一本非常重要的学术资源。这本书引入了工程学生们需要了解的信号和系统的基本知识,建立了其基础,并为他们提供了实际应用的例子。 这本书分为八个章节,从信号和系统的基本概念开始,介绍了离散时间信号和系统、线性时不变系统和连续时间信号与系统。另外,该书还涵盖了功率谱、卷积等基础概念以及质量因数和滤波器的应用。 书中的习题涵盖了从基础知识到实际应用的各种难度。适合初学者和进阶学生使用。通过解决这些习题,学生们可以加深对信号和系统的理解,加强他们的应用技能。 除此之外,该书还给出了一些典型的案例研究,例如如何使用信道模型进行多媒体信息传输。这些案例研究可以帮助学生更好地理解信号和系统在不同领域的应用。 总体而言,郑君里教授的《信号与系统》(第3)笔记和课后习题.pdf是一本非常好的学术资源。它对于那些学习信号和系统的学生们来说非常有用,帮助他们更好地理解这个领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值