Eureka服务端注册和发现
在Eureka中分为Eureka Client和Eurela Server
前者是一个Java客户端,
后者是Eureka的服务端,用于提供服务注册和发现。
通过创建一个Springboot服务,在启动类中添加 @EnableEurekaServer ,通过该注解声明为该服务为Eureka的服务端,启动该服务,然后打开对应的端口,可以看到已经启动了一个Eureka的服务端。
但在该服务端中可以看到没有任何实例注册到该服务器中。因此需要启动对应的客户端向Eureka服务器中注册客户端。
创建一个Springboot服务,在其中的启动类中添加 @EnableDiscoveryClient 注解,声明为Eureka的客户端,启动该启动类,会自动向Eureka服务端自动注册一个客户端。
启动该服务,重新刷新Eureka服务器地址,会看到已经有一个实例注册到Eureka服务器中,该实例名称为CUSTOMER-SERVICE。
此时就完成了Eureka服务端和客户端的创建以及客户端注册到服务端中。
Eureka
在Eureka服务中会存储客户端的服务信息。同时Eureka Server也会注册自己(因此Eureka Server理论上也是一个Eureka Client)。
对于多个Eureka Server,它们之间是通过复制完成服务注册表的同步,从而形成了Eureka的高可用。
另外在Eureka Client中会缓存Eureka Server的信息,因此即使Eureka Server断掉,Eureka Client仍然可以使用Eureka Server的服务。
每个Eureka Client会周期性(默认30s)的向Eureka Server发送心跳,已验证该客户端仍然与服务器连接。
同时每个Eureka Server会定期(默认60s)执行失效服务的检测,当检测到超过一定时间(默认90s)没有发送心跳的客户端,则会注销该客户端的服务节点。