Apache Kafka开发入门指南(2)
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
LinkedIn公司使用Apache Kafka作为活动数据的流化和运营度量。
2)DataSift
DataSift公司使用Apache Kafka作为监控事件的收集器以及用户消费的实时数据流的跟踪器。
3)Twitter
Twitter公司使用Apache Kafka作为其Storm平台的一部分。
注:Storm是一个流处理架构。
4)Foursquare
Foursquare公司使用Apache Kafka处理在线之间和在线与离线之间的消息传输,把Kafka与Foursquare监控和产品系统以及基于Hadoop的离线基础设施进行集成。
5)Square
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)的更多相关文章
- Apache Kafka开发入门指南(1)
Apache Kafka可以帮助你解决在发布/订阅架构中遇到消费数百万消息的问题.如今,商业应用.社交应用以及其它类型的应用产生的实时信息在不断增长,这些信息需要以简单的方式快速.可靠地路由到各种类型 ...
- Office 365 机器人(Bot)开发入门指南 (新篇)
最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...
- mxGraph进阶(一)mxGraph教程-开发入门指南
mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适用于需要在网页中设计/编辑Workflow/BPM流程图.图表.网络图和普通图形的Web应用程序.mxgraph下载包中包括用 ...
- 《Office 365开发入门指南教程》正式上线,限时优惠和邀请分享推广
我很高兴地通知大家,<Office 365 开发入门指南教程>已经正式在网易云课堂上线,你可以通过直接访问 https://aka.ms/office365devlesson 这个短地址 ...
- 所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市
今天是春节假期的最后一天,在这里给全国的朋友们拜个晚年,祝大家身体健康,晚年幸福啊.这个春节大家过的怎么样啊,我自己是在老家过的年,家乡的年味还是比较浓的,也再次感谢朋友圈的大家给我看了各地的风光 ...
- 《Office 365开发入门指南》上市说明和读者服务
写在最开始的话 拙作<Office 365开发入门指南>上周开始已经正式在各大书店.在线商城上市,欢迎对Office 365的开发.生态感兴趣的开发者.项目经理.产品经理参考本书,全面了解 ...
- 【转】mxGraph教程-开发入门指南
原文:https://blog.csdn.net/sunhuaqiang1/article/details/51289580 mxGraph教程-开发入门指南 概述 mxGraph是一个JS绘图组件适 ...
- DCloud-HTML5+:5+ App开发入门指南
ylbtech-DCloud-HTML5+:5+ App开发入门指南 1.返回顶部 1. 5+ App开发入门指南 App App入门 HTML5 Plus应用概述 HTML5 Plus移动App,简 ...
- 鸿蒙OS前端开发入门指南:网络图片_Image渲染网络图片
目录: 1.开启明文传输 2.权限申请 3.引入http插件 4.案例展示 5.<鸿蒙OS前端开发入门指南>文章合集 开启明文传输 在config.json配置文件添加如下配置(如果不开启 ...
随机推荐
- ACM博弈问题小试
题目: 取石子(一) 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 一天,TT在寝室闲着无聊,和同寝的人玩起了取石子游戏,而由于条件有限,他/她们是用旺仔小馒头当作 ...
- 学习AngularJs:Directive指令用法(完整版)
这篇文章主要学习AngularJs:Directive指令用法,内容很全面,感兴趣的小伙伴们可以参考一下 本教程使用AngularJs版本:1.5.3 AngularJs GitHub: http ...
- JavaEE XML DOM解析
DOM解析XML @author ixenos XML解析方式(原理) a) DOM 解析树 b) SAX 流事件 DOM解析对应主流工具 i. DOM(官方) i ...
- NTSC色域(CIE1931)计算公式
色域(CIE1931)=ABS(RC[-6]*RC[-3]+RC[-4]*RC[-1]+RC[-2]*RC[-5]-RC[-6]*RC[-1]-RC[-4]*RC[-5]-RC[-2]*RC[-3]) ...
- HostOnly模式下的Centos克隆虚拟机+配置固定ip
首先在你想克隆的虚拟机上右击,选择管理下的克隆 让我们骚等一会~ ok,现在开机,这个时候是没有ip的 来修改一个文件 删掉红框中的内容,把箭头指的eth1改为eth0 在来修改一个文件 删掉红框的内 ...
- Linux升级glibc
参考http://www.linuxidc.com/Linux/2015-04/116472.htm via 红孩儿你好 一.简介 glibc是gnu发布的libc库,即c运行库.glibc是linu ...
- gc学习(转)
一.GC特性以及各种GC的选择 1.垃圾回收器的特性 2.对垃圾回收器的选择 2.1 连续 VS. 并行 2.2 并发 VS. stop-the-world 2.3 压缩 VS. 不压缩 VS. 复制 ...
- ios下iphone的plus下
二维码能被长按识别,但因为某种原因识别区域发生了偏移 meta标签定义了默认缩放为一倍就能识别,不定义就不能识别. 网上是这么说的: meta标签定义了默认缩放为一倍就能识别,不定义就不能识别.于是我 ...
- CSS继承性+层叠性+盒子+浮动
CSS继承性+层叠性+盒子+浮动 CSS继承性 <style> div{ color: pink; font-siz ...
- Python实现简单的HTTP服务器(支持文件上传下载)
1.python内置模块 SimpleHTTPServer (支持下载功能) 在对应的工作目录下,运行命令python -m SimpleHTTPServer 即可把当前目录下以共享服务的形式共享出 ...