当前位置: 首页 > news >正文

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
http://www.zskr.cn/news/110915.html

相关文章:

  • 少儿编程Scratch3.0教程——03 外观积木(基础知识)
  • 2025高温保护气氛箱式炉厂家TOP5权威推荐:超高温箱式炉 - 工业推荐榜
  • 电脑实用软件
  • GPU算力租赁推荐:低成本训练YOLO大模型
  • HunyuanVideo-Foley:AI自动生成同步音效全解析
  • 讯飞星火认知引擎如何通过LobeChat对外提供服务?
  • Web应用安全测试指南
  • 【Python办公自动化】PyQt5 TXT Word 转 PDF 转换器
  • UVa 12788 Smooth Factor
  • 零日漏洞的崛起:网络安全的永恒军备竞赛
  • LobeChat社区活跃度分析:GitHub星标增长趋势解读
  • 【赵渝强老师】Oracle数据库的客户端工具
  • UVa 11617 An Odd Love
  • CentOS7最小安装后yum配置全攻略
  • 2025年电力专业论文发表、工程师论文发表刊物、教师省级期刊 - 工业推荐榜
  • 社区热议:LobeChat能否成为下一代AI门户标准?
  • 【赵渝强老师】Oracle的参数文件与告警日志文件
  • 新生儿纸尿裤怎么选?2025专业测评榜单:不漏尿背后的5大黄金标准 - 速递信息
  • 通过 NVIDIA Jetson Thor 加速机器人与实时 AI 推理
  • PaddleOCR文字识别部署优化:使用conda环境与本地镜像源
  • 2025年上海箱式台车炉十大品牌推荐:热处理台车炉设备优质供 - 工业推荐榜
  • 高效测试用例设计的五大核心方法
  • LobeChat移动端适配情况如何?手机浏览体验报告
  • 2025年上海屋顶防水服务公司排名:楼顶防水处理、屋顶防水定 - mypinpai
  • 【无人机算法】低空经济下无人机巡检检测识别算法(城市、林业、水利)
  • 决策优化平台有哪些主流品牌
  • 银行项目管理:核心要素、挑战与高效实践
  • 算法笔记19 - 图和通用结构 | 图的两种遍历 | 三种拓扑排序 | 两种最小生成树算法Kruskal, Prim | 最短路径算法Dijkstra
  • 坡莫合金磁芯加工:国产化突破“卡脖子”技术|深圳金鑫磁材
  • LobeChat能否用于构建旅游攻略助手?行程规划实测