多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## Eureka客户端 服务提供者要向EurekaServer注册服务,并且完成服务续约等工作. **服务注册** 服务提供者在启动时,会见到配置属性中的:eureka.client.register-with0eureka=true参数是否正确,事实上默认就是true.如果值确实为true.则回想EurekaServer发起一个Rest请求,并携带自己的元数据信息,EurekaServer会把这些信息保存到一个双层Map结构中. * 第一层Map的key就是服务ID,一般是配置中的spring.application.name属性. * 第二层Map的key就是服务的实例ID.一般host+service id + port. 例如: localhost:user-service:8081 * 值则是服务的实例对象,也就是说一个服务,可以同时启动多个不同实例,形成集群. 服务实例: ![](https://box.kancloud.cn/cbdb921485930070c8d8934f363044fc_690x136.png) **服务续约** 在注册服务完成以后,服务提供者会维持一个心跳(定时向EurekaServer发起Rest请求),告诉EurekaServer"我还活着".这个我们成为服务的续约(renew). 有两个重要参数可以修改服务续约的行为: ~~~ eureka: instance: lease-expiration-duration-in-seconds: 90 //最小过期时长. 如果隔了90秒都没发心跳,说明挂了 lease-renewal-interval-in-seconds: 30 //每隔30秒进行一次续约 ~~~ 服务下线: 当超过90秒后,将服务剔除. ![](https://box.kancloud.cn/74ec20401e18c61f2b931d5f017b8b1f_2566x344.png) 超过90秒: ![](https://box.kancloud.cn/4da620998a28ae204302d85586dc5bab_2542x238.png) **获取服务列表** 当服务消费者启动时,会检测eureka.client.fetch-registry=true参数的值.如果为true,则会从EurekaServer服务的列表只读备份,然后缓存在本地.并且每隔30秒回重新获取更新数据.我们可以通过下面的参数来修改: ~~~ eureka: client: service-url: defaultZone: http://localhost:10086/eureka/,http://localhost:10087/eureka/ fetch-registry: true registry-fetch-interval-seconds: 30 ~~~