node.js的golang web应用程序复合体系结构



我目前正在构建一个web应用程序,该应用程序将使用node.js进行基本路由。应用程序的某些部分更需要处理器,我想用golang来处理这些部分。然而,我不确定在这两种语言之间安装和通信的最佳方式。我使用Amazon Elastic Beanstalk进行初始测试,因此任何细节都可以针对该平台。

从本质上讲,它可以归结为以下两个问题:

1) 如何在AmazonEC2上同时安装node.js和golang docker镜像?亚马逊有一个或另一个的指南,但不是两者都有。

2) 将处理器密集型任务从node.js卸载到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调用。(投放/张贴/获取)

最新更新