Springcloud(一)、搭建SpringCloudgo

future微服务项目架构图

image.png

创建父工程 future-parent

引入parent依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.4.RELEASE</version>
    <relativePath/>
</parent>
复制代码

统一版本管理

<properties>
    <java.version>1.8</java.version>
    <spring-cloud-alibaba.version>2.1.0.RELEASE</spring-cloud-alibaba.version>
    <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    <io.springfox.version>2.9.2</io.springfox.version>
    <mybatis-plus.version>3.4.0</mybatis-plus.version>
    <org.apache.velocity.version>2.3</org.apache.velocity.version>
</properties>
复制代码

统一工程依赖及其版本

可以在父工程中固定依赖版本,子工程引用父工程时只需要引入依赖名称即可。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

        <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${io.springfox.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${io.springfox.version}</version>
        </dependency>
        <!-- mybatisPlus 核心库 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!--代码生成器-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!--模板引擎-->
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
            <version>${org.apache.velocity.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
复制代码

父工程引入依赖包

父工程引入的依赖版本子工程不需要在引入

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>


    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
    </dependency>

    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
    </dependency>

</dependencies>
复制代码

创建子工程future-common-sdk

该工程用于向其他子工程提供公共依赖,包括实体类,读取配置,同一返回值,统一全局异常、工具类等信息

引入父依赖

<!--    引入父依赖-->
    <parent>
        <artifactId>future-parent</artifactId>
        <groupId>com.future.boot</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
复制代码

创建子工程future-admin

该工程用于模拟微服务中基础信息模块,模拟下游服务。
基础服务模块可向其他上层服务提供信息查询等功能,但是基础服务应当保证服务的并发性、准确性,以及大量访问导致的日志冗余,需要合理的设计接口格式,SQL语句以及打印日志。

引入父依赖

<parent>
    <artifactId>future-parent</artifactId>
    <groupId>com.future.boot</groupId>
    <version>1.0-SNAPSHOT</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
复制代码

引入其他依赖

 <dependencies>
<!--        自定义公共数据模块-->
        <dependency>
            <groupId>com.common</groupId>
            <artifactId>future-common-sdk</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- Nacos 配置管理服务-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.3</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity-engine-core</artifactId>
        </dependency>

    </dependencies>
复制代码

创建子工程future-gateway

该工程用于模拟网关服务,所有访问该微服务的请求都需要由gateWay进行转发,gateway网关对请求进行鉴权、限流等操作。POM文件参考admin服务。

创建子工程future-portal

该服务模拟网页服务