eureka
搭建
- 新建一个Module,maven项目,导入依赖。
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
- 创建启动类
开启服务@EnableEurekaServer注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
- 配置yaml
server:
port: 8082 # 服务端口
# 服务注册信息
spring:
application:
name: eurekaserver # eureka的服务名称
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:8082/eureka
- 打开
服务注册
将user_service和order_service注册进去
很简单,两步
引入客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
引入配置:
server:
port: 8081 # 服务端口
# 服务注册信息
spring:
application:
name: userservice # eureka的服务名称
eureka:
client:
service-url: # eureka的地址信息
defaultZone: http://127.0.0.1:8082/eureka
同样的,把order服务也注册进入。
启动:
就可以看见三个实例了,分别是:
eureka
user
order 三个服务
服务发现
有了注册中心,原来的ip + 端口调用 改成 服务名称 调用。
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
// 2.查询用户,远程调用
String url = "http://localhost:8081/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
// 3. 封装
order.setUser(user);
// 4.返回
return order;
}
2步骤改成:
String url = "http://userservice/user/" + order.getUserId();
负载均衡
RestTemplate加上LoadBalanced注解
@LoadBalanced
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
测试一下接口:
服务间调用成功
多个生产者,通过轮询调用。