SpringCloud篇——什么是SpringCloud、有什么优缺点、学习顺序是什么
文章目录
- 一、首先看官方解释
- 二、Spring Cloud 的项目的位置
- 三、Spring Cloud的子项目
- 四、Spring Cloud 现状
- 五、spring cloud 优缺点
- 六、Spring Cloud 和 Dubbo 对比
- 七、Spring Cloud 学习路线
一、首先看官方解释
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑,裸机数据中心,以及Cloud Foundry等托管平台。
其中有着很多的特性:
Spring Cloud专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖。
- 分布式/版本化配置
- 服务注册和发现
- 路由
- service - to - service调用
- 负载均衡
- 断路器
- 分布式消息传递
Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。
二、Spring Cloud 的项目的位置
Spring Cloud是Spring的一个顶级项目,Spring 的顶级项目列表如下:
-
Spring IO platform:用于系统部署,是可集成的,构建现代化应用的版本平台,具体来说当你使用mavendependency引入spring jar包时它就在工作了。
-
Spring Boot:旨在简化创建产品级的 Spring应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用微服务功能,可以和spring cloud联合部署。
-
Spring Framework:即通常所说的spring 框架,是一个开源的Java/JavaEE全功能栈应用程序框架,其它spring项目如spring boot也依赖于此框架。
-
Spring Cloud:微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包。
-
Spring XD:是一种运行时环境(服务器软件,非开发框架),组合spring技术,如spring batch、springboot、spring data,采集大数据并处理。
-
SpringData:是一个数据访问及操作的工具包,封装了很多种数据及数据库的访问相关技术,包括:jdbc、Redis、MongoDB、Neo4j等。
-
Spring Batch:批处理框架,或说是批量任务执行管理器,功能包括任务调度、日志记录/跟踪等。
-
Spring Security:是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
-
SpringIntegration:面向企业应用集成(EAI/ESB)的编程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。
-
SpringSocial:一组工具包,一组连接社交服务API,如Twitter、Facebook、LinkedIn、GitHub等,有几十个。
-
Spring AMQP:消息队列操作的工具包,主要是封装了RabbitMQ的操作。
-
Spring HATEOAS:是一个用于支持实现超文本驱动的 REST Web 服务的开发库。
-
Spring Mobile:是Spring MVC的扩展,用来简化手机上的Web应用开发。
-
Spring forAndroid:是Spring框架的一个扩展,其主要目的在乎简化Android本地应用的开发,提供RestTemplate来访问Rest服务。
-
Spring Web Flow:目标是成为管理Web应用页面流程的最佳方案,将页面跳转流程单独管理,并可配置。
-
Spring LDAP:是一个用于操作LDAP的Java工具包,基于Spring的JdbcTemplate模式,简化LDAP访问。
-
Spring Session:session管理的开发工具包,让你可以把session保存到redis等,进行集群化session管理。
-
Spring Web Services:是基于Spring的Web服务框架,提供SOAP服务开发,允许通过多种方式创建Web服务。
-
Spring Shell:提供交互式的Shell可让你使用简单的基于Spring的编程模型来开发命令,比如Spring Roo命令。
-
Spring Roo:是一种Spring开发的辅助工具,使用命令行操作来生成自动化项目,操作非常类似于Rails。
-
SpringScala:为Scala语言编程提供的spring框架的封装(新的编程语言,Java平台的Scala于2003年底/2004年初发布)。
-
Spring BlazeDS Integration:一个开发RIA工具包,可以集成AdobeFlex、BlazeDS、Spring以及Java技术创建RIA。
-
Spring Loaded:用于实现java程序和web应用的热部署的开源工具。
-
Spring REST Shell:可以调用Rest服务的命令行工具,敲命令行操作Rest服务。
三、Spring Cloud的子项目

