SpringCloudAlibaba微服务架构搭建(一)框架搭建(粘贴即运行)

什么是 Spring-Cloud?

其实Spring Cloud是在Spring Boot基础上构建的,用于快速构建分布式系统的通用模式的工具集。
他的特点:约定优于配置。组件丰富,功能齐全。SpringCloud为微服务。列如Euerk架构提供了非常完整的支持。列如配置管理、服务发现、断路器、微服务网关等。

SpringCloud

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.huangmount</groupId>
        <artifactId>HuangMount</artifactId>
        <version>3.6.3</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <modules>
        <module>huangmount-api-system</module>
    </modules>

    <artifactId>huangmount-api</artifactId>
    <packaging>pom</packaging>

    <description>
        huangmount-api系统接口
    </description>

</project>

能干些什么?

  1. 服务发现与注册:Spring Cloud阿里巴巴集成了Nacos,一个强大的服务发现和注册中心。通过Nacos,微服务应用可以实现动态的服务注册和发现,以便服务之间可以相互调用。

  2. 配置管理:Nacos还提供了配置管理功能,允许开发者集中管理微服务的配置信息,并实现动态配置刷新。

  3. 服务容错保护:通过集成Sentinel,Spring Cloud阿里巴巴可以对微服务进行流量控制、熔断降级和系统负载保护,防止因服务故障或异常导致整个系统崩溃。

  4. 消息驱动:Spring Cloud阿里巴巴支持集成RocketMQ,一个消息队列,使得微服务之间可以进行异步通信和事件驱动的交互。

  5. 多个事务:通过Seata,Spring Cloud阿里巴巴可以实现多个事务的管理和协调,保证多个微服务之间的数据操作的一致性和可靠性。

  6. RPC 通信:虽然 Dubbo 不是 Spring Cloud Obama 的蜡烛组件,但它是一个高性能的 RPC 框架,也可以方便地与 Spring Cloud Ali 集成,提供快速、高效的微服务间通信。

SpringCloudAlibaba之核心组件详解

  1. Nacos(Naming and Configuration Service):

    • 功能:Nacos是一个动态服务发现和配置管理平台。它提供服务注册与发现、配置管理、动态路由等功能,可以帮助微服务应用实现弹性和可伸缩性。
    • 服务注册与发现:微服务应用可以将自己的服务注册到Nacos,并通过Nacos发现其他服务的位置。
    • 配置管理:Nacos可以集中管理微服务应用的配置信息,包括动态刷新配置,无需重启应用即可更新配置。
    • 动态路由:Nacos支持动态路由功能,可以根据配置调整服务之间的调用路径,实现流量控制和负载均衡。
  2. Sentinel:

    • 功能:Sentinel是一个流量控制和系统保护组件,用于保护微服务免受流量激增和故障的影响。
    • 流量控制:Sentinel允许开发者设置流量控制规则,限制每个微服务的请求量,防止服务因请求过载而崩溃。
    • 熔断降级:Sentinel可以在服务出现异常或故障时自动熔断降级,防止故障传递和整个系统崩溃。
    • 系统负载保护:Sentinel可以根据系统负载情况进行自适应限流,防止系统超负荷运行。
  3. RocketMQ:

    • 功能:RocketMQ是一个分布式消息队列,用于实现微服务之间的异步通信和解耦。
    • 消息发布与订阅:微服务应用可以将消息发布到RocketMQ,其他微服务可以通过订阅消息来接收和处理这些消息。
    • 可靠性投递:RocketMQ保证消息的可靠性投递,确保消息不会因为网络故障或其他问题丢失。
  4. Seata:

    • 功能:Seata是一个开源的分布式事务解决方案,用于管理和协调分布式事务。
    • 分布式事务:Seata支持分布式事务的管理和处理,确保多个微服务之间的数据操作的一致性。
    • 事务协调:Seata提供全局事务协调服务,协调并管理跨多个微服务的分布式事务。
  5. Dubbo(可选,不是Spring Cloud Alibaba的独有组件):

    • 功能:Dubbo是一个高性能的RPC(远程过程调用)框架,用于微服务之间的快速通信。
    • 远程调用:Dubbo允许微服务应用通过RPC方式直接调用其他微服务的方法,实现快速、高效的通信。

这些组件为构建微服务应用提供了一系列的解决方案,涵盖了服务发现、配置管理、容错保护、消息驱动、分布式事务等关键功能。使用这些组件,开发者可以更方便地构建复杂的微服务应用,并具备了更好的弹性和可靠性。

Alibaba框架代码上手干活(纯源码,粘贴即运行)

1、创建一个空项目 HuangMount

2、粘贴到父项目Pom.xml中

