eureka 是 netflix 开源的一款服务注册与发现组件,在微服务架构中扮演着重要的角色。
一、eureka 的介绍
-
工作原理
- 服务注册:各个微服务在启动时,会向 eureka server 发送注册请求,将自身的服务名、实例名、ip 地址、端口等信息注册到 eureka server 中。
- 服务续约:注册成功的服务会按照一定的时间间隔向 eureka server 发送心跳,以维持服务的“活性”。
- 服务获取:服务消费者在调用服务时,会先从 eureka server 获取服务提供者的注册信息列表,然后根据负载均衡策略选择一个服务实例进行调用。
- 服务下线:当服务实例关闭或出现故障时,会向 eureka server 发送下线请求,eureka server 将该实例从服务列表中删除。
-
特点
- 高可用性:eureka server 采用了peer-to-peer 的架构,每个 eureka server 都是平等的,多个 eureka server 之间会相互复制服务注册信息,即使部分 eureka server 节点出现故障,也不会影响整个服务发现系统的可用性。
- 自我保护机制:当网络分区等故障导致大量服务实例的心跳不能按时到达 eureka server 时,eureka server 会进入自我保护模式,不会删除服务实例,以防止误判导致服务不可用。
二、eureka 的使用
-
搭建 eureka server
- 创建一个 maven 项目,并在
pom.xml文件中添加 eureka server 相关的依赖。 - 配置
application.properties或application.yml文件,设置服务端的端口、注册中心的地址等信息。 - 创建启动类,并添加
@enableeurekaserver注解,启动 eureka server 服务。
- 创建一个 maven 项目,并在
-
服务注册
- 对于服务提供者,同样在
pom.xml文件中添加 eureka 客户端的依赖。 - 在配置文件中设置 eureka server 的地址等信息。
- 在启动类上添加
@enablediscoveryclient或@enableeurekaclient注解,启动服务时将服务注册到 eureka server 上。
- 对于服务提供者,同样在
-
服务发现与调用
- 服务消费者在代码中通过
discoveryclient或其他相关的工具类从 eureka server 获取服务提供者的列表。 - 然后根据负载均衡策略(如随机、轮询等)选择一个服务实例进行远程调用。
- 服务消费者在代码中通过
通过以上步骤,就可以在微服务架构中使用 eureka 实现服务的注册与发现,提高系统的灵活性和可扩展性。
发表评论