Azure 上的 Socket.IO 概述

注意

Azure 上 Socket.IO 的支持处于公共预览状态。 欢迎任何反馈和建议。 请通过 awps@microsoft.com 与服务团队联系。

Socket.IO 是一个广泛流行的开源库,用于在客户端和服务器之间实时传递消息。 管理客户端和服务器之间的有状态持久连接经常让 Socket.IO 用户感到沮丧。 当多个 Socket.IO 实例分散在服务器上时,问题将变得更加严重。

Azure 为 Socket.IO 提供完全托管的云解决方案。 此支持消除了开发人员部署、托管和协调 Socket.IO 实例的工作负担。 因此,开发团队可以专注于使用 Socket.IO 库中他们熟悉的 API 来构建实时体验。

简化的体系结构

此功能消除了在横向扩展 Socket.IO 应用时对“适配器”服务器组件的需求,从而使开发团队能够从简化的体系结构中获益。

Screenshot of a typical architecture of a fully managed Socket.IO app.

与自行托管 Socket.IO 应用相比的优势

下表显示了使用 Azure 的完全托管解决方案的好处。

自行托管 Socket.IO 应用 在 Azure 上使用 Socket.IO
部署 由客户管理 Azure 托管
承载 客户需要预配足够的服务器资源来提供和维护持久连接 Azure 托管
缩放连接 使用一个称为适配器的服务器端组件来提供客户管理的连接 通过 10 万多个现成的客户端连接来提供 Azure 管理的连接
运行时间保证 由客户管理 Azure 管理的连接的运行时间超过 99.9%
企业级安全性 由客户管理 Azure 托管
票证支持系统 不适用 Azure 托管

当你自行托管 Socket.IO 应用时,客户端将直接与服务器建立 WebSocket 或长轮询连接。 维护此类有状态连接会给 Socket.IO 服务器带来沉重的负担。 这种负担限制了并发连接数量并增加了消息传递延迟。

应对并发和延迟挑战的一种常见方法是横向扩展为多个 Socket.IO 服务器。 横向扩展需要一个称为适配器的服务器端组件,例如 Socket.IO 库提供的 Redis 适配器。 但是,使用此类适配器需要部署并管理一个额外的组件。 此方法还要求你编写额外的代码逻辑才能使一切正常进行。

Diagram of a typical architecture of a self-hosted Socket.IO app.

使用 Azure 上的 Socket.IO,无需处理缩放问题,且无需实现与使用适配器相关的代码逻辑。

相同的编程模型

若要将自托管 Socket.IO 应用迁移到 Azure,只需添加几行代码即可。 无需更改应用程序代码的其余部分。 换言之,编程模型保持不变,并且可以降低实时应用的管理复杂性。