Spring Cloud之服务发现——Eureka(发音为[juә’ri:kә])
服务注册与发现以及反馈的实现流程:
- Provider将自己的节点信息发送到指定的服务注册机上;
- 服务注册机将Provider发送过来的信息保存在指定区域,等待Consumer查询;
- Provider通过定期向服务注册机发送消息确保自己不会被注销,而当服务注册机长时间未收到某个Provider发送过来的信息时,会自动将该Provider注销。
- 当Provider网络地址发生变更时,会自动重新注册节点信息到服务注册机,避免了人工修改配置的问题。
Eureka的实现机制:
- Eureka分为Server端和Client端,Server端提供服务发现的能力,当微服务节点启动时,会自动向Server端注册自己的节点信息,而Server端则负责存储这些节点信息,供服务调用者查询;
- Client端一般和微服务集成,为微服务提供注册服务到Server端的能力,并从Server端获取最新的已注册服务列表的信息缓存到微服务端;
- 微服务启动后,会周期性(默认30s)向Server端发送心跳以防止被注销;
- 同时,Server端也会周期性(默认90s)的检查已注册的各个微服务是否仍然存活,如果超时,则注销该微服务的注册信息;
Eureka的基础实现
- Server端实现
首先创建一个基础的SpringBoot工程,假设是Maven工程,在POM文件中引入如下依赖:
1 | <dependencies> |
在启动类中加入注解@EnableEurekaService
,声明这是一个Server实例。
在application.yml
中加入如下内容:
1 | server: |
- Client端实现
首先创建一个基础的SpringBoot工程,假设是Maven工程,在POM文件中引入如下依赖:
1 | <dependencies> |
在application.yml
中加入如下内容:
1 | spring: |
高可用Eureka实现
单节点的Eureka无法满足线上环境高可用的要求。一旦发生故障,轻则影响服务的可达性,重则引发服务瘫痪,因此,以集群的方式部署Eureka是非常必要的。