turbine
是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过
1.断路器1
入口类
@SpringBootApplication
@EnableDiscoveryClient@EnableCircuitBreakerpublic class HystrixController { public static void main(String[] args) { SpringApplication.run(HystrixController.class, args); }}service
@Service
public class HystrixService { @HystrixCommand(fallbackMethod="fail") public String reqmap(String param){ if(param.equals("wangjing")){ throw new RuntimeException(); } return param+"--hystrix"; } public String fail(String param){ return "runtimeException"; }}控制层
@RestController
@RequestMapping(value="/reqmap",produces={"application/json;charaset=utf-8"},method=RequestMethod.GET)public class HystrixReqMap { @Autowired HystrixService hystrixService; @RequestMapping("") public String reqmap(String param){ return hystrixService.reqmap(param); }}application.properties
spring.application.name=cloud-hystrix-one
server.port=8111eureka.client.healthcheck.enabled=trueeureka.instance.lease-renewal-interval-in-seconds=5eureka.instance.lease-expiration-duration-in-seconds=10eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/eureka.instance.hostname=windows1 #使用turbine进行本地测试时,可能会出现只展示一个仪表盘,是因为多个服务同时注册eureka(默认是以主机名注册),主机名全为localhost,所以要设置注册eureka的主机名。在hosts里记得配置。
2.断路器2
其它都一致
application.properties
spring.application.name=cloud-hystrix-two
server.port=8222eureka.client.healthcheck.enabled=trueeureka.instance.lease-renewal-interval-in-seconds=5eureka.instance.lease-expiration-duration-in-seconds=10eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/eureka.instance.hostname=windows23.turbine服务
添加依赖 <dependency>
org.springframework.cloud spring-cloud-starter-turbine application.properties中 org.springframework.cloud spring-cloud-netflix-turbine
spring.application.name=cloud-turbine
server.port=8999eureka.client.healthcheck.enabled=trueeureka.instance.lease-renewal-interval-in-seconds=5eureka.instance.lease-expiration-duration-in-seconds=10eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/,http://localhost:8762/eureka/turbine.appConfig=feign-client,loadbalanceturbine.aggregator.clusterConfig=defaultturbine.clusterNameExpression=new String("default")
turbine.appConfig
:配置Eureka中的serviceId列表,表明监控哪些服务turbine.aggregator.clusterConfig
:指定聚合哪些集群,多个使用”,”分割,默认为default。可使用http://.../turbine.stream?cluster={clusterConfig之一}
访问turbine.clusterNameExpression
: 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig
需要配置想要监控的应用名称;2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig
可以不写,因为默认就是default;3. 当clusterNameExpression: metadata[‘cluster’]时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC
,则需要配置,同时turbine.aggregator.clusterConfig: ABC
启动类
@SpringBootApplication
@EnableDiscoveryClient@EnableTurbine@EnableHystrixDashboardpublic class CloudFurbineController { public static void main(String[] args) { SpringApplication.run(CloudFurbineController.class, args); } }http://localhost:8999/hystrix返回酷酷的小熊界面,输入: http://localhost:8999/turbine.stream,然后点击 Monitor Stream ,可以看到出现了俩个监控列表