前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

原创
作者头像
Java知音
修改2019-01-24 10:20:38
6860
修改2019-01-24 10:20:38
举报

Netfilix创建了一个名为Hystrix的库,实现了熔断器模式。在微服务架构中,它通常有多个服务调用层。

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

一: 微服务图

一个底层服务的故障会引发直至用户交互层的连锁故障。在一个设定时长为“metrics.rollingStats.timeInMilliseconds”(默认为十秒)的滚动窗口内,对一个特定服务的请求数大于“circuitBreaker.requestVolumeThreshold”(默认为20个),并且故障率大于“circuitBreaker.errorThresholdPercentage”(默认大于百分之五十)的时候,启用熔断机制以使请求失效。在熔断和报错的情况下,开发者可以启用回退机制。

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

二:Hystrix回退以防止连锁故障

启用熔断机制能防止连锁故障的情况,给故障服务提供时间以恢复正常。回退操作可以是另一个Hystrix受保护的调用、静态数据或是一个恰当的空值。回退操作可能是成串的,所以第一个回退操作会做一些其他的业务请求,让故障回退到预设的值。

三: 如何引入Hystrix

使用group为“org.springframework.cloud”, artifact id为“spring-cloud-starter-hystrix”的启动器引入Hystrix。请参阅Spring Cloud Project页面,以获取有关使用当前Spring Cloud Release Train设置构建系统的详细信息。

Boot app 样例:

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

注解@HystrixCommand由Netflix contrib library提供,被称作“javanica”。Spring Cloud会自动将包含该注释的Spring bean封装在连接到Hystrix熔断器的代理中。熔断器会计算何时启用或关闭熔断机制,并决定在故障时该做什么。 可以使用带有@HystrixProperty注解列表的commandProperties属性配置@HystrixCommand。点击这里获取更多详情。另外,有关可用属性的详细信息,请参阅Hystrix wiki。

四:传播Security Context或使用Spring Scope

如果想要一些线程本地上下文传播到@HystrixCommand,默认的声明将不起作用,因为它执行的是线程池中的命令(在超时的情况下)。可以使用某种配置将Hystrix切换为使用与调用方相同的线程,或直接在注解中请求使用不同的“隔离策略”。如下所示:

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

以上操作,同样适用于使用@SessionScope或@RequestScope的时候。当抛出“无法找到范围内的上下文”的运行时异常,就需要执行这些操作。 同样可以设置属性“hystrix.shareSecurityContext”为true。这样做会自动配置一个Hystrix并发策略插件钩子,它将从主线程传输SecurityContext到Hystrix命令使用的钩子。Hystrix不允许注册多个hystrix并发策略。因此会通过将自己的HystrixConcurrencyStrategy声明为Spring bean的方法,使用扩展机制。Spring Cloud会在上下文中查找你的实现,并封装进它自己的插件中。

五:健康监控

连接熔断器的状态也可以在请求应用程序的/health端口查看。

对技术提升很感兴趣,可以加入Java高级技术来交流学习:856443934,里面都是同行,有资源分享和技术进阶思维导图,其中:(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

六: Hystrix 数据流

配置spring-boot-starter-actuator的依赖以启用Hystrix 数据流。这将启用端口/hystrix.stream作为一个管理终端。

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

七:微服务架构专题

关注我:获取往期Java高级架构资料、源码、笔记、视频

Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、

高并发等架构技术。

技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients
技术码霸阐述——Spring Cloud Netflix:熔断器:Hystrix Clients

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一: 微服务图
  • 二:Hystrix回退以防止连锁故障
  • 三: 如何引入Hystrix
  • 四:传播Security Context或使用Spring Scope
  • 五:健康监控
  • 六: Hystrix 数据流
  • 七:微服务架构专题
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档