簡體   English   中英

用於Web應用程序的node.js golang復合體系結構

[英]node.js golang composite architecture for web application

我目前正在設計一個將使用node.js進行基本路由的Web應用程序。 該應用程序的某些部分需要更多的處理器,我想在這些部分使用golang。 但是,我不確定這兩種語言之間進行安裝和通信的最佳方法。 我正在使用Amazon Elastic Beanstalk進行初始測試,因此可以針對該平台指定任何具體信息。

從本質上講,它可以歸結為以下兩個問題:

1)如何在Amazon EC2上同時安裝node.js和golang docker映像? 亞馬遜有一個或另一個指南,但沒有兩個。

2)將處理器密集型任務從node.js卸載到golang代碼庫的最佳方法是什么(我可以對RPC進行映像,或者僅在某些localhost端口上運行golang,但是我對這種事情不熟悉)? golang任務可能是諸如嚴重的數字運算或復雜的圖形搜索之類的事情。

感謝您的指導。

  1. Go部署很簡單。 只需在Linux機器上構建它(或使用gox)並部署二進制文件即可。 (您無需在服務器上安裝go即可運行go程序)
  2. Go和Node.js之間有很多通信選項。 這里有一些:

    1. 如果您正在進行的工作需要很長時間,那么讓用戶等待響應可能是不合適的。 對於后台任務,您可以使用隊列(例如Redis的rpoplpush或真實的隊列,例如Kafka或RabbitMQ,或者因為您使用的是Amazon: SQS )。 將您的作業作為JSON對象推送到隊列中,然后編寫一個Go程序,該程序從隊列中拉出,進行處理,然后將最終結果寫入某個位置。
    2. Go有一個jsonrpc庫 您可以通過TCP進行通信,在Node中序列化一個請求,在Go中讀取它,然后在Node中反序列化響應。 這是jsonrpc 1.0協議,對於TCP,您所要做的就是添加一些消息框架(以長度作為json字符串的前綴)或僅用換行符分隔每個請求/響應。
    3. 在Go中編寫標准的HTTP服務,然后從NodeJS進行HTTP調用。 (PUT / POST / GET)

暫無
暫無

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

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