Kafka-13.实现-

5.1 网络层

网络层是一个相当直接的NIO服务器,不再详细描述。 sendfile的实现是通过给MessageSet接口提供writeTo方法来完成的。这允许file-backed的消息集使用更高效的transferTo实现而不是进程内缓冲写入。线程模型是单个接受器线程和N个处理器线程,每个线程处理固定数量的连接。这种设计在其他地方经过了相当全面的测试,发现它易于实现且速度快。协议一直非常简单,以便将来使用其他语言实现客户端。

5.2 消息

消息由可变长度头,可变长度不透明密钥字节数组和可变长度不透明值字节数组组成。标题的格式将在下一节中介绍。保留密钥和值不透明是正确的决定:目前在序列化库上取得了很大进展,任何特定的选择都不太适合所有用途。毋庸置疑,使用Kafka的特定应用程序可能会强制使用特定的序列化类型作为其使用的一部分。 RecordBatch接口只是消息的迭代器,具有用于批量读取和写入NIO通道的专用方法。

5.3 消息格式

消息(即记录)始终批量写入。 消息的批次的专业术语是一个记录批次,而记录批次包含一个或多个记录。 在退化的情况下,我们可能有一个包含单个记录的记录批次。 记录批次和记录都有自己的头部。 每种格式如下所述。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,135评论 1 32
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,404评论 0 4
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,322评论 0 34
  • 转自 http://www.ibm.com/developerworks/cn/education/java/j-...
    抓兔子的猫阅读 2,338评论 0 22
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,801评论 0 10