微服务是什么 SpringCloud是什么

微服务是什么 SpringCloud是什么

  • 一、微服务概述
  • 二、微服务架构
  • 三、单体架构
  • 四、分布式架构
  • 五、SpringCloud概述
  • 六、SpringBoot和 SpringCloud的区别与联系
  • 七、SpringCloud版本选择


在这里插入图片描述

一、微服务概述

微服务(MicroServices)最初是由 Martin Fowler 于 2014 年发表的论文 MicroServices提到的,有兴趣的朋友可去看一看

微服务从字面意思上看,即是微小的服务

服务: 实际的是项目中的功能模块,可以解决某一个或一组问题,在开发过程中表现为项目中的一个工程或 Moudle。
微小: 强调的是单个服务的大小,微服务体积小,复杂度低,单个微服务通常只专注于做 单个业务 的功能的服务


二、微服务架构

微服务架构概述:

  • 微服务架构是一种系统架构的设计风格,与传统的单体式架构不同,微服务架构提单一的应用程序拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之前通常使用HTTP 或 API 等轻量级通信机制 进行通讯
  • 这些小型服务通常都是围绕着某个特定的业务进行构建的,每一个服务只专注于做一件事,专业的事交给专业的人来办
  • 每个服务都能够独立地部署到各种环境中
  • 每个服务都能独立启动或销毁而不会对其他服务造成影响
  • 服务可以使用不同数据存储技术,甚至使用不同的编程语言。

微服务的架构特征

  • 单一职责:微服务拆分粒度小,每一个服务都对应唯一的业务能力
  • 独立:团队独立、技术独立、数据独立,独立部署
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

请添加图片描述


三、单体架构

单体架构是微服务架构出现之前业界最经典的软件架构类型,许多早期的项目采用的也都是单体架构。单体架构将应用程序中所有业务逻辑都编写在同一个工程中,最终经过编译、打包,部署在一台服务器上运行**

将业务的所有功能集中在一个项目中开发,打成一个包部署

在这里插入图片描述
特点:

  • 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)

为什么单体架构向微服务架构转型:

  • 随着业务复杂度的提高,采用单体架构的应用程序的代码量也越来越大,导致代码的可读性、可维护性以及扩展性下降。
  • 用户越来越多,程序所承受的并发越来越高,而单体应用处理高并发的能力有限
  • 单体应用将所有的业务都集中在同一个工程中,修改或增加业务都可能会对其他业务造成一定的影响,导致测试难度增加。

四、分布式架构

根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

在这里插入图片描述
特点

  • 松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

五、SpringCloud概述

Spring Cloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud

  • SpringCloud是一款基于 Spring Boot 实现的微服务框架
  • SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
  • SpringCloud被称为构建分布式微服务系统的“全家桶”,它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合
  • 提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理

特点:

  • **微服务:**一种良好的分布式架构方案
  • **优点:**拆分粒度更小、服务更独立、耦合度更低
  • **缺点:**架构非常复杂,运维、监控、部署难度提高

SpringCloud目前有两代实现:

  • 第一代实现:Spring Cloud Netflix
  • 第二代实现:Spring Cloud Alibaba

常见的组件包括
在这里插入图片描述

Spring Cloud 组件描述
Spring Cloud Eureka服务注册中心、服务注册与发现
Spring Cloud Ribbon服务调用,客户端负载均衡组件。
Spring Cloud Netflix Feign基于 Ribbon 和 Hystrix 的声明式服务调用组件。
Spring Cloud Hystrix豪猪哥,容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。
Zuul/Spring Cloud GatewayAPI网关。Zuul和Spring Cloud Gateway都负责请求路由、过滤、安全验证等,作为微服务架构中的入口,统一处理外部请求。其中,Spring Cloud Gateway是Spring Cloud官方推出的第二代网关,性能比Zuul更好。
Spring Cloud Alibaba Nacos服务注册与发现,配置管理,服务管理中心
SpringCloud Alibaba Sentinel流量控制,熔断机制,实时监控
Spring Cloud Alibaba Seata分布式事务管理,事务协调,分布式锁,多种存储方式
Spring Cloud Alibaba Dubbo高性能的Java RPC框架,用于实现微服务之间的远程调用,丰富的配置选项和扩展点,支持多种协议和序列化方式,提供了服务治理功能
Spring Cloud ConfigSpring Cloud 的配置管理工具,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。
Spring Cloud BusSpring Cloud 的事件和消息总线,主要用于在集群中传播事件或状态变化,以触发后续的处理,例如动态刷新配置。
Spring Cloud StreamSpring Cloud 的消息中间件组件,它集成了 Apache Kafka 和 RabbitMQ 等消息中间件,并通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件之间的隔离。通过向应用程序暴露统一的 Channel 通道,使得应用程序不需要再考虑各种不同的消息中间件实现,就能轻松地发送和接收消息。
Spring Cloud SleuthSpring Cloud 分布式链路跟踪组件,能够完美的整合 Twitter 的 Zipkin。

