一、前言
由于很久很久很久很久......很久之前写过一篇搭建Spring Cloud的文章,但是现在感觉未来可能更多的会使用Spring Cloud Alibaba了,所以也来凑凑热闹写一下。
二、什么是Spring Cloud Alibaba
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。
三、我们需要了解哪些组件
- Nacos
实现注册中心与配置中心,提供可视化配置界面
- Sentinel
实现限流、熔断、降级,并且提供可视化配置界面
- OpenFeign
OpenFeign组件不是包含在Alibaba中,但是Spring Cloud Alibaba各个服务间请求一般我们也是用OpenFeign调用
- Gateway
Spring Cloud Alibaba同样没有提供对应的网关组件,所以我们使用官方的Spring Cloud Gateway来当作网关
- Seata
提供高性能和简单易用的分布式事务服务;
- RocketMQ
分布式消息系统,提供低延时的、高可靠的消息发布与订阅服务
四、此次文章中用到的相关包的版本
- Spring Boot 2.3.12.RELEASE
- Spring Cloud Hoxton.SR12
- Spring Cloud Alibaba 2.2.8.RELEASE
- Nacos 2.0.4
parent工程POM
我这个整体接口写的比较粗糙,因为是Demo,如果各位看官自己用的话可以优化一下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hewl</groupId>
<artifactId>hewl-parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>hewl-cloud-gateway</module>
<module>hewl-cloud-order</module>
<module>hewl-cloud-business</module>
<module>hewl-cloud-core</module>
<module>hewl-cloud-order-api</module>
</modules>
<properties>
<java.version>1.8</java.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<spring-boot.version>2.3.12.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.SR12</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
<spring-boot-admin.version>2.3.12</spring-boot-admin.version>
<alibaba.nacos.version>2.0.4</alibaba.nacos.version>
<alibaba.seata.version>1.5.1</alibaba.seata.version>
<commons.io.version>2.11.0</commons.io.version>
<commons.fileupload.version>1.4</commons.fileupload.version>
<transmittable-thread-local.version>2.12.2</transmittable-thread-local.version>
<commons-collections.version>3.2.2</commons-collections.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- SpringCloud 微服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringCloud Alibaba 微服务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--io常用工具类 -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons.io.version}</version>
</dependency>
<!--文件上传工具类 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${commons.fileupload.version}</version>
</dependency>
<!-- Collection 增强Java集合框架 -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<!-- 线程传递值 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>transmittable-thread-local</artifactId>
<version>${transmittable-thread-local.version}</version>
</dependency>
<!-- 网关-->
<dependency>
<groupId>com.hewl</groupId>
<artifactId>hewl-cloud-gateway</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hewl</groupId>
<artifactId>hewl-cloud-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hewl</groupId>
<artifactId>hewl-cloud-order</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.hewl</groupId>
<artifactId>hewl-cloud-order-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
那么第一章我们就愉快的结束啦~~~~~~