Azure 上的 Socket.IO 概述

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

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

简化的体系结构

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

完全托管的 Socket.IO 应用的典型体系结构屏幕截图。

与自行托管 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 适配器。 但是,使用此类适配器需要部署并管理一个额外的组件。 此方法还要求你编写额外的代码逻辑才能使一切正常进行。

自托管 Socket.IO 应用的典型体系结构示意图。

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

相同的编程模型

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