六、SpringBoot和 SpringCloud的区别与联系

  1. 分工不同
  • SpringBoot主要关注单体应用的快速开发,提供了一些基础功能和开发工具;而SpringCloud则是一套完整的微服务解决方案,提供了更多的分布式开发工具和组件
  • SpringBoot适用于开发独立的、单体的应用程序;而SpringCloud则适用于构建复杂的、分布式的微服务系统。
  • SpringBoot主要依赖于Spring框架的核心功能;而SpringCloud则内部集成了众多分布式开发工具和组件,更加适用于微服务架构。
  1. Spring Cloud 是基于 Spring Boot 实现的
  2. Spring Cloud 不能脱离 Spring Boot 单独运行
  3. Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架

七、SpringCloud版本选择

在使用 Spring Boot + Spring Cloud 进行微服务开发时,我们需要根据项目中 Spring Boot 的版本来决定 Spring Cloud 版本,否则会出现许多意想不到的错误。

Spring Boot 与 Spring Cloud 的版本对应关系 2024SpringCloud官网发布
具体可参考https://github.com/spring-cloud/spring-cloud-release/wiki/Supported-Versions#supported-releases

Spring CloudSpring Boot
2023.0.x (Leyton)3.3.x, 3.2.x
2022.0.x (Kilburn)3.0.x, 3.1.x (Starting with 2022.0.3)
2021.0.x (Jubilee)2.6.x, 2.7.x (Starting with 2021.0.3)
2020.0.x (Ilford )2.4.x, 2.5.x (Starting with 2020.0.3)
Hoxton2.2.x, 2.3.x (Starting with SR5)
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x

Spring Cloud 官方已经停止对 Dalston、Edgware、Finchley 和 Greenwich 的版本更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

K8S node节点没有相应的pod镜像运行故障处理办法

查看从节点状态 kubectl describe node k8s-node1以下是报错提示 解决办法 需要处理node1节点上的磁盘空间,磁盘空间需要在85%内 处理后的状态 处理正常

CSS教程(四)- 字体

1、尺寸单位 px 像素单位% 百分比,参照父元素对应属性的值进行计算em 字体尺寸单位,参照父元素的字体大小计算,1em16pxrem字体尺寸单位,参照根元素的字体大小计算,1rem16px 2、字体属性 介绍 CSS Fonts (字体)属性用于定义字体…

使用storcli工具配置RAID,收藏这一篇就够了

正文共:1888 字 28 图,预估阅读时间:2 分钟 前文(怎么把银河麒麟系统装进U盘?)提到,因为国产服务器固件暂不支持直接配置RAID,所以需要使用storcli这个工具来操作。今天就从RAID配置…

Three.js 搭建3D隧道监测

Three.js 搭建3D隧道监测 Three.js 基础元素场景scene相机carema网络模型Mesh光源light渲染器renderer控制器controls 实现3d隧道监测基础实现道路实现隧道实现多个摄像头点击模型进行属性操作实现点击模型发光效果 性能监视器stats引入使用 总结完整代码 我们将通过three.js技…

漫谈分布式唯一ID

文章目录 本系列前言UUIDDB自增主键Redis incr命令号段模式雪花算法 本系列 漫谈分布式唯一ID(本文)分布式唯一ID生成(二):leaf分布式唯一ID生成(三):uid-generator分布式唯一ID生成…

CSS教程(七)- 背景

