news 2026/9/25 11:51:22

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,响应appStarted和appClose钩子

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/9/24 8:12:25

Docker安装最佳实践:配置清华源加速TensorFlow镜像构建

Docker安装最佳实践&#xff1a;配置清华源加速TensorFlow镜像构建 在人工智能项目开发中&#xff0c;一个常见的痛点是&#xff1a;当你兴致勃勃地准备启动一个基于 TensorFlow 的实验时&#xff0c;执行 docker pull tensorflow/tensorflow:latest 后&#xff0c;终端却卡在…

作者头像 李华
网站建设 2026/9/25 4:12:36

Dify智能体平台在未来AI生态中的定位展望

Dify智能体平台在未来AI生态中的定位展望 在企业纷纷拥抱“AI原生”转型的今天&#xff0c;一个现实问题摆在面前&#xff1a;如何让大模型的能力真正落地到具体业务中&#xff1f;我们早已见证了GPT类模型在生成文本、编写代码方面的惊艳表现&#xff0c;但这些能力若无法被系…

作者头像 李华
网站建设 2026/9/24 4:02:20

FaceFusion性能优化与生产部署实践

FaceFusion性能优化与生产部署实践 在AI换脸技术逐渐从实验室走向影视制作、内容创作乃至实时直播的今天&#xff0c;FaceFusion 凭借其高精度的人脸对齐、自然的图像融合效果和模块化架构&#xff0c;已成为开源社区中备受青睐的专业级工具。然而&#xff0c;随着输入分辨率提…

作者头像 李华
网站建设 2026/9/24 8:11:48

不同形貌银包铜粉体(组合),是如何显著提升导电油墨的电性能的?

“真正决定油墨导电性的&#xff0c;不只是银含量&#xff0c;而是粉体之间的‘搭接方式’。”在电子行业里&#xff0c;导电油墨早已不是“单纯的高导电材料”&#xff0c;而是一个微观结构工程的问题&#xff1a; 如何让粉体在树脂体系中构建 连续、稳定、低阻抗、耐环境的导…

作者头像 李华
网站建设 2026/9/25 10:38:02

UVa 12788 Smooth Factor

题目描述 给定一个整数数组 a1,a2,…,ana_1, a_2, \ldots, a_na1​,a2​,…,an​ &#xff0c;定义其 平滑因子 为&#xff1a;最长的连续子数组 ap,…,aqa_p, \ldots, a_qap​,…,aq​ 的长度&#xff0c;其中至多存在一个位置 iii &#xff08; p<i≤qp < i \leq qp<…

作者头像 李华
网站建设 2026/9/24 21:08:22

如何在 UOS 等国产系统下备份 WPS 序列号

目前就 UOS 下的国产 office 软件来看&#xff0c;WPS 的兼容性最好&#xff0c;尽管与 Msoffice 有差距&#xff0c;一般的办公足够了&#xff0c;WPS 的序列号一旦输入&#xff0c;就显示***的&#xff0c;无法直接复制&#xff0c;那么如何备份呢&#xff1f;一、在哪里输入…

作者头像 李华