购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 引入Spring Cloud Alibaba

在前面内容的介绍中,我们实际上已经提到了目前主流的微服务开发框架,即Spring Cloud和Spring Cloud Alibaba。实际上,Spring Cloud Alibaba是构建在Spring Cloud的基础之上的,可以认为它是Spring Cloud的升级版。在本节中,我们先从Spring Cloud所提供的微服务解决方案开始讲起,进而引入Spring Cloud Alibaba框架。

1.2.1 Spring Cloud微服务解决方案

Spring Cloud是Spring家族中的一员,重点打造面向服务化的功能组件,是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发过程,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等都可以使用Spring Boot的开发风格做到一键启动和部署。

在对Spring Cloud框架进行设计和实现的过程中,Spring并没有重复造轮子,它只是将目前各家公司开发的比较成熟、经得起实践考验的服务框架组合起来,通过Spring Boot风格进行再封装,从而屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的微服务系统开发工具包。

对于那些没有实力或者没有足够的资金投入去开发自己的微服务基础设施的公司而言,使用Spring Cloud一站式解决方案能在从容应对业务发展的同时大大减少开发成本。

Spring Cloud标准化、全站式的技术方案构成了一个生态圈,涵盖众多微服务架构实现所需的核心组件,常见组件如下。

❑ Spring Cloud Config:配置管理开发工具包,可以把配置信息放到远程服务器,支持本地存储、Git以及Subversion。

❑ Spring Cloud Gateway:服务网关组件,可以为请求设置灵活的路由策略,并能够集成安全认证、异常处理、日志分析等常见的非功能性需求。

❑ Spring Cloud Bus:事件消息总线,用于在集群中传播状态变化(例如配置信息变更事件),可与Spring Cloud Config联合实现热部署。

❑ Spring Cloud Sleuth:日志收集工具包,封装了Dapper、Zipkin和HTrace操作。

❑ Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

❑ Spring Cloud Security:安全工具包,为应用程序添加安全控制,主要提供OAuth2协议的支持。

❑ Spring Cloud Consul:封装了Consul操作,Consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

❑ Spring Cloud Zookeeper:操作Zookeeper的工具包,用于基于Zookeeper方式的服务注册和发现。

❑ Spring Cloud Stream:数据流操作开发包,封装了Redis、Rabbit、Kafka等工具,以支持发送和接收消息。

❑ Spring Cloud CLI:基于Spring Boot CLI,支持以命令行方式快速建立云组件。

提到Spring Cloud,开发人员往往会把它与阿里巴巴的Dubbo框架进行比较。Dubbo是国内RPC(Remote Procedure Call,远程过程调用)框架集大成之作,基本具备一个RPC框架应有的所有功能,包括高性能通信、多协议集成、服务注册与发现、服务路由、负载均衡、服务治理等核心功能。作为一个分布式服务框架,Dubbo无疑是非常优秀的,但在功能完备性上,API网关、服务熔断器等核心组件在Dubbo中并没有完整体现。表1-1展示了Dubbo与Spring Cloud之间的技术组件对比关系。

表1-1 Dubbo与Spring Cloud之间的技术组件对比关系

事实上,作为阿里巴巴出品的开源框架,在接下来要介绍的Spring Cloud Alibaba中内置了对Dubbo的支持。但Dubbo属于一种RPC架构,技术耦合性较高,不符合微服务架构中服务与服务之间轻量级通信机制的交互要求,所以本书不会对Dubbo框架做过多展开,而是重点讨论Spring Cloud Alibaba中的其他技术组件。那么,既然有了Spring Cloud,我们为什么还要引入Spring Cloud Alibaba呢?原因同样是组件完备性。相较Spring Cloud,Spring Cloud Alibaba为开发人员提供了更多即插即用的技术组件。

1.2.2 从Spring Cloud到Spring Cloud Alibaba

Spring Cloud和Spring Cloud Alibaba都是构建在Spring Boot之上的微服务框架,它们都提供了一系列的组件和工具,可以帮助开发人员快速构建和管理微服务应用程序。请注意,Spring Cloud是Spring官方维护的微服务框架,它的生态系统非常丰富。而Spring Cloud Alibaba则是阿里巴巴维护的微服务框架,同样具备自身的一套生态系统。表1-2展示了Spring Cloud与Spring Cloud Alibaba之间的技术组件对比关系。

表1-2 Spring Cloud与Spring Cloud Alibaba之间的技术组件对比关系

从表1-2中我们不难看出,Spring Cloud Alibaba比Spring Cloud提供了更多实用的技术组件。

❑ Nacos:一款更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,整合了注册中心和配置中心的核心功能。

❑ Sentinel:一款高性能的熔断降级组件,把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

❑ RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

❑ Seata:一款高性能的分布式事务开发框架,集成了目前主流的各类分布式事务实现模式和解决方案。

从框架的发展和业界的应用情况来讲,Spring Cloud的成功源于它集成了Netflix所提供的开发工具包,其中包括Eureka、Ribbon、Feign、Hystrix、Zuul、Archaius等组件。在2020年之前,这套Spring Cloud Netflix生态都是业界开发微服务系统的主流框架。但在2020年之后,由于Netflix对Zuul、Ribbon等项目的维护投入比较少,所以Spring Cloud在greenwich版本中把这些项目都设置成了维护模式。进入维护模式意味着Spring Cloud团队不会再向这些模块中添加新的功能,但是仍然会修复安全问题和一些block级别的bug。

Spring Cloud Alibaba作为阿里巴巴开发的一套微服务架构,目前已经纳入Spring中,开发人员可以采用与Spring Cloud完全一样的编程模型轻松使用Spring Cloud Alibaba所提供的技术组件来开发微服务系统,学习成本非常低。再加上Netflix停止了更新,所以包括笔者所在团队在内,当下业界大多数公司都选择使用阿里巴巴系列的微服务开发框架。 138cFQLlmiHE4RDr7w5HD+il0orcBgCDFtaZ3UhKT96q/Z5Milz2OGPC5pVlJy6M

点击中间区域
呼出菜单
上一章
目录
下一章
×