[Kafka] Kafka学习笔记--基本知识
-
Kafka作用:
- 解决系统间的耦合
- 异步通信
- 削峰填谷
- kafa的stream简单,入门要求低,方便部署
-
Kafka学习的重点
- 消息队列Message Queue
- Kafka Streaming 流处理
-
消息队列:
- 至多一次:一个消息只能被一个消费者消费一次,消费完queue就删除。
- 没有限制:一个消息可以被多个消费者同时消费,消费者主要就是记住消费到queue的位置。kafka属于这一种。
-
kafka基本架构:
kafka集群中通过topic对于生产者发来多record进行分类。每个topic会被分区管理。例如topic1被分成三份partition0, partition1, partition2。每一个partation都会有一个分区(Broker)来作为leader,负责读写。剩下用来同步备份,作为follower。当一个broker坏掉,它作为leader负责的那个partation的部分,会被其他的follower中的一个所取代。检测broker的运作的是zookeeper。 -
kafka日志
- 每组日志分区是一个有序的不可变的的日志序列。第一个为offset 0,并依次往下。队列中的record存续的时间可以用configration设置,默认为168小时。log.retention.hours=168
- 同一个topic相同的partation之内的顺序可以保证,但是不同的partation之间的顺序无法保证。因此如果希望完全保证record的顺序,就必须是一个topic一个partation下进行。但partation数量和kafka可以影响kafka的同步处理消息的量。
-
生产者和消费者
- 生产者是用来产生消息,而consumer是来订阅消息的。
- consumer group是有若干个consumer组成的。每一个consumer group都是一个“逻辑的订阅者”, 一个record在一个consumer group中只会被消费一次。相同topic的record在一个consumer group中是被平均消费的。一般情况下一个consumer group下的consumer数量小于等于partation的数量。
- consumer消费的时候会记录自己的offset,然后返回给kafka集群。
-
Kafka的日志读写
- kafka的写入采取顺序IO和MMF(Memorial Mapped Files)方式提高速度。顺序IO避免了寻址。而MMF则是利用内存映射,把file写进内核的pageCache,然后又操作系统进行磁盘写入。
- 读取的时候,kafka用的是zero copy。
- 普通copy: 磁盘 -> 内核缓存 -> 用户缓存 -> socket缓存 -> 由通讯协议发出去
- zerocopy:磁盘 -> 内核缓存 -> socket缓存 -> 由通讯协议发出去
*图示:
posted on 2020-06-22 09:42 codingEskimo 阅读(179) 评论(0) 收藏 举报