最近从数仓跑定时任务拉取数据时遇到一个问题,pm2以cluster模式运行,高并发访问Hive数据表会直接被拒绝连接。
那么怎么解决这个问题呢?有两种方案:
一种是再起一个单进程独立执行定时任务,
另一种是cluster模式仅执行一次定时任务。
在PM2的文档上有这么一段话,这不恰好能解决我们的问题吗?
而且特别举例说明了定时任务的应用场景。
Cluster environment variablelink
The NODE_APP_INSTANCE
environment variable is used to make a difference between cluster.
For example, if you want to run a cronjob only on one cluster, you can check if process.env.NODE_APP_INSTANCE === 0
.
代码如下,是不是很简单呢?
if (process.env.NODE_APP_INSTANCE === '0') { // 定时任务}复制代码
本文参考:
PM2文档 https://pm2.io/doc/en/runtime/guide/load-balancing/#cluster-environment-variable
本文作者:
黑马大前端 崔天泽