Azure 上的 Socket.IO 概述
Socket.IO 是一个广泛流行的开源库,用于在客户端和服务器之间实时传递消息。 管理客户端和服务器之间的有状态持久连接经常让 Socket.IO 用户感到沮丧。 当多个 Socket.IO 实例分散在服务器上时,问题将变得更加严重。
Azure 为 Socket.IO 提供完全托管的云解决方案。 此支持消除了开发人员部署、托管和协调 Socket.IO 实例的工作负担。 因此,开发团队可以专注于使用 Socket.IO 库中他们熟悉的 API 来构建实时体验。
简化的体系结构
此功能消除了在横向扩展 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 适配器。 但是,使用此类适配器需要部署并管理一个额外的组件。 此方法还要求你编写额外的代码逻辑才能使一切正常进行。
使用 Azure 上的 Socket.IO,无需处理缩放问题,且无需实现与使用适配器相关的代码逻辑。
相同的编程模型
若要将自托管 Socket.IO 应用迁移到 Azure,只需添加几行代码即可。 无需更改应用程序代码的其余部分。 换言之,编程模型保持不变,并且可以降低实时应用的管理复杂性。