1、Eureka介绍
Eureka主要是用来实现服务注册与发现。
Eureka由两部分组成:服务端和客户端。服务端就是注册中心,用来接收其他的服务注册。客户端是一个Java客户端,用来注册自己,并可以实现负载均衡等功能。当需要调用某一个服务的时候,只需要去Eureka中拉取服务列表,查看调用的服务在不在其中,在的话就拿到服务地址、端口等信息,然后调用就可以。
Eureka还有一个自我保护机制,在CAP理论中,Eureka属于AP,也就是说当产生网络分区时,Eureka会保证系统的可用性,但不保证系统里面数据的一致性。这个机制默认是开启的,是服务器端容错的一种方式。也就是说,如果Eureka在短时间内没有收到某个服务的心跳包,它仍然会把这个服务保留在服务列表中,而不是直接剔除。这样可以避免因为网络问题导致的误判。
2、Eureka如何实现服务注册与发现
1、服务注册
启动 Eureka 客户端:当微服务启动时,Eureka 客户端会向 Eureka 服务器发送 HTTP 请求进行注册。
发送元数据:Eureka 客户端会发送自己的元数据信息,如 IP 地址、端口号、服务名称等。
存储注册信息:Eureka 服务器会将这些信息存储在一个双层 Map 中,以便其他服务能够查询。
2、服务续约
为了确保服务的可用性,Eureka 客户端会定期(通常是每 30 秒)向 Eureka 服务器发送心跳信息,以表明自己仍然存活并可以提供服务。
如果 Eureka 服务器在一段时间内(通常是 90 秒)没有收到某个客户端的心跳信息,那么它会认为该客户端已经宕机,并将其从服务列表中剔除。
3、服务发现
查询服务列表:当其他服务需要调用某个微服务时,它们会向 Eureka 服务器发送 HTTP 请求,查询所需服务的列表。
获取服务地址:Eureka 服务器会返回包含所需服务地址和端口号的服务列表。
负载均衡:服务消费者通常会使用某种负载均衡策略(如 Ribbon),从返回的服务列表中选择一个服务进行调用。
4、Eureka 的高可用
Eureka 支持集群模式,通过配置多个 Eureka 服务器并相互注册,可以实现高可用性。
即使某个 Eureka 服务器宕机,其他服务器仍然可以提供服务注册与发现的功能。