【第5章】Spring Cloud之Nacos服务注册和服务发现

文章目录

  • 前言
  • 一、提供者
    • 1. 引入依赖
    • 2.配置 Nacos Server 地址
    • 3. 开启服务注册
  • 二、消费者
    • 1. 引入依赖
    • 2.配置 Nacos Server 地址
    • 3. 开启服务注册
  • 三、服务列表
  • 四、服务发现
    • 1. 获取服务列表
    • 2. 测试
      • 2.1 获取所有服务
      • 2.2 根据服务名获取服务信息
  • 五、更多配置项
  • 总结


前言

本节通过实现一个简单的 echo service 演示如何在您的 Spring Cloud 项目中启用 Nacos 的服务注册和发现功能,如下图示:
在这里插入图片描述


一、提供者

1. 引入依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置 Nacos Server 地址

${NACOS_SERVER_ADDR}是配置的环境变量

server:port: 9002
spring:application:name: provider-servicecloud:nacos:discovery:server-addr: ${NACOS_SERVER_ADDR}username: nacospassword: nacos

在使用 Nacos 服务发现和配置功能时,一定要配置 username 和 password 属性,否则会出现用户未找到异常!

3. 开启服务注册

package org.example.nacos.provider;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryProviderApplication.class, args);}}

二、消费者

1. 引入依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.配置 Nacos Server 地址

server:port: 9000
spring:application:name: consumer-servicecloud:nacos:discovery:server-addr: ${NACOS_SERVER_ADDR}username: nacospassword: nacos

3. 开启服务注册

package org.example.nacos.consumer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@EnableDiscoveryClient
@SpringBootApplication
public class NacosDiscoveryConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryConsumerApplication.class, args);}}

三、服务列表

在这里插入图片描述

四、服务发现

1. 获取服务列表

我们在消费者项目中获取nacos中的服务列表,并打印出来。

package org.example.nacos.consumer.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;/*** Create by zjg on 2024/7/15*/
@RequestMapping("/nacos/")
@RestController
public class NacosDiscoveryController {@AutowiredDiscoveryClient discoveryClient;@RequestMapping("discovery")public void discovery(){List<String> services = discoveryClient.getServices();services.forEach(System.out::println);}@RequestMapping("discovery/instance")public void discovery(@RequestParam("serviceId") String serviceId){List<ServiceInstance> instances = discoveryClient.getInstances(serviceId);instances.forEach(instance->{System.out.println(instance.getHost()+":"+instance.getPort());});}
}

新版本的@RequestParam(“serviceId”),用法略有改动,更加规范了,但是没那么灵活对开发者不是很友好!

2. 测试

2.1 获取所有服务

http://localhost:9000/nacos/discovery

consumer-service
provider-service

2.2 根据服务名获取服务信息

http://localhost:9000/nacos/discovery/instance?serviceId=provider-service

192.168.0.103:9002

五、更多配置项

配置项key默认值说明
服务端地址spring.cloud.nacos.discovery.server-addr
服务名spring.cloud.nacos.discovery.service${spring.application.name}注册到Nacos上的服务名称,默认值为应用名称
权重spring.cloud.nacos.discovery.weight1取值范围 1 到 100,数值越大,权重越大
网卡名spring.cloud.nacos.discovery.network-interface当IP未配置时,注册的IP为此网卡所对应的IP地址,如果此项也未配置,则默认取第一块网卡的地址
注册的IP地址spring.cloud.nacos.discovery.ip优先级最高
注册的IP地址类型spring.cloud.nacos.discovery.ip-type双栈地址可以配置IPv4和IPv6两种类型,如果网卡同类型IP地址存在多个,希望制定特定网段地址,可使用spring.cloud.inetutils.preferred-networks配置筛选地址
注册的端口spring.cloud.nacos.discovery.port-1默认情况下不用配置,会自动探测
命名空间spring.cloud.nacos.discovery.namespace常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
AccessKeyspring.cloud.nacos.discovery.access-key
SecretKeyspring.cloud.nacos.discovery.secret-key
Metadataspring.cloud.nacos.discovery.metadata使用Map格式配置
日志文件名spring.cloud.nacos.discovery.log-name
集群spring.cloud.nacos.discovery.cluster-nameDEFAULT Nacos集群名称
接入点spring.cloud.nacos.discovery.endpoint地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否集成LoadBalancerspring.cloud.loadbalancer.nacos.enabledfalse
是否开启Nacos Watchspring.cloud.nacos.discovery.watch.enabledfalse可以设置成true来开启 watch
是否启用Nacosspring.cloud.nacos.discovery.enabledtrue默认启动,设置为false时会关闭自动向Nacos注册的功能
用户名spring.cloud.nacos.discovery.usernamenacos
密码spring.cloud.nacos.discovery.passwordnacos

总结

回到顶部
中文文档
官方案例

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

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

相关文章

CSS 两种盒模型 box-sizing content-box 和 border-box

文章目录 Intro谨记box-sizing 两个不同赋值的效果区别&#xff1f;宽高的数值计算标准盒模型 box-sizing: content-box; box-sizing 属性的全局设置 Intro 先问一句&#xff1a;box-sizing 和它的两个属性值是做什么用的&#xff1f;以前我并不知道它的存在&#xff0c;也做…

集成学习在数学建模中的应用

集成学习在数学建模中的应用 一、集成学习概述&#xff08;一&#xff09;基知&#xff08;二&#xff09;相关术语&#xff08;三&#xff09;集成学习为何能提高性能&#xff1f;&#xff08;四&#xff09;集成学习方法 二、Bagging方法&#xff08;一&#xff09;装袋&…

昇思25天学习打卡营第22天 | DCGAN生成漫画头像

