消息系统Kafka介绍
1、 概述
Kafka是Linkedin于2010年12月份开源的消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些数据包括网站的pv、用户访问了什么内容,搜索了什么内容等。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。
传统的日志分析系统提供了一种离线处理日志信息的可扩展方案,但若要进行实时处理,通常会有较大延迟。而现有的消(队列)系统能够很好的处理实时或者近似实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类(一小时或者一天只处理一部分数据)的离线应用而言,可能存在问题。Kafka正是为了解决以上问题而设计的,它能够很好地离线和在线应用。
2、 设计目标
(1)数据在磁盘上存取代价为O(1)。一般数据在磁盘上是使用BTree存储的,存取代价为O(lgn)。
(2)高吞吐率。即使在普通的节点上每秒钟也能处理成百上千的message。
(3)显式分布式,即所有的producer、broker和consumer都会有多个,均为分布式的。
(4)支持数据并行加载到Hadoop中。
3、 KafKa部署结构
kafka是显式分布式架构,producer、broker(Kafka)和consumer都可以有多个。Kafka的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。几个基本概念:
(1)message(消息)是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息。如果consumer订阅了这个主题,那么新发布的消息就会广播给这些consumer。
(2)Kafka是显式分布式的,多个producer、consumer和broker可以运行在一个大的集群上,作为一个逻辑整体对外提供服务。对于consumer,多个consumer可以组成一个group,这个message只能传输给某个group中的某一个consumer.
4、 KafKa关键技术点
(1) zero-copy
在Kafka上,有两个原因可能导致低效:1)太多的网络请求 2)过多的字节拷贝。为了提高效率,Kafka把message分成一组一组的,每次请求会把一组message发给相应的consumer。 此外, 为了减少字节拷贝,采用了sendfile系统调用。为了理解sendfile原理,先说一下传统的利用socket发送文件要进行拷贝:
Sendfile系统调用:
(2)Exactly once message transfer
怎样记录每个consumer处理的信息的状态?在Kafka中仅保存了每个consumer已经处理数据的offset。这样有两个好处:1)保存的数据量少 2)当consumer出错时,重新启动consumer处理数据时,只需从最近的offset开始处理数据即可。
(3)Push/pull
Producer 向Kafka(push)推数据,consumer 从kafka 拉(pull)数据。
(4)负载均衡和容错
Producer和broker之间没有负载均衡机制。
broker和consumer之间利用zookeeper进行负载均衡。所有broker和consumer都会在zookeeper中进行注册,且zookeeper会保存他们的一些元数据信息。如果某个broker和consumer发生了变化,所有其他的broker和consumer都会得到通知。
【参考资料】
【1】Kafka主页:http://sna-projects.com/kafka/design.php
【2】Zero-copy原理:https://www.ibm.com/developerworks/linux/library/j-zerocopy/
【3】Kafka与Hadoop:http://sna-projects.com/sna/media/kafka_hadoop.pdf
消息系统Kafka介绍相关推荐
- 分布式消息系统 Kafka 简介
分布式消息系统 Kafka 简介 阅读目录 5.1 吞吐量 5.2 负载均衡 5.3 拉取系统 5.4 可扩展性 5.5 消息删除策略 6.1 消息队列 6.2 行为跟踪 6.3 元信息监控 6.4 ...
- 消息系统kafka之二 kafka的HA(高可用)
在前面的<消息系统kafka之一 系统简介>的为什么选择kafka中已经提到了kafka高可用的特性. 下面是kafka与其他消息系统之间的区别 可以看出,kafka支持持久化消息,消息回 ...
- 消息队列Kafka介绍
Kafka用来构建实时数据管道和数据流应用.它是水平可扩展的,具有容错性的,极其快速的,并且已应用于上千家公司的产品环境中. 介绍 Apache Kafka是一个分布式流平台[distributed ...
- 发布订阅的消息系统 Kafka的深度解析
发布&订阅的消息系统 Kafka的深度解析 2015-01-27 10:25 Jason Guo Jason Guo的博客 字号: T | T 一个典型的kafka集群中包含若干produce ...
- kafka内存不断增加_分布式发布订阅消息系统Kafka 为什么快
Kafka 为什么能那么快 | Kafka高效读写数据的原因 无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能(好简单的样子),一是 Producer 生产的数据存到 broker ...
- 为什么rocketmq的queue分为读写?_分布式发布订阅消息系统Kafka 为什么快
Kafka 为什么能那么快 | Kafka高效读写数据的原因 无论 kafka 作为 MQ 也好,作为存储层也罢,无非就是两个功能(好简单的样子),一是 Producer 生产的数据存到 broker ...
- 消息系统kafka原理解析
Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Clouder ...
- kafka redis vs 发布订阅_发布订阅的消息系统 Kafka的深度解析
背景介绍 Kafka简介 Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐 ...
- kafka session.timeout.ms 是指消费一条数据的时间?_阿里工程师分享:浅谈分布式发布订阅消息系统Kafka...
Kafka的基本介绍 Kafka是最初由Linkedin公司开发,是一个分布式.分区的.多副本的.多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/ngi ...
最新文章
- 玩转高性能超猛防火墙nf-HiPAC
- buHdoZer‘s Arch
- JavaScript学习笔记(七)——函数的定义与调用
- 如何确定CPU是大端字节序还是小端字节序?
- iOS 应用安全权威指南电子书 PDF 分享
- 20172307 2017-2018-2 《程序设计与数据结构》实验5报告
- (40)FPGA四种常用逻辑门(或非门)
- 面试题--------4、数据类型
- 过来康康,一起来学VScode插件
- 360n4刷android8.1,【从此,任何人都可以刷N4】关于系统降级===线刷方法,我也说两句吧。...
- 群论基础速成(2):子群,陪集,正规子群,商群
- OptiFDTD应用:纳米盘型谐振腔等离子体波导滤波器
- 服务器里的系统盘是什么意思,云服务器系统盘是什么意思
- 2021年江西省安全员C证考试报名及江西省安全员C证模拟考试题库
- i标签和em标签的区别
- 硕士阶段人工智能有哪些比较好的发论文的方向?
- Niagara基于javascript的控件开发
- 选点问题(贪心算法)
- oracle收购了什么意思,BEA为何会被Oracle收购?
- 小学生台灯哪个品牌更护眼?学习专用的护眼台灯品牌
热门文章
- GEF入门实例_总结_04_Eclipse插件启动流程分析
- 《Unix网络编程卷1:套接字联网API》读书笔记
- php apc缓存以及与redis的对比
- Linux设备管理(三)_总线设备的挂接
- 激活Maven profile的几种方式
- CentOS 6.4 安装 media wiki 1.23.6(转)
- SQL Server2008R无法登录的解决方案(系统文件损坏)1814 18456....不看别后悔,有用请点赞...
- 无法识别的属性“decompressionEnabled”处理方法
- 巧用ftp命令(一)--利用ftp分发ssh密钥
- 悲观锁 HibernateTest.java