初识Spring Cloud Alibaba
Spring Cloud Alibaba 是一个将Spring Cloud “阿里巴巴化“的微服务架构框架,它具备Spring Cloud 所有的能力,并添加了Nacos、Dubbo、RocketMQ等 Spring Cloud不具备的微服务架构能力。简单来说:搭建微服务架构,使用Spring Cloud Alibaba 比使用Spring Cloud更高效,更简单,开发的技术成本更低。
2018年10月31日,Spring Cloud Alibaba正式开源,并提交了第一个正式稳定版本 0.1.0.RELEASE。Spring Cloud Alibaba用了不到两年的时间,完成从0到1,成为了GitHub上的明星项目。
组件能力
Spring Cloud Alibaba 的主要功能:流量控制和服务降级,服务注册与发现,分布式配置,事件驱动,消息总线,分布式事务,Dubbo RPC。
Spring Cloud Alibaba的组件功能既有免费版本,也有收费版本。组件如下:
- Sentinel:以“流”为切入点,在流量控制、并发性、容错降级和负载保护等方面提供解决方案,以保护服务的稳定性。
- Nacos:一个具备动态服务发现和分布式配置等功能的管理平台,主要用于构建云原生应用程序。
- RocketMQ:一个高性能、高可用、高吞吐量的金融级消息中间件。Spring Cloud Alibaba将RocketMQ定制化封装,开发人员可“开箱即用”。
- Dubbo:一个基于Java的高性能开源RPC框架。
- Seata:一个高性能且易于使用的分布式事务解决方案,可用于微服务架构。
- 阿里云OSS:阿里云对象存储服务,一种加密的安全云存储服务。
- 阿里云SchedulerX:一款分布式任务调度产品,支持定期任务和在指定时间点触发任务。
- 阿里云SMS:一种覆盖全球的消息服务,提供便捷、高效和智能的通信功能。
学习Spring Cloud Alibaba的建议
在学习Spring Cloud Alibaba之前,需要先熟悉Spring Boot 和 Spring Cloud。在搭建微服务架构的时候,好多程序猿小伙伴,肯定也会遇到该如何选择组件是使用Spring Cloud组件还是使用Spring Cloud Alibaba组件。
我也是从Servlet + Jsp 到 Spring 再到 Spring Boot 一步步过来的,所以框架对开发者的优势感受颇深。
熟悉Spring Boot
很多Spring的初学者会因为繁琐的配置文件而却步,每当增加新的技术组件的时候,开发人员都需要重复地增加一些冗余的配置文件。想必很多同学和我一样,在开启一个新的项目的时候,则一般会快速复制搭建出项目骨架。但是每个项目往往又存在很多差异,所以需要手动地一个个去修改,增加了项目的技术复杂度。
很多技术专家和架构师会尝试封装一些基础组件,但是这些组件很多都不能做到“开箱即用”。
Spring Boot便是一款“开箱即用"的基础服务框架,它通过Factory机制完成普通对象的初始化,并将这些对象注入IOC容器中,通过条件注解控制Bean对象之间的依赖关系,业务开发人员通过注解即可完成执行功能的注入。
熟悉Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性,巧妙地简化了分布式系统基础设施的开发流程。例如,服务注册发现、配置中心、负载均衡、数据监控等功能,都可以使用Spring Boot开发风格做到一键式部署和启动。
Spring Cloud 并不是 Spring Framework 全新的框架,它只是把一些“能解决微服务架构中常见问题的优秀开源框架”结合起来,通过Spring Boot 风格和Spring Cloud 规范进行整合,屏蔽了繁琐的XML文件配置,提供了“开箱即用”的开发体验。
Spring Cloud 是一套标准的开发规范,是微服务架构的“一篮子”解决方案。
组件能力
- Spring Cloud Netflix Eureka:Spring Cloud Netflix 中的服务治理组件,包含服务注册中心、服务注册与发现机制的实现。
- Spring Cloud Netflix Ribbon:Spring Cloud Netflix 中的服务调用和客户端负载均衡组件。
- Spring Cloud Netflix Hystrix:Spring Cloud Netflix 的容错管理组件,为服务中出现的延迟和故障提供强大的容错能力。
- Spring Cloud Netflix Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
- Spring Cloud Netflix Zuul:Spring Cloud Netflix 中的网关组件,提供了智能路由、访问过滤等功能。
- Spring Cloud Gateway:一个基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关框架,它使用 Filter 链的方式提供了网关的基本功能,例如安全、监控/指标和限流等。
- Spring Cloud Config:Spring Cloud 的配置管理工具,支持使用 Git 存储配置内容,实现应用配置的外部化存储,并支持在客户端对配置进行刷新、加密、解密等操作。
- Spring Cloud Bus:Spring Cloud 的事件和消息总线,主要用于在集群中传播事件或状态变化,以触发后续的处理,例如动态刷新配置。
- Spring Cloud Stream:Spring Cloud 的消息中间件组件,它集成了 Apache Kafka 和 RabbitMQ 等消息中间件,并通过定义绑定器作为中间层,完美地实现了应用程序与消息中间件之间的隔离。通过向应用程序暴露统一的 Channel 通道,使得应用程序不需要再考虑各种不同的消息中间件实现,就能轻松地发送和接收消息。
- Spring Cloud Sleuth:Spring Cloud 分布式链路跟踪组件,能够完美的整合 Twitter 的 Zipkin。
Spring Cloud Alibaba 与 Spring Cloud 的关系
Spring Cloud Alibaba 依赖Spring Cloud,通过二次开发使开发者使用Spring Cloud 更加简单灵活。开发者可以直接使用Spring Cloud Alibaba来替换Spring Cloud。在Spring Cloud Alibaba中,可采用Spring Cloud协议和Dubbo的协议混合通信。
名称 | Spring Cloud | Spring Cloud Alibaba |
---|---|---|
注册中心 | Eureka、Consul | Nacos |
配置中心 | Spring Cloud Config | Nacos |
网关 | Zuul | GateWay |
负载均衡 | Ribbon | Loadbalancer |
熔断降级 | Hystrix | Sentinel |
服务调用 | Feign | Dubbo |
基于Spring Cloud的设计理念,出现了很多优秀的组件,其中比较优秀的便是Spring Cloud Alibaba。
上图中绿色对号的基本上都是Spring Cloud社区第二代组件,也是目前建议使用的组件。图中红色X号的组件,都基本上面临着淘汰与替换。
Spring Cloud Alibaba 和 Spring Cloud 搭配方案
SpringCoud Alibaba-Nacos:注册中心(服务发现/注册)
SpringCoud Alibaba-Nacos:配置中心(动态配置管理)
SpringCoud Alibaba-Sentinel:服务容错(限流、降级、熔断)
SpringCoud Alibaba-Seata:分布式解决方案
SpringCoud-Ribbon:负载均衡
SpringCoud-Feign:声明式HTTP客户端(调用远程服务)
SpringCoud-Gateway:API网关(webflux编程模式)
SpringCoud-Sleuth:调用链监控
到此,已经简单了解了Spring Cloud Alibaba的基础知识和组件能力。
参考书籍:Spring Cloud Alibaba 微服务架构【实战派】