快捷搜索:  汽车  科技

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)4.Iping调用如下,通过图1我们知道它默认的是NoOpPing具体如何配置先看一下Iping的调用若想实现脱离Eureka的Htpps的服务器状态监控,需要修改Irule、Iping的参数策略,下面讲解如何基于这两个参数的改造进行服务器状态监控2.先看IloadBalancer调用图如下,默认是ZoneAwareLoadBalancer。该改造中不需要变化3.Irule的调用图如下,默认ZoneAvoidanceRule,

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(1)

由于该网关未基于Eureka服务注册和发现,具体可见Ribbon Hystrix网关解决方案-非Eureka版,未使用到Eureka的心跳检查机制。导致在请求过程中无法正确获取服务器状态,只能通过Ribbon的补偿模式(初次失败会在10s内再尝试一次,若再失败每过40s之后尝试)去请求服务,若服务返回状态不正常Ribbon停止请求。由于并发数较大,请求的超时时间设置为30s等因素。若超时会在30s后获取到返回请求知道服务器状态,而在这30s内会有大量请求进来,这部分请求同样会失败,服务的不可用性概率变高了,因此必须主动做心跳检查。

心跳检查:主动获取服务状态,是否能正常提供服务,若无法提供则标记当前服务实例为不可用,在Ribbon负载均衡时,该服务实例不包含在当前服务的可用实例组中。

1.Ribbon负载均衡的默认配置

Ribbon负载均衡主要由客户端配置、负载均衡器、负载均衡策略、实例检查策略、服务实例清单的维护机制、服务实例清单的过滤机制等构成,如下图所示:

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(2)

大概逻辑如下:Ribbon初始化一个可用ServerList,根据Iping来判断服务器状态,若不可用则标记并计入到NoServerList, Irule选择可用ServerList根据策略进行负载均衡。

若想实现脱离Eureka的Htpps的服务器状态监控,需要修改Irule、Iping的参数策略,下面讲解如何基于这两个参数的改造进行服务器状态监控

2.先看IloadBalancer调用图如下,默认是ZoneAwareLoadBalancer。该改造中不需要变化

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(3)

3.Irule的调用图如下,默认ZoneAvoidanceRule,

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(4)

具体如何配置先看一下Iping的调用

4.Iping调用如下,通过图1我们知道它默认的是NoOpPing

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(5)

基于上述图,要想实现脱离Eureka的Https服务器状态监控,只需要修改下述两个配置文件即可。

#使用的ping策略

gateway.ribbon.NFLoadBalancerPingClassName=com.happigo.gateway.util.PingUrl

#使用的rule策略,若使用pingurl則不能使用ZoneAvoidanceRule,对于iping的服务器状态不生效

gateway.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.WeightedResponseTimeRule

上述的ping和rule策略为什么选择PingUrl和WeightedResponseTimeRule, 是经过几个测试,具体如下;

1.不修改rule,直接修改ping,发现ping会对服务器状态进行修改(isAlive为false),但是rule对于该状态不进行判断。结论:ZoneAvoidanceRule是基于判断服务器状态监控是通过Eureka的健康检查来实现的。

2.修改rule和ping,ping会对服务器状态进行修改(isAlive为false),rule且会根据服务器状态进行服务器实例清单过滤,实现状态监控,若isAlive为false,该服务器属于不可用,不纳入rule规则

3.由于请求是https的,故需要重写PingUrl,并引入。ping的方式采用了HttpClient方式调用Https。

微服务教程hystrix(Hystrix网关解决方案-脱离Eureka的Https服务器状态监控)(6)

综上,通过可以实现脱离Eureka的Https服务器状态监控。

猜您喜欢: