摘要: 何时创建TCP连接? TCP连接是在调用KafkaConsumer.poll方法时被创造的。再细粒度较小,在poll方法内部有3个时机可以创建TCP连接 1. 发起FindCoordinator请求时。 消费者端有个组件叫协调者(Coordinator) 它驻留在 Broker 端的内存中,负责消费 阅读全文
posted @ 2020-05-26 14:15 怡情养性长智 阅读(222) 评论(0) 推荐(0) 编辑
摘要: Kafka Java Consumer 设计原理 谈到 Java Consumer API,最重要的当属它的入口类 KafkaConsumer 了 KafkaConsumer 就变为了双线程的设计,即用户主线程和心跳线程 所谓用户主线程,就是你启动 Consumer 应用程序 main 方法的那个线 阅读全文
posted @ 2020-05-26 09:22 怡情养性长智 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 所谓 CommitFailedException,顾名思义就是 Consumer 客户端在提交位移时出现了错误或异常,而且还是那种不可恢复的严重异常 很多提交位移的 API 方法是支持自动错误重试的,比如我们在上一期中提到的commitSync 方法 异常解释 本次提交位移失败了,原因是消费者组已经 阅读全文
posted @ 2020-05-25 09:46 怡情养性长智 阅读(666) 评论(0) 推荐(0) 编辑
摘要: Consumer 端有个位移的概念 它和消息在分区中的位移不是一回事儿 Consumer 的消费位移,它记录了 Consumer 要消费的下一条消息的位移。这可能和你以前了解的有些出入,不过切记是下一条消息的位移,而不是目前最新消费消息的位移 Consumer 需要向 Kafka 汇报自己的位移数据 阅读全文
posted @ 2020-05-21 15:36 怡情养性长智 阅读(451) 评论(0) 推荐(0) 编辑
摘要: Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程 在 Rebalance 过程中,所有 Consumer 实例共同参与,在协调者组件的帮助下,完成订阅主题分区的分配 但是,在整个过程中,所有实例都不能消费任何消息 阅读全文
posted @ 2020-05-21 14:33 怡情养性长智 阅读(211) 评论(0) 推荐(0) 编辑
摘要: __consumer_offsets 在 Kafka 源码中有个更为正式的名字,叫位移主题,即 Offsets Topic。需要注意的是,它有两个下划线哦 将 Consumer 的位移数据作为一条条普通的 Kafka 消息,提交到 __consumer_offsets 中 可以这么说,__consu 阅读全文
posted @ 2020-05-19 11:36 怡情养性长智 阅读(274) 评论(0) 推荐(0) 编辑
摘要: Consumer Group 是 Kafka 提供的可扩展且具有容错性的消费者机制 既然是一个组,那么组内必然可以有多个消费者或消费者实例(Consumer Instance),它们共享一个公共的 ID,这个 ID 被称为 Group ID 组内的所有消费者协调在一起来消费订阅主题(Subscrib 阅读全文
posted @ 2020-05-18 11:19 怡情养性长智 阅读(367) 评论(0) 推荐(0) 编辑
摘要: Kafka 消息交付可靠性保障以及精确处理一次语义的实现 所谓的消息交付可靠性保障,是指 Kafka 对 Producer 和 Consumer 要处理的消息提供什么样的承诺。常见的承诺有以下三种: 最多一次(at most once):消息可能会丢失,但绝不会被重复发送。 至少一次(at leas 阅读全文
posted @ 2020-05-16 09:48 怡情养性长智 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 为何采用 TCP? Apache Kafka 的所有通信都是基于 TCP 的 而不是基于 HTTP 或其他协议 无论是生产者、消费者,还是 Broker 之间的通信都是如此 人们能够利用 TCP 本身提供的一些高级功能,比如多路复用请求以及同时轮询多个连接的能力 所谓的多路复用请求,即 multip 阅读全文
posted @ 2020-05-14 14:26 怡情养性长智 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 什么是拦截器? 其基本思想就是允许应用程序在不修改逻辑的情况下,动态地实现一组可插拔的事件处理逻辑链 它能够在主业务操作的前后多个时间点上插入对应的“拦截”逻辑 这些功能都是以配置拦截器类的方式动态插入到应用程序中的,故可以快速地切换不同的拦截器而不影响主程序逻辑 Kafka 拦截器借鉴了这样的设计 阅读全文
posted @ 2020-05-13 09:55 怡情养性长智 阅读(194) 评论(0) 推荐(0) 编辑