Kafka是一款基于发布和订阅的消息系统。一般被称为分布式提交日志或分布式流平台。

Kafka系统是按照一定的顺序持久化保存的,可以按需读取。

Kafka的数据单元被称为消息。类似于数据库中表的一行记录,消息由字节组成,所以没有特别的格式和含义。

消息有一个可选的元数据,就是键,键也是一个字节数组。当消息以一种可控的方式写入分区时,会用到键,最简单的方式就是为键生成一个散列值,然后使用散列值对主题的分区属进行取模。这样可以保证具有相同键的消息总是会写到相同的分区。

批次时一组消息,这些消息属于同一个主题和分区,将消息分批次传输可以减少网络开销。

消息模式有很多选项,比如json,xml,但Kafka的开发者喜欢使用Apache Avro。

Kafka的消息通过主题进行分类,主题就好比数据库中的表。或者文件系统中的文件夹。

主题还可以分成若干个分区,消息以追加方式写入分区,按照先入先出的顺序被消费,因此无法在整个主题范围内保持顺序,但可以保证在单个分区内的顺序。

Kafka通过分区实现数据冗余和伸缩性,分区可分布在不同的服务器上,以此来提供比单个服务器更强大的性能。

通常使用流来描述Kafka的数据,流是一组从生产者到消费者的数据。Kafka以实时的方式处理数据,这叫流失处理,通常与批量处理(Hadoop)做区别。

Kafka的客户端就是Kafka的用户,他们被分为两种:生产者和消费者。除此之外还有其他高级客户端API——用于数据集成的Kafka Connect API和用于流失处理的Kafka streams.这些高级客户端API使用生产者和消费者作为内部组件,提供了更高级的功能。

生产者创建消息,一般一个消息会被发布到一个特定的主题上,生产者默认会把消息均衡地分布到主题的所有分区,这通常是由消息键和分区器来实现。

消费者读取消息,消费者订阅一个或多个主题,并按照消息生成的顺序消费它们。消费者通过检查消息的偏移量来区分已经读过的消息。偏移量是另一种元数据,它是一个不断递增的整数值。在创建消息时,Kafka会把它添加到消息里,在给定分区里,每个消息的偏移量都是唯一的。

消费者把每个分区最后读取的偏移量保存到zookeeper或Kafka上,如果消费者关闭或者重启,它的读取状态不好丢失。

消费者是消费者群组的一部分,一般会有多个消费者共同读取一个主题,群组保证每个分区只被一个消费者使用。

一个独立的Kafka服务器称为一个broker,broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。broker为消费者提供服务,对读取分区的请求作出响应,返回提交到磁盘上的消息。

broker是集群的组成部分,每个集群都会有一个broker充当集群控制器角色(自动选举),控制器负责管理工作。在集群中,一个分区从属于一个broker,该broker被称为分区的首领,一个分区可以复制到多个broker,这种复制机制为分区提供了消息冗余。

保留消息时Kafka的一个重要特性,默认的保留策略时这样的:要么保留一段时间,要么保留一定的字节数。在任一时刻,达到其中一个标准,消息就会被删除。

Kafka可以无缝支持多个生产者,也可以支持多个消费者。

Kafka有五个使用场景:

1.跟踪用户的活动。

2.传递消息。

3.度量指标和日志记录。

4.提交日志。

5.流处理。

kafka笔记1的更多相关文章

  1. Kafka笔记整理(三):消费形式验证与性能测试

    Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...

  2. Kafka笔记整理(一)

    Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...

  3. Kafka笔记—可靠性、幂等性和事务

    这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...

  4. Kafka笔记

    最近做的一个项目需要跟Kafka打交道,学习了很多相关知识,就到这里来汇总一下. kafka是一个传递消息的系统,原本是用来快速记录海量log的,现在也经常用作消息队列.它主要由三个部分组成,prod ...

  5. kafka笔记-Kafka在zookeeper中的存储结构【转】

    参考链接:apache kafka系列之在zookeeper中存储结构  http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...

  6. Kafka笔记--指定消息的partition规则

    参数的设定:参考资料 不错的资料:http://blog.csdn.net/honglei915/article/details/37697655 http://developer.51cto.com ...

  7. Kafka笔记--监控系统KafkaOffsetMonitor

    KafkaOffsetMonitor下载链接: http://download.csdn.net/detail/changong28/7930337github官方:https://github.co ...

  8. Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)

    原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...

  9. Kafka笔记--参数说明及Demo

    参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...

  10. Kafka笔记--分布式环境搭建

    部署: http://www.cnblogs.com/likehua/p/3999538.html http://blog.csdn.net/kimmking/article/details/8263 ...

随机推荐

  1. EMES信息化制造系统的概念

    EMES是指,信息化制造系统.它由五个功能子系统构成,分别是:企业信息平台子系统(EIP),物料实时信息系统(MRI).能源实时信息系统(PRI).设备实时信息系统(EMR).质量实时信息系统(QRI ...

  2. .net 程序员 两年工作总结

    2013 年7月毕业,算一算从开始在现任的公司实习到现在已经有小两年的时间了.公司的工作虽然不忙,但也一直没有时间思考一下. 现在决定辞职了,忽然一下轻松的让人想思考. 普通程序员.普通本科生.普通的 ...

  3. 【oracle11g,13】表空间管理2:undo表空间管理(调优) ,闪回原理

    一.undo空间原理: dml操作会产生undo数据. update时,sever process 会在databuffer 中找到该记录的buffer块,没有就从datafile中找并读入data ...

  4. matlab 警告(warning)、错误(error)、异常(exception)与断言(assert)

    0. 消息标识符(Message Identifiers) 消息标识符,是附加在 error 和 warning 语句上的一个标签,以被 matlab 做唯一性标识. warning 语句所支持的函数 ...

  5. C#中的MessageBox消息对话框

    关键字:C# MessageBox 消息对话框 在程序中,我们经常使用消息对话框给用户一定的信息提示,如在操作过程中遇到错误或程序异常,经常会使用这种方式给用于以提示.在C#中,MessageBox消 ...

  6. WPF4文字模糊不清晰、边框线条粗细不一致的解决方法

    原文:WPF4文字模糊不清晰.边框线条粗细不一致的解决方法 软件测试过程中发现在一台1600*900的分辨率电脑上文字模糊,甚至某些个文字出现压缩扭曲 经过实践,发现按下面方法能解决一点问题: 在窗口 ...

  7. cocos2d-x 在XML分析和数据存储

    无意中起到一周中的游戏,哎,时间过得总是打得那么快时,. .. 于是今天决定看一下之前不怎么非常熟悉的XML;(之前做游戏时数据的储存用到过XML.但这块是还有一个同事在做,所以不怎么熟悉), 看了看 ...

  8. 用 cmake 构建Qt工程(对比qmake进行学习)

    cmake vs qmake qmake 是为 Qt 量身打造的,使用起来非常方便 cmake 使用上不如qmake简单直接,但复杂换来的是强大的功能 内置的 out-of source 构建.(目前 ...

  9. RHEL 6和RHEL 7(CentOS 6和CentOS 7)恢复ROOT密码

    RedHat 6恢复Root密码: 1.启动RedHat 6的时候在这个界面按任意键 2.出现如下界面,按 e 3.出现如下界面,选择第二个--kernel,然后再按 e 4.出现如下界面,输入 空格 ...

  10. vmware linux无法正常上网

    不知道自己怎么搞的整的vmware里面的fedora 12 不能正常上网,但是在宿主机上ping XXX,是正常的.当service network restart 的时候提示MAC有问题.网上百度了 ...