初次搭建Spring Cloud Alibaba项目(一)

318 阅读1分钟

一、前言

由于很久很久很久很久......很久之前写过一篇搭建Spring Cloud的文章,但是现在感觉未来可能更多的会使用Spring Cloud Alibaba了,所以也来凑凑热闹写一下。

二、什么是Spring Cloud Alibaba

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

三、我们需要了解哪些组件

  1. Nacos

实现注册中心与配置中心,提供可视化配置界面

  1. Sentinel

实现限流、熔断、降级,并且提供可视化配置界面

  1. OpenFeign

OpenFeign组件不是包含在Alibaba中,但是Spring Cloud Alibaba各个服务间请求一般我们也是用OpenFeign调用

  1. Gateway

Spring Cloud Alibaba同样没有提供对应的网关组件,所以我们使用官方的Spring Cloud Gateway来当作网关

  1. Seata

提供高性能和简单易用的分布式事务服务;

  1. RocketMQ

分布式消息系统,提供低延时的、高可靠的消息发布与订阅服务

四、此次文章中用到的相关包的版本

  1. Spring Boot 2.3.12.RELEASE
  2. Spring Cloud Hoxton.SR12
  3. Spring Cloud Alibaba 2.2.8.RELEASE
  4. 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>

那么第一章我们就愉快的结束啦~~~~~~