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

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不好,主要原因有以下几点:

  1. spring cloud 中文文档较少,出现问题网上没有太多的解决方案
  2. 国内创业型公司技术老大大多是阿里系员工,而阿里系多采用Dubbo来构建微服务架构
  3. 大型公司基本都有自己的分布式解决方案,而中小型公司的架构很多用不上的微服务,所以没有采用spring cloud的必要性。但是,微服务架构是一个趋势,而spring cloud是微服务解决方案的佼佼者。

五、spring cloud 优缺点

优点:

  1. 服务拆分粒度更细,有利于资源重复利用,有利于提高开发效率
  2. 可以更精准的制定优化服务方案,提高系统的可维护性
  3. 微服务架构采用去中心化思想,服务之间采用Restful 等轻量级通讯,比ESB更轻量
  4. 适于互联网时代,产品迭代周期更短

缺点:

  1. 微服务过多,治理成本高,不利于维护系统
  2. 分布式系统开发的成本高(容错、分布式事务等)对团队挑战大

总的来说优点大过于缺点,目前看来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是如何建立对端连接,如何断开连接,这篇文章会详细介绍。 建立连接 首先明确连接的概念&#xff1a…...

前端—环境配置

前端开发建议用 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&#xff0c;该函数有两个引用类型的参数&#xff0c;函数功能为实现两个整数交换的操作。 裁判测试程序样例&#xff1a; #include <…...

华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(Python)真题目录汇总华为OD机试(JAVA)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出说明示例二输入输出说明...

二叉搜索树

1.二叉搜索树 1.1.二叉搜索树概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一颗空树&#xff0c;或者是具有一下性质的二叉树。 若它的左子树不为空&#xff0c;则左子树上的所有节点的值都小于根节点的值。若它的右子树不为空&#xff0c;则右子树上的所有节点的值都…...

数据结构(三):集合、字典、哈希表

数据结构&#xff08;三&#xff09;一、集合&#xff08;Set&#xff09;1.封装一个集合类2.集合常见的操作&#xff08;1&#xff09;并集&#xff08;2&#xff09;交集&#xff08;3&#xff09;差集&#xff08;4&#xff09;子集二、字典&#xff08;Map&#xff09;三、…...

基于ChatGPT GPTs的AI辅助开发实战:从零构建智能代码生成器

背景痛点&#xff1a;传统开发流程中的效率瓶颈 作为一名开发者&#xff0c;我们每天都在与代码打交道。但你是否也经常遇到这些令人头疼的场景&#xff1f; 需求理解偏差&#xff1a;产品经理用自然语言描述了一个复杂功能&#xff0c;你花了大半天时间反复沟通&#xff0c;…...

OpenClaw性能监控:GLM-4.7-Flash响应延迟可视化方案

OpenClaw性能监控&#xff1a;GLM-4.7-Flash响应延迟可视化方案 1. 为什么需要监控OpenClaw性能 上周三凌晨两点&#xff0c;我被一阵急促的报警声惊醒。手机屏幕上显示着OpenClaw任务队列积压的警告——我的自动化内容发布流程卡在了"生成摘要"环节。这已经是本月…...

上海本凡科技引领小程序开发行业,凭实力成为最受欢迎的公司

上海本凡科技在小程序开发行业中取得的成就&#xff0c;可以归结为对客户需求的深刻理解和快速响应。公司致力于构建灵活易用的小程序&#xff0c;满足不同客户的商业目标。通过持续关注市场变化和用户反馈&#xff0c;本凡科技快速调整开发策略&#xff0c;以确保其产品始终符…...

微信小程序毕业设计基于微信小程序的郑大强上门做菜预定服务平台

前言 随着人们生活水平的提高和生活节奏的加快&#xff0c;便捷、高品质的餐饮服务需求日益增长。郑大强上门做菜预定服务应运而生&#xff0c;旨在为客户提供更加个性化、高品质的餐饮体验。然而&#xff0c;传统的预定方式存在信息不透明、沟通不便、订单管理混乱等问题。为了…...

【测试基础-Bug篇】09-测试用例的评审和测试执行之Bug定义及Bug生命周期及Bug管理流程

补充之前遗留的知识&#xff1a; 前面我们已经学习过了测试需求分析->测试用例的设计。 那现在我们先补充测试用例的评审和执行测试。测试用例的评审 对测试用例进行评审 评审的目的是什么&#xff1f; 关于用例的准确性&#xff1a;要求我们用例覆盖的需求跟项目的需求一致…...

OpenClaw移动端管理:百川2-13B-4bits模型任务远程监控方案

OpenClaw移动端管理&#xff1a;百川2-13B-4bits模型任务远程监控方案 1. 为什么需要移动端管理OpenClaw任务&#xff1f; 去年冬天的一个深夜&#xff0c;我正在外地出差&#xff0c;突然接到同事紧急消息&#xff1a;"那个自动生成周报的脚本好像卡住了&#xff0c;客…...

Chat模型微调实战:基于AI辅助开发的高效调参指南

最近在做一个智能客服项目&#xff0c;需要基于一个预训练的Chat模型进行微调&#xff0c;以适应我们特定的业务对话场景。一开始&#xff0c;我天真地以为微调就是改改学习率、跑几轮训练那么简单&#xff0c;结果很快就陷入了“调参地狱”。手动调整超参数不仅耗时&#xff0…...

番茄小说下载器:用Rust打造的全能离线阅读解决方案

番茄小说下载器&#xff1a;用Rust打造的全能离线阅读解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否曾经在地铁上看到精彩的小说章节却因网络信号不佳而中断&…...

告别Apache POI!用EasyExcel实现多sheet模板填充的3种高效方法

告别Apache POI&#xff01;用EasyExcel实现多sheet模板填充的3种高效方法 在Java开发中&#xff0c;处理Excel文件是常见的需求&#xff0c;尤其是需要生成包含多个sheet的复杂报表时。传统上&#xff0c;Apache POI是处理Excel文件的主流选择&#xff0c;但其API复杂、内存消…...

NanoMsg vs ZeroMQ:轻量级通信库选型指南(性能对比+迁移成本分析)

NanoMsg vs ZeroMQ&#xff1a;轻量级通信库选型指南&#xff08;性能对比迁移成本分析&#xff09; 在构建分布式系统或微服务架构时&#xff0c;选择合适的通信库往往决定了系统的可扩展性和维护成本。NanoMsg和ZeroMQ作为两款轻量级、高性能的通信库&#xff0c;经常被开发者…...