1.Eureka作用:
服务提供者启动时会把注册信息传递到eureka注册中心,服务消费者可以拉取(pull)注册中心的服务。如果有多个服务提供者,会采用负载均衡算法选取其中一个服务提供者。
服务提供者每30S就会向Eureka-Server发送心跳请求,报告健康状态,eureka 会更新记录服务列表信息,心跳不正常会被剔除。以便消费者及时拉取最新的信息。
2.搭建Eureka Server
1.在idea创建eureka-service模块,在pom.xml中引入下方依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
2.编写启动类时加入@EnableEurekaServer
3.在application.yml中添加如下配置
server: port: 10086 #端口号 spring: application: name: eurekaserver #服务名 eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka/ #eureka服务端地址
3.注册user-service
1.在user-service引入下方依赖:
<!--引入eureka客户端依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.在application.yml编写下面的配置:
spring: application: name: userservice eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka/
4.服务拉取
1.修改 OrderService 的代码,修改访问的 url 路径,用服务名代替 ip 、端口:
//2.利用restTemplate发送http请求 //2.1 url路径 String url = "http://userservice/user/" + order.getUserId();
2.在启动类处加入@LoadBalanced注解,利用RestTemplate实现负载均衡。
@Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); }
5.总结
1.搭建 EurekaServer
• 引入 eureka-server 依赖
• 添加 @EnableEurekaServer 注解
• 在 application.yml 中配置 eureka 地址
2. 服务注册
• 引入 eureka-client 依赖
• 在 application.yml 中配置 eureka 地址
3. 服务发现
• 引入 eureka-client 依赖
• 在 application.yml 中配置 eureka 地址
• 给 RestTemplate 添加 @LoadBalanced 注解
• 用服务提供者的服务名称远程调用