spring cloud Eureka

注册中心Eureka

分为EureKa server和EureKa client。其中服务提供者和服务消费者都是Eureka client。

服务注册-每个被@EnableDiscoveryClient标注的实例在启动的时候会去server里面把自己注册了,同是开启定时任务,定时去续约,续约过程是发送心跳,如果server在一定时间没有收到服务的心跳信息,会去把此服务注销掉。

注册方法见,DiscoveryClient.register(),会把自己的servcieId,port,id等信息通过http方式发送到server上,被server里面的map收集起来

续约方法见,DiscoveryClient.renew(),续约的过程是通过发送心跳信息到server上,以防止server把服务剔除出去

服务发现,服务实例在启动的时候会通过http方式去server里面取application信息,缓存到本地。同是开启定时任务定时去刷新本地的服务列表,默认时间是30秒,定时任务见下图

服务消费 ribbon

使用ribbon消费的时候,会被RibbonLoadBalancerClient 拦截到。然后通过本地获取缓存的服务,生成一个list(通过定时任务每隔1秒生成一下list),采取一定的调用策略,达到负载均衡的效果。默认是轮询算法,见下图

新服务的发布会被server立即存储起来,但是不会被其他的服务后者消费者立马感知,他们需要等服务发现的下一次定时任务下一次执行的时候才会被缓存

服务的下线不会被server马上注销掉(map里面还会有),server会剔除超过90秒没有续约的服务,所以这个90秒内服务还是可以在map里面的。此时客户端的服务发现刷新的时候还是会找到失效的服务,这时会带来一个问题,服务消费者通过ribbon消费的时候会出现500的错误,此时就需要引入容错机制。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值