<?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.huangmount</groupId>
    <artifactId>HuangMount</artifactId>
    <version>3.6.3</version>

    <name>huangmount</name>
    <description>alibaba微服务系统</description>

    <properties>
        <huangmount.version>3.6.3</huangmount.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-boot.version>2.7.13</spring-boot.version>
        <spring-cloud.version>2021.0.8</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
        <spring-boot-admin.version>2.7.10</spring-boot-admin.version>
        <swagger.fox.version>3.0.0</swagger.fox.version>
        <swagger.core.version>1.6.2</swagger.core.version>
        <tobato.version>1.27.2</tobato.version>
        <kaptcha.version>2.3.3</kaptcha.version>
        <pagehelper.boot.version>1.4.7</pagehelper.boot.version>
        <druid.version>1.2.16</druid.version>
        <dynamic-ds.version>3.5.2</dynamic-ds.version>
        <commons.io.version>2.11.0</commons.io.version>
        <velocity.version>2.3</velocity.version>
        <fastjson.version>2.0.34</fastjson.version>
        <jjwt.version>0.9.1</jjwt.version>
        <minio.version>8.2.2</minio.version>
        <poi.version>4.1.2</poi.version>
        <transmittable-thread-local.version>2.14.3</transmittable-thread-local.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>

            <!-- FastDFS 分布式文件系统 -->
            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>${tobato.version}</version>
            </dependency>

            <!-- Swagger 依赖配置 -->
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-models</artifactId>
                <version>${swagger.core.version}</version>
            </dependency>
            <dependency>
                <groupId>io.swagger</groupId>
                <artifactId>swagger-annotations</artifactId>
                <version>${swagger.core.version}</version>
            </dependency>

            <!-- 验证码 -->
            <dependency>
                <groupId>pro.fessional</groupId>
                <artifactId>kaptcha</artifactId>
                <version>${kaptcha.version}</version>
            </dependency>

            <!-- pagehelper 分页插件 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pagehelper.boot.version}</version>
            </dependency>

            <!-- io常用工具类 -->
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons.io.version}</version>
            </dependency>

            <!-- excel工具 -->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>${poi.version}</version>
            </dependency>

            <!-- 代码生成使用模板 -->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity-engine-core</artifactId>
                <version>${velocity.version}</version>
            </dependency>

            <!-- JSON 解析器和生成器 -->
            <dependency>
                <groupId>com.alibaba.fastjson2</groupId>
                <artifactId>fastjson2</artifactId>
                <version>${fastjson.version}</version>
            </dependency>

            <!-- JWT -->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>${jjwt.version}</version>
            </dependency>

            <!-- 线程传递值 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>transmittable-thread-local</artifactId>
                <version>${transmittable-thread-local.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>

    <modules>
        <module>huangmount-common</module>
    </modules>
    <packaging>pom</packaging>

    <dependencies>
        <!-- bootstrap 启动器 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring-boot.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <repositories>
        <repository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>public</id>
            <name>aliyun nexus</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

3、创建一个业务项目 huangmount-api 业务系统

        3.1 继续创建huangmount-modules

        3.2 粘贴huangmount-modules, 如下

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.huangmount</groupId>
        <artifactId>HuangMount</artifactId>
        <version>3.6.3</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <modules>
        <module>huangmount-modules-system</module>
    </modules>

    <artifactId>huangmount-modules</artifactId>
    <packaging>pom</packaging>

    <description>
        huangmount-modules业务模块
    </description>

</project>

        3.3 创建huangmount-modules-system 模块,该模块为业务系统模块,用于提供接口

        3.4 粘贴huangmount-modules-system 模块pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.huangmount</groupId>
        <artifactId>huangmount-modules</artifactId>
        <version>3.6.3</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
	
    <artifactId>huangmount-modules-system</artifactId>

    <description>
        huangmount-modules-system系统模块
    </description>
	
    <dependencies>
    	
    	<!-- SpringCloud Alibaba Nacos -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        
        <!-- SpringCloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        
    	<!-- SpringCloud Alibaba Sentinel -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
        
    	<!-- SpringBoot Actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
		
        <!-- Swagger UI -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.fox.version}</version>
        </dependency>
		
        <!-- Mysql Connector -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        
    
    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
   
</project>

        3.5 项目结构图如下

启动HuangMountSystemApplication启动类即可成功,如有问题,欢迎留言!

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
您好!对于搭建Spring Cloud Alibaba框架,您可以按照以下步骤进行操作: 1. 创建一个Spring Boot项目:首先,您需要创建一个空的Spring Boot项目作为基础。您可以使用Spring Initializr(https://start.spring.io/)来生成一个基本的Spring Boot项目。 2. 添加Spring Cloud Alibaba依赖:在项目的pom.xml文件中,添加必要的依赖以支持Spring Cloud Alibaba框架。以下是一些常用的依赖: ```xml <!-- Spring Cloud Alibaba核心依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-cloud</artifactId> </dependency> <!-- 服务注册与发现 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- 配置中心 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <!-- 熔断与限流 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <!-- 分布式事务 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata-all</artifactId> </dependency> ``` 3. 配置Nacos作为服务注册与发现中心:在application.properties(或application.yml)文件中,配置Nacos的相关信息,包括Nacos服务器地址、端口等。例如: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 ``` 4. 配置Spring Cloud Alibaba Sentinel作为熔断与限流组件:在application.properties(或application.yml)文件中,配置Sentinel的相关信息。例如: ```properties sp

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Money鹏同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值