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

发布消息的时候,producer会把它发送到broker的某一个topic上。每条消息都只属于一个topic,而一个topic会有一个或多个partition。那一条消息属于这个topic的哪一个partition会由一个key来决定。这个key既可以由用户定义,也可以由producer在发送的时候自己决定。
broker收到消息后会把它变为二进制形式添加到所属topic的log的最后。注意,Kafka只能在log最末尾添加新的消息,而不能在任意地方插入、删除或者编辑。然后broker会发送一个成功的消息给producer。由于broker的本质其实是一个zookeeper的集群,producer的消息其实会发给所有的broker。producer可以在发送的时候就定义发送成功的标准是收到任意一个broker的成功回复还是所有brokers还是大多数brokers的成功回复。
consumer接收消息的情况有些复杂。首先consumers会被分成不同的组。Kafka可以保证一条消息会被关注这个消息topic的每一个组中的一个且仅有一个consumer收到。这样用户就可以灵活的定义一个topic下的消息要被广播还是负载均衡了。两个极端情况:1,所有consumer都在一个group,那么broker相当于一个负载均衡器,每条消息会被送到不同的consumer;2,所有consumer都在不同group,那么相当于广播,每一条消息会被送给所有的consumer。其它情况都在这两者之间。

Kafka的配置也有些繁琐。为了使用Kafka,首先你得有一个Zookeeper。然后对于Consumer来说,必须给定topic和Zookeeper地址,其它还可以设一些timeout之类的东西。对于Producer来说,需要给定Brokers,Zookeeper地址,其它还可以设一些缓存大小,timeout之类的。如果你想结合Avro来使用Kafka,那么还必须为Consumer和Producer设置Avro Schema Registry的地址。Avro是一套很复杂的定义文件结构的系统,我会在之后的博客中提到。
那Kafka的基本使用就是这样了。有兴趣的可以去Apache官网下下来玩一玩。
Kafka笔记的更多相关文章
- Kafka笔记整理(三):消费形式验证与性能测试
Kafka消费形式验证 前面的<Kafka笔记整理(一)>中有提到消费者的消费形式,说明如下: .每个consumer属于一个consumer group,可以指定组id.group.id ...
- Kafka笔记整理(一)
Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...
- Kafka笔记—可靠性、幂等性和事务
这几天很忙,但是我现在给我的要求是一周至少要出一篇文章,所以先拿这篇笔记来做开胃菜,源码分析估计明后两天应该能写一篇.给自己加油~,即使没什么人看. 可靠性 如何保证消息不丢失 Kafka只对&quo ...
- kafka笔记-Kafka在zookeeper中的存储结构【转】
参考链接:apache kafka系列之在zookeeper中存储结构 http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...
- Kafka笔记--指定消息的partition规则
参数的设定:参考资料 不错的资料:http://blog.csdn.net/honglei915/article/details/37697655 http://developer.51cto.com ...
- Kafka笔记--监控系统KafkaOffsetMonitor
KafkaOffsetMonitor下载链接: http://download.csdn.net/detail/changong28/7930337github官方:https://github.co ...
- Kafka笔记--使用ubuntu为bocker(服务器)windows做producer和comsumer(客户端)
原文连接:http://www.cnblogs.com/davidwang456/p/4201875.html 程序仍然使用之前的一篇博文中的例子 :http://www.cnblogs.com/gn ...
- Kafka笔记--参数说明及Demo
参考资料:http://blog.csdn.net/honglei915/article/details/37563647参数说明:http://ju.outofmemory.cn/entry/119 ...
- Kafka笔记--分布式环境搭建
部署: http://www.cnblogs.com/likehua/p/3999538.html http://blog.csdn.net/kimmking/article/details/8263 ...
随机推荐
- Javascript之旅——第四站:parseInt中要注意的坑
前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息 一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效 ...
- 小议如何使用APPLY
简介 如果你打算为在结果集中的每条记录写一个调用表值函数或者表值表达式的select语句,那么你就能用到APPLY 操作符来实现.一般又两种形式写法: 第一种格式就是CROSS APPLY.这种格式可 ...
- MySQL数据库备份命令
原文参考:MySQL数据库备份的命令 - 司南 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql备 ...
- Sql Server 添加外部程序集基本操作
简介:有时候Sql Server的内置函数没有那么好用的时候,可以引用一下外部程序集,下面献下丑,做下添加外部程序集操作 1.准备程序,编译出一个MyCLR的DLL. public class CLR ...
- 烂泥:gpg加解密软件学习
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...
- 烂泥:NFS做存储与KVM集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前有关NFS的文章,我们介绍的都是NFS的使用挂载等等.这篇文章我们介绍有关NFS作为存储使用. 既然本篇文章的主题是有关NFS的,我们还是先把NFS ...
- linux cpu占有率居高不下 调试
今天调试程序,使用top命令后,发现程序的cpu占有率很高,一直在99,这很可怕,所以来调试. 使用top命令,得如下结果 PID USER PR NI VIRT RES SHR S %CPU %ME ...
- js有关时间日期的操作
var myDate = new Date();var date_string = myDate.getFullYear()+""+((myDate.getMonth()+1)&l ...
- CentOS 6.3下配置iSCSI网络存储
一.简介 iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够 ...
- Linux nm命令
一.简介 显示关于对象文件.可执行文件以及对象文件库里的符号信息. 二.选项 http://www.cnblogs.com/wangkangluo1/archive/2012/07/02/257243 ...