【第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.weight | 1 | 取值范围 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 | 常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。 | |
AccessKey | spring.cloud.nacos.discovery.access-key | ||
SecretKey | spring.cloud.nacos.discovery.secret-key | ||
Metadata | spring.cloud.nacos.discovery.metadata | 使用Map格式配置 | |
日志文件名 | spring.cloud.nacos.discovery.log-name | ||
集群 | spring.cloud.nacos.discovery.cluster-name | DEFAULT Nacos集群名称 | |
接入点 | spring.cloud.nacos.discovery.endpoint | 地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址 | |
是否集成LoadBalancer | spring.cloud.loadbalancer.nacos.enabled | false | |
是否开启Nacos Watch | spring.cloud.nacos.discovery.watch.enabled | false | 可以设置成true来开启 watch |
是否启用Nacos | spring.cloud.nacos.discovery.enabled | true | 默认启动,设置为false时会关闭自动向Nacos注册的功能 |
用户名 | spring.cloud.nacos.discovery.username | nacos | |
密码 | spring.cloud.nacos.discovery.password | nacos |
总结
回到顶部
中文文档
官方案例
相关文章:
【第5章】Spring Cloud之Nacos服务注册和服务发现
文章目录 前言一、提供者1. 引入依赖2.配置 Nacos Server 地址3. 开启服务注册 二、消费者1. 引入依赖2.配置 Nacos Server 地址3. 开启服务注册 三、服务列表四、服务发现1. 获取服务列表2. 测试2.1 获取所有服务2.2 根据服务名获取服务信息 五、更多配置项总结 前言 本节通过…...
Springboot 启动时Bean的创建与注入(一)-面试热点-springboot源码解读-xunznux
Springboot 启动时Bean的创建与注入,以及对应的源码解读 文章目录 Springboot 启动时Bean的创建与注入,以及对应的源码解读构建Web项目流程图:堆栈信息:堆栈信息简介堆栈信息源码详解1、main:10, DemoApplication (com.xun.demo)2…...
单调栈(随缘复习到了,顺手刷了)
也是不知道为什么突然又复习到单调栈了,所以顺手刷了三道题,总结一下 P6503 [COCI2010-2011#3] DIFERENCIJA 思路:这题是要求每个子区间里面的最大值和最小值的差,我们一开始想的必然是纯暴力呀,但是一看这数据&#…...
学习测试10-3自动化 web自动化
web自动化 chrome驱动下载地址: https://registry.npmmirror.com/binary.html?pathchromedriver/ https://googlechromelabs.github.io/chrome-for-testing/#stable观察Google版本,下相应的驱动 运行代码试试,成功Google就会弹出 from se…...
安防视频监控EasyCVR视频汇聚平台修改配置后无法启动的原因排查与解决
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…...
爬虫学习2:爬虫爬取网页的信息与图片的方法
爬虫爬取网页的信息与图片的方法 爬取人物信息 import requestshead {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0" } # 这是get请求带参数的模式…...
MySQL定时备份数据,并上传到oss
1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息,根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…...
极速删除 node_modules 仅3 秒()
今天教大家如何快速删除 node_modules 依赖的一个小秘诀,告别繁琐!!! 前言 作为前端开发者,相信大家都曾经历过删除 node_modules 文件夹时的漫长等待。 尤其是在处理那些依赖库繁多的项目时,删除操作…...
vue this.$refs 动态拼接
业务需要,refs是不固定的 <vxe-grid refgridWarehouse v-bind"gridWarehouseOptions" v-if"tableHeight" :height"tableHeight":expand-config"{iconOpen: vxe-icon-square-minus, iconClose: vxe-icon-square-plus}"c…...
一次搞定!中级软件设计师备考通关秘籍
大家好,我是小欧! 今天我们来聊聊软考这个话题。要是你准备参加计算机技术与软件专业技术资格(软考),那么这篇文章就是为你量身定做的。话不多说,咱们直接进入正题。 什么是软考? 软考…...
第十六讲 python中的序列-列表简介-特点-常用方法-创建-添加-删除-访问-切片-排序-复制-反转
目录 1. 序列的本质和内存结构 2.列表 2.1 列表简介 2.2 列表的特点 2.3 列表对象的常用方法大全: 2.4 列表的创建 2.4.1 使用方括号 [] 2.4.2 使用 list() 函数 2.4.3 使用 range() 函数 2.4.3.1 range的基本用法 2.4.3.2 返回值 2.4.3.3 range的使用例子 2.4.3.4 range的使…...
大模型日报 2024-07-22
大模型日报 2024-07-22 大模型资讯 谷歌将在ICML 2024展示机器学习研究成果 摘要: 谷歌研究人员将在ICML 2024会议上展示他们在机器学习领域的探索,从理论到应用,构建解决深层问题的ML系统。 代理符号学习:优化AI系统符号组件的框架 摘要: 大…...
Electron 的open-file事件
在 Electron 中,open-file 事件是一个重要的事件,它允许开发者在应用程序已经运行的情况下,通过文件打开请求(如双击文件或在命令行中使用 open 命令打开文件)来捕获文件路径。以下是对 open-file 事件的详细解析: 触发条件 应用已经打开。用户通过双击与应用程序关联的…...
前端面试 vue 接口权限控制
接口权限目前一般采用jwt的形式来验证,没有通过的话一般返回401,跳转到登录页面重新进行登录 对于 jwt的理解 (前端接口权限的控制主要通过接口权限配置和JWT(Json Web Token)技术来实现。 首先,…...
【DevOps系列】构建Devops系统
开始介绍 那就着手开始干吧。先介绍一下我们的工具链。 主要工具:GitHub、Jenkins、Kubernetes、Ansible、Prometheus和JMeter 着手动 1. 设置GitHub作为源代码仓库 登录GitHub: 打开浏览器并访问 https://github.com,使用您的GitHub账户登录。 创建…...
ABAP打印WORD的解决方案
客户要求按照固定格式输出到WORD模板中,目前OLE和DOI研究了均不太适合用于这种需求。 cl_docx_document类可以将WORD转化为XML文件,利用替换字符串方法将文档内容进行填充同 时不破坏WORD现有格式。 首先需要将WORD的单元格用各种预定义的字符进行填充,为后续替换作准备…...
emr部署hive并适配达梦数据库
作者:振鹭 一、达梦 用户、数据库初始化 1、创建hive的元数据库 create tablespace hive_meta datafile /dm8/data/DAMENG/hive_meta.dbf size 100 autoextend on next 1 maxsize 2048;2、创建数据库的用户 create user hive identified by "hive12345&quo…...
王春城:怎么用精益思维重塑企业战略规划格局?
当下,企业战略规划的灵活性和适应性变得至关重要。传统的战略规划方法往往过于僵化和静态,难以应对市场的不确定性和变化。因此,引入精益思维来重塑企业战略规划格局,成为了许多企业寻求突破和创新的途径。具体步骤如深圳天行健企…...
git reset
git reset [--soft | --mixed | --hard] [HEAD] 表格版 原始内容reset前reset命令reset后本地工作区暂存区本地仓库本地工作区暂存区本地仓库本地工作区暂存区本地仓库READMEREADMEREADMEREADMEREADMEREADME--soft HEADREADMEREADMEREADMEa.txta.txtb.txtb.txtb.txtb.txtc.tx…...
E17.【C语言】练习:sizeof和strlen的辨析
先回顾http://t.csdnimg.cn/aYHl6 1. char acX[] "abcdefg"; char acY[] { a,b,c,d,e,f,g}; 以下说法正确的是( ) A.数组acX和数组acY等价 B.数组acX和数组acY的长度相同 C.sizeof(acX)>sizeof (acY) D.strlen (acX)>strlen (acY) 分析:…...
便携气象站:科技助力气象观测
在科技飞速发展的今天,便携气象站以其轻便、高效、全面的特点,正逐渐改变着气象观测的传统模式。这款小巧而强大的设备,不仅为气象学研究和气象灾害预警提供了有力支持,更为户外活动、农业生产等领域带来了诸多便利。 便携气象站是…...
php 存储复杂的json格式查询(如:经纬度)
在开发中,有时我们可能存了一些复杂json格式不知道怎么查。我这里提供给大家参考下: 一、先上表数据格式(location字段的possiton经纬度以逗号分开的) {"title":"澳海文澜府","position":"11…...
UDP网口(1)概述
文章目录 1.计算机网络知识在互联网中的应用2.认识FPGA实现UDP网口通信3.FPGA实现UDP网口通信的方案4.FPGA实现UDP网口文章安排5.传送门 1.计算机网络知识在互联网中的应用 以在浏览器中输入淘宝网为例,介绍数据在互联网是如何传输的。我们将要发送的数据包称作A&a…...
Linux - 进程的概念、状态、僵尸进程、孤儿进程及进程优先级
进程基本概念 课本概念:在编程或软件工程的上下文中,进程通常被视为正在执行的程序的实例。当你启动一个应用程序时,操作系统会为这个程序创建一个进程。每个进程都有自己的独立内存空间,可以运行自己的指令序列,并可能…...
Gradle依赖报告:项目依赖树的X光机
Gradle依赖报告:项目依赖树的X光机 在复杂的软件项目中,依赖管理是确保应用正常构建和运行的关键。Gradle作为一个强大的构建工具,提供了依赖报告功能,帮助开发者分析和理解项目的依赖树。本文将详细介绍如何在Gradle中使用依赖报…...
开源XDR-SIEM一体化平台 Wazuh (1)基础架构
简介 Wazuh平台提供了XDR和SIEM功能,保护云、容器和服务器工作负载。这些功能包括日志数据分析、入侵和恶意软件检测、文件完整性监控、配置评估、漏洞检测以及对法规遵从性的支持。详细信息可以参考Wazuh - Open Source XDR. Open Source SIEM.官方网站 Wazuh解决…...
从零开始:构建基于深度学习的实时跌倒检测系统(UI界面+YOLO代码+数据集)
注意看文末的结局与声明 一、引言 1. 项目背景与动机 在老年人和高危职业环境中,跌倒是一种常见的事故,可能导致严重的伤害甚至致命。实时跌倒检测系统可以及时发现并报警,提供紧急救助。通过深度学习技术,可以提高跌倒检测的准…...
【策略模式在项目中的实际应用】
业务场景 最最近项目中有这样的一个业务场景: 用户下单->管理员审核->配送员接单->配送中->送达–>签收->完成 整个业务以这种流程的形式存在,每个流程状态的业务不一样,考虑到多种状态如果直接写一个接口肯定会嵌套太多…...
昇思25天学习打卡营第14天|计算机视觉
昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…...
将json数组格式转成数组
start cmd [ 27 01 f7 01 24 38 02 b7 42 6e ee 2f 69 46 72 21 74 44 c4 22 7a 92 d8 6a de 66 61 b1 1e 2f de ee 5c 31 57 db df 01 31 2d c9 01 01 c0 FB ] set_ulpk {“jsonrpc”:“2.0”,“type”:2,“id”:0,“method”:“method”,“message”:{“VALUE”:[56,2,183,66…...
旅行社网站建设方案论文/怎么建立个人网站
罗德与施瓦茨 (Rohde & Schwarz, R&S) 公司成立于1933年,总部位于德国慕尼黑,是一家技术公司,为企业和政府机构开发、生产和销售广泛的电子产品,业务核心在于提供各类解决方案以打造一个更加安全的互联世界。 罗德与施瓦…...
Mac日历发布到wordpress/网站排名优化首页
说明:首先说明自己在开发中遇到的坑 (1)没有将itppay_cert.pem文件没有放到指定目录下 (2)异步回调调用参数的时候没有在线上测试, (3)项目里面被设置了路由访问权限,自己…...
wordpress 多多进宝/成都网站建设公司排名
中文的引号 与英文的引号,只有英文的表示字符串 >>> text “我来到北京清华大学”File "<stdin>", line 1text “我来到北京清华大学”^>>> text "我来到北京清华大学"...
普通小程序开发者工具/网页优化方法
一、问题:通过file-->settings-->Plugins 安装python时,显示下载成功,但重启后显示加载失败,创建项目时无python类型选项。 二、解决方法 1.下图红框标记内容即是需要下载的python插件版本 2、在https://plugins.jetbrains.…...
宁波企业网站搭建价格/b站推广app大全
题目 本题是中国海洋大学《C语言程序设计》2011年秋季A卷编程题第5题。 题目: 编程输出[a,b]之间所有的素数,a,b的值通过键盘输入。(10分) 注:本题与2011年春季学期编程题第5题重复 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的…...
软文写作/东莞网络优化调查公司
通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能。您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能…...