介绍 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 1 背景颜色 属性名:background-color 作用:指定HTML元素的背景色。 取值:英文颜色、16进制、rgb、rgba、transparent(一般为透明&#…

网络安全SQL初步注入2

六.报错注入 mysql函数 updatexml(1,xpath语法,0) xpath语法常用concat拼接 例如: concat(07e,(查询语句),07e) select table_name from information_schema.tables limit 0,1 七.宽字节注入(如果后台数据库的编码为GBK) url编码:为了防止提交的数据和url中的一些有特殊意…

three.js 杂记

在Three.js中,Object3D是所有3D对象的基类,而Group是Object3D的一个子类。Group的目的是为了简化处理多个对象的集合。当你将对象添加到Group中时,它们会以一个单元格的形式被处理,参与Group的某些操作,例如位置更新、…

一文熟悉新版llama.cpp使用并本地部署LLAMA

0. 简介 最近是快到双十一了再给大家上点干货。去年我们写了一个大模型的系列,经过一年,大模型的发展已经日新月异。这一次我们来看一下使用llama.cpp这个项目,其主要解决的是推理过程中的性能问题。主要有两点优化: llama.cpp …

基于 Python flask 的微博舆论情感分析,微博大数据可视化系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

【编码】【特征选择】【降维】

简要介绍 编码(Encoding) 编码是将原始数据转换为模型能够理解和处理的格式的过程。常见的编码方法包括: 标签编码(Label Encoding): 适用于类别较少的分类数据。将每个类别映射到一个唯一的整数。独热编…

大数据之多级缓存方案

多级缓存介绍?多级缓存优缺点,应用场景?多级缓存架构? 多级缓存介绍 多级缓存方案是一种优化手段,通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析: 一、多级缓…

HBuilderX运行微信小程序,编译的文件在哪,怎么运行

1. 点击HBuilderX顶部的运行-运行到小程序模拟器-微信开发者工具,就会开始编译 2. 编译完成后的文件在根目录找到 unpackage -- dist -- dev -- mp-weixin, 这里面就是编译后的文件,如果未跳转到开发者工具,那可能是没设置启动路径&#xff0…

Git超详细笔记包含IDEA整合操作

git超详细笔记 文章目录 git超详细笔记第1章Git概述1.1、何为版本控制1.2、为什么需要版本控制1.3、版本控制工具1.4 、Git简史1.5、Git工作机制1.6 、Git和代码托管中心 第2章Git安装第3章Git常用命令3.1、设置用户签名3.2、初始化本地库本地库(Local Repository&a…

人工智能理论之opencv图像预处理、数据库、GUI布局的综合应用(图像预处理版块)

文章目录 前言图像预处理卷积核概念图像平滑处理高斯滤波 双边滤波中值滤波Canny边缘检测图像形态学操作形态学梯度顶帽小结 图片预处理1.引入库 图像预处理错误尝试成功运行 总结 前言 对前面学习综合应用的总结,不单是一个版块,而是三个版块综合到一起…

Nginx(编译)+Lua脚本+Redis 实现自动封禁访问频率过高IP

1.安装lua 1.1安装LuaJIT yum install readline-devel mkdir -p lua-file cd lua-file/ wget https://github.com/LuaJIT/LuaJIT/archive/refs/tags/v2.0.5.tar.gz tar -zxvf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 make && make install PREFIX/usr/local/luajit 1.2…

【python程序】恢复曾经删除的QQ说说

是否还能想起曾经的QQ说说,是否还想知道自己以前删除了什么 今天就给大家介绍下这个可以恢复以前删除的QQ说说的 小工具 这个工具是由python编写的,也已经打包好了小程序,一键运行 具体下载地址:https://pan.quark.cn/s/b3f41e3…

【统计子矩阵——部分前缀和+双指针】

题目 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; const int N 510; int s[N][N]; int main() {ios::sync_with_stdio(0);cin.tie(0);int n, m, k;cin >> n >> m >> k;for(int i 1; i < n; i)for(int j 1; j <…

Java版——设计模式笔记

Java版——设计模式笔记 设计模式的分类 创建型模式&#xff08;Creational&#xff09;&#xff1a;关注对象的实例化过程&#xff0c;包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。结构型模式&#xff08;Structur…

多语言电商系统的多语言设计机制

在全球化电商市场中&#xff0c;跨语言沟通是提升用户体验和扩大市场份额的关键。为了满足不同语言用户的需求&#xff0c;构建一个支持多语言的电商系统已成为企业扩展国际市场的重要步骤。多语言电商系统需要能够根据用户的语言偏好自动显示内容&#xff0c;同时保证翻译的准…