nodejs微服务:服务发现与Consul

如何构建一个 NodeJS 影院微服务并使用 Docker 部署 微服务是一个单独的自包含单元,与其他许多单元一起构成一个大型应用程序。通过将应用程序拆分为小单元,每个部分都可以独立部署和扩展,可以由不同的团队和不同的编程语言编写,并且可以单独进行测试。微服务架构意味着应用程序由许多较小的、独立的应用程序组成,这些应用程序能够在自己的内存空间中运行,并且可以在可能的多个独立计算机上独立扩展。应用程序启动更快,这使得开发人员更具生产力,并加快了部署速度。每个服务可以独立于其他服务部署 — 更容易频繁部署服务的新版本。更容易扩展开发,也可能具有性能优势。 阅读详情

服务发现

  • 我们在做微服务开发的时候,客户端的一个接口可能需要调用N个服务,客户端必须知道所有服务的网络位置(ip+port),如下所示
  • 客户端 Client
    • 服务A (IP 1, PROT 1)
    • 服务B (IP 2, PROT 2)
    • 服务C (IP 3, PROT 3)
    • …
    • 服务N (IP N, PROT N)
  • 客户端需要知道目前所有可用的服务端的ip和端口
  • 以往的做法是把服务的地址放在配置文件或者数据库中,这样就有以下几个问题:
    • 需要配置N个服务的网络位置,加大配置的复杂性
    • 服务的网络位置变化,需要改变每个调用者的配置
    • 集群的情况下,难以做负载(反向代理的方式除外)
  • 总结起来一句话:服务多了,配置很麻烦,问题一大堆
  • 所以现在就选择服务发现来解决这些问题,具体设计如下:
    • 服务发现系统
      • 服务A (注册IP+PORT)
      • 服务B (注册IP+PORT)
      • 服务C (注册IP+PORT)
      • …
      • 服务N (注册IP+PORT)
    • 客户端 <------ 根据服务名获取IP+PORT ------ 服务发现系统
  • 与之前解决方法不同的是,加了个服务发现模块,服务端把当前自己的网络位置注册到服务发现模块(这里注册的意思就是告诉)
  • 服务发现就以K-V的方式记录下,K一般是服务名,V就是IP:PORT
  • 服务发现模块定时的轮询查看这些服务能不能访问的了(这就是健康检查)
  • 客户端在调用服务A-N的时候,就跑去服务发现模块问下它们的网络位置,然后再调用它们的服务
  • 这样的方式是不是就可以解决上面的问题了呢?
  • 客户端完全不需要记录这些服务的网络位置,客户端和服务端完全解耦!

常见的服务发现框架(微服务注册中心)

  • Etcd:k8s 内嵌的服务发现
  • Mdns:以前mdns是go-micro中默认自带的服务发现go-micro的默认服务发现也是consul
  • Consul:是一个分布式高可用的系统,是为基础设施提供服务发现和服务配置的工具,常应用于grpc、 go-micro中
  • Zookeeper:是 Apache 公司为分布式应用设计的协调服务,java中较常用
  • Eureka:Netflix 开源的一款提供服务注册和发现的产品,已闭源,提供了完整的服务注册和发现,springcloud中最核心的组件之一,需要手动配置 Eureka Server 服务器
  • Nacos:Alibaba 开源的一款专注于动态服务发现,配置和服务管理的组件

关于服务发现框架Consul

  • Consul是Go语言写的开源的服务器发现软件,用于实现分布式系统的服务发现与配置
  • 包含多个组件, 但是作为一个整体, 为你的基础设施提供服务发现和服务配置的工具
  • 它提供以下关键特性:
    • 服务发现:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册
    • 健康检查:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面 (心跳机制)
    • 键/值存储:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作
    • 多数据中心:无需复杂的配置,即可支持任意数量的区域
      • 官方建议:最好是三台或者三台以上的consul在运行,同名服务最好是三台或三台以上
      • 默认可以搭建集群
    • Web管理界面:官方提供web管理界面
    • 负载均衡:可实现负载均衡功能

Consul安装

  • Consul用Golang实现,因此具有天然可移植性 (支持 Linux、windows和macOS),安装包仅包含一个可执行文件
  • Consul安装非常简单,只需要下载对应系统的软件包并解压后就可使用

1 ) Windows安装

2 ) Mac安装

  • 方式1:

    • $ brew tap hashicorp/tap
    • $ brew install hashicorp/tap/consul
  • 方式2:

    • 下载consul,地址:https://releases.hashicorp.com/consul
    • 注意下载非ent的,选择 consul_x.xx.x_darwin_amd64.zip (按照自己机型cpu架构选择)
    • 解压consul到某一个目录,配置consul到环境变量,或者下载解压后,将文件放置在 /usr/local/bin 目录下
    • 查看安装情况:$ consul --version

