Apache顶级项目介绍2-Kafka

Apache顶级项目介绍系列-1,我们从Kafka说起。why?流行 + 名字cool。

Kafka官网是见过比较简单,直叙的网站,“kafka是一个高吞吐的分布式的消息系统”。 Kafka最初起家于LinkedIn,当时原本作为linkedin用来管理活动流(PV,用户行为分析,搜索情况)和运营数据处理的pipline的基础。

因为其分布式以及高吞吐被广泛使用,如与Cloudera, Hadoop, Storm, Spark etc.

kafka首先作为一个消息系统,提供了基本功能,如解耦,顺序性,异步性等。同时优质的设计理念支撑高吞吐,提供O(1)时间负责度持久化能力,数据级别达到TB/PB以上,支持离线与实时处理,即与hadoop,storm对接,支持水平scale out。

架构图:


 可以看到,kafka是一个分布式架构设计(当然DT时代,不支持水平scale out无法生存), 前段producer并发(支持批量)push消息到kafka特定topic集群服务器broker,每个topic又包含多个partition便于水平扩展,消费者consumer通过consumer group向broker服务器pull获取消息。kafka通过zk管理集群配置,选举leader,以及rebalance。消息模式为push/pull。

我们来建一个kafka集群服务:


通过zk发送,消费消息:


用java来生产/消费消息:

比较直白,这里注意可以批量发送消息,不是所有消息中间件可以批量发送的,批量发送是高吞吐原因之一。

这里使用stream流来消费payload,消息流迭代器用不停止,类似监听消息一样。

kafka之所以高效或者其创新点:

  1. 消息删除管理 通常消息中间件会消费一个消息,删除一个消息,这使得消息的使用代价非常高额。而kafka使用无状态管理,引入消息偏移量,消息基于时间的SLA应用保留策略,当消息超过一定时间后才被删除,这样按照官网的说法,消费Kafka消息就是非常轻量级:come and go. 听起来像外卖一样,take and go. 甚至,由于引入偏移量,消费者可以随意获取任意位置消息,包括重新获取已经消费过的消息。

2. Kafka利用linux sendfile从linux kernel复制文件

3.kafka引入zk,管理分布式协调,HA,容错。zk用来管理kafaka代理broker,当kafka新增或者某代理失效,zk服务将通知生产者与消费者。
 

4. 生产者性能,消息结构优化大小以及批量发送


 5. 消费这性能:消息结构优化以及无状态引入便宜量,无需为何b+树索引。

总体来说kafka表现异常突出,不失为通常消息中间件的代替品,如果管理hadoop,stream更是首推。另外如果处理网站日志,用户使用行为分析,或者离线处理log等都是不二之选。

好了,先到这里了,起个大早来写东西,果然不靠谱,时间紧任务重啊。望大家包涵,有些图借用自网络。

公众号:技术极客TechBooster

时间: 2024-10-05 23:27:38

Apache顶级项目介绍2-Kafka的相关文章

Apache顶级项目介绍系列1-概览

我们希望开始介绍一整套精华Apache TLP顶级项目介绍,包括Kafka, Zookepper, Hadoop, Spark, HBase etc.   公众号:技术极客TechBooster

Apache顶级项目介绍7 - HBase

今天我们来继续介绍Apache顶级项目大数据三巨头之一的HBase.恰逢今天(5.24)是HBase Con2016旧金山盛会,比较应景,而且还有朋友@Luke Han去演讲Kylin. 1. 官网简介: 老样子,HBase官网的介绍, "HBase is the Hadoop database, a distributed, scalable, big data store.",所以HBase   =  Hadoop Database,并且提供了分布式可扩展的数据存储.(HBase的

Apache顶级项目介绍6 - Spark

火花四溢,热情洋溢.极客朋友么知道,我们翘首以盼的Spark来了. 提及Spark, 这几年如日中天,谈到大数据如果不提及Spark, Hadoop,就好比这年代带耳机不是2B的,你都不好意思带.Spark最初由加州大学伯克利分校(太屌的大学,出了多少名人,名作啊)的AMPLab Matei为主的小团队使用Scala开发,其核心代码只有63个Scala文件(早期版本,这里提及一下Scala语言又是一个创时代的大作,有人说它太锋利,有人说它太妖魔). Spark作者Matei: Spark于201

Apache顶级项目介绍4 - Hadoop

大象起舞,天下太平,极客们应该知道我们的重量级人物Hadoop登场了. 提到Hadoop, 正所谓饮水思源,我们不得不提及一下Hadoop之父,其对技术界的影响,在近10年可谓重大, 他就是Doug Cutting, 其传奇人生及其大作这里不赘述了,大家可以Google/Bing一下,之后或许我们会推出一些技术大牛的介绍以及好书推荐. 值得提及的是Hadoop之所以诞生于2005-2006之际,是Doug当时受到来自 Google Lab公开发布的几篇paper启发,包括Map/Reduce(2

Dubbo下一站:Apache顶级项目

导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方式. 作者:(按姓氏拼音排序,排名不分先后) 曹胜利(展图):Apache Dubbo Committer. 刘军(陆龟):Apache Dubbo Committer. Dubbo 2.7 将围绕 异步支持优化.元数据改造,引入JDK8的特性.Netty4.0的特性以及MetricsAPI 5个方

盘点Apache毕业的11个顶级项目

自1999年成立至今,Apache 软件基金会已成功建立起自己强大的生态圈.其社区涌现了非常多优秀的开源项目,同时有越来越多国内外项目走向这个国际开源社区进行孵化.据悉,目前所有的 Apache 项目都需要经过孵化器孵化,满足一系列质量要求之后才可毕业.从孵化器里毕业的项目,要么独立成为顶级项目,要么成为其他顶级项目的子项目. 为便于大家了解 Apache 孵化的标准,本文盘点了 Apache 从2016年1月1日至2017年1月19日所有孵化成功并独立管理的顶级项目,共有11个.同时,欢迎大家

Apache孵化器主席Justin Mclean:如何成为Apache顶级开源项目

摘要: 近日,Apache孵化器主席.Apache基金会成员.Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战. 近日,Apache孵化器主席.Apache基金会成员.Dubbo & RocketMQ等开源项目的导师Justin Mclean来到阿里巴巴西溪园区,与众多开发者分享了如何打造一个Apache顶级项目,以及项目孵化过程会遇到的一些盲点和挑战.

Apache Drill 成为 Apache 基金会顶级项目

Apache 基金会今天宣布 Apache Drill 成为基金会的顶级项目.项目新的首页是:http://drill.apache.org/ 为了帮助企业用户寻找更为有效.加快Hadoop数据查询的方法,Apache软件基金会发起了一项名为"Drill"的开源项目.Apache Drill 实现了 Google's Dremel. 该项目将会创建出开源版本的谷歌Dremel Hadoop工具(谷歌使用该工具来为Hadoop数据分析工具的互联网应用提速).而"Drill&qu

【转】apache开源项目的介绍

Jakarta项目是ASF(The Apache Software Foundation)的一部分.ASF是一个非赢利组织,她鼓励基于开放的软件许可下进行合作.注重实效的开发,并提供各个领域的高质量软件,她涉及到Http服务器,编译工具,类库,开发架构,服务器端Java技术,J2EE容器,数据库工具,日志工具,XML解析等等诸多领域.ASF提供的java项目有一部分在Jakarta中,还有一些成为独立的诸如Tomcat的项目,Jakarta项目则提供了多种多样开源的java解决通用方案. 先介绍