目录
1. Eureka作用
最基础的远程调用使用RestTemplate#getForObject(url,Object.class)方法,url中的地址是写死的,若一个服务提供者会有多个实例,调用者调用哪一个?只能固定调用?显然不行。
这就需要用到Eureka注册中心,可以实现服务注册和服务发现等。
下面从搭建注册中心----->服务注册----->服务发现
2. 搭建注册中心
-
创建eureka-server服务(maven模块)
-
引入eureka依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
-
在启动类加@EnableEurekaServer注解,开启eureka注册中心功能。
-
编写application.yml配置文件
server: port: 10086 spring: application: name: eureka-server eureka: client: service-url: defaultZone: http://127.0.0.1:10086/eureka
-
启动微服务,访问http://127.0.0.1:10086
3. 服务注册
例:将user-service注册到eureka-server中
-
引入eureka-client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
-
application.ym中添加eureka配置
spring:
application:
name: userservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
-
启动多个user-service实例
查看原资料。
4. 服务发现
例:将order-service的逻辑修改:向eureka-server拉取user-service的信息,实现服务发现。
-
引入eureka-client依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
-
application.ym中添加eureka配置
spring:
application:
name: orderservice
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
-
服务拉取和负载均衡,给RestTemplate这个Bean添加@LoadBlanced注解。