gpt4 book ai didi

node.js - Autobahn VS Einaros - 使用 Node JS 的 Websockets

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:15 25 4
gpt4 key购买 nike

我需要编写一个 WebSocket 服务器,并且我正在通过阅读购买的一些书籍来学习 Node JS。该服务器适用于速度非常快的游戏,因此我需要尽快将小消息传输到客户端组。

有什么区别:

Autobahn | JS : http://autobahn.ws/js/

Einaros : https://github.com/einaros/ws

我听说 Autobahn 非常强大,能够在没有负载均衡器的情况下处理 20 万个客户端,因此我想知道是否有经验丰富的人可以告诉我选择一个或另一个库是否有任何优势。

最佳答案

功能上的区别是:Einaros 是一个 WebSocket 库,而 Autobahn 提供 WebSocket 实现(例如 AutobahnPython ),加上 WebSocket 之上的 WAMP。

WAMP为应用程序提供更高级别的通信(RPC + PubSub - 请参阅 WAMP 网站)。 AutobahnJS 是浏览器(和 NodeJS)的 WAMP 实现,位于 WebSocket 之上。

现在,假设您不关心 WAMP,因此只需要一个原始 WebSocket 服务器。然后,您可以主要根据非功能特征(例如协议(protocol)合规性、安全性和性能)将 AutobahnPython 与 Einaros 进行比较。

Autobahn 具有一流的协议(protocol)合规性。我敢说,因为Autobahn项目还提供了准行业标准的WebSocket testsuite - 被大多数项目使用 - 包括 Einaros。 Autobahn 的所有测试均 100% 严格通过。 Einaros 可能也是 - 我不知道。

性能:是的,单个基于 AutobahnPython 的 WebSocket 服务器(4GB RAM、2 个内核、PyPy、VirtualBox VM 中的 FreeBSD)可以处理 20 万个连接的客户端。为了给您更多的数据点:这里是 post在 RaspberryPi 上进行性能基准测试。

本文特别强调了最重要的 (IMO) 指标:95%/99% 分位数消息传递延迟。您不应该只关注平均延迟,因为可能存在很大的偏差和大量异常值。您想要的是一致低延迟。

实现一致的低延迟并非易事。例如。 NodeJS 或 PyPy 等语言/运行时的一个因素(JITted Python 实现)是垃圾收集器。每次 GC 运行时,它都会减慢完成工作的速度 - 可能会在消息传递中引入较大的延迟。我做了广泛的基准测试(未发布),这表明 PyPy 的增量 GC 在这方面非常。比 HotSpot (JVM) 和 NodeJS (Google V8) 更好。如果有疑问,并且由于我还没有发布数字,您不应该相信我,而应该衡量一下自己。

我强烈建议的一件事是:不要依赖平均延迟,测量分位数,绘制直方图。

披露:我是《Autobahn》的原作者,为 Tavendo 工作。

关于node.js - Autobahn VS Einaros - 使用 Node JS 的 Websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25165752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com