Spring Cloud Alibaba微服务架构设计与开发实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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为开发人员提供了更多即插即用的技术组件。