Apache Kafka目标是统一离线和在线处理,与Flume和Scribe相比较,Kafka在处理活动流数据方面更具优势。但是从架构的视野来看,Kafka与传统的消息系统(例如ActiveMQ或RabbitMQ)更相似一些。

注:Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS、分布式文件系统等),以便于进行集中统计分析处理。它为日志的“分布式收集、统一处理”提供了一个可扩展的、高容错的方案。当中央存储系统的网络或者机器出现故障时,Scribe会将日志转存到本地或者另一个位置,当中央存储系统恢复后,Scribe会将转存的日志重新传输给中央存储系统。Scribe通常与Hadoop结合使用。Scribe用于向HDFS中push日志,而Hadoop通过MapReduce作业进行定期处理。

注:Flume最早是Cloudera提供的高可用、高可靠、分布式的海量日志采集、聚合和传输的日志收集系统,目前归属于Apache,是Apache基金会下的一个孵化项目。Flume支持在日志系统中定制各类数据的发送方,用于收集数据;同时Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。Flume提供了从Console(控制台)、RPC(Thrift-RPC)、Text(文件)、Tail(UNIX tail)、Syslog(syslog日志系统,支持TCP和UDP等2种模式),Exec(命令执行)等数据源上收集数据的能力。Flume采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数据,ZooKeeper本身可保证配置数据的一致性和高可用。另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。Flume Master间使用Gossip协议同步数据。

不少公司使用了Kafka:

1)LinkedIn

http://www.linkedin.com

LinkedIn公司使用Apache Kafka作为活动数据的流化和运营度量。

2)DataSift

http://www.datasift.com

DataSift公司使用Apache Kafka作为监控事件的收集器以及用户消费的实时数据流的跟踪器。

3)Twitter

http://www.twitter.com

Twitter公司使用Apache Kafka作为其Storm平台的一部分。

注:Storm是一个流处理架构。

4)Foursquare

http://www.foursquare.com

Foursquare公司使用Apache Kafka处理在线之间和在线与离线之间的消息传输,把Kafka与Foursquare监控和产品系统以及基于Hadoop的离线基础设施进行集成。

5)Square

http://www.squareup.com

Square公司使用Apache Kafka作为总线,在Square的各个数据中心之间传输所有的系统事件,包括:度量、日志、自定义事件等等。在用户端,它输出到Splunk、Graphite或Esper实时警告。

二、Apache Kafka安装

Kafka是Apache的顶级项目之一,当前的最新版本为0.7.2稳定版,0.8版还是Beta版,但已经获得了很多大型公司的认可。与0.7.2版相比,Kafka 0.8版提供了很多高级特性,如下:

1)在0.8版之前,如果经纪人Broker失效,那么任何Topic内的未消费分区的数据可能会丢失。而0.8版对分区增加了复制因子,这确保了只要有一个复制集有效,那么任何未提交的消息都不会丢失。

2)早先的版本还确保了所有的生产者和消费者都是复制敏感的。默认情况下,生产者的消息发送请求会被阻塞,直到消息提交到所有活动的复制集上才会解除阻塞。但是,生产者还能被配置为提交消息到单个经纪人Broker。

3)与Kafka的生产者一样,Kafka的消费者的投票模型改为长轮询模型且会被阻塞,除非已提交的消息是有效的才会解除阻塞。

4)另外,Kafka 0.8版还配备了一套管理工具,比如集群的受控关机和领导复制选举工具等。

Apache Kafka 0.7.x版不能被0.8版所替代的主要原因是0.8版不能向后兼容。

如果要把现有的基于Kafka 0.7.x版的集群迁移到基于0.8版的Kafka集群上,Apache Kafka提供了迁移工具。迁移工具实际上担当了基于Kafka 0.7.x版的集群的消费者的角色,并在基于0.8版的Kafka集群上担当了生产者重发布消息的角色。

下面的视图说明了整个迁移:

