记录一次基于SpringCloud Gateway网关 + nacos(注册以及配置中心)微服务搭建

基于SpringCloud Gateway网关 + nacos(注册以及配置中心)微服务搭建

最近公司的搭建的云平台使用了SpringCloud,对于网关这里不是很懂,想自己重新搭建一次,然后记录下以便后面查阅。

1.先创建SpringBoot项目

其实SpringCloud其实就是在SpringBoot上搭建的,所以在这里我就直接先用idea直接生成一个SpringBoot了。

1.1 先点击左上角的file->new->project

在这里插入图片描述

1.2 选择你的jdk版本(我现在是1.8版本有点老,不好意思

在这里插入图片描述

1.3 更改自定义项目名以及根目录名

在这里插入图片描述

1.4 选择你需要创建的SpringBoot版本

在这里插入图片描述

1.5 给自己的项目取个名字(也可以直接next!)

在这里插入图片描述

1.6 项目创建完毕

在这里插入图片描述

接下来开始修改maven 添加springCloud相关包

 <properties>
        <spring.boot.version>2.2.4.RELEASE</spring.boot.version>
        <spring.cloud.version>Hoxton.SR1</spring.cloud.version>
        <spring.cloud.alibaba.version>2.2.0.RELEASE</spring.cloud.alibaba.version>
    </properties>

    <!--
        引入 Spring BootSpring CloudSpring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。
        在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系
     -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <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>

    <dependencies>

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

   在这里将原来的SpringBoot替换为SpringCloud相关jar包,并导入
 

在这里我踩了关于nacos的坑,给大家说下

 
   上面是关于springBoot还有Cloud相关的包 不解释了,主要是nacos的jar有两个,
 (重要:nacos-discovery 为nacos注册中心的相关包,nacos-config为nacos配置中心的相关包, 我一开始以为这两个是一个东西)
   还有一点要注意, < dependencyManagement> 这个标签的问题,大家要注意下,被此标签包住的jar是不会被下载的!!!(好多兄弟踩坑了)

修改yml文件

 

server:
  port: 8899

spring:
  cloud:
   gateway:
      routes:
        - id: ReactiveCompositeDiscoveryClient_user-service
          uri: lb://user-service
          predicates:
            - Path=/user-service/**
          filters:
            - RewritePath=/user-service/(?<remaining>.*), /${remaining} # 将 /user-service 前缀剔除
      discovery:
        locator:
          enabled: true # 是否开启,默认为 false 关闭
          url-expression: "'lb://' + serviceId" # 路由的目标地址的表达式,默认为 "'lb://' + serviceId"
        # Nacos 作为注册中心的配置项
  nacos:
   discovery:
    server-addr: 120.**.**.**:8848 # Nacos 服务器地址

在这里我将一个user-server注册进nacos的服务中心,再通过getway将请求转发至user-server

配置nacos的连接

由于nacos默认读取的是bootstrap.yaml 我们在项目中创建bootstrap.yaml文件,在这里我说下如果把nacos写进application.yaml里,nacos是读取不到的,在nacos源码里默认是读取bootstrap.yaml此文件,这个要注意。
在这里插入图片描述


spring:
  cloud:
    nacos:
      discovery:
        server-addr: 120.*.*.*:8848 # Nacos 服务器地址

在此说明,nacos可根据环境的不同,创建多个命名空间,进行环境的配置隔离等。bootstrap-dev.yaml为开发环境配置。
在这里插入图片描述
到此服务消费者已经搭建完毕。接下来开始搭建服务提供者(user-server)
 
在这里插入图片描述在重新复制一个新的SpringBoot项目,将刚才的Getway的pom文件复制过就可以。
在这里插入图片描述

spring:
  application:
    name: user-service # Spring 应用名
  cloud:
    nacos:
      # Nacos 作为注册中心的配置项
      discovery:
        server-addr: 120.**.**.**:8848 # Nacos 服务器地址 "'lb://'+serviceId"

server:
  #  port: ${random.int[10000,19999]}  # 服务器端口。默认为 8080
  port: 18081  # 服务器端口。默认为 8080

在这里将服务名(Spring应用名)注册进nacos服务中心,以及标注好端口
 
然后创建bootstrap.yaml 读取nacos的配置
在这里插入图片描述

spring:
  application:
      name: gateway-application

  cloud:
    nacos:
      # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
      config:
        server-addr: 120.**.**.**:8848 # Nacos 服务器地址
        namespace: a4674d5e-16a5-42f4-afbe-4ca59a6bad40 # 使用的 Nacos 的命名空间,默认为 null
        group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
        name: gateway-application # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
        file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties

在这里要注意 file-extension 一定要是你nacos配置的后缀 Properties 和yaml一定要区分开,我看到还多人在这里踩坑。
在这里插入图片描述 
随便写一个user的接口即可,等下测试使用
 
在这里插入图片描述
 
接下来直接启动项目,启动成功后,在nacos控制到能看到启动的服务
 

在这里插入图片描述
 
我们直接调用getway服务,开始测试
在这里插入图片描述

总结

  以上就是本次搭建的Getway+nacos的微服务搭建的全部内容了,以下是大致流程总结,下一期出在linux上搭建redis教程。
   用户请求-》getway-》user-server

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值