文章目录
教程适用版本
- JDK 1.8+
- Maven 3.6+
- Spring Boot 2.2.4.RELEASE
- Spring Cloud Hoxton.SR1
- Spring Cloud Alibaba 2.2.0.RELEASE
官网推荐对应版本
一、简介
本文主要介绍了如何搭建一个Spring Cloud Alibaba
项目,适合已经熟练使用Spring Boot
,想要学习搭建Spring Cloud Alibaba
项目的小伙伴。
Spring Cloud Alibaba
为分布式应用程序开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud
开发应用程序。
依托 Spring Cloud Alibaba
,您只需要添加一些注解和少量配置,就可以将 Spring Cloud
应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
此外,阿里云同时还提供了 Spring Cloud Alibaba
企业版 微服务解决方案,包括无侵入服务治理(全链路灰度,无损上下线,离群实例摘除等),企业级 Nacos
注册配置中心和企业级云原生网关等众多产品。
主要功能
- 服务限流降级:默认支持 WebServlet、WebFlux、OpenFeign、RestTemplate、Spring Cloud Gateway、Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
- 服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成对应 Spring Cloud 版本所支持的负载均衡组件的适配。
- 分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
- 消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
- 分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
- 阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- 分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
- 阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
组件
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
Alibaba Cloud SchedulerX: 阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。
Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
开源地址
https://github.com/alibaba/spring-cloud-alibaba
二、开始搭建
1.项目搭建与依赖管理
搭建Spring Cloud Alibaba项目需要的基础依赖项
2.服务注册与发现(Nacos安装)
我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos,阿里巴巴提供的Nacos组件,可以提供服务注册与发现和分布式配置服务,拥有着淘宝双十一十几年的流量经验,还是非常的可靠的。
Nacos 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
3.创建服务提供者
分布式中服务提供者如同他的名字,主要用来提供服务接口,他直接与数据源互动,将对数据进行处理,为服务消费者提供基础服务功能。
4.创建服务消费者
分布式中服务消费为前端提供接口调用功能,根据调用的要求将数据拆分给各个服务提供者,以实现前端需求,简单来讲,服务提供者是基础配件厂家,服务消费者是组装公司,前端是客户,客户下单,服务消费者根据用户需求,向服务提供者选择不同配件,最后组装成客户需要,返回给客户。
点击查看详情
5.创建服务消费者(Feign)
6.添加熔断机制(Sentinel)
着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应过载保护、热点流量防护等多个维度保护服务的稳定性。
7.Sentinel熔断器仪表盘监控
Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。这里,我们将会详细讲述如何通过简单的步骤就可以使用这些功能。
8.路由网关(Gateway)
Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,该项目提供了一个库,用于在Spring WebFlux之上构建API网关。Spring Cloud Gateway旨在提供一种简单而有效的方式来路由到API,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,如:安全性,监控/指标和弹性等。
9.分布式配置管理(Nacos Config)
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。
10.分布式配置管理(Nacos Config)之多环境配置
面对复杂的生产测试和开发环境, Spring 为我们提供了 Profile 这个功能,我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的 Profile 就可以了。在分布式中也是一样,nacos中,我们可以通过对配置文件的命名和Profile的关系自动匹配。
11.链路追踪(SkyWalking)
在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些是串行的,而有些是并行的。在这种情况下,我们如何才能确定这整个请求调用了哪些应用?哪些模块?哪些节点?以及它们的先后顺序和各部分的性能如何呢?
12.定时任务(xxl-job)
xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
13.自建对象存储服务与集成(minio版)
在自己的服务器上搭建对象存储(OSS)服务并与我们的Spring Cloud Alibaba项目进行集成。
未完待续!持续更新中。。。