系统设计中的轮询

轮询允许客户端从服务器获取更新。你可以将其比作服务员查看你的菜品是否准备好。

主要有三种方法。

短轮询 (Short Polling)

客户端以固定的时间间隔请求更新。如果数据尚未准备好,服务器会返回一个空响应。客户端会重复这一循环,直到数据到达。这种方法会产生许多不必要的请求。

长轮询 (Long Polling)

客户端发送请求后,服务器会保持连接开启。只有当数据准备就绪时,服务器才会做出响应。一旦客户端收到响应,它会立即发送新的请求。这营造了一种接近实时的体验。与短轮询相比,它减少了空响应。

事件流 (Event Stream)

客户端和服务器建立一个单一的连接。该连接会一直保持开启,直到其中一方将其关闭。每当事件发生时,服务器都会将数据推送到客户端。这是真正的实时通信。

缺点是资源消耗。连接会占用特定的端口。在连接结束之前,该端口将无法用于其他任务。

你的选择取决于系统的需求以及你愿意接受的权衡。

来源:https://dev.to/cibani_joe/polling-in-system-design-ph6