1.三步开启注册中心
1.创建模块并导入依赖
<dependencies> <!--eureka-server注册中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
2.编写一个application.yml文件
server:
port: 10086
spring:
application:
name: eurekaserver # 服务名称
eureka:
instance:
hostname: 127.0.0.1 # 注册中心服务地址
client:
register-with-eureka: false # 是否向注册中心注册自己,默认值:true,Eureka服务端是不需要再注册自己的。
fetch-registry: false # 是否向注册中心发现新的微服务,默认值: true,Eureka服务端是不需要发现新服务的。
service-url:
defaultZone: http://localhost:10086/eureka # 注册中心(自己) 地址
3.创建 EurekaApplication 启动类
一定要添加一个@EnableEurekaServer注解,开启eureka的注册中心
功能
@SpringBootApplication
@EnableEurekaServer
// 开启eureka的注册中心功能
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class,args);
}
}
启动微服务,然后在浏览器访问:http://127.0.0.1:10086
——————————————————————————————————————————————
2.两步提供者注册eurkea
下面,我们将(提供者)user-service注册到eureka-server中去
1.导依赖
<dependency>
<groupId>org.springframework.cloud</groupId>-->
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>-->
</dependency>
//nacos注册中心管理依赖-->
2.写配置
修改user里application.yml文件,添加服务名称、eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka # EurekaServer注册 中心地址
3.测试
启动多个user-service实例
复制实例更改其中的端口配置 -Dserver.port=8082
启动8081、8082端口的用户微服务
3.三步新建消费者
order-server(消费者)向eureka-server拉取user-service的信息,实现服务发现
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.修改application.yml文件,添加服务名称、eureka地址
eureka:
client:
service-url:
defaultZone: http://localhost:10086/eureka # 注册中心地址
3.启动类注入RestTemplate,并且添加注释@LoadBalanced
给RestTemplate这个Bean添加一个 @LoadBalanced 注解设置负载均衡
@MapperScan("com.xxxx.order.mapper")
@SpringBootApplication
public class OrderApplication {
public static void main(String[] args) {
SpringApplication.run(OrderApplication.class, args);
}
@Bean
@LoadBalanced//配置负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
补充:消费者连接提供者
此处举例子在消费者里的service层新建方法,通过id查询提供者的id查询方法,并且返回。
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order findOrderByUserId(Long orderId) {
// 1.查询订单
Order order = orderMapper.selectById(orderId);
// 2.调用用户微服务
// String url = "http://localhost:8081/user/"+order.getUserId();
String url = "http://userservice/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);
// 3.封装用户到订单中
order.setUser(user);
// 4.返回
return order;
}
}