从0开始搭建 SpringCloudAlibaba 项目

1、服务注册中心和配置中心nacos

  • 首先去NACOS官网 下载相关jar,这里使用的是最新版本1.3.2

  • 解压缩后需要配置数据库  nacos->conf 找到nacos-mysql.sql ,在数据库建库nacos并执行该脚本。

       

  • 修改applicaion.properties文件,其中将默认连接方式修改为mysql数据库连接
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=GMT%2b8
db.user=root
db.password=root
  • 配置完以上内容后就可以启动nacos服务了,选择nacos->bin目录下startup.cmd。双击该文件运行,当然运行不了。 因为1.3.2版本默认的启动方式集群模式,需要切换成单机模式才可以运行。
  • 打开cmd切换到nacos的bin文件夹下,输入命令startup.cmd -m standalone  ,出现如下显示就表示启动成功了

  • 访问nacos网页看看效果,cmd启动完了会有启动地址,如上图红框地址。默认的账号密码为 nacos

以上就是nacos的配置信息与启动方式。第一步已经完事了,接下来开始创建demo,开始写代码啦

注意事项:必须先启动nacos,才能启动cloud的项目

2、创建SpringCloudAlibaba项目

 2.1 创建一个父工程

修改pom文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>cloudalibaba-provider</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>cloudalibaba</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>cloudalibaba</name>
    <description>Demo project for Spring Boot</description>

    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
    </properties>

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

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


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

 2.2 创建生产者和消费者项目

  • 首先创建生产者项目 cloudablibaba-provider,新建module项目,新建的是没有包和启动类,没有配置文件,需要手动创建

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

 

 

server:
  port: 8000
spring:
  application:
    name: provider-server  #服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848  #nacos的服务注册中心地址
  • 创建一个controller测试一下

完成以上,生产者就完成了,启动项目看看

注意事项:父工程的pom文件中必须添加

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

不然启动项目后,注册中心是无法发现服务的

  • 启动完成后去nacos服务注册中心看看,发现provider生产者已经注册到了nacos,说明生产者已经搭建完成。 

 

访问地址:http://localhost:8000/index ,如图所示,生产者已经搭建完成

2.2 创建消费者,步骤和创建生产者一样,修改一下端口号和服务名称

  • 启动完成后nacos注册服务中心可以看到消费者服务已经注册

 访问地址:http://localhost:8001/index ,如图所示,生产者已经搭建完成

2.3 整合feign,实现消费者调用生产者

  • 在消费者pom.xml 添加依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-openfeign</artifactId>
	<version>2.2.5.RELEASE</version>
</dependency>
  •  添加  @EnableFeignClients 注解

  • 创建  ConsumerFeign.java 和  FeignServiceFallBack

  • 在controller里添加方法

  • 然后停止生产者服务 cloudablibaba-provider,访问以上接口,看看什么效果?

  • 出现以上结果表示降级没有起作用。并没有返回自定义的信息。理论上应该显示 “生产者cloudalibaba-provider服务被降级停用了”。
  • 为什么出现这个结果呢,SpringCloudAlibaba  降级必须与熔断器sentinel一起用才生效。在消费者cloudalibaba-consumer的pom.xml添加以下依赖
<!-- 集成sentinel -->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
	<exclusions> <!--除去该依赖,controller返回的结果才是json,不去除就xml-->
		<exclusion>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-xml</artifactId>
		</exclusion>
	</exclusions>
</dependency>
  • 在yml文件中添加开启熔断的开关
  • 重启消费者服务,访问接口

2.4  整合网关SpringCloudGateWay (不是zuul)

  • 创建cloudalibaba-gateway服务,创建的都是module

<!--网关-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-gateway</artifactId>
	<version>2.2.1.RELEASE</version>
</dependency>
<!--nacos注册中心-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  •  新建启动类和配置文件

  • 配置文件application.yml
server:
  port: 9000
spring:
  application:
    name: gateway-server
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      routes:                       # 路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]
        - id: provider-route          # 当前路由的标识, 要求唯一,可以随便写
          uri: lb://provider-server  # lb指的是从nacos中按照名称获取微服务,并遵循负载均衡策略
          predicates:                # 断言(就是路由转发要满足的条件)
            - Path=/provider/**       # 当请求路径满足Path指定的规则时,才进行路由转发
          filters:                   # 过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改
            - StripPrefix=1           # 转发之前去掉1层路径

        - id: consumer-route
          uri: lb://consumer-server
          predicates:
            - Path=/consumer/**
          filters:
            - StripPrefix=1
  •  启动网关服务,(当然消费者和生产者也要启动,最重要的nacos一定要最先启动)
  •  启动网关报错,这是为什么呢?因为父工程中引入了 spring-boot-starter-web 依赖,SpringCloudGateway中不能引入此依赖,所以要修改cloudalibaba-gateway服务的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">
   <!-- <parent>
        <artifactId>cloudalibaba</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloudalibaba-gateway</artifactId>

    <dependencies>
        <!--网关-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <!--nacos注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.1.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

重启网关服务cloudalibaba-gateway,访问地址:http://localhost:9000/provider/index

访问消费者:http://localhost:9000/consumer/index

访问消费者调用生产者:http://localhost:9000/consumer/getInfo

以上就是SpringCloudAlibaba基础构建。有不对的地方希望留言指出,不喜勿喷。 转载请标明出处

源码已上传gitee:源码下载

  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
要在IDEA中搭建Spring Cloud Alibaba项目,你需要按照以下步骤进行操作: 1. 创建一个新的Spring Boot项目。在IDEA中,选择"File" -> "New" -> "Project",然后选择"Spring Initializr"作为项目类型。填写项目的基本信息,包括项目名称、项目位置等。 2. 在"Dependencies"选项卡中,添加Spring Cloud Alibaba的相关依赖。根据你的需求,可以添加以下依赖: - 引用\[1\]中的依赖:`com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config` - 引用\[2\]中的依赖:`com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel` - 引用\[3\]中的依赖:`com.alibaba.cloud:spring-cloud-starter-alibaba-sentinel` 3. 点击"Next",选择项目的其他配置,如项目Java版本、项目的包结构等。 4. 点击"Finish",完成项目创建。 现在,你已经成功搭建了一个Spring Cloud Alibaba项目。你可以根据自己的需求进行进一步的开发和配置。 #### 引用[.reference_title] - *1* *2* [手把手教你在 IDEA 中创建一个 Spring Cloud Alibaba 工程(一)](https://blog.csdn.net/u010101193/article/details/121786086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [idea 搭建springcloud+springcloud alibaba项目(maven)](https://blog.csdn.net/Helloworld_pang/article/details/108381930)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值