Spring Cloud 概述


通过本文学习 微服务介绍Spring Cloud 介绍,让大家对 Spring Cloud 有个初步的认识。

1 微服务介绍

2009 年, Netflix 公司重新定义了它的应用程序员的开发模型,这个算是微服务的首次探索。

2014 年, 《Microservices》 这篇文章以一个更加通俗易懂的方式,为大家定义了微服务。

互联网应用产品的两大特点:

  • 需求变化快。
  • 用户群体庞大。

在这样的情况下,我们需要构建一个能够灵活扩展,同时能够快速应对外部环境变化的一个应用,使用传统的开发方式,显然无法满足需求。这个时候,微服务就登场了。

1.1 什么是微服务

简单来说,微服务就是一种将一个单一应用程序拆分为一组小型服务的方法,拆分完成后,每一个服务都运行在独立的进程中,服务与服务之间采用轻量级的通信机制来进行沟通(其中 Spring Cloud 中采用基于 HTTP 的 RESTful API )。

每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,包括:订单服务、支付服务、物流服务、会员服务等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。同时在采用微服务之后,我们的项目不再拘泥于一种语言,可以是 Java/Go/Python/PHP 等混合使用,这在传统的应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建工具进行构建。

微服务可以理解为是 SOA 的一个传承,一个本质的区别是微服务是一个真正分布式、去中心化的,微服务的拆分比 SOA 更加彻底。

1.2 微服务的优势

  • 复杂度可控。
  • 独立部署。
  • 技术选型灵活。
  • 较好的容错性。
  • 较强的可扩展性。

1.3 微服务的特性

  • 不主动
  • 不拒绝
  • 不负责

2 Spring Cloud 介绍

Spring Cloud 可以理解为微服务这种思想在 Java 领域的一个具体落地。 Spring Cloud 在发展之初,就借鉴了微服务的思想,同时结合 Spring Boot 让 Spring Cloud 具备了组件的一键式启动和部署的能力,极大的简化了微服务架构的落地。

Spring Cloud 这种框架,从设计之初,就充分考虑了分布式架构演化所需要的功能,例如服务注册、配置中心、消息总线、负载均衡等。这些功能都是以可插拔的形式提供出来的,这样,在分布式系统不断演化的过程中,我们的 Spring Cloud 也可以非常方便的进化。

2.1 什么是 Spring Cloud

Spring Cloud 是一系列框架的集合, 内部包含了许多框架,这些框架互相协作,共同来构建分布式系统。利用这些组件,可以非常方便的构建一个分布式系统。

2.2 核心特性

  • 分布式配置中心。
  • 服务注册与发现。
  • 链路器。
  • 服务调用。
  • 负载均衡。
  • 断路器/熔断机制。
  • 全局锁。
  • 选举与集群状态管理。
  • 分布式消息/消息总线。

2.3 版本名称

不同于其他的框架, Spring Cloud 的版本名称是通过 A(Angel)、 B(Brixton)、 C(Camden)、D(Dalston)、 E(Edgware)、 F(Finchley) 这样来命名的,这些名字使用了伦敦地铁站的名
字,目前最新版是 Hoxton SR3

Spring Cloud 中,除了大的版本之外,还有一些小版本,小版本命名方式如下:

  • M: 是 Milestone 的缩写,如: M1/M2。
  • RC: 是 Release Candidate 的缩写,表示该项目处于候选状态,这是正式发版之前的一个状态,如: RC1/RC2 。
  • SR: 是 Service Release 的缩写,表示项目正式发布的稳定版,相当于 GA(Generally Available) 版。如: SR1/SR2 。
  • SNAPSHOT: 表示快照版。

2.4 组件

  • Spring Cloud Netflix: 这个组件,在 Spring Cloud 成立之初,立下了汗马功劳。但 2018 年的断更事件,使得 Netflix 走下神坛。
  • Spring Cloud Config: 分布式配置中心,利用 Git/SVN 来集中管理项目的配置文件。
  • Spring Cloud Bus: 消息总线,可以构建消息驱动的微服务,也可以用来做一些状态管理等。
  • Spring Cloud Consul: 服务注册与发现。
  • Spring Cloud Stream: 基于 Redis/RabbitMQ/Kafka 实现的消息微服务。
  • Spring Cloud OpenFeign: 提供 OpenFeign 集成到 Spring Boot 应用中的方式,主要解决微服务之间的调用问题。
  • Spring Cloud Gateway: Spring Cloud 官方推出的网关服务。
  • Spring Cloud Cloudfoundry: 利用 Cloudfoundry 集成我们的应用程序。
  • Spring Cloud Security: 在 Zuul 代理中,为 OAuth2 客户端认证提供支持。
  • Spring Cloud AWS: 快速集成亚马逊云服务。
  • Spring Cloud Contract: 一个消费者驱动的、面向 Java 的契约框架。
  • Spring Cloud Zookeeper: 基于 Apache Zookeeper 的服务注册和发现。
  • Spring Cloud Data Flow: 在一个结构化的平台上,组成数据微服务。
  • Spring Cloud Kubernetes: Spring Cloud 提供的针对 Kubernetes 的支持。
  • Spring Cloud Function:
  • Spring Cloud Task: 短生命周期的微服务。
Spring Cloud 第一代Spring Cloud 第二代
网关spring-cloud-zuul(来源于 Netflix Zuul ,性能一般)Spring Cloud Gateway
注册中心spring-cloud-eureka(集成于 Netflix Eureka ,不再维护,Consul,ZK)阿里 Nacos ,拍拍贷 radar 等可选
配置中心spring-cloud-config(自研,功能不足,国内使用其它配置中心替代)阿里 Nacos携程 Apollo随行付 Config Keeper
客户端软负载均衡spring-cloud-ribbon(来源于 Netflix 集成,不支持 webFlux 的负载均衡)spring-cloud-loadbalancer
熔断器spring-cloud-hystrix(来源于 Netflix 集成,不再开发新功能,进入维护状态)spring-cloud-r4j(Resilience4J)阿里 Sentinel

2.5 与 Spring Boot 的版本对应关系

Spring Cloud 版本Spring Boot 版本
Hoxton2.2.x
Greenwich2.1.x
Finchley2.0.x
Edgware1.5.x
Dalston1.5.x


扫码关注微信公众号 程序员35 ,获取最新技术干货,畅聊 #程序员的35,35的程序员# 。独立站点:https://cxy35.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值