SpringCloud生态体系介绍

news2024/11/21 1:24:54

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

SpringCloud3要求JDK最低版本为OpenJDK 17。

必要说明

SpringCloud2(2021.x及2021.x之前的版本)和SpringCloud3(2022.
x及2022.x之后的版本)并不兼容,这意味着如果您的项目最开始是基于V2版本构建的,需要升级到V3版本,除了更改SpringCloud版本外,还需更改很多其它集成依赖jar包的版本,同时还需要考虑服务器JDK版本,So,如果不是新项目不建议升级,。

本专题环境

系统

  • Mac OS 12.7.4
  • Intellij Idea 2024.1.1
  • OpenJDK 17.0.11
  • Docker Desktop 4.29.0

Spring

  • Springboot starter 3.2.4
  • SpringCloud 2023.0.1
  • Alibaba SpringCloud 2023.0.1.1

中间件

  • Apache Maven 3.9.6
  • Mysql 8.0.52
  • Nacos 2.3.2
  • Consul 1.18.0
  • Sentinel dashboard 1.8.7

帮助文档

Spring、Springboot、Springboot starter、Springcloud、jdk存在版本兼容关系,同样的Alibaba Springcloud也与上述几个框架存在版本对应关系。详细可查看下列官网说明:

  • https://spring.io/projects/spring-cloud
  • https://sca.aliyun.com/docs/2023/user-guide/ai/quick-start/

生态体系

整体架构

在这里插入图片描述

  1. Spring体系中存在下面这样的演进依赖关系:Spring -> Spring Boot > Spring Cloud ;
  2. Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot;
  3. Spring Boot专注于快速、方便集成的单个个体微服务,Spring Cloud是关注全局的服务治理框架;

核心项目

  • Spring Cloud Config :集中配置管理工具,分布式系统中统一的外部配置管理,默认使用Git来存储配置,可以支持客户端配置的刷新及加密、解密操作。

  • springcloud netflix:Netflix OSS 开源组件集成,包括Eureka、Hystrix、Ribbon、Feign、Zuul等核心组件。主要用于微服务架构中的服务治理

    • Eureka:服务治理组件,包括服务端的注册中心和客户端的服务发现机制;
    • Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用策略;
    • Hystrix:服务容错组件,实现了断路器模式,为依赖服务的出错和延迟提供了容错能力;
    • Feign:基于Ribbon和Hystrix的声明式服务调用组件;
    • Zuul:API网关组件,对请求提供路由及过滤功能。
  • Spring Cloud Bus:用于传播集群状态变化的消息总线,使用轻量级消息代理链接分布式系统中的节点,可以用来动态刷新集群中的服务配置。

  • Spring Cloud Consul :基于Hashicorp Consul 的服务发现和配置管理。

  • Spring Cloud Security :安全工具包,对Zuul代理中的负载均衡OAuth2客户端及登录认证进行支持

  • Spring Cloud Sleuth :Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。

  • Spring Cloud Stream :一个轻量级的事件驱动型微服务框架,用于快速构建可连接到外部系统的应用程序。使用 Apache Kafka 或 RabbitMQ 在 Spring Boot 应用程序之间发送和接收消息的简单声明性模型。

  • Spring Cloud Task :一个短期的微服务框架,用于快速构建执行有限量数据处理的应用程序。用于向 Spring Boot 应用程序添加功能性和非功能性功能的简单声明。

  • Spring Cloud Zookeeper :使用 Apache Zookeeper 进行服务发现和配置管理。

  • Spring Cloud Gateway :Spring Cloud Gateway 是一款基于 Spring Framework 和 Spring Boot 的智能可编程路由器。API网关组件,对请求提供路由及过滤功能。

  • Spring Cloud OpenFeign :基于Ribbon和Hystrix的声明式服务调用组件,可以动态创建基于Spring MVC注解的接口实现用于服务调用;

了解微服务

简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。被拆分成的每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护着自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通信协作基础,所以这些微服务可以使用不同的语言来编写。

