前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【gateway系列】手把手教你gateway整合nacos注册中心

【gateway系列】手把手教你gateway整合nacos注册中心

作者头像
沁溪源
发布2021-10-09 14:05:01
7.8K0
发布2021-10-09 14:05:01
举报
文章被收录于专栏:沁溪源

目录

往期相关推荐:

网关路由规则和nacos配置中心实战:

一步步带你学习gateway路由规则实践

nacos整合配置中心

准备

准备引入相关依赖:

代码语言:javascript
复制
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
        <spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>



    <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>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

上面这些依赖是gateway服务和member服务实践共同需要的,此外需要注意SpringBoot的版本,小编实践过程中,gateway集成nacos依赖启动失败,原因:springBoot引用的版本是2.5.5,需要降级为2.3.9.RELEASE,所以如果小伙伴整合nacos时,同样遇到问题,思考一下是否版本问题。

Gateway服务

  • 引入gateway依赖
代码语言:javascript
复制
 <!--    gateway依赖    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
  • 配置文件bootstrap.yml
代码语言:javascript
复制
server:
  port: 8082
spring:
  application:
    name: gateway-demo
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: XX.XX.XX.XX:8848
  profiles:
    active: dev

注意:nacos服务地址替换成自己服务器IP地址;

  • nacos配置中心 之前谈论nacos配置中心的dataId的命名规则:

{spring.cloud.nacos.config.prefix}- {spring.profiles.active}.

代码语言:javascript
复制
spring:
  application:
    name: gateway-demo # 服务名称
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: xx.xx.xx.xx:8848 # 注册中心地址  # 默认是没有密码的
      config:
        server-addr: xx.xx.xx.xx:8848  # config地址
        file-extension: yaml # 指定配置文件类型
      # 网关的配置
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true    
      routes:
        - id: member-server
          uri: lb://member-server
          predicates:
            - Path=/query-demo/**
  • 主启动类
代码语言:javascript
复制
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayDemoApplication.class, args);
    }

}

@EnableDiscoveryClient注解标识服务发现;

Member服务

member服务按照准备部分引入相关依赖后,则直接添加配置文件;

  • bootstrap.yml
代码语言:javascript
复制
server:
  port: 8083
spring:
  application:
    name: member-server
  cloud:
    nacos:
      config:
        file-extension: yaml
        server-addr: xx.xx.xx.xx:8848
  • controller
代码语言:javascript
复制
@RestController
public class MemberController {


    @RequestMapping("/query-demo")
    public String queryDemo(String name) {
        return "https://blog.csdn.net/"+ name + "/article/details/120475609";
    }

}

主启动类上添加@EnableDiscoveryClient注解标识服务发现;

  • nacos配置中心 新增配置dataId=member-server.yaml,如下
代码语言:javascript
复制
spring:
  application:
    name: member-server # 服务名称
  cloud:
    nacos:
      discovery:
        server-addr: xx.xx.xx.xx:8848 # 注册中心地址  # 默认是没有密码的
      config:
        server-addr: xx.xx.xx.xx:8848  # config地址
        file-extension: yaml # 指定配置文件类型

运行

分别将网关服务8082,member服务8083端口启动,通过浏览器访问gateway将请求转发到member服务;

nacos服务列表中已经注册以上两个服务:

请求:http://localhost:8082/query-demo?name=xuanlu1

响应结果:https://blog.csdn.net/xuanlu1/article/details/120475609

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/09/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 准备
  • Gateway服务
  • Member服务
  • 运行
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档