Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >系统间数据的 “推送”(Push)和 “拉取”(Pull)

系统间数据的 “推送”(Push)和 “拉取”(Pull)

原创
作者头像
软件书桌
发布于 2024-07-03 05:28:59
发布于 2024-07-03 05:28:59
9040
举报

数据的流动是系统设计的一个重要考虑因素,数据的流动发生在客户单与服务端之间。

客户端系统:需要获取数据的一方。

服务端系统:数据的提供方。

客户端从服务端获取数据有两种方式,一种是客户端从服务端拉取数据,另一种是服务端将数据推送给客户端。

这两种方式有各自的特点和适用场景。

Pull(拉取)

  1. 实时性
    1. 通常都是定时拉取数据的,这个定时的间隔时间就是实时性的偏差因素之一。
    2. 另外,当服务端数据量大了之后,拉取一次全量也比较耗时,这也是实时性滞后的影响因素之一。
  2. 稳定性
    1. 普通的系统一般也不会做限流,只有服务端发现流量太大导致其稳定性出现问题时才可能采取一些限流的措施。
    2. 当然如果服务端做的不好,客户端直接把服务端拉爆了,客户端就需要自己做好失败逻辑的处理了。
  3. 复杂度
    1. 拉取这种方式比较简单,有查询接口就可以拉取了。
    2. 普通的系统一般也不会做限流,所以想拉就拉,就是平时开发一个查询接口的成本。
  4. 适用场景
    1. 实现性不高的小数据量获取场景。

Push(推送)

  1. 实时性
    1. 服务端数据有变化,第一时间通知到客户端,时间间隔基本可以忽略。
    2. 当然,服务端也可以选择不是一有变化就推送数据,而是积攒了一批数据再推,这样实时性也就降低了。
  2. 稳定性
    1. 服务端系统的性能开销更加可控些,推送的策略和频率可以由自身控制,甚至根据系统负载动态调整。
    2. 服务端如果是重要的核心系统,通过这种自主可控的推送方式,可以更好的保护自己。
  3. 复杂度
    1. 推送可以通过 Webhook 或者 WebSocket 方式实现。
    2. Webhook 需要客户端向服务端注册回调地址,如果回调失败实现需要重试,这个也是需要考虑的一种情况。
    3. WebSocket 则需要服务端提供构建 WebSocket 的功能,客户端需要定时检查维护 WebSocket 是否异常。
  4. 适用场景
    1. 数据同步实时性要求高。
    2. 数据量较大时,通增量同步取代全量同步的思路。
    3. 服务端系统的稳定性需要重点保障的场景。

总结:

“拉取” 就是将主动权控制在客户端手里。

“推送” 就是将主动权控制在服务端手里。

