Spring Cloud 是面面观

  • 1 前言
  • 2 什么是Spring Cloud
  • 3 Spring Cloud版本
  • 4 Spring Cloud技术体系
  • 5 Spring Cloud的特点
  • 6 码农来洞见

1 前言

在微服务为何如此炙手可热 这篇文章中我们了解到:微服务是分布式系统设计和架构的理念之一。但是从微服务的风格来看,它并不是为了克服所有的分布式系统的缺陷而设计的,而是为了追求更高的可读性、可用性和简易性。但与此同时,也弱化了其一致性,正如这句老话——“两害相较取其轻者”。

实现微服务需要大量的软件,而这些软件是十分复杂的。不论国内还是国外,都为分布式系统做了大量的尝试,积累了丰富的成果。其中两个最流行的开源工具是:国内阿里巴巴的Dubbo和国外由Pivotal团队开发的Spring Cloud。

2 什么是Spring Cloud

Spring Cloud是在Spring Boot基础上构建。Spring Boot是由Pivotal团队提供的全新Web框架,它主要的特点就是简化了开发和部署的过程,简化了Spring 复杂的配置和依赖管理,通过起步依赖和内置Servlet容器能够使开发者迅速搭起一个Web工程。Spring Cloud为开发人员提供了用于快速构建分布式系统中某些常见模式的工具(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线)。

3 Spring Cloud版本

Spring Cloud并不是一个传统意义上的项目,而是众多子项目的一个大集成,因此在版本号中Spring Cloud也没有采用传统的方式,而是通过一个“发布列车”的概念来定义版本,如Edgware,Finchley和Greenwich等。这些发布列车的命名都是使用伦敦地铁站名作为发布的名称,每增加一个主要版本时,就使用伦敦地铁站中的第二高字母作为版本名称。

英文名 中文名 版本
Dalston 达斯顿 1.5.x
Edgware 艾奇韦尔 1.5.x
Finchley 芬奇利 2.0.x
Greenwich 达斯顿 2.1.x
Hoxton 霍克斯顿 2.2.x, 2.3.x

Spring Cloud Dalston、Edgware、Finchley 和 Greenwich 都已达到生命周期终止状态,不再受支持。

一般在SR版本发布之前,会先发布一个Release版本。常见版本号介绍如下:

  • SNAPSHOT快照版,可以稳定使用,且仍在继续改进版本。
  • RC(Release Candidate)发行候选版本,基本不再加入新的功能,主要修复bug。
  • SR(Service Release)修正版或更新版,修正了正式版推出后发现的Bug。
  • GA(General Availability)正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。

4 Spring Cloud技术体系

Spring Cloud技术体系

  • 路由和过滤组件:包括Zuul和Spring Cloud Gateway。Spring Cloud Gateway提供了一个构建在Spring生态之上的API网关,其旨在提供一种简单而有效的途径来发送API,并为他们提供横切关注点,如:安全性、监控指标和弹性。
  • 配置中心组件:Spring Cloud Config实现了配置集中管理、动态刷新等配置中心的功能。配置通过Git或者简单文件来存储,支持加解密。
  • 消息组件:Spring Cloud Stream和Spring Cloud Bus。Spring Cloud Stream对于分布式消息的各种需求进行了抽象,包括发布订阅、分组消费和消息分区等功能,实现了微服务之间的异步通信。Spring Cloud Bus主要提供了服务间的事件通信(如刷新配置)。
  • 安全控制组件:Spring Cloud Security基于OAuth2.0开放网络的安全标准,提供了微服务环境下的单点登录、资源授权和令牌管理等功能。
  • 链路监控组件:Spring Cloud Sleuth提供了全自动、可配置的数据埋点,以收集微服务调用链路上的性能数据,并可以结合Zipkin进行数据存储、统计和展示。

