`

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

 

 

 

 

  • 大小: 74.5 KB
  • 大小: 184.7 KB
  • 大小: 234.5 KB
  • 大小: 169.2 KB
  • 大小: 56.7 KB
  • 大小: 59.4 KB
  • 大小: 19.1 KB
  • 大小: 105.2 KB
  • 大小: 28.8 KB
  • 大小: 25.6 KB
  • 大小: 22.7 KB
分享到:
评论

相关推荐

    大数据流处理框架介绍.pdf

    channel.type=memory #内存channel #sink详细配置 exec-memory-kafka.sinks.kafka-sink.type=org.apache.flume.sink.kafka.KafkaSink #类型 为kafka sink exec-memory-kafka.sinks.kafka-sink.brokerList=hadoop000:...

    Kafka 入门基础篇.pptx

    Kafka 使用 Scala 语言编写,并于 2010 年被 LinkedIn 公司贡献给 Apache 基金会,成为顶级开源项目。 Kafka 的组成部分包括 Producer、Broker、Consumer 和 Zookeeper 集群。其中,Producer 负责将消息发送到 ...

    kafka-images:Apache Kafka的融合Docker映像

    Kafka的Docker映像此仓库提供了 Docker映像的构建文件。物产属性是从顶级POM继承的。 可以在命令行( -Ddocker.registry=testing.example.com:8080/ )或子项目的POM中覆盖属性。 docker.skip-build :(可选)设置...

    php测试kafka项目示例

    基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是:日志收集系统和消息...

    消息队列之kafka.docx

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,...用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

    Apache+Kylin权威指南

    Apache Kylin是Hadoop大数据平台上的一个开源OLAP引擎。它采用 多维立方体预计算技术,可以将大数据的SQL查询速度提升到亚...Apache Kylin也是中国人主导的、唯一的Apache顶级开源项目,在开 源社区有世界级的影响力。

    Kafka学习笔记.pdf

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献...

    大数据之Kafka学习

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica...web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。

    浅谈分布式消息技术:Kafka.docx

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献...

    rabbitmq学习资料

    接下来的Kafka是LinkedIn开源的分布式发布-订阅消 息系统,目前这个项目已经属于Apache顶级项目。Kafka的主要特点是基于Pull的模式来处理消息消息,追 求高吞吐量,后面的Kafka学习文档中会详细讲解,这里就不一一...

    kafka可视化管理工具

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica...web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。

    Kafka面试题.md

    Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica...web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。

    大数据处理工具Kafka的使用文档概述

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献...

    大数据私房菜_Kafka详解 (2021)

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献...

    浅谈分布式消息技术Kafka

    Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献...

    利用Impala+Kudu构建准实时分析应用

    Apache Hadoop生态圈的顶级项目之一,解决了传统Lamda架构处理Hadoop上快速变化数据的存储和处理技术过于复杂的问题,同时Kudu能够与Hadoop生态的其他组件比如Impala、Spark、Flume和Kafka等组件集成,大大降低了对...

    构建近实时分析系统

    Apache Hadoop生态圈的顶级项目之一,解决了传统Lamda架构处理Hadoop上快速变化数据的存储和处理技术过于复杂的问题,同时Kudu能够与Hadoop生态的其他组件比如Impala、Spark、Flume和Kafka等组件集成,大大降低了对...

    kafka架构原理

    web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。2.1解耦允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口

Global site tag (gtag.js) - Google Analytics