3 ) Linux安装

  • 方式1:
    • 1 )Ubuntu
    • $ wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    • $ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    • $ sudo apt update && sudo apt install consul
    • 2 )CentOS
    • $ sudo yum install -y yum-utils
    • $ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
    • $ sudo yum -y install consul
  • 方式2:
    • 下载consul,地址:https://releases.hashicorp.com/consul
    • 解压 consul到某一个目录, 配置consul到环境变量
      • [root@localhost ~]# mkdir -p usr/local/consul
      • [root@localhost ~]# unzip consul_1.11.4_linux_arm64.zip -d /usr/local/consul/
      • [root@localhost ~]# cd /usr/local/consul/
      • [root@localhost ~]# ./consul -v
    • 注意:如果要全局使用请把consul加入到环境变量,或者下载解压后,将文件放置在 /usr/local/bin 目录下
    • 安装 Consul后,通过执行 consul命令,你可以看到命令列表的输出: $ consul
微服务中的服务发现是什么? 本文通过服务发现的相关背景和 APISIX 对于服务发现的应用与实践,来介绍微服务中的服务发现内容。 阅读详情

相关推荐

微服务架构:Node.js 实践

根据 CNCF 年度报告: 全球 78 % 的企业后端系统已拆分为微服务 Node.js 是增长最快的微服务语言(年增长 41 %),已超越 Java 位列第二 采用 gRPC + RabbitMQ + 服务网格的团队,平均延迟降低 63 %,部署频率提升 5.8 倍 2025 年的 Node.js 微服务,已不再是“用 Express 再拆几个项目”那么简单,而是真正工业级的分布式系统

zimin的专栏 915

nodejs微服务:Consul集群

Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置 Consul 是分布式的、高可用的、可横向扩展的, 完成consul的安装后,必须运行agent

Wang的专栏 843

node_mdns:适用于node.js的mdnszeroconfbonjour服务发现插件

mdns-node.js服务发现 包:mdns 说明:多播DNS服务发现 安装: npm install mdns (见下文) 文档: 执照: 捐款: mdns向Node.js添加了多播DNS服务发现,也称为zeroconf或bonjour。 它提供了一个基于对象的界面来通告和浏览本地网络上的服务。 概要 // import the module const mdns = require ( 'mdns' ) ; // advertise a http server on port 4321 const ad = mdns . createAdvertisement ( mdns . tcp ( 'http' ) , 4321 ) ; ad . start ( ) ; // watch all http servers const browser = mdns . createBro

nodejs微服务:Consul的角色、命令与使用

完成consul的安装后,必须运行agent,agent可以运行为 server模式、client模式或者dev模式,每个数据中心至少必须拥有一台server,建议在一个集群中有3或者5个server,部署单一server,在出现失败时,会不可避免的出现数据丢失

Wang的专栏 830

大地坐标系与经纬度转换(一):大地坐标系简介

一、大地坐标系 大地坐标系是大地测量中以参考椭球面为基准面建立起来的坐标系。地面点的位置用大地经度、大地纬度和大地高度表示。 二、地心坐标系 ...

qq_42895926的博客 6万+

LVGL与STM32的理解(基于正点原子资料)

我们要在lcd_draw_fast_rgb_color里面实现对屏的具体操作(也就是在这里实现自己的代码)。lcd_set_window、lcd_write_ram_prepare、lcd_wr_data这三个函数是本例程LCD屏的控制函数(也就是自己写的函数)。以下是stm32工程的文件目录,GUI_APP也可以忽略(细节参考正点原子例程):这里主要是再次加强一下印象,主要就是把。,里面的lcd_init()与lcd_display_dir是。它们都是LVGL的接口,按照它们的需求,把内容给它们即可。

weixin_39257775的博客 3437

推荐项目:Node.js实现的mDNS协议库 - node_mdns

如果你正在寻找一个简单易用、高效可靠的mDNS协议库来解决跨网络发现和服务查找的问题,那么不妨试试`node_mdns`。 ## 项目简介 `node_mdns`是一个用于Node.js环境中的mDNS(多播DNS)协议库。它实现了MDNS规范中定义的服务发现和数据交换功能,并提供了简单的API接口供开发者使用。 ## 功能用途 通过使用`node_mdns`,你可以轻松地在本地网络中...

gitblog_00003的博客 763

微信小程序云开发订单微信支付与小票和标签打印的完整高效流程

本片文章全文12000字,细致讲述从申请账户到小程序注册到打印机的选型最后到实现微信小程序云开发订单支付更新与小票,标签打印完整的高效流程。客户A在我们的点餐平台上点了一杯咖啡,所以客户要在选好后付款,在付款完成后商家的小票打印机和标签打印机打印出本订单的相关信息。

weixin_52312427的博客 3649

win7使用boot2docker搭建微服务

