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

news2024/9/29 11:00:13

实现以nacos为注册中心,网关路由转发调用

    • 项目版本汇总
    • 项目初始化
      • 新建仓库
      • 拉取仓库项目
      • 父工程pom初始化
      • 依赖版本选择
      • pom文件如下
    • 网关服务构建
      • pom文件
      • 启动类
      • 配置文件YML
      • nacos启动
      • 新建命名空间
      • 配置网关yml(nacos)
      • 网关服务启动
    • 用户服务构建
      • pom文件
      • 启动类
      • 配置文件YML
      • 新增url接口
      • 配置用户服务yml(nacos)
      • 用户服务启动
    • 测试路由转发
    • 源码地址

项目版本汇总

nacos2.1.1
springCloud2021.0.7
springboot2.6.14
spring-cloud-starter-alibaba-nacos-discovery2021.1
spring-cloud-starter-alibaba-nacos-config2021.1

项目初始化

新建仓库

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

码云地址

拉取仓库项目

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

父工程pom初始化

用途:该pom用于管理整个微服务项目的依赖框架和版本以及所属子模块等
如图所示:该pom.xml在工程的根目录下创建
在这里插入图片描述

依赖版本选择

  • 进入Spring官网Spring官网选择Project下的Springcloud栏进去
    在这里插入图片描述
  • 版本号对应关系一目了然
    在这里插入图片描述
  • 选择2021.0.x版本的cloud,那么对应的boot版本就是2.6-2.7之间

pom文件如下

