Kafka 的生产者优秀架构设计( 四 )
接下来我们生产者这儿技术含量比较高的一个地方 , 前面概述那儿我们看到 , 一个消息被分区以后 , 消息就会被放到一个缓存里面 , 我们看一下里面具体的细节 。 默认缓存块的大小是 32M , 这个缓存块里面有一个重要的数据结构:batches , 这个数据结构是 key-value 的结果 , key 就是消息主题的分区 , value 是一个队列 , 里面存的是发送到对应分区的批次 , Sender 线程就是把这些批次发送到服务端 。 图3生产者架构 01 生产者高级设计之自定义数据结构 生产者把批次信息用 batches 这个对象进行存储 。 如果是大家 , 大家会考虑用什么数据结构去存储批次信息? Kafka 这儿采取的方式是自定义了一个数据结构: CopyOnWriteMap 。 熟悉 Java 的同学都知道 , JUC 下面是有一个 CopyOnWriteArrayList 的数据结构的 , 但是没有 CopyOnWriteMap , 我这儿给大家解释一下 Kafka 为什么要设计这样的一个数据结构 。
1
他们存储的信息的是 key-value 的结构 , key 是分区 , value 是要存到这个分区的对应批次(批次可能有多个 , 所以用的是队列) , 故因为是 key-value 的数据结构 , 所以锁定用 Map 数据结构 。
推荐阅读
- 精灵宝可梦|《宝可梦》人称神兽版本“秃鹰娜”,伽勒尔火焰鸟的表现多优秀?
- 单机|游戏《原神》,算是挺优秀的游戏了,就是获取资源有些慢
- 狄仁杰|狄仁杰是现在的T0射手?强度稳定,技能机制优秀
- 阴阳师|外媒评有史以来最优秀的10款恐怖游戏,谁是你的童年阴影
- |被埋没的优秀大作,还没有走向热榜,却已经过时了
- 剑网3|几部优秀的游戏类文!虚拟!现实!
- fate grand order|fgo四星骑阶灰姑娘龙娘强度初评公开 骑阶金时的优秀替代打手
- 伐木工|《明日之后》萌新学院:末世优秀伐木工都是怎么炼成的?
- 三国杀|三国杀:不是神将的神将!这些武将堪称强大,每一个都是那么优秀
- 冒险游戏|一款质量优秀的动作冒险游戏