
吃透Kafka
文章平均质量分 92
kafka系列,从架构到源码,全方位介绍
吃透Java
专注Java技术,每天都要努力一点点
展开
-
吃透Kafka七:Producer NIO 网络模型
主要讲述以下两个问题:Producer 的大概网络模型,与 Java NIO 模型之间关系;Producer 整体流程及其整体流程详解。Producer 的网络模型KafkaProducer 通过 Sender 进行相应的 IO 操作,而 Sender 又调用 NetworkClient 来进行 IO 操作,NetworkClient 底层是对 Java NIO 进行相应的封装,其网络模型如下图所示从图中可以看出,Sender 为最上层的接口,即调用层,Sender 调用 NetworkCl原创 2022-03-19 19:49:49 · 449 阅读 · 0 评论 -
吃透Kafka六:topic 创建过程
本文主要讲述一个 topic 的创建过程,从 topic 是如何创建到 topic 真正创建成功的中间详细过程,文章主要内容可以分为以下几个部分:1,topic 是如何创建的?命令行创建;Producer 发送数据时,自动创建;2,topic创建时,replicas 是如何分配的?指定 replicas 的分配;自动 replicas 分配;3,replicas 更新到 zk 后,底层如何创建一个 topic?创建 Partition 对象及状态更新;创建 Partition 的原创 2022-03-15 21:51:04 · 8293 阅读 · 1 评论 -
吃透Kafka五:Producer Metadata 更新机制
在上一篇文章中,已经介绍了 Producer 的发送模型,Producer dosend() 方法中的第一步,就是获取相关的 topic 的 metadata,但在上篇中并没有深入展开,因为这部分的内容比较多,所以本文单独一篇文章进行介绍,本文主要来讲述以下三个问题:metadata 内容是什么。Producer 更新 metadata 的流程。Producer 在什么情况下会去更新 metadata。Metadata 内容Metadata 信息的内容可以通过源码看明白:// 这个类被 cl原创 2022-03-10 21:31:05 · 3489 阅读 · 0 评论 -
吃透Kafka四:kafka producer源码详细分析
一,kafka producer基本使用kafka生产则代码如下: public static void main(String[] args) throws ExecutionException, InterruptedException { Properties conf = new Properties(); conf.setProperty(ProducerConfig.ACKS_CONFIG, "0"); conf.setProperty(Pr原创 2021-12-08 22:43:52 · 2154 阅读 · 0 评论 -
吃透Kafka三:详细分析生产和消费对消息的保障
一,kafka消息传递的三种语义At most once:最多一次,消息可能会丢失,但不会重复。At least once:最少一次,消息不会丢失,可能会重复。Exactly once:只且一次,消息不丢失不重复,只且消费一次。我们使用kafka肯定是希望Exactly once,要保证Exactly once效率上面需要做出一定的牺牲,那么是要Exactly once还是效率就要结合具体业务来分析了。但是整体的消息投递语义需要 Producer 端和 Consumer 端两者来保证。二,Pr原创 2021-12-03 16:58:21 · 2061 阅读 · 0 评论 -
吃透Kafka二:kafka高性能之顺序IO、页缓存、零拷贝
大家都知道Kafka是将数据存储于磁盘的,而磁盘读写性能往往很差,但Kafka官方测试其数据读写速率能达到600M/s,那么为什么Kafka性能会这么高/为什么这么快呢?首先producer往broker发送消息时,采用batch的方式即批量而非一条一条的发送,这种方式可以有效降低网络IO的请求次数,提升性能。此外这些批次消息会"暂存"在缓冲池中,避免频繁的GC问题。批量发送的消息可以进行压缩并且传输的时候可以进行高效的序列化,从而减少数据大小。Kafka除了在producer发送消息方面做了很多优化,原创 2021-11-16 12:38:27 · 4235 阅读 · 0 评论 -
吃透Kafka一:Kafka架构剖析
一,kafka简介Kafka 是一种分布式的,基于发布 / 订阅的消息系统。主要设计目标如下:以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒 100K 条以上消息的传输。支持 Kafka Server 间的消息分区,及分布式消费,同时保证每个 Partition 内的消息顺序传输。同时支持离线数据处理和实时数据处理。Scale out:支持在线水平扩展。kafka的使用原创 2021-11-13 21:10:52 · 2588 阅读 · 0 评论