最近從數倉跑定時任務拉取資料時遇到一個問題,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
本文作者:
黑馬大前端 崔天澤