概念定义

Spring Cloud 是一个服务治理平台,提供了一些服务框架。包含了:服务注册与发现、配置中心、消息中心 、负载均衡、数据监控等等。

Spring Cloud 是一个微服务框架,相比 Dubbo 等 RPC 框架,Spring Cloud 提供了全套的分布式系统解决方案。

Spring Cloud 对微服务基础框架 Netflix 的多个开源组件进行了封装,同时又实现了和云端平台以及 Spring Boot 框架的集成。

Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Spring Cloud 为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用、同时能够快速和云平台资源进行对接。微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,Spring Cloud 就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud 做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。

子项目

Spring Cloud 包含了很多子项目:

Spring Cloud Netflix 第一代

Netflix是一家美国公司,在美国、加拿大提供互联网随选流媒体播放,定制DVD、蓝光光碟在线出租业务。该公司成立于1997年,总部位于加利福尼亚州洛斯盖图,1999年开始订阅服务。2009年,该公司可提供多达10万部DVD电影,并有1千万的订户。2007年2月25日,Netflix宣布已经售出第10亿份DVD。HIS一份报告中表示,2011年Netflix网络电影销量占据美国用户在线电影总销量的45%。

针对多种 Netflix 组件提供的开发工具包,其中包括 Eureka、Hystrix、Ribbon、Zuul、Archaius 等。

  • Netflix Eureka:一个基于 Rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
  • Netflix Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
  • Netflix Ribbon:客户端负载均衡的服务调用组件。
  • Netflix Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
  • Netflix Zuul:微服务网关,提供动态路由,访问过滤等服务。
  • Netflix Archaius:配置管理 API,包含一系列配置管理 API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

Spring Cloud Alibaba 第二代

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

  • Nacos:阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  • Sentinel:面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
  • Alibaba Cloud OSS:阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  • Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
  • Alibaba Cloud SMS:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

常用组件

  • Spring Cloud Netflix Eureka:服务注册中心。
  • Spring Cloud Netflix Ribbon:客户端负载均衡。
  • Spring Cloud Netflix Hystrix:服务容错保护。
  • Spring Cloud Netflix Feign:声明式服务调用。
  • Spring Cloud OpenFeign(可替代 Feign):OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了 Spring MVC 的注解,如 @RequesMapping等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。
  • Spring Cloud Netflix Zuul:API 网关服务,过滤、安全、监控、限流、路由。
  • Spring Cloud Gateway(可替代 Zuul):Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,Spring Cloud Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
  • Spring Cloud Config:分布式配置中心。配置管理工具,支持使用 Git 存储配置内容,支持应用配置的外部化存储,支持客户端配置信息刷新、加解密配置内容等。
  • Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。
  • Spring Cloud Stream:消息驱动微服务。
  • Spring Cloud Sleuth:分布式服务跟踪。
  • Spring Cloud Alibaba:阿里巴巴结合自身微服务实践,开源的微服务全家桶。在 Spring Cloud 项目中孵化,很可能成为Spring Cloud 第二代的标准实现。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kfnSAIgt-1603875274044)(SpringCloud是什么.assets/20190915212129651.png)]

总结

Spring Cloud 第一代 Spring Cloud 第二代
网关 Spring Cloud Zuul Spring Cloud Gateway
注册中心 Eureka,Consul,ZooKeeper 阿里 Nacos,拍拍贷 Radar 等可选
配置中心 Spring Cloud Config 阿里 Nacos,携程 Apollo,随行付 Config Keeper
客户端负载均衡 Ribbon spring-cloud-commons 的 Spring Cloud LoadBalancer
熔断器 Hystrix spring-cloud-r4j(Resilience4J),阿里 Sentinel

虽然 Eureka,Hystrix 等不再继续开发或维护,但是目前来说不影响使用,不管怎么说感谢开源,向 Netflix 公司的开源致敬。

版本说明

为什么 Spring Cloud 版本用的是单词而不是数字?

这样设计的目的是为了更好的管理每个 Spring Cloud 的子项目的清单。避免总版本号与子项目的版本号混淆。

例如:Spring Cloud 2.2.0.RELEASE 的 Spring Cloud Netflix 2.2.2.RELEASE 如果使用这种方式会让开发者混淆版本号。

定义规则

采用伦敦的地铁站名称来作为版本号的命名,根据首字母排序,字母顺序靠后的版本号越大。

发布计划

版本号 版本 说明
BUILD-XXX 开发版 开发团队内部使用
M 里程碑版 MileStone,M1 表示第 1 个里程碑版本,一般同时标注 PRE,表示预览版
RC 候选发布版 Release Candidate,正式发布版的前一个观察期,不添加新功能,主要着重于除错
SR 正式发布版 Service Release,SR1 表示第 1 个正式版本,一般同时标注 GA,表示稳定版本
GA 稳定版 经过全面测试并可对外发行称之为GA(General Availability)

子项目版本说明

