数据交互的两种模式对比-push和pull

本文深入探讨了数据交互的两种主要模式:push模式和服务端主动推送消息的优点及可能导致的消息堆积问题;pull模式及其避免消息堆积的同时面临的延迟和无效请求挑战。此外,还详细解释了轮询和长轮询的具体实现方式及其优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据交互模式

push模式

服务端主动给客户端推消息的。
优点:消息及时到达。
缺点:无法感知客户端的消费能力,可能造成客户端消息堆积。

pull模式

客户端主动从服务端拉取消息。
优点:客户端不存在消息堆积的情况。
缺点:消息处理不及时,可能存在大量无效请求,客户端需要考虑拉取频率逻辑。

polling、long polling

轮询和长轮询是pull模式的两种实现方式。
**polling:**客户端定时从服务端拉取消息,无论是否有消息,都立即返回。因此存在大量的无效请求。
**long polling:**相对轮询,客户端先发送请求到服务端拉取消息,如果没有消息,服务端会hold住链接一段时间,直到有消息返回或者链接超时。

为什么长轮询不一直等待服务端有消息就返回,而是要设置链接超时时间

  1. 主要是考虑到万一服务端宕机了,客户端是不知道的。虽然TCP协议有保活计时器,但是默认设置下需要两个小时的时间才能检测到服务端宕机的情况,时间太长了。

保活计时器
建立TCP连接的一方如果启用了keepalive,会开启TCP保活计时器,定时对”沉默“已久的链接发送探测报文,检测对方是否存活。keepalive默认是关闭的。因为开启状态下可能会关闭正常的TCP连接。

HTTP长连接和TCP长连接区别

TCP长连接: 目的是保证TCP连接的健康。通过保活计时器,不定期发送心跳给另一方,如果多次收到RST响应,会断开本次TCP连接。

HTTP长连接: 目的是复用连接,在一次连接中发送多次请求,减少建立连接和断开连接时三次握手和四次挥手的性能消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值