微服务学习01——远程调用
分布式架构:
根据业务对系统功能进行拆分,每个业务模块作为独立项目开发,称为一个服务
优点:降低服务耦合 有利于服务升级拓展
缺点:难度大,架构复杂
微服务:
微服务是一种经过良好架构设计的分布式架构方案,微服务架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免业务重复开发
面向服务:微服务对外暴露业务接口
自治:团队独立、技术独立、数据独立、部署独立
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
优点:拆分粒度更细,服务更独立,耦合度更低
缺点:架构非常复杂,运维,监控,部署难度提高
SpringCloud
SpringCloud是目前使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验
远程调用
各个服务器之间进行方法调用,通过远程调用的方式来进行通信,springCloud基于RestTemplate发起的http请求实现远程调用
/* 在启动类里面 * 创建RestTemplate并注入Spring容器 */ @Bean public RestTemplate restTemplate(){ return new RestTemplate(); }
/*在业务层注入RestTemplate,调用getForObject()方法,设置路径和返回类型,实现远程调用*/ @Autowired private OrderMapper orderMapper; @Autowired private RestTemplate restTemplate; private User user; 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(); //2.2发送http请求,实现远程调用 user = restTemplate.getForObject(url, User.class); //3 封装user到order order.setUser(user); // 4.返回 return order; }
服务调用关系
-
服务提供者:暴露接口给其他服务调用(被调用者) 服务消费者:调用其他微服务提供的接口(调用者) 提供者与消费者角色其实是相对的,一个服务可以同时是服务提供者和服务消费者
下一篇:
Redis怎么保持缓存与数据库一致性?