众所周知,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()方法,该方法主要开启了获取服务注册表的信息。如果要向注册中心注册