消息系统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是一种高吞吐量的分布式 ...
随机推荐
- HDU 2121 Ice_cream’s world II 最小树形图
这个题就是需要求整个有向带权图的最小树形图,没有指定根,那就需要加一个虚根 这个虚根到每个点的权值是总权值+1,然后就可以求了,如果求出来的权值大于等于二倍的总权值,就无解 有解的情况,还需要输出最根 ...
- JqueryTips小实验,浏览器滚动条不限制
最近做公司的项目有些地方可能需要一些小提示,于是自己建立项目研究tips.在此之前看到过一些别人写的JqueryTips,于是借鉴了一些别人的经验在此基础上我做出了一些改进. 有的同学可能使用过其他一 ...
- 打印出从1到最大的n位十进制数
首先这一题会溢出,要考虑的大数问题.所以不能用简单的是int类型数来表示(32位无符号int 范围是0x00000000···0xFFFFFFFF),下面主要是非递归的实现代码,自己做了注释方便以后回 ...
- 【UR #12】实验室外的攻防战(BIT)
[题目链接] http://uoj.ac/problem/180 [题意] 给定两个1..n的排列AB,只有当ai<ai+1才能交换ai和ai+1,问是否能够将A转换为B. [思路] 令a[i] ...
- javascript活动对象的理解——伪单例模式
在自己研究javascript各种设计模式的过程中,偶然写出的一段代码让自己理解的更深刻了,之所以称之为伪单例模式,是因为这段代码造成的结果很想单例模式,但是实际上是活动对象捣乱所造成的误会. 代码很 ...
- 取得Resultset的记录条数
public Boolean exists(String sql) { try { stm = conn.createStatement( java.sql.ResultSet.TYPE_SCROLL ...
- 基于adt-bundle的Android开发环境搭建
web与移动是当今的热门,怎么说都得会一点,完全不懂是不行的. 一直想玩一下移动开发,穷屌丝暂时没有iPhone和Mac,所以先拿Android开刀. 之前也有想过玩一下Android,但是都被各种博 ...
- Unity3D为FirstPersonController添加跑步与下蹲动作
using UnityEngine; using System.Collections; public class MyController : MonoBehaviour { ; ; ; priva ...
- A Tour of Go Concurrency
The next section covers Go's concurrency primitives. A Tour of Go Goroutines A goroutine is a lightw ...
- [iOS基础控件 - 6.6] 展示团购数据 自定义TableViewCell
A.需求 1.头部广告 2.自定义cell:含有图片.名称.购买数量.价格 3.使用xib设计自定义cell,自定义cell继承自UITableViewCell 4.尾部“加载更多按钮”,以及其被点击 ...