架构图 1. 搭建服务发现与注册中心 (Consul) #服务注册发现 (consul) docker pull consul docker run --rm -p 8500:8500 --name myconsul consul agent -server -client=0.0.0.0 -ui -bootstrap 2. 加一个微服务(Nodejs) docker pull n...

lyqu6 554

AutoCAD Plant 3D自定义零件库实战:手把手教你用Python创建参数化槽式三通

本文详细介绍了如何利用Python脚本在AutoCAD Plant 3D中创建参数化槽式三通组件,从API原理到实战开发,帮助用户构建高效的自定义零件库。通过Python装饰器系统控制零件属性和行为,实现几何建模、参数管理和规格编辑器集成,提升工业管道设计的标准化和效率。

weixin_28267011的博客 332

基于航位推算与多传感器融合的高精度避障小车设计

航位推算(Dead Reckoning)是一种在无外部定位信号下通过里程计与惯性测量单元(IMU)持续积分估计位姿的基础导航方法,其核心在于运动学建模、误差累积抑制与多源数据融合。该技术具备低依赖、高实时、强确定性等工程优势,广泛应用于服务机器人、AGV、竞赛无人平台等受限环境下的自主导航系统。结合编码器高分辨率测距与九轴IMU姿态解算,可显著抑制纯里程计漂移,提升短时定位精度至厘米级。本文以全国大学生电子设计竞赛K题为背景,深入实现了一种面向确定性场地的离线建图+航位推算双模协同架构,重点解决嵌入式资源约

weixin_36328210的博客 81

部署consul+nodejs+docker集群

Jenkins安装:https://www.jianshu.com/p/845f267aec52 JenkIns配置:https://www.cnblogs.com/vipzhou/p/7890016.html Consul配置:http://www.imooc.com/article/289385

Nodejs 1666

双目相机模型

近期想研究一下 双目相机 的内容,故先把 理论 弄清楚! 一、双目相机模型 针孔相机模型描述了 单个相机 的成像模型。然而,仅根据一个像素,我们是无法确定 这个空间点的具体位置的。这是因为,从相机光心到归一化平面连线上的所有点,都可以 投影至该像素上。只有当 P 的深度确定时(比如通过双目或 RGB-D 相机),我们才能确 切地知道它的空间位置。 测量像素距离(或深度)的方式有很多种,像人眼就可以根据左右眼看到的景物差异 (或称视差)来判断物体与我们的距离。双目相机的原理亦是如..

努力努力努力 2408

spring cloud alibaba微服务原理与实战_完美整合Spring Cloud与异构微服务的框架!Spring Cloud Wii开源啦!...

点击上方"IT牧场",选择"设为星标"技术干货每日送达!Spring Cloud Wii是一个用来快速整合Spring Cloud 与异构微服务的框架,灵感来自Spring Cloud Netflix Sidecar[1]。目前支持的服务发现组件:•Nacos•Consul术语异构微服务非Spring Cloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。“完美...

weixin_39956036的博客 579

HDOCK 蛋白蛋白对接软件使用;LZerD、pyDock、ClusPro网页在线对接

参考:hdock支持蛋白与蛋白,也支持蛋白与核酸对接计算。

weixin_42357472的博客 1万+

相位偏折PMD全栈技术拆解 | 四步相移解算+梯度积分形貌重建,助力镜面工件微米级缺陷高精度稳定检测

工业精密检测领域中,高反光镜面类工件长期存在检测瓶颈,涵盖汽车高亮车漆、半导体抛光晶圆、光学透镜、精密抛光模具、玻璃盖板等主流产品。传统2D机器视觉仅能识别表面明显污渍、大尺寸破损,完全无法捕捉微米级划痕、凹坑、橘皮、曲面微形变等微观缺陷;常规线激光3D、普通结构光3D检测设备,面对镜面材质会产生严重镜面反射杂光,激光条纹、结构光图案完全失真,必须喷涂显影粉辅助检测,不仅破坏工件表面完整性,还无法适配自动化量产产线,检测效率与良率极低。

getusushu的博客 544

nodejs微服务:微服务集群

当一台微服务挂掉,我们怎么让服务仍然正常运行,需要在客户端调用微服务前进行负载均衡的处理。我们同时借助了consul集群,保证了服务的稳定运行,但是我们还应当实现API网关的集群。在调用前基于健康的服务进行随机选择微服务机器进行调用,实现了微服务集群的负载均衡。这样,微服务集群已经配置好了,但是上述调用写法可以抽离出一个公共的方法包出来。consul 负载均衡微服务代码如下。

Wang的专栏 777

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

小白入门微服务(5) - 服务注册发现实战(docker+registrator+consul+nodejs+python)

