node.js 中的二进制 RPC

Posted

技术标签:

【中文标题】node.js 中的二进制 RPC【英文标题】:Binary RPC in node.js 【发布时间】:2017-11-15 03:33:59 【问题描述】:

一般来说,假设您的服务器(在 node.js 环境中用 javascript 编写)正在从其他服务器提供的服务中组装对最终用户的响应,是否有任何合理的替代方法可以让它们都使用 JSON?

RPC 调用通常使用二进制的 XDR 或 ascii 的 JSON。对于这些情况,有一些方便的库可以为您处理所有无聊的套接字。

使用 RPC 的 Node.js 工具可用于 JSON 中的 RPC,但是否有任何简单的方法可以从 node.js 访问二进制格式的 RPC 调用,例如 XDR、ASN.1 PER 或 Avro Apache。或者做类似的事情?

我不是在问什么是最好的方法,或者可以做什么,因为只要付出足够的努力,任何事情都可以完成,而是问有哪些方法有标准可以避免重新发明***,以及图书馆可以完成尽可能多的工作尽可能。

【问题讨论】:

【参考方案1】:

avsc 实现了 Avro 的 RPC 规范,您可以使用它通过任何传输(例如 HTTP、TCP、WebSockets)公开“类型安全”服务。 quickstart guide 通过一个简单的示例来帮助您入门。 (免责声明:我写的。)

【讨论】:

你的 avro 是用 javascript 编写的,我假设它应该在 node.js 下运行 Apache 提供了 avro 以作为编译后的 C++、Java、Python 和 C# 运行。所以看起来像二进制通信的 Avro 服务可以在任何两个环境之间进行通信——而且 avro 可以序列化到内存,这应该使操作系统和编译器独立的数据散列成为可能。看起来像一个标准化的解决方案。因此,这似乎意味着 Avro 服务足以覆盖任何想要在任何环境中与任何人交谈的人。

以上是关于node.js 中的二进制 RPC的主要内容,如果未能解决你的问题,请参考以下文章

如何将二进制缓冲区解码为 node.js 中的图像?

如何从 Node.js 中的二进制字符串中解压缩数据?

node.js 的 mongoose 中的十进制/浮点数

node.js 的 mongoose 中的十进制/浮点数

node.js 中的十六进制编码 ECDSA 密钥

使用适用于 Node.js 的 AWS 开发工具包将二进制文件上传到 S3