SpringCloud生态体系介绍

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

必要说明

注意事项

SpringCloud2和SpringCloud3(现命名版本号为2023.x.x)并不兼容,这意味着如果您的项目最开始是基于V2版本构建的,如果要升级到V3版本,除了更改SpringCloud版本号,还要更改很多其它集成插件的版本。

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

本专题环境

  • Springboot starter 3.2.4
  • SpringCloud 2023.0.1
  • Alibaba SpringCloud 2023.0.1
  • OpenJDK 17.0.11
  • Intellij Idea 2024.1.1
  • Mysql 8.0.52

上述spring、springboot、springboot starter、springcloud、jdk存在版本兼容关系,详细可查官网,同样的alibaba springcloud也与jdk等有对应关系。

帮助文档

  • https://spring.io/projects/spring-cloud
  • https://github.com/alibaba/spring-cloud-alibaba
  • https://github.com/spring-cloud/spring-cloud-release/releases/tag/v2023.0.1

生态体系

整体架构

在这里插入图片描述

  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相关的项目分类:

类目作用可选组件
注册中心注册中心主要用于服务治理,提供了服务的注册与发现功能,微服务架构中的服务可以注册到注册中心,也可以通过注册中心获取到其他服务的信息。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
#软件服务
brew services start/stop/list

# 用brew安装的软件位置:/usr/local/Cellar/
# 用brew安装的软件配置文件位置:/usr/local/etc/
  • Linux
lsof -i :15001
ps -ef | grep java
kill -9 pid 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试经典 150 | 图】除法求值

文章目录 写在前面Tag题目来源解题思路方法一:广度优先搜索 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容…

2024年第二十六届“华东杯”(B题)大学生数学建模挑战赛|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看华东杯 (B题)! 第一个问题…

CI/CD笔记.Gitlab系列.新用户管理

CI/CD笔记.Gitlab系列 新用户管理 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_285502…

使用CNN或resnet,分别在flower5,flower17,flower102数据集上实现花朵识别分类-附源码-免费

前言 使用cnn和resnet实现了对flower5,flower17,flower102数据集上实现花朵识别分类。也就是6份代码,全部在Gitee仓库里,记得点个start支持谢谢。 本文给出flower17在cnn网络实现,flower102在resnet网络实现的代码。…

正则表达式-前瞻和后顾

正则表达式中的前瞻和后顾。 前瞻(Lookahead) 前瞻是一种断言,它会检查在当前位置之后是否存在某种模式,但不会实际匹配该模式。前瞻有两种形式: 正向前瞻 (?pattern) 检查当前位置之后是否存在指定的模式如果存在,则匹配成功,但不会消耗该模式例如 \w(?\d) 将匹配后面跟数…

Mysql 8.0.33 迁移至 Postgresql 16.2

小伙伴们,你们好,我是老寇,我又回来,几个月不见,甚是想念啊!!!! 这不,云平台需要改造,将Mysql替换成Postgresql,话说回来&#xff0c…

步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation

摘要: 视角变化导致步态外观存在显着差异。因此,识别跨视图场景中的步态是非常具有挑战性的。最近的方法要么在进行识别之前将步态从原始视图转换为目标视图,要么通过蛮力学习或解耦学习提取与相机视图无关的步态特征。然而,这些方法有许多约…

【管理篇】如何处理团队里的老资格员工和高能力员工?

目录标题 两类员工对比🤺老资格员工高能力员工 作为领导你应该怎么做? 在管理团队时,处理老资格员工和高能力员工是一项至关重要的任务。这两类员工在团队中扮演着不同的角色和有着不同的需求,因此需要针对性的管理和激励。下面将…

程序设计——前后端分离实现简单表白墙

文章目录 一、前端页面样式代码二、前后端衔接1. 后端创建 maven 项目2. 针对前后端交互的解释以及后端代码的实现针对 post 请求解释前后端衔接针对 Get 请求解释前后端衔接 3.后端与数据库的联系以及对数据的存取单独封装数据库连接代码解释后端存储 save 数据的代码解释后端…

神经网络中的算法优化(皮毛讲解)

抛砖引玉 在深度学习中,优化算法是训练神经网络时至关重要的一部分。 优化算法的目标是最小化(或最大化)一个损失函数,通常通过调整神经网络的参数来实现。 这个过程可以通过梯度下降法来完成,其中梯度指的是损失函数…

【Unity】位图字体制作工具:蒲公英

一般来讲,如果需要制作位图字体,一般是使用 BMFont 这种第三方工具:BMFont - AngelCode.comhttp://www.angelcode.com/products/bmfont/ 然而这个工具对于非程序员来说,操作起来较为繁琐困难。每次美术修改了字体之后&…

【短剧在线表格搜索-附模板】

短剧在线表格搜索-附模板 介绍电脑界面手机界面送附加功能:反馈缺失短剧送:资源更新源头获取 介绍 你好! 这是你第一次使用 金山在线文档 所生成的短剧搜索表格,支持批量导入自己转存的短剧名字和链接,实现在线搜索&a…

【AI】openai-quickstart 运行Jupyter Lab

openai-quickstart/openai_api /README-CN.md 【AI】指定python3.10安装Jupyter Lab 可以安装3.10版本的jupyter lab 但是直接输入命令无法启动 突然发现自己电脑2023年安装过anaconda3 C:\ProgramData\anaconda3\python.exe C:\ProgramData\anaconda3\cwp.py C:\ProgramData…

一款开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验

Snap.Hutao 胡桃工具箱是一款以 MIT 协议开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验。通过将既有的官方资源与开发团队设计的全新功能相结合,提供了一套完整且实用的工具集,且无需依赖任何移动设…

WordPress MasterStudy LMS插件 SQL注入漏洞复现(CVE-2024-1512)

0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress Plugin MasterStudy LMS 3.2.5 版本及之…

SpringCloudAlibaba:4.1云原生网关higress的搭建

概述 简介 Higress是基于阿里内部的Envoy Gateway实践沉淀、以开源Istio Envoy为核心构建的下一代云原生网关, 实现了流量网关 微服务网关 安全网关三合一的高集成能力,深度集成Dubbo、Nacos、Sentinel等微服务技术栈 定位 在虚拟化时期的微服务架构…

STM32 PWM波定时溢出中断

打开定时器和中断 主函数初始化开启PWM和中断 HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, Pwm_data); HAL_TIM_Base_Start_IT(&htim2); 回调函数中判断是否为tim2 void HAL_TIM_PeriodElapsedCallback(TIM_Han…

【ARM】ARM寄存器和异常处理

1.指令的执行过程 (1)一条指令的执行分为三个阶段 1.取址: CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回 到CPU中的指令寄存器(IR) 2.译码: 译码器对IR中的指令…

51单片机入门:DS1302时钟

51单片机内部含有晶振,可以实现定时/计数功能。但是其缺点有:精度往往不高、不能掉电使用等。 我们可以通过DS1302时钟芯片来解决以上的缺点。 DS1302时钟芯片 功能:DS1302是一种低功耗实时时钟芯片,内部有自动的计时功能&#x…

裸金属服务器,云用户的新体验

定义 裸金属服务器(Bare Metal Server),是一台既具有传统物理服务器特点的硬件设备,又具备云计算技术的虚拟化服务功能,是硬件和软件优势结合的产物。可以为企业提供专属的云上物理服务器,为核心数据库、关…