概述 前言 源码 registrator API gateway web 服务 运行 后记 前言 这篇文章真是等了挺久才写,让小伙伴们久等了。这篇文章旨在带你走一下微服务的流程,真实的微服务远不止这些东西。详细的介绍敬请关注我后面的文章。**如果我的文章对你有帮助,欢迎关注、点赞、转发,这样我会更有动力做原创分享。**OK,进入正题! 源码 首先甩出源码吧,因为这对于刚接触的小伙伴来说这可能还...

zone_的博客 1382

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

flatend部署指南:如何在2美元/月的服务器上运行生产级P2P微服务

flatend 是一个基于 P2P 网络的微服务框架,支持 NodeJS 和 Go 两种语言,能让你用一台 2美元/月的廉价云服务器,快速搭建并部署生产级 P2P 微服务集群。本文将为你提供一份完整的 flatend 部署指南,从购买服务器、编译网关、编写服务到配置自动 HTTPS,一步步带你完成生产环境搭建,全程无需复杂运维经验。 ## 什么是 flatend?为什么它适合低成本部署? fl

gitblog_01039的博客 353

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

springcloud gateway 获得真实外网ip和端口_完美整合Spring Cloud与异构微服务的框架!Spring Cloud Wii开源啦!...

点击上方"IT牧场",选择"设为星标"技术干货每日送达!Spring Cloud Wii是一个用来快速整合Spring Cloud 与异构微服务的框架,灵感来自Spring Cloud Netflix Sidecar[1]。目前支持的服务发现组件:•Nacos•Consul术语异构微服务非Spring Cloud应用,统称异构微服务。比如你的遗留项目,或者非JVM应用。“完美...

weixin_36313293的博客 745

vue3+nodejs基于微服务架构的校内电动车租赁系统的设计与实现

Vue 采用组件化开发模式,开发者可以将页面拆分成一个个独立的组件,每个组件都有自己的 HTML、CSS 和 JavaScript 代码,实现了高度的复用性和可维护性。MySQL 是关系型数据库管理系统的代表, 因为MySQL是其免费开源的,而且MySQL的功能已经足够用对于学习和中小型企业来讲,所以开发中小型网站都会选择MySQL作为网站的数据库。毕设项目前端使用vue框架,后端使用js的node,满足用户的讯息接受,信息搜索,资讯查看的操作。需要成品或者定制,加我们的时候,不满意的可以定制。

wx_bishe288的博客 1308

consul 超时_Node.js + Consul 实现服务注册、健康检查、配置中心

本篇主要介绍了 Node.js 如何与 Consul 进行集成,Consul 只是服务注册的一种实现,还有其它的例如 Zookeeper、Etcd 等,服务注册发现在微服务架构中扮演这一个重要的角色,伴随着服务的大量出现,服务与服务之间的配置管理、运维管理也变的难以维护,通过 Consul 可以解决这些问题,实现服务治理、服务监控。关于 Consul 的更多知识点不在这里赘述,但是在学习...

weixin_39641876的博客 516

阿里微服务架构Spring Cloud Alibaba Nacos实战

Spring Cloud Alibaba Nacos一、Nacos1、常用特性2、注册中心、配置中心对比3、生态图4、安装5、名词解析6、代码实战注册中心配置中心 一、Nacos nacos官方文档:https://nacos.io/zh-cn/docs/quick-start.html 1、常用特性 服务发现和服务健康监测 Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用D

ThisLX的博客 1722

Node.js 微服务入门:快速构建你的第一个微服务

使用 Node.js 构建微服务应用是非常流行的选择,本文使用 Koa.js,Consul, Opossum, Axios, gRPC, Kong, RabbitMQ 技术栈构建一个简单微服务应用示例。

yuxzlucy的博客 1677

nodejs微服务解决方案

前言 seneca是一个nodejs微服务工具集,它赋予系统易于连续构建和更新的能力。下面会逐一和大家一起了解相关技术入门以及实践。 这里插入一段硬广。小子再进行简单整合之后撸了个vastify框架 ---- 轻量级nodejs微服务框架,有兴趣的同学过目一下,欢迎顺手star一波,另外有疑问或者代码有毛病欢迎在博文下方留言。 环境 基础...

weixin_34062329的博客 524

探索 Node.js Argo:下一代微服务框架

是一个创新的轻量级微服务框架,基于 Node.js 实现,旨在简化和加速开发过程,同时提供强大的可扩展性和性能优化。这个项目由 [eooce](https) 开发并维护,目标是为开发者提供一个更加灵活、高效且易于管理的微服务解决方案。 ## 技术分析 1. **基于 Express**: Argo 建立在业界广泛使用的 Express 框架之上,这意味着你可以充分利用 Express 的所有功

gitblog_00027的博客 407
上一篇: nodejs微服务:关于Protobuf的使用
下一篇: nodejs微服务:Consul的角色、命令与使用
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值