例如:Spring Cloud Alibaba 2.1.0.RELEASE

  • 2:主版本号。当功能模块有较大更新或者整体架构发生变化时,主版本号会更新。
  • 1:次版本号。次版本表示只是局部的一些变动。
  • 0:修改版本号。一般是 bug 的修复或者是小的变动。
  • RELEASE:希腊字母版本号。标注当前版本的软件处于哪个开发阶段。

希腊字母版本说明

  • Base:设计阶段。只有相应的设计没有具体的功能实现。
  • Alpha:软件的初级版本。存在较多的 bug。
  • Bate:表示相对 Alpha 有了很大的进步,消除了严重的 bug,还存在一些潜在的 bug。
  • Gamma:是 Beta 版做过一些修改,成为正式发布的候选版本(Release Candidate)
  • Release:该版本表示最终版。

什么是Spring Cloud相关推荐

  1. Spring cloud 微服务docker容器化最佳实践

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...

  2. Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

    自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注.虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭 ...

  3. Spring Cloud下微服务权限方案

    背景 从传统的单体应用转型Spring Cloud的朋友都在问我,Spring Cloud下的微服务权限怎么管?怎么设计比较合理?从大层面讲叫服务权限,往小处拆分,分别为三块:用户认证.用户权限.服务 ...

  4. 玩转Spring Cloud之配置中心(config server config client)

    玩转Spring Cloud之配置中心(config server &config client)  本文内容导航: 一.搭建配置服务中心(config server) 1.1.git方式 1 ...

  5. spring cloud微服务治理eureka、hystrix、zuul代码例子

    spring cloud微服务中台服务代码例子,包括eureka.hystrix.zuul https://github.com/birdstudiocn/spring-cloud-sample/tr ...

  6. 原 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus)(Finchley版本)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f8-bus/ 本文出自方志朋的博客 转载请标明出处: Spr ...

  7. 快速构建Spring Cloud工程

    spring cloud简介 spring cloud为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境 ...

  8. spring cloud微服务分布式云架构--hystrix的使用

    hystrix主要作用在服务消费者,进行应用的保护,当请求的服务请求超时时,做出相应的处理,避免客户端一直进行请求等待,避免在高并发的情况出现服务器死机(请求过多,内存不足) 接下来的通过一个案例对h ...

  9. Spring Cloud构建分布式电子商务平台:服务消费(基础)

    使用LoadBalancerClient 在Spring Cloud Commons中提供了大量的与服务治理相关的抽象接口,包括DiscoveryClient.这里我们即将介绍的LoadBalance ...

  10. (二)spring cloud微服务分布式云架构 - 整合企业架构的技术点

    spring cloud本身提供的组件就很多,但我们需要按照企业的业务模式来定制企业所需要的通用架构,那我们现在需要考虑使用哪些技术呢? 下面我针对于spring cloud微服务分布式云架构做了以下 ...

最新文章

  1. 第八章 工厂方法模式
  2. LeetCode Monotonic Array(数组单调性)
  3. 2021-01-05 Halcon初学者知识【7】 最简单的测距问题-点与点测距
  4. Hive中COUNT的高级用法(条件过滤等)
  5. [UWP]用画中画模式(CompactOverlay Mode)让用总在最前端显示
  6. 年度神作!这本Python 3.6的书刷爆朋友圈,网友:太香!
  7. linux常见问题解决方法,Ubuntu 下2个常见问题解决方法
  8. IM多点登录与消息漫游架构随想
  9. 高清图片、视频素材免费下载
  10. 最优化理论与方法学习笔记01——黄金分割法与进退法求单峰区间Matlab编程实现
  11. 如何免费下载百度指数数据
  12. 数据、运营相关试题(二)【牛客网:京东2019春招产品运营类试卷】
  13. 计算机休眠唤醒后 网络受限,Windows 10中的睡眠/唤醒/休眠状态后,Wi-Fi网络消失...
  14. Kettle读取按行分割的文件
  15. java 类大写_记java实体类属性名为全部为大写踩的坑(基础)
  16. 单目相机提高标定精度的经验
  17. 164. Maximum Gap 1
  18. 大话数据结构 摘录 第一章 数据结构绪论
  19. 分布式文件系统:HDFS 核心原理
  20. [翻译] 神经网络与深度学习 第三章 提升神经网络学习的效果 - Chapter 3 Improving the way neural networks learn

热门文章

  1. 第二章 分布式服务框架Zookeeper
  2. dota2模型替换mod
  3. 解决vim使用鼠标选择便进入visual mode问题
  4. 光标变成黑块变粗 影响插入 解决方法
  5. JavaScript-初体验
  6. itouch/iphone/ipad充不上电的解决办法
  7. 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第三波)
  8. 【LeetCode】849. Maximize Distance to Closest Person
  9. 关于rxjava(五)
  10. 如何用VOSviewer分析CNKI关键词共现?