- 版本:Spring Cloud 2021.0.x开始被弃用
- 需要添加依赖:Eureka Server Spring Web
- 作用:服务注册与发现(使服务调用方能够通过服务名找到服务提供方)
- 包含俩个组件:Eureka Server和Eureka Client
- Eureka Server:提供服务注册服务(各个节点启动后,会在Eureka Server中进行注册,将吧所有可用的服务节点的信息存储到Eureka的服服务注册表中
- Eureka Client:java客户端,用于简化与Eureka Server的交互,同时也是一个内置的、使用轮询负载算法的负载均衡器
- 运行机制:当应用启动后,Eureka Client将会向Eureka Server定期发送心跳,默认周期为30s,如果Eureka在多个心跳周期没有接收到某个节点的心跳,Eureka Server将会吧这个服务节点从服务注册表中移除(默认三个周期)
- Eureka Server直接通过复制的方式完成数据的同步,Eureka还提供客户缓存机制,当所有的Eureka Server都挂掉后,客户端依然可以利用缓存中的信息消费其他服务的API
- 服务注册:
- 服务实例向服务注册中心(Eureka Server)注册自身的过程。注册时,服务实例会向Eureka Server提供服务地址、端口、健康检查路径等信息,被Eureka Server存储起来用来后续的服务发现。
- 服务发现:
- 服务调用方根据服务名称查找服务实例的过程。Eureka Client从Eureka Server中获取服务实例列表,并从中选取实例进行调研,服务发现的过程是透明的,开发者只需要关注业务逻辑。
- 搭建Eureka服务模块:
- 1.创建Eureka Server模块
- 在pom.xml中添加依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
12.appication.yml中配置:
eureka:
instance:# Eureka实例的主机名,这里设置为localhost,通常用于本地开发环境,在实际部署到生产环境时,应根据具体的服务器配置修改为对应的主机名或IP地址
hostname: localhost
client:
registerWithEureka: false #服务实例不会将自身信息注册到Eureka服务器上
fetchRegistry: false #当前服务实例是否从Eureka注册中心拉取服务注册信息
serviceUrl: #Eureka客户端用来与Eureka Server进行通信的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
- 创建启动类中添加@EnableEurekaServer注解
package com.example.eurekaserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
在服务提供者模块添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
给application.yml文件中添加配置:
eureka:
client:
service-url:
defaultZone: http://eureka-server:8761/eureka/
服务提供这的启动类中添加@EnableEurekaClient注解
@SpringBootApplication
@EnableEurekaClient
public class ItemServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ItemServiceApplication.class, args);
}
}
- 启动服务并查看服务注册情况
- 启动Eureka Server和服务提供这的启动类
- 打开浏览器访问 :
- http://localhost:8761/
- 查看服务实例列表,确认服务提供者是否被成功注册
我的服务是 BUSINESS-SERVICE
