微服务介绍

47 阅读1分钟

微服务架构演变

单体架构

业务所有的功能集中在一个项目内开发,打包成一个包部署。
优点:架构简单、部署成本低
缺点:耦合度低

分布式架构

根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。服务互相调用。
优点:降低服务耦合、有利于服务升级拓展
缺点:架构复杂、难度大

微服务

一种经过良好架构设计的分布式架构方案,微服务架构的特征:

  • 单一职责:拆分粒度更小
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:隔离、容错、降级,避免发生级联问题

微服务架构

image.png 微服务技术对比

image.png

SpringCloud

SpringCloud集成了各种微服务功能组件,并基于Springboot实现了自动装配,开箱即用。 image.png

服务拆分原则

  1. 不同微服务,不要重复开发相同业务,做到单一职责
  2. 微服务数据独立,应该有自己的数据库,不要访问其他微服务的数据库
  3. 微服务可将自己的业务暴露为接口,供其他微服务调用

远程调用

实现远程调用的步骤:

  1. 创建RestTemplate并注入IoC容器
@Bean
public RestTemplate restTemplate() {
    return new RestTemplate();
}
  1. 获取RestTemplate对象
@Autowired
private RestTemplate restTemplate;
  1. 根据当前服务的一些参数(如userid)生成访问点URL路径
String url = "" + order.getUserId();
  1. 利用RestTemplate发起http请求
User user = restTemplate.getForObject(url, User.class);
  1. 封装请求返回的信息
order.setUser(user);
  1. 回应当前服务