无论是消息系统,还是配置管理中心,甚至存储系统,你都要面临这样一个选择,push模型 or pull模型?是服务端主动给客户端推送数据,还是客户端去服务器拉数据,一张图表对比如下:
|
push模型 |
pull模型 |
描述 |
服务端主动发送数据给客户端 |
客户端主动从服务端拉取数据,通常客户端会定时拉取 |
实时性 |
较好,收到数据后可立即发送给客户端 |
一般,取决于pull的间隔时间 |
服务端状态 |
需要保存push状态,哪些客户端已经发送成功,哪些发送失败 |
服务端无状态 |
客户端状态 |
无需额外保存状态 |
需保存当前拉取的信息的状态,以便在故障或者重启的时候恢复 |
状态保存 |
集中式,集中在服务端 |
分布式,分散在各个客户端 |
负载均衡 |
服务端统一处理和控制 |
客户端之间做分配,需要协调机制,如使用zookeeper |
其他 |
服务端需要做流量控制,无法最大化客户端的处理能力。
其次,在客户端故障情况下,无效的push对服务端有一定负载。
|
客户端的请求可能很多无效或者没有数据可供传输,浪费带宽和服务器处理能力 |
缺点方案 |
服务器端的状态存储是个难点,可以将这些状态转移到DB或者key-value存储,来减轻server压力。 |
针对实时性的问题,可以将push加入进来,push小数据的通知信息,让客户端再来主动pull。
针对无效请求的问题,可以设置逐渐延长间隔时间的策略,以及合理设计协议尽量缩小请求数据包来节省带宽。
|
在面对大量甚至海量客户端的时候,使用push模型,保存大量的状态信息是个沉重的负担,加上复制N份数据分发的压力,也会使得实时性这唯一的优点也被放小。使用pull模型,通过将客户端状态保存在客户端,大大减轻了服务器端压力,通过客户端自身做流量控制也更容易,更能发挥客户端的处理能力,但是需要面对如何在这些客户端之间做协调的难题。
来自:淘宝JAVA中间件团队博客
这里想说明的是, hadoop中,由于tt规模较大,为了减轻 JT的负担,采用了Pull的策略,显然是符合实际情况的。
分享到:
相关推荐
Windows 7 or 10 eclipse hadoop2.7.1 配置需要文件和工具
NULL 博文链接:https://wmwork2010.iteye.com/blog/632016
英文的,讲解hadoop1.x与hadoop2.x配置异同
在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path追加%HADOOP_HOME%\bin,有可能出现如下错误: org.apache.hadoop.io.nativeio.NativeIO$Windows....
手把手教你配置高效的Hadoop集群,充分利用Hadoop平台的优势。2. 为Hadoop生态系统实现强健的端到端的安全保障。
基于Hadoop的云计算平台安全机制研究.pdf
《Hadoop集群程序设计与开发(数据科学与大数据技术专业系列规划教材)》系统地介绍了基于Hadoop的大数据处理和系统开发相关技术,包括初识Hadoop、Hadoop基础知识、Hadoop开发环境配置与搭建、Hadoop分布式文件系统、...
在window连接虚拟机Hadoop集群时遇到如下问题: Unable to load native-hadoop library for your platform… using builtin-Java classes where applicable 即缺少 winutils.exe 与 hadoop.dll
Map-Reduce原理体系架构和工作机制,eclipse与Hadoop集群连接
rpc架构与hadoop分享
Java虚拟机与Hadoop的介绍,附带一些源码分析
第五天 hadoop2.x中HA机制的原理和全分布式集群安装部署及维护 01-zookeeper.avi 02-zookeeper2.avi 03-NN高可用方案的要点1.avi 04-hadoop-HA机制的配置文件.avi 05-hadoop分布式集群HA模式部署.avi 06-hdfs...
本书是hadoop权威参考,程序员可从中探索如何分析海量数据集,管理员可以从中了解如何安装与运行hadoop集群。 什么是谷歌帝国的基石?mapreduce算法是也!apache hadoop架构作为mapreduce算法的一种开源应用,是...
《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf《Hadoop大数据开发实战》教学教案—01初识Hadoop.pdf...
Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo 的工程师 Doug Cutting 和 Mike Cafarella Hadoop 是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由 Yahoo...
Hadoop 集群配置详解 Hadoop_Hadoop集群(第1期)_CentOS安装配置 Hadoop_Hadoop集群(第2期)_机器信息分布表 Hadoop_Hadoop集群(第4期)_SecureCRT使用 Hadoop_Hadoop集群(第5期)_Hadoop安装配置 Hadoop_Hadoop...
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不...
hadoop_tutorial hadoop入门经典 Hadoop 是一个能够对大量数据进行分布式处理的软件框架。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。...
myEclipse10.0与hadoop集群远程连接
hadoop的dll文件 hadoop.zip