欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【微服务】认识微服务

【微服务】认识微服务

2024/11/30 12:22:41 来源:https://blog.csdn.net/qq_52200849/article/details/144039521  浏览:    关键词:【微服务】认识微服务

一、服务架构的演变

1、单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署,架构简单,部署成本低,但耦合度高。
2、分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务,降低了服务的耦合度,有利于服务升级拓展,但是服务拆分和治理会出现问题。
3、微服务:一种经过良好设计的分布式架构方案,具有单一职责、面向服务、自治(独立)、隔离性强。

二、微服务技术对比

在这里插入图片描述
企业需求:
在这里插入图片描述

三、SpringCloud

springCloud是目前国内使用最广泛的微服务框架,集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
在这里插入图片描述

四、服务拆分及远程调用

(一)注意事项:
1、不同微服务,不要重复开发相同业务
2、微服务数据独立不要访问其他微服务的数据库
3、微服务可以将自己的业务暴露为接口,供其他微服务使用

五、服务之间发起请求

在初始情况下,查询order和user只能分开查询,在order中可以看到userId
在这里插入图片描述
在这里插入图片描述
通过order基于userId发起http请求,查询到订单中的用户:

(一)注册RestTemplate(bean)(bean的注入只能放到配置类里面,而带有@SpringBootApplication的启动类也是配置类)

     /*** 创建RestTemplate并注入Spring容器* @return*/@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}

在这里插入图片描述
(二)修改orderService

@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate 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到orderorder.setUser(user);// 4.返回return order;}
}

此时我们的order中已经可以请求到用户信息了
在这里插入图片描述
在这里插入图片描述

六、提供者与消费者

1、服务提供者:一次业务中,被其他服务调用的服务(提供接口给其他服务)
2、服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口)
问:A调用B,B调用C,B是什么?一个服务既可以是提供者又可以是消费者。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com