微服务治理
1、微服务的依赖层级:依赖关系,解决单个微服务集群的性能瓶颈。
2、微服务的重要级别:进行熔断处理,防止整个服务雪崩。
项目中微服务如何修改?
针对每个微服务进行监控
1,添加依赖
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.boot
spring-boot-starter-actuator
2,添加配置(Hystrix的配置)
feign.hystrix.enabled=true hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds= hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=
3,添加注解启用功能
@EnableFeignClients @EnableHystrix
聚合监控微服务Turbine
如何对整个项目中的微服务进行监控?
Netflix提供了一个开源项目(Turbine)来提供把多个hystrix.stream的内容聚合为一个数据源供Dashboard展示。
把监控结果展示在一张页面上。
断路器聚合监控(Hystrix Turbine):聚合所有服务的Hystrix Dashboard的数据。
监控分类:单点监控,集群监控,聚合监控。
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.boot
spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-netflix-hystrix-dashboard
org.springframework.cloud
spring-cloud-starter-turbine
org.springframework.cloud
spring-cloud-starter-netflix-turbine
turbine.appConfig=ZIPKIN-USER-8000,ZIPKIN-USER-8001,ZIPKIN-USER-8002 turbine.aggregator.clusterConfig= default turbine.clusterNameExpression= new String("default")
单点监控
针对微服务端口进行监控
监控某一个微服务结点对其他微服务的调用;只能监控当前微服务的端口。针对微服务所在的端口进行监控。
当前微服务没有通过feign对其他微服务进行调用,所以监控不到。
案例:实现8001调用8002,通过feign调用
http://localhost:9000/hystrix
http://localhost:8000/hystrix.stream
http://localhost:8001/hystrix.stream
开始监控目标服务
点击“Monitor Stream”按钮,在3个输入框输入无误后,开始“监控”目标服务。
点击“Monitor Stream”按钮后,会出现几种情况:
1、正常,但暂未执行过hystrix命令,会出现两个Loading…
2、正常,随便调用一个被hystrix管理的远程调用接口后,页面会刷新出类似如下的页面(理想状态,调用接口后出现)。
为什么8001监控不到?没有数据,只有先调用通,才会有数据。
3、异常,目标服务没有引入spring-boot-starter-actuator启动依赖。
如何查看hystrixdashboard?
1、实心圆共有两种含义:颜色(故障实例),大小(高压实例)
1)它通过颜色的变化代表了实例的健康程度,它的健康度颜色从绿色
<黄色<橙色<红色递减。
2)它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示可以在大量的实例中快速的发现故障实例和高压力实例。
2、曲线:用来记录2分钟内流量的相对变化,可以通过它来观察流量的上升和下降趋势。
3、7种颜色的数据
Success | Short-Circuited | Bad Request |Timeout | Rejected | Failure | Error
成功数,熔断数,错误请求数,连接超时数,连接池拒绝数,失败异常数,最近10s错误比例。
集群主机报告状态:服务请求频率,断路状态
黄色<橙色<红色递减。
服务熔断与服务降级的区别
1、触发原因不太一样:服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;
2、管理目标的层次不太一样:熔断其实是一个框架级的处理,每个微服务都需要(无层级之分),而降级一般需要对业务有层级之分(比如降级一般是从最外围服务开始)。
服务降级要考虑的问题:1.核心和非核心服务。2.是否支持降级,降级策略
针对Zuul的理解
Zuul本身就集成了Hystrix,实际上Zuul的路由转发也是用到了Ribbon+Hystrix,也就意味着我们可以通过Hystrix Dashboard监控Zuul的工作情况。
服务熔断的作用:防止服务雪崩和级联故障
当服务的某个API接口的失败次数在一定时间内小于设定的阀值时,熔断器处于关闭状态,该API接口正常提供服务.当API接口处理请求的失败次数大于设定的阀值时,Hystrix判定该API接口出现故障,打开熔断器,这时请求该API接口会执行快速失败逻辑(即fallback回退逻辑)。
Feign内集成了robbin依赖,如果存在多个微服务实例,就会通过轮询算法进行处理;所以当自己本地启的微服务注册到Eureka Server上;Eureka Server存在多个实例,就会进行请求转发到其中的实例。
3个输入框。作用如下:目标服务暴露的hystrix.stream端口;“Ping”的间隔时间;目标服务的别名,可以随便取;开始监控目标微服务。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178620.html原文链接:https://javaforall.net
