当前位置: 首页 > news >正文

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

一、微服务技术栈

在这里插入图片描述

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

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.lryc.cn/news/42416.html

相关文章:

  • Unity中使用WebSocket (ws://)的方法
  • 米哈游春招算法岗-2023.03.19-第一题-交换字符-简单题
  • 能把爬虫讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】
  • springcloud学习总结
  • 2022年亏损超10亿,告别野蛮成长的众安在线急需新“引擎”
  • ChatGPT文心一言逻辑大比拼(一)
  • 【机器学习面试总结】————特征工程
  • 如何将字符串反转?
  • Linux内核IO基础知识与概念
  • paper文献和科研小工具
  • dfs和bfs能解决的问题
  • 静态通讯录,适合初学者的手把手一条龙讲解
  • 【你不知道的 CSS】你写的 CSS 太过冗余,以至于我对它下手了
  • Lesson 8.1 决策树的核心思想与建模流程
  • 【算法】FIFO先来先淘汰算法分析和编码实战
  • 二分查找——我欲修仙(功法篇)
  • Python 多线程
  • JVM笔记(九)选择合适的垃圾收集器
  • 二维图像处理到三维点云处理
  • leetcode 删除有序数组中的重复项
  • JVM学习.03 类加载机制
  • Celery使用:优秀的python异步任务框架
  • 第十四届蓝桥杯三月真题刷题训练——第 19 天
  • 类和对象 - 下
  • 【云原生】Linux基础IO(文件理解与操作)
  • CentOS 7 安装 mysql 8.0 客户端
  • Ubuntu下载、配置、安装和编译opencv
  • 第七讲 贪心
  • 数字藏品的未来及发展趋势
  • 值得记忆的STL常用算法,分分钟摆脱容器调用的困境,以vector为例,其余容器写法类似