2

我需要通过 tcp 在 nodejs 和 erlang 进程之间传递数据。Erlang 进程是一种 api 服务器,它从 nodejs 进程接收数据并进行一些处理。

我想使用 json 作为数据结构,并使用 ejson 来编码/解码消息。但是,在进行基准测试时,我发现解码非常慢。大约 20k 信息/秒。

有没有更好或更快的方法通过 tcp 将数据发送到 erlang。有没有办法让我可以在erlang中跳过这个解码过程。

目前数据属于这种类型:

{ “事件”:“某事件”,“频道”:“某频道”,}

erlang会根据事件和通道做一些处理。

4

4 回答 4

0

您应该查看msgpack。它体积小、速度快,并且具有为多种语言(包括 erlang 和 javascript)构建的库。

我已经在多个项目中使用过它,并且对它的速度和易用性感到满意。

于 2013-10-14T22:25:16.440 回答
0

您可以尝试其他用于 erlang 的 json 库,或尝试使用bert 进行序列化

于 2013-06-07T14:25:46.223 回答
0

我会使用节俭。在 erlang 中实现 thrift 服务器非常简单。从示例看来,用 javascript 实现客户端也很简单。

于 2013-06-09T12:57:44.263 回答
0

也许协议缓冲区?

或者只发送 2 行终止的字符串并使用普通的旧 tcp 套接字怎么样。您可以使用 inets setopts 将数据包类型设置为行。然后,如果您将套接字激活一次,则拥有该套接字的进程将一一收到消息。或者您可以使用被动模式,在其中显式调用recv,仍然会逐行为您提供数据(小心比缓冲区长的行)。

于 2013-06-07T14:28:28.640 回答