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

实现以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.mfbz.cn/a/21931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

行业分析——半导体行业

半导体行业是现代高科技产业和新兴战略产业&#xff0c;是现代信息技术、电子技术、通信技术、信息化等产业的基础之一。我国政府先后制定了《中国集成电路产业发展规划》和《中国人工智能发展规划》&#xff0c;明确提出要支持半导体和人工智能等产业的发展&#xff0c;为半导…

DRMS-关于开展防范风险整改工作的工作计划

防范风险整改工作 工作计划 &#xff12;&#xff10;&#xff12;&#xff13;年&#xff15;月&#xff11;&#xff10;日 尊敬的【DRMS】集群用户&#xff1a; 根据河南省郑州市国家高新技术产业开发区市场监督管理局《关于河南数权数字信息科技研究院网络违规整改通知》及…

微信小程序nodejs+vue高校食堂餐厅点餐订餐系统ja221

本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用 语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 前端vueelementui, (1) vue引入elementu…

【IDEA使用码云教程】

IDEA使用码云教程 一、下载、安装git二、配置Gitee插件三、克隆项目四、上传项目五、推送项目六、更新项目 一、下载、安装git 1.打开git官网&#xff0c;选择你的操作系统 官网下载地址&#xff1a;https://git-scm.com/downloads 2.根据你的系统位数选择相应的版本下载 系统…

Spring Cloud Alibaba 集成 sentinel ,sentinel控制台不能检测到服务,但是在命令行配置启动参数就能看到服务

问题背景 Spring Cloud Alibaba 集成 sentinel &#xff0c;sentinel代码写的限流降级的功能都是好的&#xff0c;但是sentinel控制台不能检测到服务&#xff0c;在程序启动时配置JVM启动参数&#xff08;-Dcsp.sentinel.dashboard.serverlocalhost:18080 -Dproject.namename-…

成绩管理系统

系列文章 任务28 成绩管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试读入数据浏览全部信息增加学生信息保存数据删除学生信息修改学生…

【活动预告】数据集成引擎BitSail遇上CDC

BitSail是字节跳动开源数据集成引擎&#xff0c;于2022年10月26日宣布开源&#xff0c;可支持多种异构数据源间的数据同步&#xff0c;并提供离线、实时、全量、增量场景下全域数据集成解决方案。BitSail支撑了字节内部众多的业务线&#xff0c;支持多种数据源之间的批式/流式/…

头歌计算机组成原理实验—运算器设计(6)第6关:5位无符号阵列乘法器设计

第6关&#xff1a;5位无符号阵列乘法器设计 实验目的 帮助学生掌握阵列乘法器的实现原理&#xff0c;能够分析阵列乘法器的性能&#xff0c;能在 Logisim 中绘制阵列乘法器电路。 视频讲解 实验内容 在 Logisim 中打开 alu.circ 文件&#xff0c;在5位阵列乘法器中实现斜向…

Rocketmq常用使用场景

RocketMQ 是阿里开源的分布式消息中间件&#xff0c;跟其它中间件相比&#xff0c;RocketMQ 的特点是纯JAVA实现 基础概念 Producer&#xff1a; 消息生产者&#xff0c;负责产生消息&#xff0c;一般由业务系统负责产生消息 Producer Group&#xff1a; 消息生产者组&#xf…

聚会游戏玩什么?UMO轻松炒热气氛

UMO是一款有趣的多人益智桌游&#xff0c;考验玩家耐力和技巧的比拼&#xff01;玩家将在游戏中通过特定的规则来出牌&#xff0c;谁先出完所有牌谁就赢&#xff0c;游戏非常讲究策略和运气哦~ 当玩家手上只剩一张牌时&#xff0c;必须喊出UMO&#xff01;游戏因此得名。【数字…

3 个令人惊艳的 ChatGPT 项目,开源了!

过去一周&#xff0c;AI 界又发生了天翻地覆的变化&#xff0c;其中&#xff0c;最广为人知的&#xff0c;应该是 OpenAI 正式上线 ChatGPT iOS 客户端&#xff0c;让所有人都可以更方便的在手机上与 ChatGPT 聊天。 此外&#xff0c;Stable Diffusion 母公司 Stability AI 也…

论文阅读_音频压缩_SoundStream

论文信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: SoundStream: An End-to-End Neural Audio Codec name_ch: SoundStream&#xff1a;一种端到端的神经音频编解码器 paper_addr: http://arxiv.org/abs/2107.03312 doi: 10.1109/TASLP.2021.3129994 dat…

Apache Kafka - 安装注意事项

文章目录 概述安装Kafka配置Kafka启动Kafka配置注意事项导图 概述 在现代的大数据时代&#xff0c;消息队列成为了极为重要的组件。Kafka作为一种高吞吐量、低延迟、可扩展的分布式发布订阅消息系统&#xff0c;在大数据领域得到了广泛的应用。来&#xff0c;这里我们将介绍如…

Python系列之字符串和列表

感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01; 目录 一、字符串 1.1 字符串的定义与输入 1.2 字符串的拼接与格式化输出 1.3 字符串的下标 1.4 字符串的切片和倒序 1.5 字符串的常见操作 二、列表-List 2.1 列表的常见操作 2.2 列表合并和拼…

RocketMQ(超级无敌认真好用,万字收藏篇!!!!)

文章目录 RocketMQ1 RocketMQ简介2 Rocket安装2.1 Rocket安装(基于Linux)2.2 控制台安装 3 Rocket的使用3.1 普通消息发送3.1.1 同步消息发送3.1.2 异步消息发送3.1.3 单向消息发送 3.2 普通消息消费3.2.1 集群消费3.2.2 广播消费 3.3 收发顺序消息3.3.1 全局顺序生产消费3.2.2…

越来越多企业出现网络安全问题,是什么原因导致的?

近年来网络安全问题层出不穷&#xff0c;信息泄露、网络钓鱼、黑客攻击等问题频繁发生。 尽管有证据表明在一些全球知名的企业组织中存在价值数十亿美元的网络安全漏洞&#xff0c;但企业仍然没有认真对待网络安全。大公司在寻找各种理由来减少其网络安全预算&#xff0c;从而…

无魔法插件 - ChatGPT Sidebar with GPT-4

文章目录 1.介绍2.功能一览2.1 唤醒方式2.2 聊天功能2.3 快捷模板2.4 单独聊天界面2.5 ChatPDF2.6 任意位置快捷使用模板2.7 手机 APP 3.GPT-3.0 还是 GPT-3.5&#xff1f;4.免费 or 收费&#xff1f;5.安装 Sidebar 创作不易&#xff0c;如果本文对你有帮助&#xff0c;胖友记…

国考省考行测:资料分析:增量减量计算公式,百分数化分数

国考省考行测&#xff1a;增量减量计算公式 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知…

【FMC155】2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡模块(AD9680)中文资料

板卡概述 FMC155 是一款基于VITA57.1 标准的&#xff0c;实现2 路14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合ADC 同步采集FMC 子卡模块。该模块遵循VITA57.1 规范&#xff0c;可直接与FPGA 载卡配合使用&#xff0c;板卡ADC 器件采用ADI 的AD9680 芯片&#xff0c;该芯片具有两…

C++模板初阶

本期我们来学习C的模板&#xff0c;我们本期只是简单学习&#xff0c;为后续做铺垫&#xff0c;未来会深入讲解 目录 函数模板 类模板 下面我们进入正题 我们之前学习了函数重载&#xff0c;有函数重载我们可以完成很多事情&#xff0c;比如交换两个变量 void Swap(int&am…