除了上述组件之外,Spring Cloud还提供了命令行工具Spring Cloud Cli和集群工具Spring Cloud Cluster。Spring Cloud Cli提供了以命令行和脚本的方式来管理微服务及Spring Cloud组件的方式,Spring Cloud Cluster提供了集群选主、分布式锁和一次性令牌等分布式集群需要的技术组件。

5 Spring Cloud的特点

微服务架构集大成者,云计算最佳业务实践。 —— Spring Cloud

Spring Cloud有很多特点,其中最大的特点就是它的集成性,它将很多开源产品都集成到了自身的框架中,使其越来越强大。除此之外,SpringCloud还有如下特点。

  1. 使用方便
    在使用时,开发人员不需要过多的配置,也不需要调用很多接口,通过简单的配置即可轻松上手。
  2. 功能齐全
    Spring Cloud涵盖了微服务架构中的各个方面,集成了很多公司优秀的开源框架,能够充分满足微服务开发者的各项需求。
  3. 易于扩展和维护
    所有组件的引入方式相同,都是通过Maven或Gradle引入依赖。各个组件之间没有代码上的耦合,因此可以根据需求不断地增加、删除和替换组件。
  4. 适用于各种环境
    使用Spring Cloud组件开发的项目可以应用于PC服务器、云环境,以及各种容器。

6 码农来洞见

Spring Cloud并不能与微服务或者微服务架构划上等号,不能误认为使用了Spring Cloud的应用服务就是微服务。微服务架构是一种架构的理念,重点是微服务的设计原则,从理论上为具体的技术落地提供了指导思想。Spring Cloud是一个基于Spring Boot实现的服务治理工具包,关注全局的服务治理框架。目前来说,Spring Cloud仍是Java世界中微服务实践的最佳落地方案。

最后通过一张架构图先让大家提前了解一下Spring Cloud中个功能组件之间是如何协作的。后续的架构系列文章也是基于此图来开展将详细介绍每个环节的原理及交互过程。

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 ...

最新文章

  1. mysql 快速升级_快速升级MySQL系统表
  2. Visual Studio 2017新版发布,极大提高开发效率丨附下载
  3. 欧几里德结构数据与 非欧几里德结构数据
  4. 【学习总结】数学-欧拉函数
  5. linux下aio异步读写详解与实例
  6. shopify二次开发教程_详细教程:如何将Shopify的Storefront API与React和Redux结合使用...
  7. “约见”面试官系列之常见面试题第十三篇之css动画效果(建议收藏)
  8. 智慧城市近两年来受到国家高度重视
  9. Fragment事务管理源码分析
  10. delphi 2010之如何快速开发原生ActiveX控件
  11. 最简易的流水记账软件分享
  12. C# For Koyo PLC Serial Port Communication Library,C# 与光洋PLC通讯库,光洋PLC通讯,PLC通讯,光洋
  13. 随机森林(Random Forest)算法原理总结
  14. Keras中verbose的作用
  15. Alfred Workflow教程与实例
  16. The Minimum Spanning Tree Problem
  17. 接收蓝牙信号并发送到云端服务器,蓝牙如何可以与云服务器连接
  18. UnityShader入门精要——运动模糊
  19. android 程序题期末,Android应用开发期末考试题
  20. 嵌入式监控【v4l2采集->vpu编码->live555推流】

热门文章

  1. 划词翻译脚本--AutoHotkey
  2. PHPword 表格内换行处理
  3. oracle11g sga分配,Oracle11gsga_target参数设置
  4. 鸿蒙 悟空遥控,悟空遥控器(com.wukongtv.wkremote.client) - 3.9.3.0 - 应用 - 酷安
  5. 怎样将pdf格式转换成jpg
  6. 百信社区-社区服务一体化
  7. 1.oracle RAC11G 对单机ADG搭建详细文档
  8. 什么是计算机?计算机硬件详细介绍和参数解读[2]
  9. Oracle的全文检索
  10. android 赛车 源码,android 3D风格赛车游戏源码