通常系统的演化方向是从简单到复杂,所以一般会选择 “先拉后推” 的设计演进。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Kafka专栏 02】一场关于数据流动性的权力游戏:Kafka为何青睐Pull拉取而非Push推送模式?
Kafka,作为一个高性能的分布式消息队列系统,在处理大数据流和实时数据管道中扮演着至关重要的角色。在设计和实现过程中,Kafka面临了一个关键的选择:采用Pull模式还是Push模式进行数据传输。经过深思熟虑,Kafka最终选择了Pull模式,这一决策背后蕴含着多个重要的原因和考量。
夏之以寒
2024/06/12
2670
WebSocket订单推送稳定性优化方案
微信云支付Android 智能POS使用WebSocket实现了用户订单的实时推送。即,顾客在扫描了门店的付款码,客户端会随即进行语音播报和打印等动作。
cyhone
2019/08/16
4.3K0
vivo手机上的系统级消息推送平台的架构设计实践
本文内容来自vivo互联网服务器团队李青鑫在“2021 vivo开发者大会”现场的演讲内容整理而成(现场演讲稿可从本文末附件中下载)。
JackJiang
2022/08/09
1.5K0
vivo手机上的系统级消息推送平台的架构设计实践
vivo推送平台架构演进
有的小伙伴可能了解过,有的可能是第一次接触到。无论您是哪一种情况都希望通过今天的分享,能够让您对我们有新的了解。接下来我将从产品和技术两个不同视角,给大家介绍vivo推送平台。
2020labs小助手
2022/01/17
1.4K0
vivo推送平台架构演进
消息推送技术干货:美团实时消息推送服务的技术演进之路
本文由美团技术团队分享,作者“健午、佳猛、陆凯、冯江”,原题“美团终端消息投递服务Pike的演进之路”,有修订。
JackJiang
2021/08/11
2.6K0
如何设计一个 70w 在线人数的弹幕系统 ?
来源:www.cyningsun.com/03-31-2019/live-streaming-danmaku.html
一行Java
2023/02/23
7030
如何设计一个 70w 在线人数的弹幕系统 ?
websocket消息推送设计
公司内目前有几个项目都有消息推送的功能,例如:某个业务操作之后需要推送消息给前端页面,让用户实时感知。
lyb-geek
2022/11/18
4.6K0
websocket消息推送设计
《基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统》
https://xie.infoq.cn/article/4061081a5ce66137a8c021994
后台技术汇
2022/05/28
2K0
《基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统》
浅谈6种流行的API架构风格
API在现代软件开发中扮演着重要的角色,它们是不同应用程序之间的桥梁。编写业务API是日常开发工作中最常见的一部分,选择合适的API框架对项目的成功起到了至关重要的作用。本篇文章将浅谈一下当前6种流行的API架构风格的优点、缺点以及适用场景。
追逐时光者
2024/01/12
5920
浅谈6种流行的API架构风格
[MCP学习笔记]MCP 动态配置中心:实时推送与版本管理详解
在现代微服务架构中,动态配置中心已成为不可或缺的基础设施组件。它能够帮助开发团队在不重启服务的情况下实时更新配置,同时对配置的变更历史进行版本管理,方便回溯与排查问题。
数字扫地僧
2025/04/23
530
[MCP学习笔记]MCP 动态配置中心:实时推送与版本管理详解
全民AI时代,大模型客户端和服务端的实时通信到底用什么协议?
DeepSeek 加速了模型平权,随之而来的是大模型推理需求的激增,大模型性能提升的主战场从训练转移到了推理。推理并发的提升,将催生计算、存储、网络、中间件、数据库等领域新的工程化需求。
JackJiang
2025/03/27
1550
全民AI时代,大模型客户端和服务端的实时通信到底用什么协议?
Push or Pull?
采用Pull模型还是Push模型是很多中间件都会面临的一个问题。消息中间件、配置管理中心等都会需要考虑Client和Server之间的交互采用哪种模型:
林一
2018/07/24
2.9K0
Push or Pull?
深入探讨:度量数据的采集方法—拉取与推送
在系统监控和可观测性领域,关于使用拉取(Pull)方法还是推送(Push)方法进行度量数据采集的讨论一直存在,且没有一个明确的答案。这两种方法各有其特点、优势和不足,而最佳选择往往取决于具体的使用场景、系统架构和操作偏好。本文将深入探讨这两种方法。
coderidea
2024/01/02
3590
深入探讨:度量数据的采集方法—拉取与推送
从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践
本文由马蜂窝技术团队电商交易基础平台研发工程师"Anti Walker"原创分享。
JackJiang
2020/02/25
1.4K0
从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践
干货 | 携程多语言平台-Shark系统的高可用演进之路
Fenlon,携程资深后端开发工程师,负责国际业务多语言中台部分客户端和服务端研发。
携程技术
2020/12/02
1.3K0
Python 如何爬取实时变化的 WebSocket 数据
作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据、股市实时数据或币圈实时变化的数据。如下图:
崔庆才
2019/05/06
2.1K0
Python 如何爬取实时变化的 WebSocket 数据
018:websocket实时动态数据爬取
Web 领域中,用于实现数据’实时’更新的手段有轮询和 WebSocket 这两种。
李玺
2021/11/22
1.8K0
018:websocket实时动态数据爬取
B站千万级长连接实时消息系统的架构设计与实践
用户通过发送弹幕、送礼等,可以实时在直播画面上展现自己的想法、评论和互动内容,从而丰富了用户观看体验。在这个过程中,实时向终端推送互动信息,就需要用到长连接。
JackJiang
2024/05/16
4270
B站千万级长连接实时消息系统的架构设计与实践
基于实践:一套百万消息量小规模IM系统技术要点总结
本文由公众号“后台技术汇”分享,原题“基于实践,设计一个百万级别的高可用 & 高可靠的 IM 消息系统”,原文链接在文末。由于原文存在较多错误和不准确内容,有大量修订和改动。
JackJiang
2021/11/27
2.2K0
基于实践:一套百万消息量小规模IM系统技术要点总结
Node 服务端系统架构设计基本思想及常见场景解决方案
本文旨在给前端同学在进行nodejs服务端项目的架构设计时提供一些基本思路及常见场景的解决方案。开发node服务本质上属于服务端开发的范畴,但由于今时今日nodejs开发各种应用的普及、前端工具链向服务端的延伸等,对前端同学全栈开发能力的要求也日渐提高,故写下此文。由于服务端开发本身是一个非常庞大的话题,本文会结合一些浅显易懂的实例来进行快速覆盖。同时在文章最后,我会以我在公司最近对前端统一打包服务的分布式改造及多节点部署为例子,来结合一些实践进行描述
winty
2021/07/01
8600
Node 服务端系统架构设计基本思想及常见场景解决方案
推荐阅读
相关推荐
【Kafka专栏 02】一场关于数据流动性的权力游戏:Kafka为何青睐Pull拉取而非Push推送模式?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档