微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

这篇具有很好参考价值的文章主要介绍了微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目版本汇总

nacos 2.1.1
springCloud 2021.0.7
springboot 2.6.14
spring-cloud-starter-alibaba-nacos-discovery 2021.1
spring-cloud-starter-alibaba-nacos-config 2021.1

项目初始化

新建仓库

可使用github/gitlab/码云等其它代码库,建立自己的项目仓库
我这里使用的是码云

码云地址

拉取仓库项目

git clone 你新建的仓库地址
下载后,用idea打开(这里默认你能配置maven,jdk以及java环境变量的操作)

父工程pom初始化

用途:该pom用于管理整个微服务项目的依赖框架和版本以及所属子模块等
如图所示:该pom.xml在工程的根目录下创建
微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

依赖版本选择

  • 进入Spring官网Spring官网选择Project下的Springcloud栏进去
    微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)
  • 版本号对应关系一目了然
    微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)
  • 选择2021.0.x版本的cloud,那么对应的boot版本就是2.6-2.7之间

pom文件如下

spring-cloud-dependencies cloud依赖
spring-boot-dependencies boot依赖
nacos-client nacos版本
spring-boot-starter-test 单测依赖
spring-cloud-starter-alibaba-nacos-discovery 注册中心客户端依赖
spring-cloud-starter-alibaba-nacos-config 配置中心客户端
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.7</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.6.14</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${boot.version}</version>
            <scope>test</scope>
        </dependency>
        <!--注册中心客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2021.1</version>
        </dependency>
        <!--配置中心客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2021.1</version>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.24</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.26</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.3.3</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2021.0.7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>

    </dependencyManagement>

网关服务构建

在父工程项目点击右键 New-Module起名为xwl-gateway

pom文件

spring-cloud-starter-gateway 网关依赖
spring-cloud-starter-openfeign rpc通信依赖
spring-cloud-starter-bootstrap cloud配置文件识别依赖
spring-cloud-loadbalancer cloud内置负载均衡器(取代了ribbon)
 <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>3.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>3.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>


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

启动类

@SpringBootApplication
/*开启服务注册中心*/
@EnableDiscoveryClient
public class XwlGatewayApplication  {
    public static void main(String[] args) {
        SpringApplication.run(XwlGatewayApplication.class,args);
    }
}

配置文件YML

#端口号
server:
  port: 10081
#服务名
spring:
  application:
    name: xwl-gateway
