Kafka
文章平均质量分 72
左瞧瞧右看看
这个作者很懒,什么都没留下…
展开
-
Kafka 消费者:消费者轮询的准备工作(十五)
Kafka 消费者:消费者轮询的准备工作(十五)原创 2022-12-30 11:48:25 · 400 阅读 · 0 评论 -
Kafka 消费者:案例代码、订阅方式和状态解析(十四)
Kafka 消费者案例代码,订阅方式和状态解析原创 2022-12-03 16:56:10 · 934 阅读 · 0 评论 -
Kafka 服务端:请求处理(十三)
KafkaServer 会创建请求处理线程池 KafkaRequestHandlerPool,在请求处理线程池中会创建并启动多个请求处理线程 KafkaRequestHandlerrequestHandlerPool = new KafkaRequestHandlerPool(config.brokerId, socketServer.requestChannel, apis, config.numIoThreads)SocketServer 中全局的请求通道会传递给每个请求处理线程,这样就能共同消原创 2022-11-29 08:53:28 · 175 阅读 · 0 评论 -
Kafka 服务端:RequestChannel 请求队列和响应队列(十二)
在 KafkaServer 中,会将 SocketServer 的请求通道传给 Kafka 请求处理线程 KafkaRequestHandler 和 KafkaApis请求通道就是处理器与请求处理线程和 KafkaApis 交换数据的地方如果处理器往请求通道添加请求,请求处理器线程和 KafkaApis 都可以获取到请求通道中的请求如果请求处理线程和 KafkaApis 往请求通达添加响应,处理器也可以从请求通道获取响应处理器会将客户端发送的请求放到全局的请求队列(requestQueu原创 2022-11-28 13:09:51 · 589 阅读 · 0 评论 -
Kafka 服务端:轮询处理网络请求(十一)
接收器采用 Round-Robin 也就是轮询的方式分配客户端的 SocketChannel 给多个处理器,每个处理器都会有多个 SocketChannel服务端的处理器会为 SocketChannel 创建一个 Kafka 通道,configureNewConnections() 会为 SocketChannel 注册读事件,创建 Kafka 通道,并绑定到选择键上/** * Thread that processes all requests from a single connectio原创 2022-11-27 14:06:08 · 777 阅读 · 0 评论 -
Kafka 服务端:接收客户端的连接(十)
Kafka 是服务端的启动类,启动类会启动 KafkaServerStartable.startup() 方法来调用 KafkaServer.startup() 启动服务KafkaServer 是 kafka 服务端的主类,涉及网络层的服务组件是 SocketServer、KafkaApis、KafkaRequestHandlerPool/** * Represents the lifecycle of a single Kafka broker. Handles all functional原创 2022-11-26 13:45:56 · 953 阅读 · 0 评论 -
Kafka 生产者:旧生产者客户端代码解析(九)
早期旧版本的客户端采用 Scala 编写,功能比较简单,没有采用高性能的 Reactor 模式实现,也没有新版本中的回调功能目录一、旧版消费者使用二、同步/异步 模式三、事件处理器处理客户端发送的消息四、对消息集按照节点和分区进行整理五、生产者使用阻塞通道发送请求一、旧版消费者使用Properties props = new Properties();props.put("metadata.broker.list", "localhost:9092");props.put("seriali原创 2022-11-25 11:15:26 · 186 阅读 · 0 评论 -
Kafka 生产者:选择器处理网络请求(八)
涉及网络通信时,一般使用选择器模型,选择器使用 Java NIO 异步非阻塞方式管理连接和读写请求,好处就是单个线程就能管理多个网络连接通道,生产者只需要使用一个选择器就能同时和 Kafka 集群的多个服务端进行网络通信目录一、Java NIO 的一些概念二、客户端连接服务端并建立 Kafka 通道三、Kafka 通道和网络传输层四、Kafka 通道上的读写操作五、选择器的轮询一、Java NIO 的一些概念SocketChannel 客户端网络连接通道,底层的字节数据读写都发生在通道上,通原创 2022-11-19 14:57:37 · 365 阅读 · 0 评论 -
Kafka 生产者:客户端网络连接对象(七)
NetworkClient 管理了客户端和服务端之间的网络通信,包括建立、发送客户端请求、读取客户端响应在 Sender 线程中主要调用 NetworkClient 的几个方法,前两个属于准备阶段,第三个才会发送客户端请求ready():从 RecordAccumulator 获取准备完毕的节点,并连接所有准备好的节点send():为每个节点创建一个客户端请求后存储到节点对应的通道中poll():轮询动作会真正执行网络请求,包括发送请求、处理响应准备发送客户端请求ready() 首先会原创 2022-11-18 12:20:35 · 518 阅读 · 0 评论 -
Kafka 生产者:消息发送线程解析(六)
追加消息到 RecordAccumulator 的时候会根据对应的 topic 分区信息获取队列,然后将消息放到 batches 集合中,最后使用一个 Sender 线程迭代 batches 的每个分区Sender 发送线程的两种发送方式按照分区直接发送:有多少个分区就要发送多少次请求按照分区的目标节点发送:把属于同一个节点的所有分区放在一起发送,减少网络开销Sender 流程消息被 RecordAccumulator 按照分区追加到队列的最后一个批记录中Sender 通过 rea原创 2022-11-17 10:33:36 · 445 阅读 · 0 评论 -
Kafka 生产者:发送消息代码解析(五)
代码使用的是 0.10.1.0 版本的 Kafka examples Producer 代码代码在源码包的 kafka.examples.Producer 中Kafka Producer 代码public class Producer extends Thread { // 发送的数据是 K V 结构,对应上类型 private final KafkaProducer<Integer, String> producer; private final String原创 2022-11-16 12:56:32 · 454 阅读 · 0 评论 -
Kafka 生产者:发送消息的组件(四)
生产者和消费者客户端与服务端完成一次网络请求通信的具体步骤生产者客户端应用程序产生消息客户端连接对象将消息包装到请求中,发送给服务端服务端连接对象负责接收请求,并将消息以文件形式存储服务端返回响应结果给生产者客户端消费者客户端应用程序消费消息客户端连接对象将消息信息也包装到请求中,发送给服务端服务端从文件存储系统中取出消息服务端返回响应结果给消费者客户端客户端将响应结果还原成消息,并开始处理消息 生产者发送消息并不是直接发给服务端,而是先在客户端把消息放入队列里面,然后由一个消原创 2022-11-16 12:55:29 · 161 阅读 · 0 评论 -
Kafka 入门:源码环境准备(三)
Kafka 源码环境准备原创 2022-11-15 00:23:47 · 263 阅读 · 0 评论 -
Kafka 入门:基础概念(二)
在 0.10 版本之前,Kafka 仅仅只是一个消息系统,主要处理等问题。在 0.10 版本之后,Kafka 提供了连接器和流处理的能力,从分布式的消息系统逐渐成为一个。原创 2022-11-14 14:28:56 · 158 阅读 · 0 评论 -
Kafka 入门:流式数据平台(一)
Kafka 入门:流式数据平台(一)原创 2022-11-13 18:36:15 · 413 阅读 · 0 评论