- SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud
- SpringCloud集成了各种微服务功能组件,并且基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:
- SpringCloud与SpringBoot的版本兼容如下:
服务拆分及远程调用
- 服务拆分
- 服务调用
服务拆分注意事项:
1.不同微服务,不要重复开发相同业务
2.微服务数据独立,不要访问其他微服务的数据库
3.微服务可以将自己的业务暴露为接口,供其他微服务调用
导入服务拆分Demo
1.导入工程:cloud-demo
2.项目结构
3.将cloud-order.sql和cloud-user.sql导入数据库中
启动cloud-demo,根据id查询
微服务远程调用
案例:根据订单id查询订单功能
需求:根据订单id查询订单的同时,把订单所属的有用户信息一起返回
远程调用方式分析
微服务远程调用-查询订单
步骤:注册RestTemplate
在order-service的OrderApplication中注册RestTemplate
@RestController
@RequestMapping("order")
public class OrderController {
@Autowired
private OrderService orderService;
@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
// 根据id查询订单并返回
return orderService.queryOrderById(orderId);
}
}
修改order-service中的OrderService的queryOrderById方法
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private RestTemplate restTemplate;
public Order queryOrderById(Long orderId) {
// 1.查询订单
Order order = orderMapper.findById(orderId);
//2.利用RestTemplate发起http请求,查询用户
//2.1 url路径
String url="http://localhost:8081/user/"+order.getUserId();
User user = restTemplate.getForObject(url, User.class);
order.setUser(user);
// 4.返回
return order;
}
}
微服务调用方式
1.基于RestTemplate发起的http请求实现远程调用
2.http请求远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可
提供者与消费者
- 服务提供者:一次业务中被其他微服务调用的服务。(提供接口给其他微服务)
- 服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)
服务提供者:暴露接口给其他微服务调用
服务消费者:调用其他微服务提供的接口
提供者与消费者角色是相对的
一个服务可以同时是服务提供者和服务消费者
感谢参与
视频地址:https://www.bilibili.com/video/BV1LQ4y127n4?