Apache Kafka开发入门指南(2)的更多相关文章

  1. Apache Kafka开发入门指南(1)

    Apache Kafka可以帮助你解决在发布/订阅架构中遇到消费数百万消息的问题.如今,商业应用.社交应用以及其它类型的应用产生的实时信息在不断增长,这些信息需要以简单的方式快速.可靠地路由到各种类型 ...

  2. Office 365 机器人(Bot)开发入门指南 (新篇)

    最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...

  3. mxGraph进阶(一)mxGraph教程-开发入门指南

    mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...

  4. 《Office 365开发入门指南教程》正式上线,限时优惠和邀请分享推广

    我很高兴地通知大家,<Office 365 开发入门指南教程>已经正式在网易云课堂上线,你可以通过直接访问  https://aka.ms/office365devlesson 这个短地址 ...

  5. 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

      今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...

  6. 《Office 365开发入门指南》上市说明和读者服务

    写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...

  7. 【转】mxGraph教程-开发入门指南

    原文:https://blog.csdn.net/sunhuaqiang1/article/details/51289580 mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适 ...

  8. DCloud-HTML5+:5+ App开发入门指南

    ylbtech-DCloud-HTML5+:5+ App开发入门指南 1.返回顶部 1. 5+ App开发入门指南 App App入门 HTML5 Plus应用概述 HTML5 Plus移动App,简 ...

  9. 鸿蒙OS前端开发入门指南:网络图片_Image渲染网络图片

    目录: 1.开启明文传输 2.权限申请 3.引入http插件 4.案例展示 5.<鸿蒙OS前端开发入门指南>文章合集 开启明文传输 在config.json配置文件添加如下配置(如果不开启 ...

随机推荐

  1. CSS控制文本在一行内显示,若有多余字符则使用省略号表示

    强制文本在一行内显示,多余字符使用省略号 text-overflow: ellipsis; overflow: hidden; white-space: nowrap;

  2. magento模块的建立

    所有路径都是从根目录开始的: 1.建立模块的配置文件: 路径:app/etc/models/下建一个文件(模块名称是Orderlottery)为Bf170_Orderlottery.xml,内容如下: ...

  3. 【NOIP2012】DAY1+DAY2题解

    不贴代码的原因是我的代码在初中机房.忘记带过来了. DAY 1 T1随便搞,但是字符串相关的题我经常犯蠢 T2 一个结论题,OAO但是需要高精度写. 具体就是按左手的数除右手的数(还是怎么的来着)排个 ...

  4. [Q]打印机页边距设置

    问题描述:当您在使用CAD批量打图精灵默认设置打印图纸(使用pdfFactory虚拟打印机),可能会发现打印出的图纸页边距比您手工打印(使用Adobe或系统打印机)的要偏大. Adobe虚拟打印机打印 ...

  5. linux 查看磁盘占用情况

    查看"/usr/local/"路径下,所有文件大小总和.只列出总和,不显示该路径下各子文件的大小. du -sh /usr/local/ 结果显示如下图: 如果要详细显示出各子文件 ...

  6. jQ内容的强大,后面继续跟进...

    <script type="text/javascript" src="jQ/jquery.js"></script> <scri ...

  7. 最近一段OI学习计划

    1.在寒假的时间里尽量吧图论和DP的基础先学一下: 图论:数,二叉树,DFS.BFS遍历,然后最短路径(Floyd.dijkstra.SPFA),然后再最小生成树吧,如果还有时间的话(kruskal( ...

  8. zabbix 布署实践【6 使用微信公众号-消息模版推送告警】

    使用这个服务的前提是,你必须要有一个微信订阅号,或者公众号,并且是通过认证的号 因为认证过后的号才有模版消息和获取用户openid等信息的权限 ,如下,登录微信公众号的登录页后,底下有个接口权限的展示 ...

  9. USACO 3.1 Humble Numbers

    Humble Numbers For a given set of K prime numbers S = {p1, p2, ..., pK}, consider the set of all num ...

  10. Ajax实现页面动态加载,添加数据

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Products ...