eureka会将服务者的ip地址端口号和服务名存入注册表中
当调用者需要调用时会先根据服务名称在eureka中中拉取对应的注册表
然后调用者会根据自己的负载均衡策略进行筛选,再去远程调用
注册中心:
需要先创建一个eurekaserver模块作为服务器
在服务器模块中引入eureka的服务器依赖,并且再启动类上加入@EnableEurekaServer开启注解
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
@SpringBootApplication
@EnableEurekaServer//开启eureka服务
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class,args);
}
}
编写配置文件中需要设置,服务器的端口号,服务器的名称以及eureka的地址
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
服务注册:
引入eureka的客户端依赖,在配置文件中需要配置名称以及eureka服务器的地址
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
spring:
application:
name: orderservice
服务调用:
同样需要引入eureka的客户端依赖,在配置文件中在配置文件中需要配置名称以及eureka服务器的地址
如果需要启用负载均衡的话,就需要再之前调用者开启远程调用的Bean上加入@LoadBalanced注解,表示启用负载均衡 之前调用的时候我们是直接通过具体的IP地址进行调用,这次需要换成,服务在在注册中心中的名称
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
String url = "http://userservice/user/"+order.getUserId();