同时也带来了三个问题

  • 运维新挑战,应用数量增多,运维过程需要大量的自动化,同时也需要开发能力来开发编排类的服务
  • 接口一致性,接口和调用变了,但原业务逻辑没变
  • 分布式的复杂性,由单进程变成了多进程,需要通信,而通信就会引出延迟、异步等问题

一般要实施时需要以下几种方式的配合

  • 服务组件化
  • 按业务组织团队,而不是职能
  • 做产品的态度,而不是做项目的态度
  • 更粗粒度的通信方式,比如RPC或MQ
  • 去中心化治理,每个应用按需选择,而不是一刀切,这样有可能会浪费资源
  • 去中心化数据管理,分区,分表等,使数据管理更细化
  • 基础设施自动化,主要是测试和部署
  • 容错和故障寻源的能力,要求强大的恢复和监控能力
  • 演进式设计,但不允许带故障发布

了解SpringCloud项目

基于以上理解,我们可以从微服务角度重新审视下SpringCloud相关的项目分类:

类目作用可选组件
注册中心注册中心主要用于服务治理,提供了服务的注册与发现功能,微服务架构中的服务可以注册到注册中心,也可以通过注册中心获取到其他服务的信息。Eureka、Consul、Nacos(推荐)
配置中心配置中心主要用于提供统一的外部配置管理,微服务架构中的服务可以从配置中心获取配置信息,同时支持动态刷新配置。SpringCloud Config、Consul、Nacos (推荐)
服务网关API网关主要用于为微服务架构中的服务提供统一的外部访问入口,实现请求的路由与过滤功能。Zuul、Gateway(推荐)
服务负载均衡微服务架构中有的服务会部署多个,Ribbon提供了服务间调用的客户端负载均衡功能,OpenFeign基于Ribbon提供了声明式的服务间调用,可简化开发流程,同样的他们需要注册中心的配合。 在功能上和Ribbon差不太多,只是不需要RestTemplate声明了。Ribbon、OpenFeign(推荐)
链路跟踪Spring Cloud应用程序的分布式请求链路跟踪,支持使用Zipkin、HTrace和基于日志(例如ELK)的跟踪。SpringCloud Sleuth
熔断与限流熔断与限流是对微服务架构中服务的一种保护措施,当系统中有故障发生时,可以防止故障的蔓延。Hystrix、Sentinel(推荐)
安全保护Spring Cloud Security 为构建安全的SpringBoot应用提供了一系列解决方案,结合Oauth2可以实现单点登录、服务安全保护等功能,可以很好地保护微服务架构中的服务。Spring Cloud Security (推荐)
监控中心微服务架构中,当一次业务操作需要操作多个数据源或需要进行远程调用时就会产生分布式事务问题,Seata可以很好地解决该问题。Spring Boot Admin
分布式事务微服务架构中,当一次业务操作需要操作多个数据源或需要进行远程调用时就会产生分布式事务问题,Seata可以很好地解决该问题。Seata (推荐)

读懂springCloud版本

Spring Cloud是一个由许多子项目组成的综合项目,各子项目有不同的发布节奏。 为了管理Spring Cloud与各子项目的版本依赖关系,发布了一个清单,其中包括了某个Spring Cloud版本对应的子项目版本。

Spring Cloud版本最开始采用了伦敦地铁站的名字而非版本号来命名,例如Angel是第一个版本,Brixton是第二个版本。 当Spring Cloud的发布内容积累到临界点或者一个重大BUG被解决后,会发布一个"service releases"版本,简称SRX版本。

从Hoxton版本后,Spring Cloud的版本号从地铁名称改成了时间的命名方式,目前Spring Cloud的最新版本是2023.0.1。
在这里插入图片描述

开发相关

JDK版本的选择

Spring Boot 3.0 本次带来最大的改动就是 GraalVM 原生镜像的支持,也是官方文档中强调的他们花费时间精力比较多的部分。 GraalVM 技术作为 JRE 的替代方案,其通过预先编译(Ahead Of Time,AOT)等技术对 Java 应用进行预先编译,让 Spring 在运行应用时掌握更多应用有关的信息,让整个应用启动速度更快。

