系统设计中的轮询
轮询允许客户端从服务器获取更新。你可以将其比作服务员查看你的菜品是否准备好。
主要有三种方法。
短轮询 (Short Polling)
客户端以固定的时间间隔请求更新。如果数据尚未准备好,服务器会返回一个空响应。客户端会重复这一循环,直到数据到达。这种方法会产生许多不必要的请求。
长轮询 (Long Polling)
客户端发送请求后,服务器会保持连接开启。只有当数据准备就绪时,服务器才会做出响应。一旦客户端收到响应,它会立即发送新的请求。这营造了一种接近实时的体验。与短轮询相比,它减少了空响应。
事件流 (Event Stream)
客户端和服务器建立一个单一的连接。该连接会一直保持开启,直到其中一方将其关闭。每当事件发生时,服务器都会将数据推送到客户端。这是真正的实时通信。
缺点是资源消耗。连接会占用特定的端口。在连接结束之前,该端口将无法用于其他任务。
你的选择取决于系统的需求以及你愿意接受的权衡。