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

news/2025/1/9 3:47:23/

一、微服务技术栈

在这里插入图片描述

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

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

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

2、分布式架构: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务在这里插入图片描述

三、什么是微服务

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

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

在这里插入图片描述

四、三种架构的区别

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

五、什么是SpringCloud

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

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

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

SpringCloud版本SpringBoot版本
2021.x2.6.x
2020.x2.4.x
Hoxton2.2.x,2.3x
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.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教程》

http://www.ppmy.cn/news/34777.html

相关文章

【周末闲谈】文心一言,模仿还是超越?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言?(_)?三、文心一言的优势?😗😗😗四、文心一…

Web站点性能优化经验分享

之前负责IT团队项目管理工作,手里有几套业务站点。其中一个站点被业务吐槽比较严重,主要涉及功能模块缺失、站点性能差会出现卡死的现象,同时也被旁边的项目团队埋怨调用我们的接口会比较慢,甚至超时的情况。 鉴于业务压力&#x…

E - 积木画(状态压缩DP)

E - 积木画(状态压缩DP) 1、问题 E - 积木画 2、分析 这道题很明显是一道DP题,而且是一个简化版的状态压缩DP。 (1)状态表示 f[i][j]f[i][j]f[i][j]表示前面i−1i-1i−1已经摆好,并且第iii列的状态是j…

【数据结构与算法】什么是双向循环链表?以及实现过程

文章目录前言:一、相关概念二、实现过程三、总结前言: 线性表是我们最常用的一种数据结构,线性表包含顺序表和链表,顺序表典型应用就是我们常用的ArrayList,链表的典型应用其中就有我们常用的LinkedList。LinkedList他…

【C语言初阶】循环语句

文章目录💐专栏导读💐文章导读🌷什么是循环🌷while循环🌷do while循环🌷for循环🌷循环结构中的break与continue🌺break🌺continue🌷goto语句💐专栏…

打怪升级之FPGA组成原理(LE部分)

FPGA芯片逻辑单元的原理 不论你使用哪一款FPGA芯片,其核心可编程逻辑单元都是从一段内存种按顺序读取执行并执行的过程。具体来说,FOGA芯片内部包括可编程逻辑块(LAB)、可配置输入输出单元(IOE)、时钟管理模块、嵌入式RAM(BRAN,在Cyclone IV…

【Vue】快速入门

目录 一、前言 二、Vue简介 2.1 vue是什么 2.2 谁开发的 2.3 Vue的特点 三、搭建Vue开发环境 3.1 安装Vue Devtools 3.2 关闭开发模式提示信息 3.3 遇到的问题 四、HelloWorld小实例 4.1 案例制作 4.2 案例分析 五、结语 一、前言 大家好,我是初心&…

【总结】面向对象

面向对象 1. 编程思维 根据面对问题不同人层显示的思维模式不同,将编程思维分为三种: 1)面向过程编程(穷人思想) - 遇得到问题想到的是解决这个问题的具体逻辑和步骤 2)函数式编程(小资思想…