为了账号安全,请及时绑定邮箱和手机立即绑定

用于 Web 应用程序的 node.js golang 复合架构

用于 Web 应用程序的 node.js golang 复合架构

Go
慕雪6442864 2021-10-04 15:45:00
我目前正在构建一个将使用 node.js 进行基本路由的 Web 应用程序。应用程序的某些部分是处理器密集型的,我想对这些部分使用 golang。但是,我不确定在两种语言之间安装和通信的最佳方式。我使用 Amazon Elastic Beanstalk 进行初始测试,因此任何细节都可以针对该平台。本质上归结为以下两个问题:1) 如何在 Amazon EC2 上同时安装 node.js 和 golang docker 镜像?亚马逊有其中之一的指南,但不是两者都有。2) 将处理器密集型任务从 node.js 卸载到 golang 代码库的最佳方法是什么(我可以对 RPC 进行成像,或者只是在某个本地主机端口上运行 golang,但我对这种类型的东西还不熟悉)?golang 任务可能是诸如严重的数字运算或复杂的图形搜索之类的事情。感谢您的任何指导。
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

  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 调用。(放置/发布/获取)


查看完整回答
反对 回复 2021-10-04
  • 1 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信