昇思25天学习打卡营第22天 | DCGAN生成漫画头像 文章目录 昇思25天学习打卡营第22天 | DCGAN生成漫画头像DCGAN模型数据集数据下载和超参数创建数据集数据集可视化 搭建网络生成器判别器损失函数和优化器 模型训练总结打卡 DCGAN模型 深度卷积对抗生成网络&#xff08;Depp Co…

python打包exe文件-实现记录

1、使用pyinstaller库 安装库&#xff1a; pip install pyinstaller打包命令标注主入库程序&#xff1a; pyinstaller -F.\程序入口文件.py 出现了一个问题就是我在打包运行之后会出现有一些插件没有被打包。 解决问题&#xff1a; 通过添加--hidden-importcomtypes.strea…

GeoHash原理介绍以及在redis中的应用

GeoHash将二维信息编码成了一个一维信息。降维后有三个好处&#xff1a; 编码后数据长度变短&#xff0c;利于节省存储。利于使用前缀检索当分割的足够细致,能够快速的对双方距离进行快速查询 GeoHash是一种地址编码方法。他能够把二维的空间经纬度数据编码成一个字符串。 1…

react开发-配置开发时候@指向SRC目录

这里写目录标题 配置开发时候指向SRC目录VScode编辑器给出提示总体1.配置react的 2.配置Vscode的1.配置react的2,配置VSCode的提示支持 配置开发时候指向SRC目录VScode编辑器给出提示 总体1.配置react的 2.配置Vscode的 1.配置react的 1. 我么需要下载一个webpack的插件 这样…

判断推理1

判断推理 1.定义判断 2.类比推理 3.逻辑判断 4.图形推理 加粗文本 加粗文本

map/multimap容器及STL案例

1.map概念&#xff1a;map中所有元素都是pair pair中的第一个元素为key&#xff08;键值&#xff09;起到索引作用&#xff0c;第二个为value&#xff08;实值&#xff09; 所有元素都会根据key值自动排序 本质&#xff1a;map/multimap属于关联式容器&#xff0c;底层结构是…

C语言 | Leetcode C语言题解之第257题二叉树的所有路径

题目&#xff1a; 题解&#xff1a; char** binaryTreePaths(struct TreeNode* root, int* returnSize) {char** paths (char**)malloc(sizeof(char*) * 1001);*returnSize 0;if (root NULL) {return paths;}struct TreeNode** node_queue (struct TreeNode**)malloc(size…

vue3使用html2canvas

安装 yarn add html2canvas 代码 <template><div class"container" ref"container"><div class"left"><img :src"logo" alt"" class"logo"><h2>Contractors pass/承包商通行证&l…

Mamba-yolo|结合Mamba注意力机制的视觉检测

一、本文介绍 PDF地址&#xff1a;https://arxiv.org/pdf/2405.16605v1 代码地址&#xff1a;GitHub - LeapLabTHU/MLLA: Official repository of MLLA Demystify Mamba in Vision: A Linear AttentionPerspective一文中引入Baseline Mamba&#xff0c;指明Mamba在处理各种高…

网络通讯实验报告

拓扑图 需求 1、通过DHCP服务&#xff0c;给PC4和PC5分配IP地址、网关、掩码、DNS服务器IP地址 2、Client-1要求手工配置IP地址&#xff0c;为192.168.1.1, c 3、telnet客户端可以远程登录telnet服务器进行设备管理&#xff0c;并成功修改telnet服务器的名字为123 &#xff0c…

操作系统——进程与线程(死锁)

1&#xff09;为什么会产生死锁&#xff1f;产生死锁有什么条件&#xff1f; 2&#xff09;有什么办法解决死锁&#xff1f; 一、死锁 死锁:多个程序因竞争资源而造成的一种僵局&#xff08;互相等待对方手里的资源&#xff09;&#xff0c;使得各个进程都被阻塞&#xff0c;…

一篇文章搞懂MySQL的事务与隔离级别

事务 概述 一个事务其实就是一个完整的业务逻辑&#xff0c;是一个最小的工作单元。要么同时成功&#xff0c;要么同时失败&#xff0c;不可再分 假设转账&#xff0c;从A账户向B账户转账10000 A账户的钱减去10000&#xff08;update语句&#xff09; B账户的钱加上10000&…

【HarmonyOS学习】用户文件访问

概述 文件所有者为登录到该终端设备的用户&#xff0c;包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为&#xff0c;需要提前获取用户授权&#xff0c;或由用户操作完成。 用户文件访问框架 是一套提供给开发者访问和管理用户文件的基础框…

无需抠图!AI绘画直接文本生成透明底图层,设计师必看的ComfyUI透明图层生成工作流教程!(附插件模型)

大家好&#xff0c;我是画画的小强 AI 绘画自出现以来一直都在不断发展完善&#xff0c;实现了很多我们在实际应用中迫切需要的功能&#xff0c;比如生成正确的手指、指定的姿势、准确的文本内容等。上周&#xff0c;又一个重磅新功能在开源的 SD 生态内实现了——直接通过文本…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十四章 注册字符设备号

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

Springboot项目打包成镜像、使用docker-compose启动

Springboot项目打包成镜像、使用docker-compose启动 1、创建一个boot项目 1、添加依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSch…

gitee的怎么上传项目

前提 1.先下载Git Bash (如果没有下载的宝子们下载连接如下: 链接: link ) 项目上传到Gitee步骤 1.在Gitee上建立远程仓库 2.填写相关信息 3.进入本地你想要上传的文件目录下&#xff0c;右键单击空白处&#xff0c;点击Git Bash Here 4.配置你的用户名和邮箱 git con…

【leetcode】排列序列

给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; "123""132""213""231""312""321" 给定…