nodejs中的Bot master

时间:2015-10-20 19:37:59

标签: node.js bots child-process master

我目前正在开展一些在线服务,我不知道如何正确地做一件事。我需要的是由一个“master”控制的nodejs上的一堆机器人(一个代码的许多实例)。 Master应该打开/关闭机器人,进行一些监控并向这些机器人发送任务。我看到了两种组织代码的方法:

  1. Master和bot的代码位于同一个文件机器人的实例中 被推到数组(即var bot_instances = []);
  2. 硕士和 bot的代码位于不同的文件中(即master.js和bot.js), 每个bot实例都是子进程。
  3. 哪种方式适当,为什么?

1 个答案:

答案 0 :(得分:1)

有很多内容可以涉及到这个主题,所以我现在要保持简单:

使用#2创建一个作业队列数据结构实现,并为空闲子项创建一个等待池。

  • 通过队列从主服务器向机器人发送任务。
  • Master应包含作业调度实现。
  • 利用子进程消息传递来更新子状态(https://nodejs.org/api/child_process.html#child_process_event_message)。
  • 每当有孩子可以从Queue派遣下一份工作。如果没有剩下的工作,请维护一个可用的儿童池(或者甚至更好,只需关​​闭它们直到您再次需要它们来节省系统资源)。

为什么单独代码:如果主代码也包含机器人代码,那么它将会变得相当膨胀。随着项目的发展,保持模块化这样的事情会更好。