news 2026/6/23 14:01:57

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/6/23 19:48:47

口碑好的货架哪里有好的

口碑好的货架哪里有&#xff1f;答案在这里&#xff01;在仓储物流、商业零售等众多行业中&#xff0c;选择一款口碑好的货架至关重要。它不仅关系到货物的存储效率&#xff0c;还影响着企业的运营成本和管理水平。那么&#xff0c;口碑好的货架哪里有呢&#xff1f;专业货架工…

作者头像 李华
网站建设 2026/6/23 19:50:57

pytorch框架训练、推理、模块冻结等各种细节说明

1.张量的requires_grad属性 import torch x = torch.randn(3, 3, requires_grad=False) y = x * 2 # y = 2x y.requires_grad=True z = y.mean() # z=(1/9)*(2x),微分是dz/dx = 2/9 # z=(1/9)*y,微分是dz/dy = 1/9 z.backward()print(x,x.requires_grad) print(y…

作者头像 李华
网站建设 2026/6/23 19:46:57

Java毕设项目推荐-基于Java语言的茶叶销售系统的前端设计与实现基于SpringBoot+Vue茶叶销售系统的设计与实现【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/23 13:04:34

大数据生态核心组件语法与原理详解

Wan2.2-T2V-5B 轻量级文本生成视频模型深度解析 在短视频内容爆发式增长的今天&#xff0c;从广告创意到社交平台运营&#xff0c;对高效、低成本动态内容生产的需求前所未有地强烈。传统视频制作流程耗时耗力&#xff0c;而AIGC技术的崛起正在重塑这一领域。其中&#xff0c;W…

作者头像 李华
网站建设 2026/6/23 20:25:08

UVa 11617 An Odd Love

题目描述 春天到了&#xff0c;我们的朋友佩皮托&#xff08;Pepito\texttt{Pepito}Pepito&#xff09; 坠入了爱河。但他不确定她是否也爱他&#xff0c;于是他决定询问雏菊。他摘下一朵雏菊&#xff0c;交替说着“她爱我”和“她不爱我”&#xff0c;每说一句话就摘下一片花…

作者头像 李华
网站建设 2026/6/23 20:23:54

LobeChat能否对接Slack?团队协作平台集成方案

LobeChat 与 Slack 集成&#xff1a;构建团队智能协作中枢 在现代企业中&#xff0c;沟通工具早已不只是“聊天软件”——它们是信息流转的核心枢纽。Slack 每天承载着成千上万条项目讨论、任务分配和决策记录&#xff0c;而这些数据如果能被 AI 实时理解并参与其中&#xff0c…

作者头像 李华