服务发现: Node.js + Consul

2024-08-23 07:04
文章标签 服务 js 发现 node consul

本文主要是介绍服务发现: Node.js + Consul,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面是一个基于 Node.js 和 Consul 的完整示例,它展示了如何注册服务、获取服务列表并监听服务变化。

安装依赖

首先,需要安装 consul 包。如果还没有安装,可以通过以下命令安装:

npm install consul

完整的 Node.js + Consul 示例

以下示例包含了:

  1. 服务注册:将服务注册到 Consul。
  2. 服务列表获取:从 Consul 获取服务列表并缓存到内存中。
  3. 服务变化监听:使用 Consul 的 Watcher 机制监听服务变化并更新缓存。
const Consul = require('consul');
const consul = new Consul();let serviceCache = {};// 注册服务到 Consul
function registerService() {consul.agent.service.register({name: 'my-service',id: 'my-service-id', // 服务 ID(唯一标识符)address: '127.0.0.1',port: 3000,tags: ['api'],check: {http: 'http://127.0.0.1:3000/health',interval: '10s'}}, (err) => {if (err) {console.error('Failed to register service:', err);} else {console.log('Service registered');}});
}// 初始加载服务列表
function loadServices() {consul.catalog.service.list('my-service', (err, result) => {if (err) {console.error('Failed to load services:', err);} else {serviceCache = result.reduce((acc, service) => {acc[service.ServiceID] = service;return acc;}, {});console.log('Initial service cache:', serviceCache);}});
}// 监听服务变化
function watchServices() {consul.watch({method: consul.health.service.bind(consul.health, 'my-service', { passing: true }),filter: (data) => data}).on('change', (result) => {serviceCache = result.reduce((acc, service) => {acc[service.ServiceID] = service;return acc;}, {});console.log('Updated service cache:', serviceCache);});
}// 运行
function main() {registerService();loadServices();watchServices();
}main();

其他配置

  1. 健康检查端点:

确保服务有一个健康检查端点(例如 /health),Consul 将使用这个端点来检查服务的健康状态。可以在服务中实现一个简单的健康检查路由:

const express = require('express');
const app = express();app.get('/health', (req, res) => {res.send('Service is up and running');
});app.listen(3000, () => {console.log('Service running on port 3000');
});
  1. 启动 Consul:

确保已经启动了 Consul 服务器。可以使用以下命令启动 Consul 本地开发模式:

consul agent -dev

总结

上述代码展示了如何在 Node.js 应用中使用 Consul 注册服务、加载服务列表以及监听服务变化。可以根据自己的需求修改服务注册信息和监听的服务。

这篇关于服务发现: Node.js + Consul的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098683

相关文章

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

SpringCloud之consul服务注册与发现、配置管理、配置持久化方式

《SpringCloud之consul服务注册与发现、配置管理、配置持久化方式》:本文主要介绍SpringCloud之consul服务注册与发现、配置管理、配置持久化方式,具有很好的参考价值,希望... 目录前言一、consul是什么?二、安装运行consul三、使用1、服务发现2、配置管理四、数据持久化总

SpringCloud之LoadBalancer负载均衡服务调用过程

《SpringCloud之LoadBalancer负载均衡服务调用过程》:本文主要介绍SpringCloud之LoadBalancer负载均衡服务调用过程,具有很好的参考价值,希望对大家有所帮助,... 目录前言一、LoadBalancer是什么?二、使用步骤1、启动consul2、客户端加入依赖3、以服务

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N