七、Kafka源码分析之网络通信

1、生产者网络设计

架构设计图

2、生产者消息缓存机制

1、RecordAccumulator

将消息缓存到RecordAccumulator收集器中, 最后判断是否要发送。这个加入消息收集器,首先得从 Deque 里找到自己的目标分区,如果没有就新建一个批量消息 Deque 加进入

2、消息发送时机

如果达到发送阈值(批次发送的条件为:缓冲区数据大小达到 batch.size 或者 linger.ms 达到上限,哪个先达到就算哪个),唤醒Sender线程,

NetWorkClient 将 batch record 转换成 request client 的发送消息体, 并将待发送的数据按 【Broker Id <=> List】的数据进行归类

与服务端不同的 Broker 建立网络连接,将对应 Broker 待发送的消息 List 发送出去。

9)、

经过几轮跳转

3、Kafka通讯组件解析

相关推荐
一路向北North7 小时前
使用reactor-rabbitmq库监听Rabbitmq
分布式·rabbitmq·ruby
Amy1870211182312 小时前
赋能低压分布式光伏“四可”建设,筑牢电网安全新防线
分布式
June bug16 小时前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
阿波罗.201217 小时前
Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
分布式·zookeeper
Bug退退退12318 小时前
RabbitMQ 工作模式
java·分布式·rabbitmq
weixin_4383354018 小时前
分布式锁实现方式:基于Redis的分布式锁实现(Spring Boot + Redis)
数据库·redis·分布式
危险、1 天前
RabbitMQ 通过HTTP API删除队列命令
分布式·http·rabbitmq
周某某~1 天前
windows安装RabbitMQ
分布式·rabbitmq
Bug退退退1231 天前
RabbitMQ 高级特性之消息确认
java·分布式·rabbitmq
一只程序汪1 天前
【如何实现分布式压测中间件】
分布式·中间件