Spring Cloud简介
一.本文介绍
Web应用由最早的单体应用发展成为集群式的部署,再到现在的分布式系统。尤其是这两年分布式相关的技术发展的很快,一方面是以Dubbo为代表的,另一方面则是以Spring Cloud系列为代表的。这两种技术栈各自有自己的特点,拿Dubbo来说基本上都是以zookeeper作为服务注册发现组件,基于RPC进行数据交换,虽然这样的传输效率较高但同样的却有跨平台跨语言的问题。而Spring Cloud一般以Eureka作为服务注册发现组件,基于Http进行数据交换虽然牺牲了一定的效率却实现了跨平台的效果。本文主要介绍Spring Cloud的相关知识。
二.Spring Cloud的特点及介绍
尽管Spring Cloud带有“Cloud”的字样,但它并不是云计算解决方案,而是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。它的核心功能如下:
- Distributed/versioned configuration 分布式/版本化的配置管理
- Service registration and discovery 服务注册与服务发现
- Routing 路由
- Service-to-service calls 端到端的调用
- Load balancing 负载均衡
- Circuit Breakers 断路器
- Global locks 全局锁
- Leadership election and cluster state 选举与集群状态管理
- Distributed messaging 分布式消息
对应的它的主要相关组件有:
- Eureka 去中心化的服务注册发现组件,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移
- Ribbon 客户端的负载均衡组件
- Feign 基于Http请求的服务调用组件,功能类似于HttpClient
- Hystrix 服务容错组件,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力
- Zuul 服务网关组件,是提供动态路由,监控,弹性,安全等的边缘服务
- Config 分布式配置组件,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion
Spring Cloud的版本号并不像我们常见的版本格式,我们知道,大多数Spring项目都是以“主版本号.次版本号.增量版本号.里程碑版本号”的形式命名版本号的,例如Spring Framework稳定版本4.3.5.RELEASE、里程碑版本5.0.0.M4等。其中,主版本号表示项目的重大重构;次版本号表示新特性的添加和变化;增量版本号一般表示bug修复;里程碑版本号表示某版本号的里程碑。然而,Spring Cloud并未使用这种方式管理版本。下面我们来详细探讨一下Spring Cloud的版本。我们来看一下Spring Cloud的版本,如下图所示:
由图可知,Spring Cloud是以英文单词 SRX 的形式命名版本号的,Spring Cloud是一个综合项目,它包含很多的子项目。由于子项目也维护着自己的版本号,Spring Cloud采用了这种版本命名方式,从而避免与子项目的版本混淆。其中,英文单词叫做“release train”,Angel、Brixton、Camden等都是伦敦地铁站的名称,它们按照字母顺序发行,我们可将其理解为主版本的演进。SR表示“Service Release”,一般表示Bug修复;在SR版本发布之前,会先发布一个Release版本,例如Camden RELEASE。还有非常重要的一点是Spring Cloud是以Spring Boot为基础的,所以Spring Cloud和Spring Boot的版本对应关系也是非常重要的,具体对应关系如下:
最后附上Spring Cloud的中文文档 https://springcloud.cc/
Spring Cloud简介的更多相关文章
- Spring Cloud微服务笔记(二)Spring Cloud 简介
Spring Cloud 简介 Spring Cloud的设计理念是Integrate Everything,即充分利用现有的开源组件, 在它们之上设计一套统一的规范/接口使它们能够接入Spring ...
- Spring Cloud与微服务构建:Spring Cloud简介
Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...
- 微服务学习笔记一:Spring Cloud简介
1.Spring Cloud是一个工具集:Spring Cloud是在Spring Boot的基础上构建的,用于简化分布式系统构建的工具集:使架构师在创建和发布微服务时极为便捷和有效. Sp ...
- Spring Cloud 简介
SpringCloud 简介 SpringCloud是一个基于SpringBoot实现的微服务架构开发工具.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线.全局锁.决策竞 ...
- Spring Cloud简介以及版本选择
什么是SpringCloud 官方的说法就是spring Cloud 给开发者提供一套按照一定套路快速开发 分布式系统 的工具. 具体点就是Spring boot实现的微服务架构开发工具.它为微服务架 ...
- 介绍一下Spring Cloud简介
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样板模式, 使用Spring Clo ...
- Spring Cloud简介/版本选择/ZooKeeper例子搭建简单说明
一.什么是Spring Cloud 官方的说法就是Spring Cloud 给开发者提供一套按照一定套路快速开发分布式系统的工具. 具体点就是Spring Boot实现的微服务架构开发工具.它为微服务 ...
- Spring Cloud简介 4.1
什么是Spring Cloud Spring Cloud是在Spring Boot的基础上构建的,用于简化分布式系统构建的工具集.该工具集为微服务架构中所涉及的配置管理.服务发现.智能路由.断路器.微 ...
- spring cloud深入学习(一)-----什么是微服务?什么是rpc?spring cloud简介
近年来,微服务非常的流行,那么为什么是它?简单介绍一下. 为什么是微服务? 微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资 ...
随机推荐
- 保存一份自己常用的packjson
这里是一份专门针对react的插件配置, 有: es5的转换器,有ie的promise垫片,有蚂蚁金服的anth,还有用于消息通信的pubsub订阅发布系统,虽然现在不用了.... 用于发请求的axi ...
- jmeter 如何发送上传文件接口请求
1.上传图片接口,通过抓包工具获取接口相关信息,然后在信息头里添加Content-Disposition:form-data; name="imgType" 2.在请求中MIME类 ...
- python 函数进阶与闭包
函数的命名空间和作用域 引言 现在有个问题,函数里面的变量,在函数外面能直接引用么? def func1(): m = 1 print(m) print(m) #这行报的错 报错了: NameErro ...
- C++ static 静态变量&静态成员函数
.h文件中定义 static变量后,如 static QTcpSocket * socket; 那么一定要在.cpp中 构造函数的外面将其初始化为 QTcpSocket * Cfiletransfer ...
- 深入理解JVM(三)垃圾收集器和内存分配策略
3.1 关于垃圾收集和内存分配 垃圾收集和内存分配主要针对的区域是Java虚拟机中的堆和方法区: 3.2 如何判断对象是否“存活”(存活判定算法) 垃圾收集器在回收对象前判断其是否“存活”的两个算法: ...
- PDF 转 PNG JPG 操作
# gs gs -dSAFER -dBATCH -dNOPAUSE -r300 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sDEVICE=pnggray - ...
- c++类对象的内存分布
要想知道c++类对象的内存布局, 可以有多种方式,比如: 1)输出成员变量的偏移, 通过offsetof宏来得到 2)通过调试器查看, 比如常用的VS 1.没有数据成员的对象 class A{ }; ...
- DE1-SOC资源
1,digital solution lab 网站上的de1soc QT教程. 内容包括: Install Qt 5.4 Designer Install the Altera SoC Tool-Ch ...
- pyinstaller打包程序 带图片
首选说一下,这种打包方式只能在本电脑上使用运行正常 准备:.py文件:你的程序 gif文件:你要用的图片 第一步: 在上面文件所在目录打开cmd 输入 pyi-makespec FP.py 会生成一个 ...
- Hessian 使用例子
一.协议包(数据对象需要实现序列化接口,可以用于服务端接口.客户端调用服务之用) /** * */ package com.junge.demo.protocol.model; import java ...