众所周知,springCloud是spring家族中的一个成员,它是现今非常流行的微服务框架,下面介绍几个比较基本的组件之注册中心Eureka。

Eureka

  Eureka是微服务的注册中心和发现,它的作用是管理庞大的原子性服务,每个原子性服务必须注册到eruka中。举个例子:我们把Eureka比作美团APP,那么这些商家就是一个一个的原子性服务。它起的作用就是管理这些商家。

  各个服务必须向Eureka发送心跳,表示它们还在健康的工作,一般而言,每隔30秒会发送一次,Eureka在90秒内没有接受到服务的心跳,它将其剔除,当然,你也可以开启保护机制。

  Eureka承载的服务以及接受的心跳数量是非常巨大的,那么它是如何控制这么大的并发呢?内存,它的最可观的设计就是设计在内存中,下面简单介绍下。

  Eureka 的基本架构,其中主要包括以下 种角色。

              Register Service :服务注册中心,它是一个 ureka Server ,提供服务注册和发现的功能。

              Provider Service :服务提供者,它是 Eureka Client ,提供服务

              Consumer Service :服务消费者,它是 Eureka Cient ,消费服务

       服务消费的基本过程如下:首先前要 1个服务注册中心 Eureka Server ,这时服务生产者将在注册中心注册,包括自己的IP和服务名称,服务消费者也是如此。然后,消费者会获取到一个服务注册表,通过这个注册表获取相关服务,最后消费服务生产者的服务。

  代码层面解析Eureka原理:

    注册:Registe:在Eureka客户端中,有一个服务注册的方法register(),启动时,会以HTTP形式向服务端注册。代码如下:

                                                                 

 

         此时,我们继续追踪Eureka客户端中的register方法,可以发现,这个方法被InstancelnfoReplicator类的RUN()方法调用,而InstancelnfoReplicator类实现了runnable接口。

                                                                 

 

    而InstancelnfoReplicator类是在DiscoveryClient初始化过程中使用的,其中有个initScheduledTasks()方法,该方法主要开启了获取服务注册表的信息。如果要向注册中心注册,则要开启注册,并且开启续约:

                                                                 

    再来跟踪 Eureka server 端的代码,会发现有一 EurekaBootStrap 的类,BootStrapContext 类在程序启动 具有最先初始化的权 限,代码如下

                                                                 

    其中, PeerAwarelnstanceRegistryImp 和PeerErekaNod 其命名上看 应该 服务 注册以及 Eureka Server 高可用有关。代码如下:

                                                                

 

    点击其中的 super.register(info, leaseDuration, isReplication 方法,进入其父类 AbstractlnstanceRegistry 可以发现更多细节:

                                                     

 

    以上就是注册中心相关说明。