Spring Cloud 是什么

  

概念定义

  

  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 第二代的标准实现。

  

总结

  

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 如果使用这种方式会让开发者混淆版本号。

  

定义规则

  

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

  Spring 官方详细的版本查看接口:https://start.spring.io/actuator/info

  

发布计划

  

版本号 版本 说明
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 的文章。

  本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议

  

  ?? 本章节到这里就结束了,喜欢的话就点赞 ?? 加转发吧。

  ?? 关注 哈喽沃德先生,学习更多 IT 技术 ~

原文地址:https://www.cnblogs.com/mrhelloworld/p/what-is-springcloud.html

时间: 2024-11-13 08:39:29

Spring Cloud 是什么的相关文章

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

笔记:Spring Cloud Zuul 快速入门

Spring Cloud Zuul 实现了路由规则与实例的维护问题,通过 Spring Cloud Eureka 进行整合,将自身注册为 Eureka 服务治理下的应用,同时从 Eureka 中获取了所有其他微服务的实例信息,这样的设计非常巧妙的将服务治理体系中维护的实例信息利用起来,使得维护服务实例的工作交给了服务治理框架自动完成,而对路由规则的维护,默认会将通过以服务名作为 ContextPath 的方式来创建路由映射,也可以做一些特别的配置,对于签名校验.登录校验等在微服务架构中的冗余问题

笔记:Spring Cloud Feign 其他配置

请求压缩 Spring Cloud Feign 支持对请求与响应进行GZIP压缩,以减少通信过程中的性能损耗,我们只需要通过下面二个参数设置,就能开启请求与响应的压缩功能,yml配置格式如下: feign: compression: request: enabled: true response: enabled: true 同时,我们还能对请求压缩做一些更细致的设置,比如指定压缩的请求数据类型,并设置了请求压缩的大小下限,只有超过这个大小的请求才会对其进行压缩,示例如下: feign: com

Spring Cloud官方文档中文版-服务发现:Eureka服务端

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#spring-cloud-eureka-server 文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation Service Discovery: Eureka Server 服务发现:Eureka服务端 How to Include Eureka Server 如何创建Eurek

记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖

spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 restart always 多节点的服务一直重启关闭重启关闭. 日志文件记录了一个异常: 国内国外搜了一遍都没有解决 org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean wit

Spring Cloud官方文档中文版-声明式Rest客户端:Feign

官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign 文中例子我做了一些测试在:http://git.oschina.net/dreamingodd/spring-cloud-preparation Declarative REST Client: Feign 声明式Rest客户端:Feign Feign is a declarative web service client. It

使用spring cloud实现分布式配置管理

<7天学会spring cloud系列>之创建配置管理服务器及实现分布式配置管理应用. 本文涉及到的项目: 开源项目:http://git.oschina.net/zhou666/spring-cloud-7simple cloud-config-repo:配置文件存放的文件夹 cloud-simple-service:一个使用mybatis的数据库应用 分布式配置管理应该是分布式系统和微服务应用的第一步.想象一下如果你有几十个服务或应用需要配置,而且每个服务还分为开发.测试.生产等不同维度的

孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!

最近我们试图从Dubbo迁移到Spring Cloud.为此对二者分别进行了性能测试.为了得出数据量不同的情况下的二者的性能表现,我们分别准备了一个25个属性pojo对象和一个50个属性的pojo对象,通过这样的方式我们也可以间接地了解二者在序列化方面的水平. 以下是测试结果: 25个属性,10W次: 50个属性,10W次: 分析:         由于Spring Cloud与Dubbo天生使用的协议层面不一样,前者是HTTP,后者是TCP(使用的是Netty NIO框架,序列化使用的阿里定制

笔记:Spring Cloud Feign Ribbon 配置

由于 Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以我们可以直接通过配置 Ribbon 的客户端的方式来自定义各个服务客户端调用的参数. 全局配置 全局配置的方法非常简单,我们可以i直接使用 ribbon.<key>=<value>的方式来设置 ribbon 的各项默认参数,比如,修改默认的客户端调用超时时间示例如下,使用 yml 格式配置: ribbon: ConnectionTimeout: 500 ReadT

笔记:Spring Cloud Feign Hystrix 配置

在 Spring Cloud Feign 中,除了引入了用户客户端负载均衡的 Spring Cloud Ribbon 之外,还引入了服务保护与容错的工具 Hystrix,默认情况下,Spring Cloud Feign 会为将所有 Feign客户端的方法都封装到 Hystrix 命令中进行服务保护,需要注意的是 Ribbon 的超时与 Hystrix 的超时是二个概念,需要让 Hystrix 的超时时间大于 Ribbon 的超时时间,否则 Hystrix 命令超时后,该命令直接熔断,重试机制就没