当前位置: 首页 > 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的大型分布式系统。
http://www.lryc.cn/news/6527.html

相关文章:

  • TCP核心机制之连接管理详解(三次握手,四次挥手)
  • 前端—环境配置
  • 大学生常用python变量和简单的数据类型、可迭代对象、for循环的3用法
  • Java集合:Map的使用
  • 【Datawhale图机器学习】第一章图机器学习导论
  • window 配置深度学习环境GPU
  • VS Code 用作嵌入式开发编辑器
  • 【Python】网络爬虫经验之谈
  • 数学建模美赛【LaTeX】公式、表格、图片
  • 【大数据】YARN节点标签Node Label特性
  • C# SolidWorks二次开发 API-命令标签页的切换与按钮错乱问题
  • ElasticSearch 7.6.1
  • Linux系列 操作系统安装及服务控制(笔记)
  • Linux基础 - NTP时间同步
  • golang 入门教程:迷你 Twitter 后端
  • CPP2022-30-期末模拟测试03
  • 华为OD机试真题Python实现【最多等和不相交连续子序列】真题+解题思路+代码(20222023)
  • 二叉搜索树
  • 数据结构(三):集合、字典、哈希表
  • Linux内核驱动开发(一)
  • TCP/IP协议二十问
  • 常用Array数组操作方法
  • 【C++】set/multiset、map/multimap的使用
  • vue3语法
  • 对象之间的关系
  • 云原生时代顶流消息中间件Apache Pulsar部署实操-上
  • Python实现基于openCV+百度智能云平台实现《1:N人脸考勤机》文章最后附带源码!
  • 因为锁的问题,我们被扣了1万
  • 【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
  • 浏览器渲染中的相关概念