Spring Cloud中Eureka的服务注册

Eureka中的服务注册,分为服务注册中心,和服务注册这。

一,服务注册者

服务注册者在启动的时候会通过发送rest请求的方式将自己注册到Eureka Server上。Eureka Server将服务注册的原信息保存在双层结构的map上,第一层的key是服务名,第二层的key是具体服务实例名。

在注册完成后服务提供者会维护一个心跳用来持续的,调用续约服务的时间间隔通过eureka。Instance.less-renewal-interval-in-seconds来设置,默认是30秒。

要开启服务的提供者,我们通过@EnableDiscoveryClient来进行配置。

其主要的作用开启一个DiscoveryClient的实例

/**

 * Annotation to enable a DiscoveryClient implementation.

 * @author Spencer Gibb

 */

 

而在Eureka 实现的服务治理中对应的是EurekaDiscoveryClient这一个实现,具体的是通过EurekaClient的实现也就是DiscoveryClient来完成的。

 

二,注册中心。

注册中心接受和处理服务注册者的请求,处理注册请求的逻辑在ApplicationResource的addInstance方法中。

在完成校验之后,会通过InstanceRegistry中的regist的方法完成注册。

public void register(InstanceInfo info, int leaseDuration, boolean isReplication) {

                   handleRegistration(info, leaseDuration, isReplication);

                   super.register(info, leaseDuration, isReplication);

         }

 

         private void handleRegistration(InstanceInfo info, int leaseDuration,

                            boolean isReplication) {

                   log("register " + info.getAppName() + ", vip " + info.getVIPAddress()

                                     + ", leaseDuration " + leaseDuration + ", isReplication "

                                     + isReplication);

                   publishEvent(new EurekaInstanceRegisteredEvent(this, info, leaseDuration,

                                     isReplication));

         }

 

在handleRegistration的方法中,将服务注册的事件广播出去。

然后调用父类的方法完成注册。

posted @ 2017-08-06 18:41  依米熊  阅读(364)  评论(0编辑  收藏  举报