Express服务器,数据库和集群

时间:2019-08-20 18:07:16

标签: node.js database express heroku

我试图弄清楚如何使用NodeJS在Heroku(以及可能在任何地方)上正确使用集群。

我的设置非常简单-Express API,Postres数据库(使用sequelize)和一些将在数据库上定期运行的作业。

我已经阅读了on Heroku's website上的指南,但是仍然不确定与数据库的连接。这是我的代码:

const cluster = require('cluster');
const throng = require('throng');
const Jobs = require('./jobs');
const DB = require('./db');
const app = require('./config/express');

const WORKERS = process.env.WEB_CONCURRENCY || 1;
const port = process.env.PORT;
const env = process.env.ENV;

async function start(id) {
  // Setup an express server
  app.listen(port, () => {
    const message = `Worker ${id}: Server started on port ${port} (${env})`;
    console.log(message);
  });
}

async function setup() {
  if (cluster.isMaster) {
    // I guess I just want one instance of the scheduler that will run
    // some code affective the database e.g. once a day
    await Jobs.setup();
  }
  // Connect to the database – should I do in inside the `start` method?
  await DB.setup();
  // Create multiple instances of the API using `throng`:
  const instance = throng({
    workers: WORKERS,
    lifetime: Infinity,
  }, start);
  return instance;
}

const instance = setup();

module.exports = instance;

我有几个问题:  1.快速侦听器设置正确吗? (我几乎可以肯定,因为在Heroku的指南中可以找到类似的实现方式)  2.我是否也应该在DB.setup中包括start方法?  3. Jobs.setup方法放置正确吗?我希望这段代码运行例如每天一次,它将影响数据库(例如进行一些统计)

非常感谢您的帮助!

0 个答案:

没有答案
相关问题