Spring Cloud Alibaba 的前世今生

1

Spring Boot

SpringBoot 是由 Pivotal 团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。

目的是解决企业项目一站式部署,通过内嵌 Servlet 容器(如Tomcat)创建可执行的jar,用简单的 java -jar 方式就能实现 Java 项目快速部署,省去了 Tomcat 等 Servlet 容器部署环节。

通过注解方式,弱化了xml的作用, 自动装配,开箱即用,几乎实现代码零配置。

底层基于Spring4.0设计,不仅继承了Spring框架优秀特性,而且通过注解方式简化配置,进一步简化了Spring应用的整个搭建和开发过程。

2

Spring Cloud

SpringCloud底层集成了 netflix 开源微服务框架,依托于大名鼎鼎的 Servlet 容器框架:SpringBoot

核心模块包括:服务注册发现、断路器和监控、服务网关与反向代理机制、客户端负载均衡、配置中心等。

目的是解决大规模服务分布式架构下,提供服务集中监控及治理能力。

架构图

Spring Cloud Alibaba 的前世今生

核心组件及主要功能大致如下:

1、服务注册和发现:eureka

它提供了微服务架构中很核心的组件:服务注册中心。基于服务端与客户端模式实现服务注册与发现。

Spring Cloud Alibaba 的前世今生

另外还提供可视化的微服务监控页面,能够很直观的查看正在运行的微服务实例列表。

2、服务网关:zuul

所有对外暴露接口请求通过网关服务转向后台服务,防止后台服务具体地址被泄露,其机制是一套路由规则配置来判断某个请求url由哪个服务来响应,配合eureka获取已注册的微服务来转发真实的请求。

3、配置中心:config server

微服务配置文件统一管理,主要包括连接数据库连接参数、业务参数、redis连接参数、kafka连接参数等。

4、客户端负载均衡:ribbon

zuul网关将一个请求发送给某一个服务的应用的时候,如果一个服务启动了多个实例,就会通过ribbon负载均衡机制来决定由其中某个服务实例处理请求。

5、服务间接口调用(类似于rpc):feign

如果服务(进程)之间需要相互调用,需要用到feign,类似于以前的httpclient 请求,它默认会使用 ribbon 来实现微服务多实例客户端负载均衡。

6、监控和断路器:hystrix

提供接口级的监控和断路器功能。

7、监控面板:hystrix dashboard

提供可视化界面,监控微服务的调用所消耗的时间等。

8、监控聚合:turbine

使用hystrix监控,我们需要打开每一个服务实例的监控信息来查看。而turbine可以帮助我们把所有的服务实例的监控信息聚合到一个地方统一查>看。这样就不需要挨个打开一个个的页面一个个查看。

版本匹配

  • spring cloud版本 Greenwich spring boot版本 2.1.x

  • spring cloud版本 Finchley spring boot版本 2.0.x

  • spring cloud版本 Edgware spring boot版本 1.5.x

  • spring cloud版本 Dalston spring boot版本 1.5.x

3

Spring Cloud Alibaba

哪有什么一夜成名,其实都是百炼成钢。

Spring Cloud Alibaba 是阿里巴巴贡献给 SpringCloud 一个子项目,致力于提供微服务开发的一站式解决方案,包含微服务开发的必备组件,基于SpringCloud,符合SpringCloud标准,阿里的微服务解决方案。

注意 Spring Cloud Alibaba 微服务框架不是为了替代 SpringCloud,而是一种继承和发展,提供一个微服务框架选择,丰富了 SpringCloud 生态。

主要特性

  • 服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。

  • 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。

  • 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。

  • 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。

  • 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。。

  • 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。

  • 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。

  • 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

4

Nacos

官方介绍

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

Nacos作为注册中心

Nacos对标Spring Cloud 的eureka

Nacos作为配置中心

Nacos 对标 Spring Cloud 的 Configserver

Nacos是注册中心和配置中心结合体,致力于提供一站式云原生、微服务的服务治理平台,看似有一统注册中心和配置中心趋势。