搭建cloud项目以及各个依赖和配置说明(一)

简介: 搭建cloud项目以及各个依赖和配置说明

背景


最近在做cloud项目,但是对于cloud项目的搭建还有有疑问的,所以尝试自己进行搭建并把自己遇到的问题进行总结。


步骤


接下来,我将自己是如何操作的一些步骤给总结和整理。


配置父pom文件


在配置pom文件之前首先要搭建一个空的maven项目。在父pom文件中加入依赖。

一、引入依赖:springcloud和cpringcloudalibaba依赖


<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>
        </dependencies>
    </dependencyManagement>


上面的代码中加入的依赖为spring-cloud-dependencies和spring-cloud-alibaba-dependencies


spring-cloud和spring-cloud-alibaba的区别


spring-cloud-alibaba是阿里巴巴开源的组件,主要包含了阿里巴巴在微服务方面的若干开源产品,spring-cloud-alibaba中的主要组件有:


Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Dubbo:阿里巴巴开源的一个高性能Java RPC框架。

RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。

Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

Sentinel:阿里巴巴开源产品,一个控制微服务流量的开源框架。

除此之外,spring-cloud-alibaba还整合了Spring Cloud与上述组件,提供了更加完善的微服务解决方案,主要包含:

Service Discovery:包含Nacos与Eureka的发现组件。

Configuration:Nacos配置中心组件。

Messaging:RocketMQ消息中间件的整合。

Distributed Transaction:Seata的分布式事务支持。

Circuit Breaker:Sentinel的熔断与限流支持。

Gateway:与Spring Cloud Gateway的整合。

spring-cloud是Spring官方提供的微服务开发工具。它基于Spring Boot构建,提供了一系列框架和工具帮助我们快速构建分布式系统中的微服务架构。spring-cloud主要包含以下组件:


Eureka:服务注册中心,用于服务注册与发现。

Ribbon:负载均衡器,在服务调用方进行负载均衡。

Feign:声明式 REST 客户端,简化 RESTful API 的调用。

Hystrix:熔断器,容错管理工具,防止分布式系统中级联故障。

Zuul:API 网关,用于认证、监控和路由转发等功能。

Config:配置中心,通过Git仓库统一管理应用配置。

Bus:事件总线,用于广播配置文件变更事件。

Sleuth:调用链监控系统,用于跟踪微服务中的调用链信息。

Stream:消息驱动微服务,简化消息系统的使用。

Gateway:新的API网关,取代Zuul。

除此之外,spring-cloud还支持与第三方组件的整合,如:

Kubernetes:容器编排平台的整合。

Netflix组件:Ribbon、Hystrix、Zuul等。

Zookeeper:服务注册发现与配置中心的支持。

Consul:服务注册发现与配置中心的支持。

二者二维表比较:


b0c8431f6b4644787f6ef90c6e6c68cb_3ecda747a51447afa5b03e792cdb27c5.png


标签是依赖管理它主要有以下作用:

声明依赖的版本号,让子项目的依赖使用相同版本号,实现版本锁定。这可以避免因依赖版本过高或过低导致的构建问题。

子项目继承自父项目,声明为dependencyManagement的依赖不会实际引入。子项目需要显式声明需要使用的依赖,并从父项目中继承正确的版本号。

如果子项目中没有声明依赖版本,默认会使用从dependencyManagement继承的版本,实现版本的一致管理。

dependencyManagement只是声明依赖版本,并不实际引入那些依赖。因此,它不会对Maven构建过程产生实际影响。

二、引入spring-boot-starter-parent

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
 </parent>


为什么要引入spring-boot-starter-parent?

统一管理各种依赖包的版本,避免版本冲突。


继承许多默认的Maven配置,简化pom文件。

能够使用Spring Boot提供的各种starter,快速构建应用。

不需要为许多依赖指定版本号,继承自parent的版本号。

举个例子,如果不使用这个父pom,我们在pom文件中需要声明的依赖信息会非常繁多,像下面这样


<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.1.3.RELEASE</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <version>2.1.3.RELEASE</version>
    <scope>test</scope>
  </dependency>  
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>2.1.3.RELEASE</version>
    <optional>true</optional>
  </dependency>
  <!-- 省略更多... -->
</dependencies>


这样看起来就比较繁琐


而使用了spring-boot-starter-parent之后,pom文件简化为:


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.3.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

可以看到配置变得非常简单,这就是使用spring-boot-starter-parent的主要好处。


三、添加cloud版本号


<properties>
<!--cloud版本号-->
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
        <java.version>11</java.version>
    </properties>

到这里父pom就基本上配置完毕。


相关文章
|
SpringCloudAlibaba 网络协议 Cloud Native
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。
14800 2
Spring Cloud Alibaba-全面详解(学习总结---从入门到深化)
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
24067 0
|
存储 SpringCloudAlibaba 前端开发
SpringCloud Alibaba 2021版 nacos 配置中心教程
SpringCloud Alibaba 2021版 nacos 配置中心教程
11462 1
SpringCloud Alibaba 2021版 nacos 配置中心教程
|
7月前
|
前端开发 Java Nacos
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
本文介绍了如何使用Spring Cloud Alibaba 2023.0.0.0技术栈构建微服务网关,以应对微服务架构中流量治理与安全管控的复杂性。通过一个包含鉴权服务、文件服务和主服务的项目,详细讲解了网关的整合与功能开发。首先,通过统一路由配置,将所有请求集中到网关进行管理;其次,实现了限流防刷功能,防止恶意刷接口;最后,添加了登录鉴权机制,确保用户身份验证。整个过程结合Nacos注册中心,确保服务注册与配置管理的高效性。通过这些实践,帮助开发者更好地理解和应用微服务网关。
1234 0
🛡️Spring Boot 3 整合 Spring Cloud Gateway 工程实践
|
消息中间件 JavaScript Dubbo
spring cloud alibaba springboot nacos 版本对应
spring cloud alibaba springboot nacos 版本对应
9495 0
|
10月前
|
消息中间件 存储 Java
吃透 RocketMQ 消息中间件,看这篇就够了!
本文详细介绍 RocketMQ 的五大要点、核心特性及应用场景,涵盖高并发业务场景下的消息中间件关键知识点。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
吃透 RocketMQ 消息中间件,看这篇就够了!
|
消息中间件 Java 持续交付
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 项目搭建步骤和注意事项
1964 0
Spring Cloud Alibaba 项目搭建步骤和注意事项
|
JavaScript Java Maven
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
理解固化的Maven依赖:spring-boot-starter-parent 与 spring-boot-dependencies
6025 1
|
消息中间件 Dubbo Java
SpringClou、SpringBoot、SpringCloud-Alibaba各个组件版本对应关系
SpringClou、SpringBoot、SpringCloud-Alibaba各个组件版本对应关系
3205 0
|
负载均衡 网络协议 前端开发
一文快速上手 Nacos 注册中心+配置中心!
一文快速上手 Nacos 注册中心+配置中心!
8335 0