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@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
测试一下接口:
服务间调用成功
多个生产者,通过轮询调用。