当前位置: 首页 > 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.jsqmd.com/news/100194/

相关文章:

  • HunyuanVideo-Foley:高保真拟音生成扩散模型
  • 认知导向即面向服务——规避未来AI发展路径上的拟人化陷阱
  • 少儿编程Scratch3.0教程——03 外观积木(基础知识)
  • 电脑实用软件
  • 2025高温保护气氛箱式炉厂家TOP5权威推荐:超高温箱式炉 - 工业推荐榜
  • Docker与本地PaddleOCR环境配置指南
  • HLS的ready无法随机握手解决办法
  • 2025年天津十大保安服务联营合作企业推荐:知名的保安服务联 - myqiye
  • GPU算力租赁推荐:低成本训练YOLO大模型
  • HunyuanVideo-Foley:AI自动生成同步音效全解析
  • LobeChat能否用于生成APP界面文案?UX写作助手
  • API测试完整流程解析与最佳实践
  • 讯飞星火认知引擎如何通过LobeChat对外提供服务?
  • Web应用安全测试指南
  • 【Python办公自动化】PyQt5 TXT Word 转 PDF 转换器
  • 零日漏洞的崛起:网络安全的永恒军备竞赛
  • Python高级编程强大的技术深度解析与实战指南
  • UVa 12788 Smooth Factor
  • LobeChat社区活跃度分析:GitHub星标增长趋势解读
  • ANT 设备(骑行台 FE-C 场景)开发的重点与难点全解析
  • CentOS7最小安装后yum配置全攻略
  • MASIL玛丝兰发膜:用科技解锁秀发修护新方案 - 海棠依旧大
  • 【赵渝强老师】Oracle数据库的客户端工具
  • UVa 11617 An Odd Love
  • LobeChat能否实现AI编剧?电影剧本创意生成与结构优化
  • MASIL玛丝兰洗发水:专利护航,精准适配细分洗护需求 - 海棠依旧大
  • 2025年电力专业论文发表、工程师论文发表刊物、教师省级期刊 - 工业推荐榜
  • 2025年天津驻场安保公司排名,有名的驻场安保专业公司解析 - myqiye
  • 社区热议:LobeChat能否成为下一代AI门户标准?
  • MySQL: 数据库读写分离与负载均衡的实现方式及深度分析 - 教程