四、Spring Cloud 现状
目前国内使用spring cloud技术公司并不多见,不是因为spring cloud不好,主要原因有以下几点:
- spring cloud 中文文档较少,出现问题网上没有太多的解决方案
- 国内创业型公司技术老大大多是阿里系员工,而阿里系多采用Dubbo来构建微服务架构
- 大型公司基本都有自己的分布式解决方案,而中小型公司的架构很多用不上的微服务,所以没有采用spring cloud的必要性。但是,微服务架构是一个趋势,而spring cloud是微服务解决方案的佼佼者。
五、spring cloud 优缺点
优点:
- 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率
- 可以更精准的制定优化服务方案,提高系统的可维护性
- 微服务架构采用去中心化思想,服务之间采用Restful 等轻量级通讯,比ESB更轻量
- 适于互联网时代,产品迭代周期更短
缺点:
- 微服务过多,治理成本高,不利于维护系统
- 分布式系统开发的成本高(容错、分布式事务等)对团队挑战大
总的来说优点大过于缺点,目前看来SpringCloud是一套非常完善的分布式框架,目前很多企业开始用微服务、Spring Cloud 的优势是显而易见的。因此对于想研究微服务架构的同学来说,学习 Spring Cloud 是一个不错的选择。
六、Spring Cloud 和 Dubbo 对比
Dubbo 只是实现了服务治理,而 Spring Cloud 实现了微服务架构的方方面面,服务治理只是其中的一个方面。下面通过一张图对其进行比较:

可以看出,Spring Cloud 比较全面,而 Dubbo 由于只实现了服务治理,需要集成其他模块,需要单独引入,增加了学习成本和集成成本。
七、Spring Cloud 学习路线
Spring Cloud 基于 Spring Boot,因此在研究 Spring Cloud 之前,首先要学习Spring Boot 的用法,方便后续 Spring Cloud 的学习。
这里暂时先不讲解springboot,默认大家都有基础,后续会间接的增加springboot的系列讲解,也不会讲解 SpringMVC 的用法,因此需要读者对 Spring 及 SpringMVC 有过研究。
学习Springcloud大致可以为四个部分:
- 第一部分初识 Spring Boot,掌握 Spring Boot 基础知识,为后续入门 Spring Cloud 打好基础 。
- 第二部分 Spring Cloud 入门篇,主要介绍 Spring Cloud常用模块,包括服务发现、服务注册、配置中心、链路追踪、异常处理等。
- 第三部分 Spring Cloud进阶篇,介绍大型分布式系统中事务处理、线程安全等问题,并以一个实例项目手把手教大家搭建完整的微服务系统。
- 第四部分 Spring Cloud 高级篇,解析 Spring Cloud 源码,并讲解如何部署基于 Spring Cloud的大型分布式系统。
相关文章:
SpringCloud篇——什么是SpringCloud、有什么优缺点、学习顺序是什么
文章目录一、首先看官方解释二、Spring Cloud 的项目的位置三、Spring Cloud的子项目四、Spring Cloud 现状五、spring cloud 优缺点六、Spring Cloud 和 Dubbo 对比七、Spring Cloud 学习路线一、首先看官方解释 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式…...
TCP核心机制之连接管理详解(三次握手,四次挥手)
目录 前言: 建立连接 建立连接主要两个TCP状态: 断开连接 断开连接的两个重要状态 小结: 前言: TCP是如何建立对端连接,如何断开连接,这篇文章会详细介绍。 建立连接 首先明确连接的概念:…...
前端—环境配置
前端开发建议用 Google Chrome 浏览器 vscode https://code.visualstudio.com 1、open in browser 插件:可以在 vscode 中直接运行查看浏览器效果 2、Live Server 插件:可以使代码修改浏览器页面实时刷新。 用户代码片段 … JavaScript 与 TypeScri…...
大学生常用python变量和简单的数据类型、可迭代对象、for循环的3用法
文章目录变量和简单的数据类型下划线开头的对象删除内存中的对象列表与元组debug三酷猫钓鱼记录实际POS机小条打印使用循环找乌龟可迭代对象📗理解一📘理解二2️⃣什么是迭代器✔️注意3️⃣迭代器对象4️⃣有关迭代的函数for循环的3用法🌸I …...
Java集合:Map的使用
1.Map框架l----Map:双列数据,存储key-value对的数据 ---类似于高中的函数: y f(x)|----HashMap:作为Map的主要实现类, 线程不安全的,效率高;可以存储null的key和value|----LinkedHashMap:保证在遍历map元素时,可以按照…...
【Datawhale图机器学习】第一章图机器学习导论
图机器学习导论 学习路径与必读论文清单 斯坦福CS224W(子豪兄中文精讲)知识图谱实战DeepwalkNode2vecPageRankGNNGCNGragh-SAGEGINGATTrans-ETrans-R 图无处不在 图是描述关联数据的通用语言 举例 计算机网络新冠肺炎流行病学调查传播链食物链地铁图…...
window 配置深度学习环境GPU
CUDA 11.6 CUDNN Anaconda pytorch 参考网址:https://zhuanlan.zhihu.com/p/460806048 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 电脑信息 RTX 2060 GPU0 1. CUDA 11.6 1.1 确认信息 C:\Users\thzn>nvidia-smi (CUDA Versi…...
VS Code 用作嵌入式开发编辑器
使用 Keil MDK 进行嵌入式开发时,Keil 的编辑器相对于主流编辑器而言有些不方便,比如缺少暗色主题、缺少智能悬停感知(鼠标停在一个宏上,能自动展开最终的宏结果)、代码补全不好用等等,所以推荐使用 VS Cod…...
【Python】网络爬虫经验之谈
爬虫经验之谈对爬虫的认识网站分析技术选型JS逆向反爬机制结语近段时间,因为工作需要做一些爬虫的开发,分享一下走过的坑和实战的经验吧!对爬虫的认识 F12查看的网络请求,找到相应的接口查看一下json数据来源和构造。我爬取的网站…...
数学建模美赛【LaTeX】公式、表格、图片
数学建模美赛【LaTeX】公式、表格、图片 1 宏包 \package{ } 就是在调用宏包,对计算机实在外行的同学姑且可以理解为工具箱。 每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的统一排版&a…...
【大数据】YARN节点标签Node Label特性
简介 YARN 的 Node-label 特性能够将不同的机器类型进行分组调度,也可以根据不同的资源要求进行分区调度。运维人员可以根据节点的特性将其分为不同的分区来满足业务多维度的使用需求。YARN的Node-label功能将很好的试用于异构集群中,可以更好地管理和调…...
C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题
这是一个网友咨询的问题,说他想控制默认打开文件之后solidworks上方工具栏的当前激活标签页。 之前我们提到过,制作Solidworks的插件也会在上面增加一个标签页,用来放自己开发的命令,经常开发的人肯定会遇到有时候更新版本,或者标…...
ElasticSearch 7.6.1
疑问 ES为什么这么快? 全文检索 听过一个程序扫描文本的每一个单词,针对单词建立索引,并保存该单词在文本中的位置,以及出现的次数。在检索查询时候,通过建立好的索引进行查询,将索引中单词对应的文本位…...
Linux系列 操作系统安装及服务控制(笔记)
作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.操作系统 1.Linux系统三大类 (1)ubu…...
Linux基础 - NTP时间同步
🏡博客主页: Passerby_Wang的博客_CSDN博客-系统运维,云计算,Linux基础领域博主 🌐所属专栏:『Linux基础』 🌌上期文章: Linux基础 - DNS服务进阶 📰如觉得博主文章写的不错或对你有所帮助…...
golang 入门教程:迷你 Twitter 后端
请记住,这个项目主要是为了稍微熟悉下Golang,您可以复制架构,但该项目缺少适当的 ORM,没有适当的身份验证或授权,我完全无视中间件,也没有测试。 我将在其自己的部分中讨论所有这些问题,但重要的…...
CPP2022-30-期末模拟测试03
6-1 引用作函数形参交换两个整数 分数 5 全屏浏览题目 切换布局 作者 李廷元 单位 中国民用航空飞行学院 设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作。 裁判测试程序样例: #include <…...
华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...
二叉搜索树
1.二叉搜索树 1.1.二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有一下性质的二叉树。 若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上的所有节点的值都…...
数据结构(三):集合、字典、哈希表
数据结构(三)一、集合(Set)1.封装一个集合类2.集合常见的操作(1)并集(2)交集(3)差集(4)子集二、字典(Map)三、…...
自媒体人利器:OpenClaw+百川2-13B自动生成短视频脚本
自媒体人利器:OpenClaw百川2-13B自动生成短视频脚本 1. 为什么需要自动化脚本生成工具 作为一个每天需要产出3-5条短视频的自媒体创作者,我经常陷入创意枯竭和重复劳动的困境。传统的工作流程需要手动搜索热点、构思脚本、撰写分镜,这个过程…...
零基础玩转OpenClaw:星图平台百川2-13B镜像+自动化初体验
零基础玩转OpenClaw:星图平台百川2-13B镜像自动化初体验 1. 为什么选择星图平台OpenClaw组合 作为一个长期被本地环境配置折磨的技术爱好者,当我第一次听说星图平台提供预装OpenClaw和百川2-13B模型的"开箱即用"镜像时,内心是充满…...
SEO_从基础到进阶的SEO完整优化方案介绍
SEO基础:理解SEO的核心概念和基本原则 在当今互联网时代,SEO(搜索引擎优化)是每个网站拥有良好流量和高曝光度的关键。本文将从基础到进阶,为你介绍一个完整的SEO优化方案。我们将一步步深入了解SEO的核心概念和基本原…...
豆包geo优化系统,源码开发搭建解析
豆包Geo优化系统解析豆包Geo优化系统通常指基于地理位置(Geo)数据的智能优化系统,可能涉及路径规划、区域划分、资源分配等场景。以下是其核心开发搭建要点:系统架构设计采用微服务架构,模块化设计便于扩展:…...
RuoYi-Vue-Plus:现代化企业级开发框架的架构演进与分布式多租户解决方案
RuoYi-Vue-Plus:现代化企业级开发框架的架构演进与分布式多租户解决方案 【免费下载链接】RuoYi-Vue-Plus 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue-Plus 面对企业应用开发中普遍存在的分布式架构复杂性、多租户数据隔离难题以及传统框…...
不止是编译:深入理解OpenHarmony XTS测试套件(acts/hats/dcts)与你的代码质量守护
不止是编译:深入理解OpenHarmony XTS测试套件与代码质量守护 在OpenHarmony生态系统中,代码质量保障从来不是简单的编译通过就能解决的问题。当我们谈论XTS测试套件时,很多开发者第一反应是"如何编译运行",却忽略了这套…...
别再死记硬背了!用Python+NumPy手动画出OFDM正交子载波,秒懂频分复用原理
用PythonNumPy手绘OFDM正交子载波:从数学公式到动态可视化的沉浸式学习 在通信工程领域,正交频分复用(OFDM)技术如同一位优雅的舞者,在频谱的舞台上展现着精妙的协调性。这种技术不仅是现代4G/5G和Wi-Fi系统的核心,更是理解数字通…...
LeetCode1170题解:预处理+二分查找
LeetCode第1170题[比较字符串最小字母出现频次] 典型的先预处理,再二分统计 题目本质: 对于每个 queries[i],计算:有多少个 word 满足 f(queries[i]) < f(word) 也就是:先求出查询串的 f 再去 words 里数有多少个…...
Kotlin协程flow缓冲buffer任务流,批次任务中选取优先级最高任务最先运行(十)
Kotlin协程flow缓冲buffer任务流,批次任务中选取优先级最高任务最先运行(十) 在 https://blog.csdn.net/zhangphil/article/details/159286201 基础上改进,简化LoadMgr提交简单任务的方法 。 Kotlin协程Flow结合缓冲(buffer)实现…...
Java不同集合之间的区别
一、核心接口体系List接口实现类特性ArrayListLinkedListVector底层结构动态数组双向链表动态数组(线程安全)查询性能O(1) 快速O(n) 较慢O(1) 快速插入/删除尾部快O(1),中间慢O(n)两端快O(1),中间慢O(n)尾部快O(1),中间…...
