本文主要关注why-->what---->How
1Why?为什么要学习kafka?
主要基于kafka的诸多应用:诸多大公司都在用如:淘宝、LinkedIn
a.kafka在我们进行消息处理的时候吞吐量大,及每秒钟转发数据量大,多大?
Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。
2.What?kafka是什么?
kafka是一个分布式消息分发系统
kafka的工作原理【三个角色】
不需要在内存中缓存数据,因为操作系统的文件系统足够强大
对于数据的CRUD
R:随机读写高效
D:到达一定的数据量之后或超过一定时间再删除
C:自会append
U:
Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服务器就不用记录消息的投递过程,每个客户端都自己知道自己下一次应该从什么地方什么位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务器的负担
还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输,利用sendfile(对应java里的FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销
kafka的设计思想【框架】
3.How
kafka的使用场景
kafka编写步骤