标签:数组 nod 贵的 分区 均衡 客户 架构 取消 stl
使用Kafka也有一段时间了, 主要还是作为生产者推送数据到其它业务方, 作为生产者编写代码并不多, 因为客户端内部做了太多的处理, 同时也不太容易达到性能瓶颈, 大多情况也只是改变一下发送消息的路由策略. 即便如此面对众多参数如果不理解一条消息从发送到Kafka集群中间经历什么, 那么设置这些参数的时候可能达不到最初的目的.
注: 以下内容是学习<<图解 Kafka 之实战指南>>记录的笔记, 强烈建议大家读下原文, 可以到掘金搜索
生产者拦截器 -> 序列化器 -> 分区器
到达消息累加器RecordAccumulator.
max.block.ms
控制双端队列
, 写入消息到尾部, Sender从头部读. 队列内容是ProducerBatch<分区, Deque<ProducerBatch>>
转换为 <Node, List<ProducerBatch>>
. Node表示kafka节点<Node, List<ProducerBatch>>
转换为 <Node, Request>
形式, 然后把Request发往各个NodeMap<NodeId, Deque>
, 主要缓存了已经发出去但是还没有收到响应的请求. 这个Deque的配置参数是max.in.flight.requests. per. connection(默认为5)
. 通过比较配置参数和实际Deque的大小来判断是否还能再向这个连接发送请求, 除非缓存的请求收到响应从队列移除以下公众号是我个人运营的, 初衷是可以适当备份自己的笔记, 之后想可能会帮到更多的人. 发文时间不固定, 尽可能每篇文章直奔主题, 不去占用大家宝贵的时间. 如觉得对你有用, 欢迎关注交流.
标签:数组 nod 贵的 分区 均衡 客户 架构 取消 stl
原文地址:https://www.cnblogs.com/zlone/p/12064838.html