- 内容提要
- 译者序
- 前言
- 第 1 章 欢迎迈入云世界,Spring
- 第 2 章 使用 Spring Boot 构建微服务
- 第 3 章 使用 Spring Cloud 配置服务器控制配置
- 第 4 章 服务发现
- 第 5 章 使用 Spring Cloud 和 Netflix Hystrix 的客户端弹性模式
- 第 6 章 使用 Spring Cloud 和 Zuul 进行服务路由
- 第 7 章 保护微服务
- 第 8 章 使用 Spring Cloud Stream 的事件驱动架构
- 第 9 章 使用 Spring Cloud Sleuth 和 Zipkin 进行分布式跟踪
- 第 10 章 部署微服务
- 附录 A 在桌面运行云服务
- 附录 B OAuth2 授权类型
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.10 小结
- 在设计高分布式应用程序(如基于微服务的应用程序)时,必须考虑客户端弹性。
- 服务的彻底故障(如服务器崩溃)是很容易检测和处理的。
- 一个性能不佳的服务可能会引起资源耗尽的连锁效应,因为调用客户端中的线程被阻塞,以等待服务完成。
- 3 种核心客户端弹性模式分别是断路器模式、后备模式和舱壁模式。
- 断路器模式试图杀死运行缓慢和降级的系统调用,这样调用就会快速失败,并防止资源耗尽。
- 后备模式允许开发人员在远程服务调用失败或断路器跳闸的情况下,定义替代代码路径。
- 舱壁模式通过将对远程服务的调用隔离到它们自己的线程池中,使远程资源调用彼此分离。就算一组服务调用失败,这些失败也不会导致应用程序容器中的所有资源耗尽。
- Spring Cloud 和 Netflix Hystrix 库提供断路器模式、后备模式和舱壁模式的实现。
- Hystrix 库是高度可配置的,可以在全局、类和线程池级别设置。
- Hystrix 支持两种隔离模型,即
THREAD
和SEMAPHORE
。 - Hystrix 默认隔离模型
THREAD
完全隔离 Hystrix 保护的调用,但不会将父线程的上下文传播到 Hystrix 管理的线程。 - Hystrix 的另一种隔离模型 SEMAPHORE 不使用单独的线程进行 Hystrix 调用。虽然这更有效率,但如果 Hystrix 中断了调用,它也会让服务变得不可预测。
- Hystrix 允许通过自定义
HystrixConcurrencyStrategy
实现,将父线程上下文注入 Hystrix 管理的线程中。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论