另外,通过编译工具在编译过程中通过消除一些不必要的内容可以让最终的应用更小,占用内存更低。对于一些对启动速度要求非常高的场景,比如 Serverless、FaaS 场景非常友好! 本次 Spring Boot 3.0 直接将其正式从 Spring Native 迁入到 Spring Boot 中来,也预示着该项技术开始逐渐走向成熟,Spring 生态开始迈入 GraalVM 阶段! 跟 JVM 编译部署方式相比,GraalVM 具有以下特点:

  • 在应用构建阶段,从主入口点就开始进行应用程序的静态分析。
  • 创建本机镜像时,通过代码分析,会将无法访问的代码删除,并且不会成为可执行文件的一部分,从而可在一定程度上压缩程序包大小。
  • GraalVM 无法直接感知代码的动态元素,因此对于存在反射、序列化和动态代理的应用程序,需要提前提供相关 hint 配置文件,帮助解析应用程序,相关操作过程可参考官方文档。
  • 应用程序类路径在构建时是固定的,不能更改。
  • 没有惰性类加载,可执行文件中的所有内容都将在启动时加载到内存中。
  • 支持的 Java 应用程序在某些方面存在一些限制,因此目前并不能保证之前的 Java 应用都可直接使用 GraalVM 技术进行应用构建,有一定概率会存在不兼容的异常情况。

常用开发命令

没太好分类,主要是开发调度过程中有可能会使用的命令。

  • HomeBrew
    • 安装的软件位置:/usr/local/Cellar/
    • 安装的软件配置文件位置:/usr/local/etc/
brew search softName
brew services start/stop/list
  • Linux
lsof -i :15001
ps -ef | grep java
kill -9 pid 

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

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

相关文章

15 华三华为链路聚合综述

1 链路聚合简介 以太网链路聚合通过将多条以太网物理链路捆绑在一起形成一条以太网逻辑链路,实现增加链路带宽的目的,同时这些捆绑在一起的链路通过相互动态备份,可以有效地提高链路的可靠性。 2 成员端口的状态 聚合组内的成员端口具有以下…

ChatGLM3-6B部署与微调及微调后使用

记录ChatGLM3-6B部署及官方Lora微调示例详细步骤及如何使用微调后的模型进行推理 一、下载代码 使用git clone 命令下载源码 git clone https://github.com/THUDM/ChatGLM3.git 如图所示 二、下载模型 模型权重文件从魔塔进行下载,不需要翻墙。权重文件比较大&…

Linux(利用gdb进行调试)

gdb: gdb是GNU debugger的缩写,是编程调试工具。 gdb功能 1.启动程序,可以按照用户自定义的要求随心所欲的运行程序。 2.让被调试的程序在用户所指定的调试的断点处停住 (断点可以是条件表达式)。 3.当程序停住时,可以检查此时程序中所发…

云衔科技成为卓豪Zoho中国区代理商,开启智能化企业管理新篇章

每一家企业数字化转型,都在寻求通过技术创新实现业务的飞跃。为了更好地服务于中国企业的数字化转型需求,云衔科技荣幸宣布正式成为卓豪Zoho中国区代理商,这一强强联合将为市场带来全新的数字化解决方案与服务体验,共同开启中国企…

【PyTorch单点知识】深入理解与应用转置卷积ConvTranspose2d模块

文章目录 0. 前言1. 转置卷积概述2. nn.ConvTranspose2d 模块详解2.1 主要参数2.2 属性与方法 3. 计算过程(重点)3.1 基本过程3.2 调整stride3.3 调整dilation3.4 调整padding3.5 调整output_padding 4. 应用实例5. 总结 0. 前言 按照国际惯例&#xff0…

什么是FMEA的分析范围?——FMEA软件

免费试用FMEA软件-免费版-SunFMEA FMEA的分析范围广泛而深入,涵盖了产品设计、制造过程、供应链管理以及使用和维修等多个方面。 产品设计是FMEA分析的重要一环。在设计阶段,FMEA能够帮助工程师识别潜在的设计缺陷,并预测这些缺陷可能对产品…

Bugku Crypto 部分题目简单题解(三)

