![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kafka
绝世好阿狸
这个作者很懒,什么都没留下…
展开
-
【Kafka(二)】日志及索引文件
每一个分区一个文件夹,一个分区对应多个文件。当满足一定条件后,会生成新的文件。每一个文件叫做一个日志段,每一个日志段会关联两个索引文件,一个是偏移量索引另一个是时间戳索引。日志段以本日志内的第一条消息的偏移量命名。段内的日志偏移量是相对偏移量。一个分区只有最新的日志段是可写的,其余的都是只读。索引文件:并非每一条消息都对应一个索引项,而是积累到一定数量后,插入一条索引项。1.偏移量:按照偏移量排序,存放的是偏移量到物理位置,查找时二分法查找。2.时间偏移量:按照时间戳排序,查找时二.原创 2021-04-28 23:47:43 · 654 阅读 · 0 评论 -
【Kafka(一)】日志格式
任务数据想要持久化或者进行网络传输,都需要进行序列化。序列化方式可以分两种:字节流或者字符流。字节流:机器友好,传输效率更高,占用更小的空间,如果追求性能,优先考虑。常见的比如mysql、kafka等,都使用的字节流协议;字符流:人类友好,可读性更好,拿到消息体后便可解析消息内容。但是效率较低,毕竟一个字符至少占用一个字节。常见的比如http协议就是字符流协议;下面看下kafka的消息格式或者协议。kafka消息格式经过了几个版本。消息以消息集的形式存在。消息集内的每一条消息由off原创 2021-04-28 23:08:51 · 363 阅读 · 0 评论 -
【Kafka】消费者 位移提交
kafka位移机制broker维护消费者的消费位移信息,老的版本存储在zk上,新版本存储在内部的topic里。本质上,位移信息消费者自己维护也可以,但是如果消费者挂了或者重启,对于某一个分区的消费位移不就丢失了吗?所以,还是需要提交到broker端做持久化的。提交方式分为自动和手动。自动是默认的行为,当然可以通过配置覆盖关掉自动提交。自动提交是consumer以一个时间间隔周期性地提交offset,比如每隔5s提交一次。提交发生的时机是poll调用时,会将上一次消费的位移信息提交到broker。自动提原创 2020-11-22 21:39:53 · 822 阅读 · 0 评论 -
【Kafka】使用非自带zookeeper Java API 例子
这里没有使用kafka自带的zk。1.启动zk:zk下载解压至任意文件夹。新建kafka-zk-csdn文件夹。这里启动包含三个节点的zk伪集群,进入kafka-zk-csdn文件夹,新建zk1,zk2和zk3文件夹。kafka-zk-csdn:--zk1 --data --myid --log --zoo.cfg--zk2 --data --m...原创 2018-06-03 23:46:12 · 1574 阅读 · 0 评论 -
【Kafka】Java 分区
这里看一下kafka Java API里分区的策略,然后自定义一个分区器。Kafka版本:2.111.默认分区:在Kafka生产者的send函数里会调用分区函数: Producer<String, String> procuder = new KafkaProducer<String,String>(props); //ProducerRecord<...原创 2018-06-04 23:08:31 · 1661 阅读 · 0 评论 -
【kafka】commit offset 自动提交 源码
Kafka可以配置自动提交,在每一次poll拉取数据时提交上一次消费的offset。@Override public ConsumerRecords<K, V> poll(long timeout) { acquireAndEnsureOpen(); try { if (timeout < 0) ...原创 2019-07-14 21:41:48 · 3386 阅读 · 2 评论 -
【Kafka】offset策略 客户端原理
1.消费者本地offsetKafka consumer会在本地维护每一个分区的消费offset,然后再发送拉取请求的时候,会把分区对应的本地offset发送给broker,broker按照请求里的offset来返回消息,broker不会维护每一个客户端的消费进度。但是broker会维护partition级别的offset,这样新的consumer第一次消费或者再均衡消费时,就可以根据这个off...原创 2019-07-14 21:57:02 · 1207 阅读 · 0 评论