摘要: 1、消费者组 kafka提供的一种可扩展可容错消费机制,某个topic的分区数据只能被组内的一个消费者消费,注:当指定了自动提交(enable.auto.commit=true)时,必须显式的指定消费者组ID(group.id) 2、消费位置和offset管理 消费者需要记录消费了多少数据,即消费位 阅读全文
posted @ 2020-06-28 14:47 光头用沙宣 阅读(458) 评论(0) 推荐(0) 编辑
摘要: kafka号称能够达到每秒几十万级、甚至是百万级的并发量,而且我们也知道,kafka的数据是保存到磁盘的,那么kafka如何保证如此高的吞吐量(当然也和不同场景调优配置有关); 从两个角度来说: 数据写入角度(生产者角度) 写数据时采用了页面缓存技术和顺序写技术; 1、页面缓存技术 kafka将数据 阅读全文
posted @ 2020-06-24 16:31 光头用沙宣 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 前段时间实际项目中遇到了一个问题,特此整理下 配置信息 1.kafka集群采用经典部署方式,3节点 2.为了保证全局消息有序性,topic只有一个分区,三个副本 3.生产者和消费者均只有一个,均以主备微服务方式部署 4.消费者通过TCP方式将数据发送给其他服务,这里用对端代替 问题现象 对端收到的稳 阅读全文
posted @ 2020-06-22 13:20 光头用沙宣 阅读(381) 评论(0) 推荐(0) 编辑
摘要: 本章要说的HW和LEO和ISR有关联,ISR之前总结过,这里不再说。 HW High Watermark(高水位),用于标识特定的offset,消费者只能拉取到HW之前的消息 LEO Log End Offset,某个分区要写入下一条消息的offset LSO Log Start Offset ,某 阅读全文
posted @ 2020-06-19 21:50 光头用沙宣 阅读(369) 评论(0) 推荐(0) 编辑
摘要: IOC控制反转 复杂的系统可以由多个对象相互协作和依赖来实现,并且对象的内部实现是透明的(并不代表用public修饰,可以通过反射,spring底层实现就用到了反射),对象与对象之间的依赖可以交由“第三方”管理,而对象与对象之间无实质的联系,这就是控制反转思想。为什么这种思想叫做控制反转呢? 未引入 阅读全文
posted @ 2020-06-19 21:02 光头用沙宣 阅读(211) 评论(1) 推荐(0) 编辑
摘要: 前一篇总结了下生产者Java API,本篇参照源码总结下生产数据的具体流程,先上图: 1. Producer创建时,会创建一个Sender线程并设置为守护线程 2. 生产消息时,内部其实是异步流程;生产的消息先经过拦截器->序列化器->分区器,然后将消息缓存在缓冲区(该缓冲区也是在Producer创 阅读全文
posted @ 2020-06-18 20:52 光头用沙宣 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 事先说明,本文的所有实例均基于kafka2.5.0开发;依赖的jar包 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.5.0</version> < 阅读全文
posted @ 2020-06-17 22:24 光头用沙宣 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 前面提到了,kafka0.11.0版本引入的幂等性只能保证分区级别的at-exactly-once语义 如图,producer向三个分区分别生产10条数据,前两个生产成功,写第三个分区时,producer挂掉;producer重启后,重新向三个分区写入数据; 此时producer的PID变化,导致消 阅读全文
posted @ 2020-06-16 21:27 光头用沙宣 阅读(514) 评论(0) 推荐(0) 编辑
摘要: kafka中有三种语义: 1、at-most-once 配置应答模式ack为0时,只要消息到了broker无论是否写成功,就回复ok,这样可能导致消息没有写入kafka;这种做法一般是为了减少消息的重复性,而且业务必须接受数据的丢失 2、at-least-once producer在收到ack时,证 阅读全文
posted @ 2020-05-31 17:35 光头用沙宣 阅读(1093) 评论(0) 推荐(0) 编辑
摘要: 前言 要了解生产者ISR,需要提前了解下生产者重试机制和应答机制 生产者重试机制 创建生产者时,可以指定retries参数,如果向broker发送消息时抛出异常,并且异常是可重试异常RetriableException,那么此时就会按照指定的次数进行重试 1、哪些情况下可以重试 (1)没有到deli 阅读全文
posted @ 2020-05-31 17:04 光头用沙宣 阅读(551) 评论(0) 推荐(0) 编辑