搭建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中的主要组件有:

  1. Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  2. Dubbo:阿里巴巴开源的一个高性能Java RPC框架。
  3. RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  4. Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  5. 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主要包含以下组件:

  1. Eureka:服务注册中心,用于服务注册与发现。
  2. Ribbon:负载均衡器,在服务调用方进行负载均衡。
  3. Feign:声明式 REST 客户端,简化 RESTful API 的调用。
  4. Hystrix:熔断器,容错管理工具,防止分布式系统中级联故障。
  5. Zuul:API 网关,用于认证、监控和路由转发等功能。
  6. Config:配置中心,通过Git仓库统一管理应用配置。
  7. Bus:事件总线,用于广播配置文件变更事件。
  8. Sleuth:调用链监控系统,用于跟踪微服务中的调用链信息。
  9. Stream:消息驱动微服务,简化消息系统的使用。
  10. Gateway:新的API网关,取代Zuul。
    除此之外,spring-cloud还支持与第三方组件的整合,如:
  • Kubernetes:容器编排平台的整合。
  • Netflix组件:Ribbon、Hystrix、Zuul等。
  • Zookeeper:服务注册发现与配置中心的支持。
  • Consul:服务注册发现与配置中心的支持。
    二者二维表比较:
    在这里插入图片描述标签是依赖管理它主要有以下作用:
  1. 声明依赖的版本号,让子项目的依赖使用相同版本号,实现版本锁定。这可以避免因依赖版本过高或过低导致的构建问题。
  2. 子项目继承自父项目,声明为dependencyManagement的依赖不会实际引入。子项目需要显式声明需要使用的依赖,并从父项目中继承正确的版本号。
  3. 如果子项目中没有声明依赖版本,默认会使用从dependencyManagement继承的版本,实现版本的一致管理。
  4. 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就基本上配置完毕。

添加网关模块

右击项目–new–添加module,创建普通的manen项目
在这里插入图片描述
网关是cloud项目中所有模块的入口,所以它的配置和普通的配置略有不同。

一、添加依赖:

    <dependencies>
        <dependency>
            <!--     gateway 注意 此模块不能引入starter-web       -->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

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

pring-cloud-starter-alibaba-nacos-discovery是Spring Cloud Alibaba中关于Nacos服务发现的起步依赖。引入它可以让Spring Cloud应用使用Nacos作为服务注册与发现中心。

配置网关的application.yml文件

server:
#  该模块的端口号
  port: 8080
spring:
  application:
#  网关名称
    name: gateway
  profiles:
#指定环境
    active: local

  cloud:
    gateway:
      discovery:
        locator: 
          enabled: true # 让gateway从nacos中获取服务信息
      rotes:
        - id: user_route            #用户模块路由
          uri: lb://test   #test项目注册到nacos的服务名称,
          order: 1
          predicates:
            - Path=/test/**  #路由断言,用于判断请求是否符合转发条件。这里是判断请求路径是否以/test开头,如果是则转发到test服务

    nacos:
      discovery:
        server-addr: nacos地址+端口号 #nacos地址
        namespace: FilterTest

网关入口

@SpringBootApplication
@EnableDiscoveryClient   //服务注册是否可以被发现
public class GateWayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class,args);
    }
}

普通模块

普通模块创建和网关模块创建是一样的。

普通模块的配置文件:

server:
  port: 8082
  servlet:
    context-path: /test
spring:
  application:
    name: test
  profiles:
    active: local
  cloud:
    nacos:
      discovery:
        server-addr: nacos地址+端口号 #nacos地址
        namespace: FilterTest

普通模块的pom文件

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

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

启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class TestApplication {
    public static void main(String[] args) throws UnknownHostException {
        ConfigurableApplicationContext application =SpringApplication.run(TestApplication.class,args);

}

application.yml文件和bootstrap.yml文件的区别

该例子我搭建的cloud项目使用的配置文件使用的是application.yml,这里有一个优先级的问题,bootstrap.yml的优先级要比application.yml的优先级要高,而且一般使用熔断、限流之类的中间件的时候一般使用bootstrap.yml。

总结

本博客文中只是简单的搭建了一个cloud项目,如果在实际开发过程中需要用到其他的组件,在pom文件中引入相关依赖。

最后搭建完毕之后访问此:http://localhost:8080/test/test/TestController/test地址可以访问到自己的项目。需要说明一下,url地址中的第一个“/test”是网关中配置的地址,第二个test是自己模块中的上下文地址。
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Cloud Alibaba是阿里巴巴推出的一套基于Spring Cloud的微服务框架。它包含了多个组件,如服务注册中心、配置中心、分布式事务等,可以帮助开发者快速搭建分布式应用。 下面是Spring Cloud Alibaba项目搭建的步骤和注意事项: 步骤: 1. 创建Spring Boot项目:可以使用Spring Initializr或者自己手动创建。 2. 添加依赖:在pom.xml文件中添加Spring Cloud Alibaba的依赖,如: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.1.RELEASE</version> </dependency> ``` 其中,spring-cloud-starter-alibaba-nacos-discovery是服务注册中心的依赖。 3. 配置文件:在application.properties或application.yml中配置服务注册中心的地址和端口,如: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 ``` 4. 编写代码:编写服务提供者和消费者的代码,可以使用Feign或者RestTemplate来调用服务。 5. 启动应用:运行Spring Boot应用,访问http://localhost:8080可以看到服务已经注册到了Nacos中心。 注意事项: 1. 版本兼容性:Spring Cloud Alibaba中的各个组件有版本兼容性的要求,需要根据自己的需求选择合适的版本。 2. 服务注册中心的选择:Spring Cloud Alibaba中提供了多种服务注册中心的选择,如Nacos、Consul、Zookeeper等,需要根据自己的需求选择合适的注册中心。 3. 分布式事务的使用:Spring Cloud Alibaba中提供了分布式事务的解决方案,如Seata等,需要根据自己的需求进行选择和配置。 4. 配置中心的使用:Spring Cloud Alibaba中提供了配置中心的解决方案,如Nacos Config等,可以将配置文件集中管理,方便应用的部署和维护。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谷艳爽faye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值