消息系统Flume与Kafka的区别
首先Flume和Kafka都是消息系统,但是它俩也有着很多不同的地方,Flume更趋向于消息采集系统,而Kafka更趋向于消息缓存系统。
【一】设计上的不同
Flume是消息采集系统,它主要解决问题是消息的多元采集。因此Flume在实现上提供了多达十几种的Flume Source,以供用户根据不同的应用场景来采集数据。也正因为Flume提供了这些采集消息的Flume Source,使得用户采集消息变得很简单,用户往往只需要对原始数据稍作处理然后将数据发送给Flume Source。在Flume的Thrift Source中,Flume已经实现了Thrift Source服务器端,用户只需要编写客户端将数据发送给Flume。
Kafka是消息缓存系统,主要是用来缓存数据,缓存时间可以由配置文件设定,在缓存时间内,缓存的数据不论是否被消费,都不会删除,超过缓存时间Kafka才会把数据删除以释放空间。这一点与Flume不同,Flume的数据一旦确认被Sink接收就会被删除。
【二】数据处理上的不同
Flume接收到数据就会主动把数据推送(push)到Sink,Sink确认收到后会将数据从Channel中删除,因此Flume主要是快速的采集数据,数据对它来说只是过客,Flume注重的是speed。
Kafka收到数据后会先把数据缓存起来,无论下游有没有人消费数据,数据暂时缓存在服务器集群中,注重的是store。
【三】push vs pull
Flume是实实在在包含Source、Channel、Sink三个组件,Source用来接收数据,Channel用来缓存数据,Sink用来发送数据,而且是主动push给下游,这就导致下游接收方只能是一个,因为如果下游有多个接收者,接收的速率不同就会导致接收速度低的接收者接收不到数据的情况(Channel会在Sink确认后删除数据)。如果想把数据发送给多个接收者,那就只能让Source把数据写到多个Channel,再由Channel经各自的Sink发送给不同的接收者。
Kafka其实只包含有broker cluster,用来缓存数据,他的Producer和Consumer都需要用户自己实现;broker cluster更像是一个提供存储数据功能的文件系统,用户自己实现往里面读写数据,broker cluster不需要关心用户怎么实现的,因此Kafka对Producer和Consumer的依赖非常小,专心做缓存。当Consumer需要订阅某个topic的数据时候,Consumer主动去取数据,broker cluster被动的提供数据,这样就可以同时支持多个Consumer订阅数据。
【四】Kafka的主题和划分以及复制因子
Kafka在接收数据的时候,Producer可以指定一个主题,Kafka按照主题来分类数据,Consumer订阅数据的时就可以按需订阅某一类数据。
Kafka的划分是在主题上的进一步细分,例如可以把web应用中不用用户的数据按照不同的划分来分别存储,同一个划分内的数据存储的时候拥有唯一的连续递增的编号,这个编号又称作偏移量,偏移量在Consumer中保存,用来依次读取数据,当然也可改变编号重复读取或者跳读。
复制因子是Kafka集群提高容错性的一个措施,一个划分内的数据会根据复制因子个数把数据复制到不同broker上,本broker负责将该划分内的数据读写请求,称为主节点,其他从节点负责跟进复制数据。主题的复制因子定为多少个应该根据自己的broker cluster机器个数合理确定。
Kafka能够保证一个划分内的数据在被Consumer消费的时候是有序的,而不能保证不同划分内的数据是有序的,因此如果想所有数据有序那就只能有一个划分。
转载请注明原文出处 http://www.cnblogs.com/vincent-vg/p/5826786.html,谢谢
消息系统Flume与Kafka的区别的更多相关文章
- Flume 和 kafka的区别和对比
定义: Flume:是Cloudera提供的一个分布式的海量日志采集.聚合和传输的系统: Kafka:是一种高吞吐量的分布式发布订阅消息系统: 各特点: 场景: Flume主要是和HDFS\HBase ...
- 新闻实时分析系统-Flume+HBase+Kafka集成与开发
1.下载Flume源码并导入Idea开发工具 1)将apache-flume-1.7.0-src.tar.gz源码下载到本地解压 2)通过idea导入flume源码 打开idea开发工具,选择File ...
- 高吞吐量的分布式发布订阅消息系统Kafka-- 管理工具 Kafka Manager
一.概述 Kafka在雅虎内部被很多团队使用,媒体团队用它做实时分析流水线,可以处理高达20Gbps(压缩数据)的峰值带宽. 为了简化开发者和服务工程师维护Kafka集群的工作,构建了一个叫做Kafk ...
- 分布式发布订阅消息系统 Kafka 架构设计[转]
分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开 ...
- 分布式公布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多 ...
- Kafka是分布式发布-订阅消息系统
Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...
- 分布式消息系统:Kafka
Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...
- 最牛分布式消息系统:Kafka
Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...
- 发布-订阅消息系统Kafka简介
转载请注明出处:http://www.cnblogs.com/BYRans/ Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式 ...
随机推荐
- 咨询内容: TF卡一定要重新买吗,为什么我的放进去读不了呢
京东回复:您好!先科(SAST) SA-992 便携数码音响 (兰色)不用重新买,但是需要您采用FAT分区重新格式化,感谢您对京东的支持!祝您购物愉快!
- java语言实现简单接口工具--粗简版
2016注定是变化的一年,忙碌.网红.项目融资失败,现在有点时间整整帖子~~ 目标: 提高工作效率与质量,能支持平台全量接口回归测试与迭代测试也要满足单一接口联调测试. 使用人员: 测试,开发 工具包 ...
- unity3d切换场景时,背景音乐保持播放
首先创建两个场景: One,Two 再创建一个空游戏对象: GameObject,并添加AudioSource组件,把要播放的音乐拖放进去 给GameObject添加脚本AlwayAudio,代码如下 ...
- Base-Android快速开发框架(二)--数据存储之SharedPreferences
对于App开发者,抽象来说,其实就是将数据以各种各样的方式展示在用户面前以及采集用户的数据.采集用户的数据包括用户的输入.触摸.传感器等,展示的数据通过网络来源于各业务系统,以及用户的 输入数据.在这 ...
- 【整理】C++虚函数及其继承、虚继承类大小
参考文章: http://blog.chinaunix.net/uid-25132162-id-1564955.html http://blog.csdn.net/haoel/article/deta ...
- 【转载】C/C++语言void及void指针深层探索
C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述vo ...
- Mysql的函数使用方法
今天有点临时需求要计算一张表的结果,不想写代码,想到了mysql的自定义函数.碰到了很多问题,为了方便一下使用,在此记录一下. 需求:一张表中,有比分,需要查询出比赛id和比赛结果. 分析: ...
- POJ1149 PIGS
想了好久啊...(#-.-) 开始想到m*n个点的构图,明显超时,于是考虑压缩节点个数 我们发现每个猪圈最后被有且只有一个人调整,于是想到对于一个人,连接他能调整的每个猪圈的上一个控制人.(不懂可以开 ...
- python app progs
- SQL2008--行号的得到
WITH DataTable AS( select *, ROW_NUMBER() OVER(order by ID) as Rowno from (select * from UserInfo) a ...