> 文章列表 > SpringCloud学习笔记(一)认识微服务

SpringCloud学习笔记(一)认识微服务

SpringCloud学习笔记(一)认识微服务

一、微服务技术栈

SpringCloud学习笔记(一)认识微服务

二、单体架构分布式架构的区别

1、单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包进行部署

  • 优点:架构简单,部署成本低
  • 缺点:耦合度高

2、分布式架构: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务SpringCloud学习笔记(一)认识微服务

三、什么是微服务

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

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立、技术独立、数据独立、部署独立
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

SpringCloud学习笔记(一)认识微服务

四、三种架构的区别

  • 单体架构特点:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统
  • 分布式架构特点:松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝
  • 微服务:是一种良好的分布式架构方案,优点是拆分粒度更小、服务更独立、耦合度更低;缺点是架构非常复杂,运维、监控、部署难度提高

五、什么是SpringCloud

1、SpringCloud是目前国内使用最广泛的微服务架构
2、SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动配置,从而提供了良好的开箱即用体验,包括如下组件:

  • 服务注册发现:Eureka、Nacos、Consul
  • 服务远程调用:OpenFeign、Dubbo
  • 服务链路监控:ZIPkin、Sleuth
  • 统一配置管理:SpringCloudConfig、Nacos
  • 统一网关路由:SpringCloudGateway、Zuul
  • 流控、降级、保护、断路器:Hystix、Sentinel

六、SpringCloud与SpringBoot的版本兼容关系

SpringCloud版本 SpringBoot版本
2021.x 2.6.x
2020.x 2.4.x
Hoxton 2.2.x,2.3x
Greenwich 2.1.x
Finchley 2.0.x
Edgware 1.5.x
Dalston 1.5.x

七、服务拆分注意事项

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其他微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其他微服务调用

八、服务远程调用的过程

1、注册RestTemplate

  • 在OrderApplication中注册RestTemplate
@Bean
public RestTemplate restTemplate() {return new RestTemplate();
}

2、服务远程调用RestTemplate

  • 修改OrderService的queryOrderById方法
@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请求,实现远程调用User user = restTemplate.getForObject(url, User.class);// 3.封装user到Orderorder.setUser(user);// 4.返回return order;
}

3、微服务调用方式

  • 基于RestTemplate发起的http请求实现远程调用
  • http请求做远程调用是与语言无关的调用,只要知道对方的ip、端口、接口路径、请求参数即可

参考

  • 黑马《SpringCloud教程》