spring-cloud-dependenciescloud依赖
spring-boot-dependenciesboot依赖
nacos-clientnacos版本
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-openfeignrpc通信依赖
spring-cloud-starter-bootstrapcloud配置文件识别依赖
spring-cloud-loadbalancercloud内置负载均衡器(取代了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
在这里插入图片描述

新建命名空间

在这里插入图片描述

配置网关yml(nacos)

注意:这里的 Data ID要和配置文件中保持一致
在这里插入图片描述

网关服务启动

在这里插入图片描述

用户服务构建

在父工程项目点击右键 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
在这里插入图片描述

用户服务启动

在这里插入图片描述

测试路由转发

  1. 访问网关层
  2. 命中gateway配置文件中的url匹配器,从而转发xwl-Authority服务
  3. 发送http请求到xwl-Authority服务命中具体的url
    在这里插入图片描述

源码地址

码云仓库地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/545396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[网鼎杯 2020 青龙组]jocker 题解

32位无壳 堆栈有问题 先修堆栈在反编译 查看关键函数 对输入的字符串进行了加密 加密之后omg函数中与存储的字符串进行比较 我们先解密这个 提取数据 解密脚本 data[0x66,0x6b,0x63,0x64,0x7f,0x61,0x67,0x64,0x3b,0x56,0x6b,0x61,0x7b,0x26,0x3b,0x50,0x63,0x5f,0x4d,0x5…

javascript基础二:Javscript字符串的常用方法有哪些?

在日常开发中&#xff0c;我们对字符串也是操作蛮多&#xff0c;这里我们来整理下字符串的一下最常用的方法 一、操作方法 字符串常用的操作方法归纳为增、删、改、查 增 这里增的意思并不是说直接增添内容&#xff0c;而是创建字符串的一个副本&#xff0c;再进行操作 除了…

Python实战基础9-元组、字典、集合

一、元组 Python的元组与列表类似&#xff0c;不同职称在于元组的元素不能修改。元组使用&#xff08;&#xff09;&#xff0c;列表使用[]。 Python的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改&#xff08;增删改&#xff09;&#xff0c; 元组使用小括号()…

VuePress 1.x 踩坑记录

文章目录 前言1.Node.js 版本问题2.侧边栏3.添加页面目录导航4.非首页 footer 不生效5.部署到 Github 的错误vuepress 的 docs 与 Github Pages 的 docs 目录冲突样式丢失 7.资源引用问题本地图片找不到引用 CSDN 图片报 403 错误 参考文献 前言 我的第二本开源电子书《后台开…

被问了100遍的 堆的基本功能如何实现? 绝了!!!

文章目录 堆的介绍堆的概念堆的结构 堆的向下调整算法建堆的时间复杂度 堆的向上调整算法堆的基本功能实现初始化堆打印堆堆的插入堆的删除获取堆顶的数据获取堆的数据个数堆的判空销毁堆 堆的介绍 堆的概念 堆&#xff1a;如果有一个关键码的集合K{k0,k1,k2,…,kn-1}&#x…

计算机图形学-GAMES101-9

前言 材质和光的相互作用很重要。VertexShader和FragmentShader。纹理贴图Texture mapping。 一、在三角形中插值 为什么要在三角形内部插值&#xff1f;虽然我们的操作很多是在三角形顶点上进行计算的&#xff0c;但是对于三角形内部我们也希望每个像素点能得到一个值&…

FLASH锁死,STLink烧程序烧完一次无法再烧?

ST烧程序烧完一次无法再烧&#xff0c;因为把烧录引脚占用&#xff0c;所以可以再配置一下。 &#xff08;平时不勾PA13和PA14&#xff0c;也是会通过PA13和PA14烤录&#xff0c;勾上是为了防止锁死FLASH&#xff09; 如果锁住&#xff0c;再烧烧不进去 卡点&#xff0c;按住复…

【踩坑无数终极0错版】mac-Parallels Desktop的windwos虚拟机安装最新夜神模拟器+burpsuite证书安装+app渗透

文章目录 前言一、安装夜神模拟器二、夜神模拟器配置三、安装证书与所需软件四、测试抓包总结 前言 不想说了&#xff0c;反正我吐了&#xff0c;直接看正文吧。 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、安装夜神模拟器 mac上是安装不成功…

Spring6新特性来了!便捷替代Feign封装RPC接口

spring6的新特性笔者最近也有在研究&#xff0c;其中在HttpServiceProxyFactory服务代理工厂的使用方式体验上&#xff0c;笔者认为极其像是在用Feign编写RPC接口&#xff0c;使用服务代理工厂我们只要在全局配置单例的服务代里工厂bean再维护一个http interface接口就能统一的…

跨域跨网访问延迟高?中科三方云解析智能线路提供最优解析方案

在日常工作生活中&#xff0c;大多数人都是直接通过域名访问web服务器&#xff0c;但计算机并不能直接识别域名&#xff0c;因此需要域名系统&#xff08;DNS&#xff0c;Domain Name System&#xff09;将域名翻译成可由计算机直接识别的IP地址&#xff0c;这个环节就是域名解…

MOSFET开关:电源变换器基础知识及应用

​MOSFET是一种常用的场效应晶体管&#xff0c;广泛应用于电源变换器中。电源变换器是一种将输入电源转换为输出电源的电路&#xff0c;通常用于电子设备中。在本文中&#xff0c;我们将介绍MOSFET开关及其在电源变换器中的基础知识和应用。 一、MOSFET开关的基础知识 MOSFET…

MySQL---单列索引(包括普通索引、唯一索引、主键索引)、组合索引、全文索引。

1. 索引 索引是通过某种算法&#xff0c;构建出一个数据模型&#xff0c;用于快速找出在某个列中有一特定值的行&#xff0c;不使用索 引&#xff0c;MySQL必须从第一条记录开始读完整个表&#xff0c;直到找出相关的行&#xff0c;表越大&#xff0c;查询数据所花费的 时间…

算法之单调栈常见题目

什么时候需要使用单调栈&#xff1f; 通常是一维数组&#xff0c;要寻找任意一个右边或者左边第一个比自己大或小的元素的位置&#xff0c;此时我们就想到可以使用单调栈了。 单调栈的本质是空间换时间&#xff0c;因为在遍历的过程中需要用一个栈来记录右边第一个比当前元素高…

电轨车运维作业vr实操培训平台训练一批高素质的维修型人才

卡车由于使用频繁、长期载重以及各种不可预测的外界作业技能人员的培训。基于web3d开发的卡车检修作业3d模拟仿真教学系统弥补了教学条件的不足&#xff0c;在提升培训效果、节省教学经费上有显著的作用。 深圳华锐视点研发的卡车检修作业3d模拟仿真教学系统实时动态展示三维仿…

GNN 学习记录

GNN 参考资料&#xff1a;https://www.bilibili.com/video/BV16v4y1b7x7 图网络为什么复杂 需要接受任意尺寸的输入没有固定的节点顺序和参考锚点&#xff08;比如文本是从前往后处理&#xff0c;图像是有像素点的&#xff0c;图没有起始点&#xff09;动态变化和多种模态的…

月入3000万,23岁美国女网红用AI分身交1000多男友!谈恋爱按分钟计费

来源 | 新智元 微信号&#xff1a;AI-era 【导读】这位23岁的女网红用GPT-4复刻了一个自己后&#xff0c;已经周入7万多美元了。不仅如此&#xff0c;短短几天内&#xff0c;候补名单上就排了差不多1万名男施主。 各种逼真的AI工具火了之后&#xff0c;各路心思活泛的选手都开…

Spring Boot 项目【前后端分离】 之架子搭建

Spring Boot 项目【前后端分离】 之架子搭建 注意如果看过我ssm项目的博客的项目的前端可以不需要看或者快速看一下即可 比较页面什么的一样主要是技术栈不同. 技术栈 - 使用了前后端分离&#xff0c;前端的主体框架Vue3&#xff0b;后端的基础框架Spring-Boot 1.前端技术栈…

SQL: STUFF()和FOR XML PATH的使用

STUFF(param1, startIndex, length, param2) 将param1中自startIndex(SQL中都是从1开始&#xff0c;而非0)起&#xff0c;删除length个字符&#xff0c;然后用param2替换删掉的字符。 示例&#xff1a; select STUFF(abcdefg,1,0,1234) --结果为1234abcdefg select ST…

每日一题163——矩阵置零

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]] 示例 2&#xff1a; 输入&…

Docker与Docker-compose安装Vulfocus Vulhub漏洞环境

目录 一.docker 和 docker-compose 介绍&#xff1a; docker&#xff1a; docker-compose&#xff1a; 二者的区别&#xff1a; 二者的联系&#xff1a; 二者的总结&#xff1a; 二.Centos 7安装Docker 三.Centos 7安装docker-compose 四.docker-compose搭建Vulhub漏…