马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、服务架构的演变
1、单体架构:将业务的全部功能会合在一个项目中开发,打成一个包摆设,架构简单,摆设本钱低,但耦合度高。
2、分布式架构:根据业务功能对体系举行拆分,每个业务模块作为独立项目开发,称为一个服务,低沉了服务的耦合度,有利于服务升级拓展,但是服务拆分和治分析出现题目。
3、微服务:一种颠末精良筹划的分布式架构方案,具有单一职责、面向服务、自治(独立)、隔离性强。
二、微服务技能对比
企业需求:
三、SpringCloud
springCloud是现在国内使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了精良的开箱即用体验。
四、服务拆分及长途调用
(一)注意事项:
1、差异微服务,不要重复开发雷同业务
2、微服务数据独立不要访问其他微服务的数据库
3、微服务可以将自己的业务袒露为接口,供其他微服务使用
五、服务之间发起哀求
在初始情况下,查询order和user只能分开查询,在order中可以看到userId
通过order基于userId发起http哀求,查询到订单中的用户:
(一)注册RestTemplate(bean)(bean的注入只能放到设置类内里,而带有@SpringBootApplication的启动类也是设置类)- /**
- * 创建RestTemplate并注入Spring容器
- * @return
- */
- @Bean
- public RestTemplate restTemplate(){
- return new RestTemplate();
- }
复制代码
(二)修改orderService- @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();
- //2.2 发起http请求,实现远程调用(原本返回的是json,告诉它我们要User对象类型)
- User user = restTemplate.getForObject(url, User.class);
- //3 封装user到order
- order.setUser(user);
- // 4.返回
- return order;
- }
- }
复制代码 此时我们的order中已经可以哀求到用户信息了
六、提供者与斲丧者
1、服务提供者:一次业务中,被其他服务调用的服务(提供接口给其他服务)
2、服务斲丧者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口)
问:A调用B,B调用C,B是什么?一个服务既可以是提供者又可以是斲丧者。
|