1. Spring Cloud 是什么?

Building distributed systems doesn’t need to be complex and error-prone. Spring Cloud offers a simple and accessible programming model to the most common distributed system patterns, helping developers build resilient, reliable, and coordinated applications. Spring Cloud is built on top of Spring Boot, making it easy for developers to get started and become productive quickly.

构建分布式系统不再像以前那么复杂,并且容易出错了。Spring Cloud 提供了一个简单的可行的编程模型来实现通用的分布式系统模式,帮助开发人员构建弹性的、可靠的 和可协调的应用程序。由于 Spring Cloud 是基于 Spring Boot,因此对开发人员来说可以快速上手和开发应用。

总而言之:Spring Cloud 是分布式微服务架构下的一整套解决方案,是各个微服务架构落地技术的集合体。

2. Spring Cloud 与 Spring Boot 有什么关系?
  • Spring Boot 是开发一个个微服务的框架
  • Spring Cloud 依赖 Spring Boot
  • Spring Cloud 是微服务架构的治理框架,对各个微服务进行协调
3. spring cloud 与 dubbo 的对比
3.1 dubbo

谈到微服务治理,那肯定得了解一下由阿里出品的在国内大名鼎鼎的 dubbo 框架,严格来说,dubbo 只是一个服务治理框架,它并不是一个完整的微服务架构下的一站式解决方案。

spring cloud contract 生产者驱动 spring cloud build_spring cloud

使用 dubbo 实现微服务有如下几点好处:

  • 没有中间层,consumer 端可以直接调用(RPC 调用) provider 端提供的服务
  • 服务信息集中在 registry(注册中心)中,形成服务治理的核心组件
  • 通过Monitor监控系统,可以直观地展示服务调用的统计信息
  • consumer 可以进行负载均衡、服务降级的选择

但是对于微服务架构而言,dubbo 也并不是十全十美的:

  • registry 严重依赖第三方组件(zookeeper 或 redis),当这些组件出现问题时,服务调用很快就会中断
  • dubbo 只支持 RPC 调用。使得服务提供方与调用方在代码上产生了强依赖,服务提供者需要不断将包含公共代码的 jar 包打包出来供消费者使用。provider 端的提供的服务有改动,consumer 端跟着改动
3.2 spring cloud

spring cloud 的宗旨是开发面向云环境的应用程序,它为微服务架构提供了一站式的解决方案,并且有强大的社区支持,能与 spring 家族完美结合。
下表展示了 spring cloud 与 dubbo 在各方面的对比:

功能

spring cloud

dubbo

服务注册和发现

eureka

zookeeper

服务调用方式

restful api

rpc

断路器

支持

支持

负载均衡

支持

支持

服务路由和过滤

支持

支持

分布式配置

支持

不支持

服务网关

支持

不支持

集群选主

支持

不支持

分布式消息

支持

不支持

spring cloud 抛弃了 dubbo 的 RPC 通信,采用的是基于 HTTP 的 REST 方式。严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了原生 RPC 带来的问题,而且 REST 相比 RPC 更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。

4 spring cloud 开发五大组件
  • 服务发现——Netflix Eureka
  • 客服端负载均衡——Netflix Ribbon
  • 断路器——Netflix Hystrix
  • 服务网关——Netflix Zuul
  • 分布式配置——Spring Cloud Config