面试题答案
一键面试1. 服务注册流程
- Eureka Client 初始化:微服务应用在启动时,配置了 Eureka Client 的相关参数,如 Eureka Server 的地址等。
- 发送注册请求:Eureka Client 向 Eureka Server 发送一个 HTTP POST 请求,请求体包含了该微服务的元数据信息,例如服务名称、IP 地址、端口号、健康检查路径等。
- Eureka Server 处理注册:Eureka Server 接收到注册请求后,会将该微服务的信息存储在自己的注册表中。同时,Eureka Server 会向其他 Eureka Server 节点进行数据同步(如果是集群环境),以保证各节点注册表的一致性。
2. 续约流程
- 定时续约:Eureka Client 会在启动后,按照一定的时间间隔(默认 30 秒)向 Eureka Server 发送 HTTP PUT 请求进行续约,表明自己仍然存活。
- Eureka Server 处理续约:Eureka Server 接收到续约请求后,会更新该微服务在注册表中的最后续约时间。只要该微服务的续约时间间隔在一定范围内(默认 90 秒内没有收到续约请求,会将服务标记为过期),Eureka Server 就会认为该服务处于正常运行状态。
3. 下线流程
- 主动下线:当微服务应用需要停止运行时,Eureka Client 会向 Eureka Server 发送一个 HTTP DELETE 请求,告知 Eureka Server 自己要下线。
- Eureka Server 处理下线:Eureka Server 接收到下线请求后,会从注册表中移除该微服务的信息,并向其他 Eureka Server 节点同步此变更(集群环境)。同时,Eureka Server 会将该服务下线的信息推送给其他 Eureka Client,以便它们更新本地的服务注册表,不再将请求发送到已下线的服务实例。
- 过期下线:如果 Eureka Server 在一定时间(默认 90 秒)内没有收到某个微服务的续约请求,Eureka Server 会将该服务标记为过期,并在之后的某个时间(默认 60 秒后)将其从注册表中移除。移除后同样会向其他 Eureka Server 节点同步以及通知 Eureka Client。