Iping默认是关闭的,请问一般什么情况下才会用到呢?

Iping默认是关闭的,请问一般什么情况下才会用到呢?

Iping默认是关闭的,请问一般什么情况下才会用到呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

IPing这个组件是比较好理解的。

就像你诊断网络是不是有问题的时候,会想到ping www.baidu.com一样。

IPing这个组件也是做这个事情的。默认是NoOpPing,一个啥都不干的ping。上去认为一切都是美好的,每个实例都可用。

但是,如果实际项目中,比如微服务A调用B,B有3个实例,某个瞬间,B挂掉1个实例。此时,由于Eureka的心跳机制,以及微服务侧的本地缓存,会导致一段时间后,A才能感知到(Eureka默认保证90秒,所有微服务上的缓存和Eureka Server达到最终一致。而Ribbon是ServerListUpdater也是个定时任务,默认是30秒。)。此时,就有可能会调用到不可用的微服务B实例。

这个时候,就可以配置IPing为PingUrl,甚至是自己扩展一个IPing,去诊断实例是否可用,从而减少调用到不可用实例的概率。

之所以说减少不可用实例的概率,是因为据我个人研究,IPing不是每次请求都Ping的,而是以下两种场景才Ping:

  1. Ribbon微服务B实例列表变了(比如原先有3个实例,现在又启动了一个实例,变四个了;或者下线了1个实例,变成了2个),会Ping下;

  2. 定时Ping,默认周期是10秒



  • 慕仔8930017 提问者 #1
    意思就是说Iping默认不会真的ping某个服务,需要我们手动配置才会去ping某个服务对吗?如果是这样的话,在实际开发中,我们在哪些情况会去配置或者怎么配置呢?谢谢老师
    2020-06-01 13:39:38
  • 大目 回复 提问者 慕仔8930017 #2
    实际项目中一般都不用配。 因为按照我上面描述,不配是90秒内可能会命中到挂了的实例,而配了是10秒内可能命中到挂了的实例。 所以并没有从根本上解决问题。
    2020-06-01 21:41:20
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师