由于本人最近才接触SC,一开始就是2.0以上版本开始学习搭建微服务(consul+feign+zuul+hystrix+turbine),而网上的参考资料清一色是1.0+版本,所以在搭建过程中遇到了几个坑,导致浪费了一些时间,现在就遇到问题记录下来,希望能够抛砖引玉。
搭架微服务过程中最主要问题集中在turbine这一块,接下来我详细介绍一下turbine集成过程。
首先,在微服务项目中新建一个模块,我这里直接采用的是Spring Initializr,选中依赖如下所示
配置文件如下,比较简单这里不在赘述。
在启动类上加上如下几个注解
@EnableDiscoveryClient @EnableHystrix @EnableCircuitBreaker @EnableTurbine @EnableHystrixDashboard
启动项目发现报错,报错信息如下
分析报错信息,发现是服务启动时候发现了两个服务注册类eurekaRegistration和consulRegistration不知道该采用哪一个,由于本人使用的是consul作为服务注册中心,并没有引入eureka任何依赖,所以只能从其他引入的依赖中查找,果然在turbine发现euraka相关包。如下图:
解决办法是在build.grale排除这个包,问题解决。如下图:
重新启动服务,服务启动(没有认真查看控制台信息),由于turbine服务采用8085端口直接访问http://localhost:8085/turbine.stream,结果如下图:
此时激动万分,因为按照网上好多1.0的例子 打开hystrixboard输入http://localhost:8085/turbine.stream 然后监控就成功了。结果却是十分尴尬,页面一直处于loading.....,如下图:
然后就开始了一段时间的爬坑过程,首先在控制台查看信息,发现了一个比较重要的信息,就是turbine对定时对所监控的服务的hystrix定时进行监控,监控过程是通过一个接口返回数据来进行,监控路径如图所示:
这里的路径是:http://trtrst-PC:8081/actuator/hystrix.stream 而我们在服务集成hystrix的时候知道集成成功后能通过
主机(ip):port/hystrix.stream 直接访问到监控服务的相关信息。而turbine这里的路径中间多了一层/actuator,而在查阅资料寻找问题的过程中我们看到了一个重要的参数就是:
turbine.instanceUrlSuffix
具体参考:https://www.cnblogs.com/java-zhao/p/5830440.html
但是发现,直接在配置文件中是无法配置这个参数,参数不存在,我们只能去源代码中一探究竟,首先是turbine2.0的jar包中SringClusterMonitor类中发现了这一参数,如下图:
发现多的一层/actuator是这里的默认值,但是这个参数又不能通过配置文件配置(抱歉我没找到,如果后续找到继续更新),然后又去turbine的2.0以下的版本去查看相应的参数默认值发现1.4.4版本的turbine中此参数默认值中没有/actuator这层路径,然后更改build.gradle中turbine的版本为14.4,重新启动,成功。
由于本人也是刚接触SC,所以只找到这种解决办法,如果后续后更好的处理办法会及时更新。
本人第一次写博客,不喜勿喷。