news 2026/5/25 20:25:33

VonaJS: Election

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VonaJS: Election

如果需要在后端启动一个独立服务,在 VonaJS 中该如何实现呢?

由于 VonaJS 是分布式架构,后端可以启动多个 Workers。那么,应该在哪个 Worker 中启动独立服务呢?

VonaJS 针对此场景提供了Election,工作原理如下:

  1. 所有 Workers 都会参与竞争,获取所有权
  2. 可以指定同时获取所有权的 Workers 数量
  3. 取得所有权的 Workers 可以启动服务
  4. 如果某个拥有所有权的 Worker 正常退出或者异常终止,那么其他 Workers 就会继续参与竞争

创建meta.election

比如,在模块 demo-student 中创建meta.election。在选中的 Worker 中启动一个定时器,每隔 2 秒输出Hello World

1. Cli命令

$ vona :create:bean meta election --module=demo-student

2. 菜单命令

右键菜单 -[模块路径]:`Vona Meta/Election`

meta.election定义

exporttypeTypeElectionObtainResource='echo';@Meta()exportclassMetaElectionextendsBeanElectionBase<TypeElectionObtainResource>{}
  • TypeElectionObtainResource: 定义 Election 资源的类型

创建 Module Monkey

接下来创建Module Monkey,响应appStartedappClose钩子

exportclassMonkeyextendsBeanSimpleimplementsIMonkeyAppStarted{asyncappStarted(){constscope=this.app.scope(__ThisModule__);scope.election.obtain('echo',()=>{// custom logic},async()=>{// cleanup});}}
  • appStarted: 调用election.obtain获取指定资源的所有权。当取得所有权就会调用回调函数

Tickets

在调用election.obtain时,可以指定允许多个 Workers 取得所有权:

async appStarted() { const scope = this.app.scope(__ThisModule__); scope.election.obtain('echo', () => { // custom logic }, async () => { // cleanup + }, { tickets: 2 }); }
名称说明
tickets允许指定数量的Workers取得所有权,默认为1

资源

  • Github:https://github.com/vonajs/vona
  • 文档:https://vona.js.org
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 13:17:00

如何了解腾讯云国际站代理商的NLP有什么优势呢?

要了解腾讯云国际站代理商的 NLP 优势&#xff0c;可从腾讯云国际站 NLP 本身的技术能力&#xff0c;以及代理商提供的附加服务两方面切入&#xff0c;也能通过官方及代理商渠道进一步核实&#xff0c;具体如下&#xff1a;产品本身的核心技术优势多语言与高准确率兼具&#xf…

作者头像 李华
网站建设 2026/5/24 22:36:11

腾讯云国际站代理商的TAPD适合哪些类型的企业?

腾讯云国际站代理商的 TAPD 凭借敏捷研发管理、跨地域协作、多生态集成及灵活付费与定制化服务等优势&#xff0c;适配多个行业、不同规模且有跨境协作或合规需求的企业&#xff0c;具体类型如下&#xff1a;跨境互联网与游戏企业这类企业常面临多地区工作室协作、版本快速迭代…

作者头像 李华
网站建设 2026/5/22 7:52:05

钢铁厂除氧供气 / 炉门驱动用工业级螺杆空压机​选型注意

一、明确工况核心需求&#xff0c;锚定选型基准 除氧供气工况特性&#xff1a;需为锅炉给水除氧系统提供干燥、洁净的压缩空气&#xff0c;核心要求是无油洁净度&#xff08;避免油污染影响水质和锅炉安全&#xff09;、压力稳定&#xff08;除氧过程需恒定压力保障除氧效率&am…

作者头像 李华
网站建设 2026/5/24 18:40:33

Web应用安全测试指南

在数字化时代&#xff0c;Web应用已成为企业和用户交互的核心渠道&#xff0c;然而随之而来的安全威胁日益严峻。作为软件测试从业者&#xff0c;掌握系统的安全测试方法不仅是职责所在&#xff0c;更是保障应用可靠性和用户信任的关键。本指南旨在为测试人员提供一套实用、可操…

作者头像 李华
网站建设 2026/5/24 17:52:13

身价暴跌!28 岁球员从 5500 万到 200 万

他曾是阿贾克斯青春风暴中最耀眼的核心之一&#xff0c;是金球奖候选名单上的未来之星&#xff1b;如今&#xff0c;28岁——这本该是一名中场球员的黄金年龄——他的身价却仅剩200万欧元&#xff0c;不及巅峰时的零头。从众星捧月到无人问津&#xff0c;唐尼范德贝克的故事&am…

作者头像 李华
网站建设 2026/5/23 23:35:28

【完整源码+数据集+部署教程】人脸检测检测系统源码分享[一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

一、背景意义 随着人工智能技术的迅猛发展&#xff0c;计算机视觉领域的研究日益受到关注&#xff0c;尤其是人脸检测技术在安全监控、智能家居、社交媒体等多个应用场景中发挥着越来越重要的作用。人脸检测作为计算机视觉中的一个关键任务&#xff0c;旨在从图像或视频中自动…

作者头像 李华