# NACOS配置链接注册中心
  cloud:
    nacos:
      discovery:
        #被发现的服务注册地址
        server-addr: 192.168.231.1:8848
        #命名空间
        namespace: f212727d-d812-4945-9464-0fd0e199459b
      config:
        server-addr: 192.168.231.1:8848
        namespace: f212727d-d812-4945-9464-0fd0e199459b
        #绑定配置文件名称前缀(与nacos注册中心上的配置文件名称相关)
        prefix: ${spring.application.name}
        #组id
        group: DEFAULT_GROUP
        #nacos配置文件后缀
        file-extension: yml
    gateway:
      discovery:
        locator:
          enabled: true #开启从注册中心动态创建路由功能
          #路由转发配置
      routes:
        - #以xwl-Authority服务名为唯一标识id
        - id: xwl-Authority
          # 内置服务转发url 也可以是http请求方式
          uri: lb://xwl-Authority
          # 匹配器 这里设置的是以xwlAuthority前缀匹配的url都转发到xwl-Authority服务中
          predicates:
            - Path=/xwlAuthority/**

nacos启动

注:nacos2.0后默认以集群方式启动,这里我们测试方便需要用单机方式启动,需要改个配置,如图所示
将原来的cluster改为standalone
微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

新建命名空间

微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

配置网关yml(nacos)

注意:这里的 Data ID要和配置文件中保持一致
微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

网关服务启动

微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

用户服务构建

在父工程项目点击右键 New-Module起名为xwl-Authority

pom文件

   <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.1.6</version>
        </dependency>
    </dependencies>


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

启动类

@SpringBootApplication
@EnableDiscoveryClient
public class XwlAuthorityApplication {
    public static void main(String[] args) {
        SpringApplication.run(XwlAuthorityApplication.class,args);
    }
}

配置文件YML

server:
  port: 10082
spring:
  application:
    name: xwl-Authority

  # NACOS配置链接注册中心
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.231.1:8848
        namespace: f212727d-d812-4945-9464-0fd0e199459b
      config:
        server-addr: 192.168.231.1:8848
        namespace: f212727d-d812-4945-9464-0fd0e199459b
        prefix: ${spring.application.name}
        group: DEFAULT_GROUP
        file-extension: yml
    compatibility-verifier:
      enabled: false
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.231.1:3306/xwlmicroservice
    username: root
    password: root

新增url接口

package cn.xwl.controller;


import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("testAuthority")
public class AuthorityController {


    @PostMapping("/getName")
    @ResponseBody
    public String getName(){
        return "ZHANGSAN";
    }
}

配置用户服务yml(nacos)

以xwl-Authority.yml为创建Data ID
微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

用户服务启动

微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

测试路由转发

  1. 访问网关层
  2. 命中gateway配置文件中的url匹配器,从而转发xwl-Authority服务
  3. 发送http请求到xwl-Authority服务命中具体的url
    微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)

源码地址

码云仓库地址文章来源地址https://www.toymoban.com/news/detail-471078.html

到了这里,关于微服务之以nacos注册中心,以gateway路由转发服务调用实例(第一篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud Alibaba集成 Gateway(自定义负载均衡器)、Nacos(配置中心、注册中心)、Loadbalancer

    路由(route):路由是网关最基础的部分,路由信息由一个ID,一个目的URL、一组断言工厂和一 组Filter组成。如果断言为真,则说明请求URL和配置的路由匹配。 断言(Predicate):Java8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是 Spring5.0框架中的ServerWebExchange。Sprin

    2024年04月12日
    浏览(66)
  • 【Java项目】SpringCloud项目注册到Nacos中心时显示的是内网IP导致不同服务器之间无法互相调用接口的解决并发

    微服务项目地址—动动你发财的小手点一个stars吧 出现这个问题是之前我也就遇到过的,这个问题的情况就是: 我们知道微服务项目是可以把不同的项目部署在不同的服务器上从而减少某一台服务器的压力,我们只需要为每一个服务配置一个注册中心即可,然后一个服务需要

    2024年02月16日
    浏览(50)
  • Nacos和GateWay路由转发NotFoundException: 503 SERVICE_UNAVAILABLE “Unable to find

    2023-08-15 16:51:16,151 DEBUG [reactor-http-nio-2][CompositeLog.java:147] - [dc73b32c-1] Encoding [{timestamp=Tue Aug 15 16:51:16 CST 2023, path=/content/course/list, status=503, error=Service Unavai (truncated)...] 2023-08-15 16:51:16,175 TRACE [reactor-http-nio-2][GatewayMetricsFilter.java:115] - gateway.requests tags: [tag(httpMethod=POST),tag(httpStatusC

    2024年02月12日
    浏览(69)
  • Nacos 的底层实现原理 & 注册中心的两种调用方式

    目录 1. Nacos 的底层实现原理 1.1 配置中心自动刷新实现原理 1.2  注册中心底层实现原理 2. Nacos 注册中心的两种调用方式  2.1 RestTemplate + Spring Cloud LoadBalancer 的调用方式 2.2 使用 OpenFeign + Spring Cloud LoadBalancer  Nacos 配置中心的自动刷新,其底层是基于 长轮询+事件驱动 的方式来

    2024年02月05日
    浏览(45)
  • nacos注册中心+Ribbon负载均衡+完成openfeign的调用(超详细步骤)

    目录 1.注册中心 1.1.nacos注册中心 1.2. 微服务注册和拉取注册中心的内容 2.3.修改订单微服务的代码 3.负载均衡组件 3.1.什么是负载均衡 3.2.什么是Ribbon 3.3.Ribbon 的主要作用 3.4.Ribbon提供的负载均衡策略 4.openfeign完成服务调用 4.1.什么是OpenFeign 4.2.完成openfeign的调用  继  微服务

    2024年02月16日
    浏览(36)
  • 微服务-Nacos(注册中心)

    Nacos是SpringCloud的一个功能非常强大的组件,想比eureka的功能更加丰富 Nacos(全称:Naming and Configuration Service)是一个开源的动态服务发现、配置管理和服务管理平台。它由阿里巴巴集团开发并贡献给开源社区,旨在帮助开发者更好地构建和管理微服务架构。 Nacos提供了以下核

    2024年02月12日
    浏览(46)
  • 【微服务】Nacos注册中心

    国内公司一般都推崇阿里巴巴的技术,比如注册中心,SpringCloudAlibaba也推出了一个名为Nacos的注册中心。 Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务

    2024年02月02日
    浏览(50)
  • 微服务注册中心-Nacos概述

    Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 N

    2024年02月04日
    浏览(41)
  • Nacos:服务的注册、发现和配置中心(注册篇)

    Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 N

    2024年02月15日
    浏览(39)
  • Nacos作为服务注册中心简单示例

    主要包含两个服务: zhshl-order服务: 作为服务消费者 zhsl-stock服务: 作为服务提供者 当我们启用服务发现的时候,需要进行的操作主要有三步 0、前置条件,需要先搭建好一个nacas服务,可以是一个集群或者是单个nacos服务。可以参考https://nacos.io/zh-cn/docs/quick-start.html, 示例中使用

    2024年02月07日
    浏览(88)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包