当它们全部命名为“server.js”时,如何识别不同的服务?

时间:2018-03-05 21:33:16

标签: node.js naming-conventions

关注a common convention,我通常会在项目server.js中命名主文件。但是,这会导致这样的情况:

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
21049 root      20   0 2347568 1.133g      0 D  0.0 14.5   0:32.70 node ./server.js
28201 root      20   0 1261740  69332      8 S  0.0  0.8   4:04.46 node src/server.js
26652 root      20   0  776664   9324      8 S  0.0  0.1   0:00.09 node server.js

其中一项服务存在严重的内存问题 - 但我该如何弄清楚它是什么?

想到一些可能的解决方案:

  • 以不同的方式命名每个,例如server-label-gen.jsserver-order-mgt.js等。问题:除了不完全遵循命名约定之外,我最终还想标准化像Dockerfiles这样的东西,但如果这些文件的名称都不同,我需要模板而不是只能复制。
  • 在启动程序时将伪参数传递给它,因此它显示为node ./server.js --name=label-gen。这与模板有同样的问题,加上对这个参数的作用有什么困惑(如果我通过--name=order-mgt而不是突然变成订单服务器?)
  • process.title更改为更有用的内容。这是一种常见的方法(例如,postgres会这样做)但是要做对了似乎很棘手。

是否有针对此类事情的最佳做法?这似乎是微服务的常见问题,但我找不到其他人如何解决它的问题。

1 个答案:

答案 0 :(得分:1)

您可以简单process.title = process.env.PROCESS_TITLE,或使用依赖于package.json中名称的process-title之类的内容。

我认为这是人们可以想到的最简单的方法。 使用Docker,我不会在主机(ps)中查看单个进程,而是使用抽象docker为您提供(docker ps),如果您确实需要的话。

(一般来说,微服务会将事情提升一级,这样你就不必太担心低级别的戏剧,像k8s或者openhift这样的协调者负责过程监控等等)