Spring Cloud Alibaba 简介
Spring Cloud 是若干个框架的集合,包括 spring-cloud-config、spring-cloud-bus 等近 20 个子项目,提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。Spring Cloud 通过 Spring Boot 风格的封装,屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、容易部署的分布式系统开发工具包。一般来说,Spring Cloud 包含以下组件,主要以 Netflix 开源为主。
同 Spring Cloud 一样,Spring Cloud Alibaba 也是一套微服务解决方案,包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
API 网关:[Zuul, Gateway]
限流降级:Sentinel 高可用
服务层:
{
可集成 Ribbon、OpenFeign,
[Dubbo 服务调用,Dubbo 服务调用,Dubbo 服务调用],
Seata 分布式事务
}
消息驱动:RocketMQ
服务治理:
[Nacos 服务发现,Nacos 服务中心,Arths 服务监控]
阿里云商业化组件:
[Alibaba Cloud ACM, Alibaba Cloud OSS, Alibaba Cloud SchedulerX]
数据层
阿里开源组件
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
Dubbo:在国内应用非常广泛的一款高性能 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Arthas:开源的 Java 动态追踪工具,基于字节码增强技术,功能非常强大。
阿里商业化组件
阿里巴巴推出 Spring Cloud Alibaba,很大程度上市希望通过抢占开发者生态,来帮助推广自家的云产品。所以在开源社区,夹带了不少私货,阿里商业化组件,整体易用性和稳定性还是很高的。
Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
Alibaba Cloud OSS:阿里云对象存储服务 Object Storage Service,OSS,是阿里云提供的云存储服务。
Alibaba Cloud SchedulerX:阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准的定时(基于 Cron 表达式)任务调度服务。
集成 Spring Cloud 组件
Spring Cloud Alibaba 作为整套的微服务解决组件,只依靠目前阿里的开源组件是不够的,更多的是集成当前的社区组件,所以 Spring Cloud Alibaba 可以集成 Zuul,GateWay 等网关组件,也可继承 Ribbon、OpenFeign 等组件。
Nacos 服务注册和配置中心
Nacos 介绍
Nacos - Dynamic Naming and Configuration Service 是阿里巴巴开源的一个针对微服务架构中服务发现、配置管理和服务管理平台。
Nacos 就是注册中心 + 配置中心的组合。
Nacos = Eureka + Config + Bus。
官网 - https://nacos.io
,下载地址 - https://github.com/alibaba/Nacos
。
Nacos 功能特性:
- 服务发现与健康检查。
- 动态配置管理。
- 动态 DNS 服务。
- 服务和元数据管理;管理平台的角度,Nacos 也有一个 UI 页面,可以看到注册的服务及其实例信息(元数据信息)等;动态的服务权重调整、动态服务优雅下线,都可以去做。
Nacos 单例服务部署
下载解压安装包,执行命令启动(使用最近比较稳定的版本 nacos-server-1.2.0.tar.gz):
# linux/mac:
sh startup.sh -m standalone
# windows:
cmd startup.cmd
访问 nacos 控制台:http://127.0.0.1:8848/nacos/#/login
或者 http://127.0.0.1:8848/nacos/index.html
(默认端口 8848,账号和密码 nacos / nacos)。
微服务注册到 Nacos
1)在 lagou-parent
父项目 pom 中增加 SCA 的依赖版本管理:
<dependencyManagement>
<dependencies>
<!-- SCN -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SCA -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2)在商品服务提供者和消费者工程中引入 nacos 客户端依赖,必须删除 eureka-client
依赖(另外在 page 服务中删除 bus-amqp
和 config-client
的依赖,删除完后,把出现报错的注解也一并删除):
<!-- Spring cloud alibaba nacos 客户端的依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>