Nacos 根据服务名获取所有服务实例的IP和端口列表

news/2025/1/31 3:23:27/

需求描述

今天在做一个定时任务数据同步的需求,定时任务是一个单独的微服务,部署了多套,但是全部的可执行任务是在项目启动的时候,加载到内存中进行任务执行。

在这个时候,当在后台管理进行定时任务操作的时候,比如:修改、新增、删除操作,需要把最新数据同步给全部的定时任务微服务实例,来更新最新数据。

后台管理如下图:
在这里插入图片描述

这个数据同步的思路大概是这个样子的,当对定时任务数据进行了:新增、修改、删除操作,执行完这些操作之后,调用sync()方法,用 HTTP 的方式来通知其他定时任务微服务实例,然后达到数据同步的目的。

那么这里就会涉及一个问题,怎么拿到全部定时任务微服务实例列表呢? 只有知道定时任务全部的微服务实例,获取到 IP + Port 信息才能发起 HTTP 调用。

解决办法

首先,我们微服务注册中心用的是:Nacos,本文就用 Nacos 的解决方式。

如果读过 Nacos 源码的同学应该知道,在 Nacos 里面会有 NacosNamingService 类,这个类的作用可以注册实例,销毁实例、当然同时也可以查询实例。如果还没有读过 Nacos 源码的同学,可以看一看小编我出的 Nacos 源码精讲 的课程,保证收获满满,点击查看。

知道NacosNamingService类之后,该如何创建这个类呢? 代码如下:

@Configuration
@AllArgsConstructor
public class NacosNamingServiceConfig {private final NacosDiscoveryProperties nacosDiscoveryProperties;@Beanpublic NacosNamingService nacosNamingService() {try {NacosNamingService service = new NacosNamingService(nacosDiscoveryProperties.getNacosProperties());return service;} catch (NacosException e) {e.printStackTrace();}return null;}
}

创建好这个对象之后,我们就可以使用了,如下图:
在这里插入图片描述

NacosNamingService Bean 对象注入进来,然后调用它原生的 getAllInstances 方法,就可以从 Nacos 获取到相对应微服务的全部实例信息了。

所以呀,平时好好学习源码是很有必要的噢~~~~~


http://www.ppmy.cn/news/108103.html

相关文章

(四)ArcGIS空间数据的转换与处理——数据结构转换

ArcGIS空间数据的转换与处理——数据转换 空间数据的来源很多,如地图、工程图、规划图、航空与遥感影像等,因此空间数据也有多种格式。根据应用需要,需对数据进行格式转换,不同数据结构间的转换主要包括矢量数据到栅格数据的转换…

【项目】Q-ROBOT移动机器人设计与开发

本文主要记录Q-ROBOT移动机器人的开发流程~ github: GitHub - Qsx567/SLAMCarProject (持续更新中~希望各位铁子走过路过给个小小的star!灰常感谢!) 本项目为我设计的移动SLAM机器人,命名为: Q-Robot 机…

用HTML、CSS和JavaScript实现鼠标可交互的3D太阳和月亮切换效果

部分数据来源:ChatGPT 引言 太阳和月亮对于我们来说是一种常见的对比,这篇文章将介绍一个使用HTML、CSS和JavaScript创建的网页场景,能够把太阳和月亮切换展示给用户。这个场景能够让用户使用鼠标和滚轮与场景互动,带来更多的趣…

积极主动和伙伴关系: 中国国际学校的人力资源领导

作者: Ray Chow 前所未有的机遇和挑战 在过去几年,中国的国际学校和独立学校面临着前所未有的机遇和挑战,需要采取积极主动、适应性强和创新的方法来确保学校的高质量领导、教职员工的保留。 被动的过去,主动的未来 中国大多学校别…

MySQL查询当前数据和上一行数据比较、业务数据的趋势分析、数据变动的监控和报警

标题: 使用MySQL查询当前数据和上一行数据比较的场景 在MySQL中,我们经常需要对数据进行比较和分析。其中一种常见的需求是查询数据列表并与前一行的数据进行比较。这种场景可以通过使用窗口函数或连接来实现。本文将介绍使用MySQL查询比较数据和上一行数据的场景&a…

Flutter重构开发

最近学习了flutter技术,然后用flutter技术重构了线上项目的首页板块,较深入的理解flutter的状态管理和ui组件的使用,总结下遇到的几点问题。 - 使用gex的controller报错 Don’t use one refreshController to multiple SmartRefresher,It w…

JAVA POI excel 添加下拉字典的方式与案例 以及图文详解及个人理解

场景 原有的Excel 某一个 sheet 页中某些列需要添加指定的字典下拉,而这些字典的值又是确认的。 有两种思路: 一、如果给定的下拉字典值是确定的而且关联原有列的位置也不会变,那么这些数据可以固定写死在代码中,也是最简单的一…

腾讯云8核16G服务器18M带宽CPU性能可支撑多少人同时在线?

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…