簡體   English   中英

我何時需要在Heroku中使用輔助進程

[英]When do I need to use worker processes in Heroku

我有一個Node.js應用,其中包含一小部分用戶,目前使用單個Web流程進行架構。 我正在考慮添加一個保存后觸發器,當將記錄添加到我的一個表中時將調用該觸發器。 當執行保存觸發器后,我想對外部API執行大量的IO操作。 IO操作的數量取決於記錄中數組列中的元素數量。 因此,在將每條記錄保存在此特定表中之后,我可能會執行大量異步操作。

我曾考慮過按照《 工人Dynos》,《背景工作》和《排隊》中的建議將這項工作移至背景工作。 根據經驗,將耗時超過500毫秒的任務移至后台作業。 但是,在使用RabbitMQ( 在Node中使用RabbitMQ的異步Web-Worker模型)研究完示例之后,我並不認為值得花時間進行所有設置。

因此,我的問題是:

  • 對於並發用戶數量有限的應用程序,可以在Web進程中保留長時間運行的功能嗎?
  • 如果我最終決定將這項工作發送到后台工作,似乎很難更改我的保存后觸發器。 我想念什么嗎?
  • 有沒有比實現消息隊列更容易做到這一點的方法?

對於並發用戶數量有限的應用程序,可以在Web進程中保留長時間運行的功能嗎?

這更是一個優先問題,而不是其他任何問題。

總的來說,我說不-不行...但這是基於構建在heroku工作程序中運行的Rabbitmq服務的經驗,並不認為這是一件困難的事情。

稍加實踐,您可能會發現這是更簡單的解決方案,正如我所擁有的(它允許使用更簡單的代碼,更強大的代碼,因為它使Web與后台處理器分離開來-允許每個人在不直接了解彼此的情況下運行)

如果我最終決定將這項工作發送到后台工作,似乎很難更改我的保存后觸發器。 我想念什么嗎?

你想念什么嗎? 並不是的

只要您以結構化和模塊化的方式編寫當前的Web流程代碼,將其移至后台流程通常並不重要

人們因不得不將代碼移至后台而產生的大多數恐慌來自將其代碼緊密耦合到HTTP請求/響應過程(我從個人經驗中知道,這可能會很痛苦)

有沒有比實現消息隊列更容易做到這一點的方法?

分布式計算和后台處理有很多選擇。 我個人喜歡RabbitMQ及其使用的消息傳遞模式。

我建議嘗試一下,看看它是否對您有用。

其他選項包括在其上具有pub / sub庫的redis,使用對另一台Web服務器的直接HTTP API調用,或僅在后台進程中使用計時器以給定的頻率檢查數據庫表並基於數據運行代碼它找到。

ps,如果您想深入研究帶節點的RMQ,可能會發現我的RabbitMQ For Developers課程感興趣: http : //rabbitmq4devs.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM