【springcloud学习(dalston.sr1)】项目整体介绍(含源代码)(一)

发布于:2025-05-14 ⋅ 阅读:(12) ⋅ 点赞:(0)

当前项目是用来记录下以前学习过的springcloud的dalston.sr1版本,该版本目前来看已经过时了,这里仅做下学习记录分享(当前推荐学习spring cloud alibaba)。

springcloud主要用于大型项目,比如有一个电商项目,可能涉及到商品模块、商家模块、订单模块、库存模块、购物车模块、用户管理模块、物流服务、登录模块等。如果全部创建在一个单体项目(单个进程),可能存在服务不稳定,不方便扩容扩展。这里就需要讲其拆分成多个模块,每个模块都是一个微服务(独立的进程)。其用到了springcloud的Eureka(服务注册与发现),Hystrix(服务熔断和降级),Ribbon(客户端负载均衡),zuul(网关与路由),Feign(服务接口http调用)

项目整体源代码已经上传至gitee上面,并已开源(地址为https://gitee.com/lichuangjava/springcloud-dalston-learn.git),如果需要可以自行clone到本地运行。

(一)项目整体结构和各模块的说明:

项目工程结构图如下:

其中springcloud2025为project,在该项目中再创建了多个module。各模块介绍如下:

(1)api 模块中主要是一些实体类,比如provider模块和consumer模块(分别是服务提供者和服务消费者项目)都会用到该实体,所以实体类放在了api 模块,另外consumer模块(服务消费者)需要用到的feign接口,也放在了api模块下。

(2)provider服务提供者模块,该项目为了演示集群,所以建了3个provider模块,分别使用8001、8002、8003端口,provider-hystrix是用于演示服务提供方的hystrix服务熔断效果

(3)consumer服务消费者模块,分别是consumer-80(使用restTemplate进行服务调用)、consumer-feign(使用feign进行服务接口的调用)、consumer-hystrix-dashboard(用于演示服务监控面板)

(4)spring cloud Eureka服务注册与发现模块:Eureka服务端,分别是eureka-7001、eureka-7002、eureka-7003,如下图,主要是为了演示eureka服务集群环境效果

(5)spring cloud config配置服务模块,主要是config-3344 (config服务端)、config-client-3355(config 客户端)、config-eureka-client-7001(config客户端,同时也是eureka服务端,用于演示eureka的服务端项目的application.yml配置信息,可以通过config服务获取到,并且能为eureka客户端提供服务注册功能)、config-goods-client-8001(config客户端,同时也是eureka客户端,用于演示eureka客户端项目的application.yml配置信息,可以通过config服务获取到,并且能正常注册服务到eureka服务端中)

(6)spring cloud zuul网关路由模块,主要是为项目提供服务的请求地址映射、路由功能

(7)spring cloud ribbon和feign服务负载均衡、服务接口调用

(8)spring cloud hystrix服务熔断与降级

服务熔断

服务降级  microservicecloud-consumer-feign和microservicecloud-api

(9)服务调用监控看板hystrix-dashboard

(二)项目在IDEA中的创建过程大致如下。

(1)首先在IDEA中创建了一个springcloud2025的项目,然后在该项目上再创建了多个module。

在IDEA中新建工程File - New Project ,在弹出框左侧选择Maven,然后项目JDK选择1.8版本,并点击下一步,然后填写项目名称springcloud2025,然后根据需要修改了GroupId,然后完成。如下图:

(2)在项目的POM文件中引入些依赖和jar版本配置。如下图:需要说明的是,第一次刚创建这个项目时,因为还没有新建任何module,所以图中是没有任何modules标签的,后面在该项目上再创建module时,会自动更新POM文件(不需要手工在该文件中填写module标签)

<?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.company</groupId>
    <artifactId>springcloud2025</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>microservicecloud-api</module>
        <module>microservicecloud-provider-8001</module>
        <module>microservicecloud-consumer-80</module>
        <module>microservicecloud-eureka-7001</module>
        <module>microservicecloud-eureka-7002</module>
        <module>microservicecloud-eureka-7003</module>
        <module>microservicecloud-provider-8002</module>
        <module>microservicecloud-provider-8003</module>
        <module>microservicecloud-consumer-feign</module>
        <module>microservicecloud-provider-hystrix-8001</module>
        <module>microservicecloud-consumer-hystrix-dashboard</module>
        <module>microservicecloud-zuul-gateway-9527</module>
        <module>microservicecloud-config-3344</module>
        <module>microservicecloud-config-client-3355</module>
        <module>microservicecloud-config-eureka-client-7001</module>
        <module>microservicecloud-config-goods-client-8001</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- 解决每次POM文件修改会自动将编译级别变成java5版本问题 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <java.version>8</java.version>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.16.18</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Dalston.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>1.5.9.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>42.6.0</version>
            </dependency>

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>

            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <build>
        <finalName>microservicecloud</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <delimiters>$</delimiters>
                    <outputDirectory/>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

(3)创建子模块

选中上面创建的springcloud2025项目,右键新建module,同样在左侧选中maven项目,SDK使用1.8.然后点击下一步,确认Parent项目是springcloud2025,然后输入module名称,比如microservicecloud-api,然后点击完成。(创建完成后,在springcloud2025项目的POM文件中,会自动维护子模块的相关信息

(4)后面再结合各模块的不同功能,在module中的POM引入相关的依赖,然后在application.yml(或者bootstrap.yml)中增加响应的配置,并且在启动类里加上对于的注解,已启用相关功能。关于各功能模块的详细说明和使用情况,后续再继续更新


网站公告

今日签到

点亮在社区的每一天
去签到