微服务熔断限流Hystrix之流聚合
简介
上一篇介绍了 Hystrix Dashboard 监控单体应用的例子,在生产环境中,监控的应用往往是一个集群,我们需要将每个实例的监控信息聚合起来分析,这就用到了 Turbine 工具。Turbine有一个重要的功能就是汇聚监控信息,并将汇聚到的监控信息提供给Hystrix Dashboard来集中展示和监控。
流程
实验
工程说明
工程名 | 端口 | 作用 |
---|---|---|
eureka-server | 8761 | 注册中心 |
service-hi | 8762 | 服务提供者 |
service-consumer | 8763 | 服务消费者 |
service-turbine | 8765 | Turbine服务 |
核心代码
eureka-server 、service-hi、service-consumer 工程代码与上一节 微服务熔断限流Hystrix之Dashboard 相同,下面是 service-turbine 工程的核心代码。
pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
application.yml
server: port: 8765 spring: application: name: service-turbine eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ turbine: app-config: service-consumer cluster-name-expression: new String("default") combine-host-port: true
参数说明:
- turbine.app-config:指定要监控的应用名
- turbine.cluster-name-expression:指定集群的名字
- turbine.combine-host-port:表示同一主机上的服务通过host和port的组合来进行区分,默认情况下是使用host来区分,这样会使本地调试有问题
启动类
@SpringBootApplication @EnableEurekaClient @EnableHystrixDashboard @EnableTurbine public class ServiceTurbineApplication { public static void main(String[] args) { SpringApplication.run( ServiceTurbineApplication.class, args ); } }
模拟多实例
启动多个 service-consumer 工程,来模拟多实例,可以通过命令java -jar service-consumer.jar --server.port=XXXX 来实现。
为了方便,在编辑器中实现启动工程。但 idea 不支持单个应用的多次启动, 需要开启并行启动:
选择 “Edit Configurations...”
勾选 “Allow running in parallel”
测试
启动工程,访问 http//localhost:8763/hi , http//localhost:8764/hi , http//localhost:8763/oh , http//localhost:8764/oh,来产生测试数据。
访问 http://localhost:8765/hystrix ,
输入监控流地址 http://localhost:8765/turbine.stream ,点击 Monitor Stream 进入监控页面
可以看到聚合了两个实例的 Hystrix dashbord 数据。
源码
https://github.com/gf-huanchupk/SpringCloudLearning/tree/master/chapter18
欢迎扫码或微信搜索公众号《程序员果果》关注我,关注有惊喜~
- SpringCloud实战-Hystrix请求熔断与服务降级
- 服务熔断、降级、限流、异步RPC -- HyStrix
- Spring Boot + Spring Cloud 构建微服务系统(四):容错机制和熔断(Hystrix)
- SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)
- SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失败快速响应,达到熔断效果
- SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失败快速响应,达到熔断效果
- 学习笔记:微服务12 spring cloud Feign(Rest请求)+ hystrix(熔断)
- .NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控
- 分布式熔断、限流与服务保护:深入 Hystrix 原理及使用
- SpringCloud(第 015 篇)电影Ribbon微服务集成Hystrix增加隔离策略控制线程数或请求数来达到熔断降级的作用
- 从Netflix的Hystrix框架理解服务熔断和服务降级
- spring cloud Hystrix服务容错--依赖隔离和服务熔断
- 服务容错保护断路器Hystrix之六:服务熔断和服务降级
- Spring Boot + Spring Cloud 构建微服务系统(五):熔断监控面板(Hystrix Dashboard)
- hystrix--服务隔离与熔断框架介绍
- 服务熔断、降级、限流、异步RPC -- HyStrix
- hystrix服务降级和服务熔断的区别
- 服务熔断、降级、限流、异步RPC -- HyStrix
- Spring Cloud构建微服务架构:Hystrix监控数据聚合【Dalston版】
- spring cloud 学习(4) - hystrix 服务熔断处理