where is flag 5 下载打开附件 Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ 看着像base64解码 尝试后发现,使用在线工具无法解密 编写脚本 import base64enc Gx8EAA8SCBIfHQARCxMUHwsAHRwRHh8BEQwaFBQfGwMYCBYRHx4SBRQdGR8HAQ0QFQ tex…

ArcGIS10.2能用了10.2.2不行了(解决)

前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字,不排版了。 昨晚(2021\12\17)12点后,收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的,今天全单位崩溃。​提示许…

智慧公厕,小民生里的“大智慧”!

公共厕所是城市社会生活的基础设施,而智慧公厕则以其独特的管理模式为城市居民提供更优质的服务。通过智能化的监测和控制系统,智慧公厕实现了厕位智能引导、环境监测、资源消耗监测、安全防范管理、卫生消杀设备、多媒体信息交互、自动化控制、自动化清…

OpenCV 入门(四)—— 车牌号识别

OpenCV 入门系列: OpenCV 入门(一)—— OpenCV 基础 OpenCV 入门(二)—— 车牌定位 OpenCV 入门(三)—— 车牌筛选 OpenCV 入门(四)—— 车牌号识别 OpenCV 入门&#xf…

DiskCatalogMaker for Mac:高效管理磁盘文件助手

DiskCatalogMaker for Mac,助您高效管理磁盘文件,让文件整理变得轻而易举!这款软件以其出色的性能和人性化的设计,赢得了广大Mac用户的喜爱。 DiskCatalogMaker支持多种磁盘格式,让您轻松管理硬盘、U盘、光盘等存储设备…

LaTeX公式学习笔记

\sqrt[3]{100} \frac{2}{3} \sum_{i0}^{n} x^{3} \log_{a}{b} \vec{a} \bar{a} \lim_{x \to \infty} \Delta A B C

基于Springboot的微乐校园管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的微乐校园管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…

Python尝试安装 pyaudio 时遇到的错误信息表示安装过程失败,原因是找不到 Python.h 头文件

环境: Python 3.8.10 WSL2 问题描述: 尝试安装 pyaudio 时遇到的错误信息表示安装过程失败,原因是找不到 Python.h 头文件 error: subprocess-exited-with-error Building wheel for pyaudio (pyproject.toml) did not run successfully…

组合模式(结构型)

目录 一、前言 二、透明组合模式 三、安全组合模式 四、总结 一、前言 组合模式(Composite Pattern)是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式由以下角色组成…

数据库调优-SQL语句优化

2. SQL语句优化 sql 复制代码 # 请问这两条SQL语句有什么区别呢?你来猜一猜那条SQL语句执行查询效果更好! select id from sys_goods where goods_name华为 HUAWEI 麦芒7 魅海蓝 6G64G 全网通; ​ select id from sys_goods where goods_id14967325985…

(九)JSP教程——pageContext对象

pageContext对象是由JSP容器创建并初始化的,相当于当前页面的容器,它可以访问当前页面中的所有对象。它的主要作用是为JSP页面包装上下文,并用于管理属于JSP的特殊可见部分中已命名对象的访问。 一般情况下,使用该对象的应用并不多…

netty配置SSL、netty配置https(开发)

netty配置SSL、netty配置https(开发) 我们在开发下使用ssl,所用的证书将不被客户端信任。 转自:https://lingkang.top/archives/netty-pei-zhi-ssl 方案一 快速。使用netty提供的临时签发证书 private static SslContext sslC…

富士Apeos 2350 NDA复印机报062 360代码故障

故障描述: 富士Apeos 2350 NDA复印机新机器刚拆箱安装,开机正常,自检扫描头一卡一卡的往前动几下就不动了、扫描灯也不亮扫描头也不能正常复位;按机器的复印键直接报062 360代码; 解答: 此代码为扫描故障&a…

unreal engine4 创建动画蒙太奇

UE4系列文章目录 文章目录 UE4系列文章目录前言一、创建动画蒙太奇 前言 动画蒙太奇的官方解释:Animation Montages are animation assets that enable you to combine animations in a single asset and control playback using Blueprints.You can use Animation…