Kafka(二) —— 设计原理
Posted fonxian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka(二) —— 设计原理相关的知识,希望对你有一定的参考价值。
broker端设计架构
消息设计
/**
* 消息类
*
* @author Michael Fang
* @since 2019-11-14
*/
public class Message implements Serializable{
// 2字节
private short magic;
// 2字节
private short codecKlassOrdinal;
// 1字节
private boolean codecEnabled;
// 4字节
private CRC32 crc;
// 4字节
private String key;
// 4字节
private String value;
}
一个普通的Kafka消息对象有多大
这个Message对象被创建好实际的大小是多少?
JMM要求Java对象必须按照8Byte对齐,未对齐的部分会填充空白字节进行补齐。
外加64位JVM对象头通常由两个8Byte的word组成。
所以大小 = 16byte(对象头) + 2 + 2 + 1 + 4 + 4 + 4 +7(补充字节) = 40byte。
一个普通的Kafka消息对象就要40KB的内存空间,显然是比较大的,其中7个字节被浪费掉。
producer端设计架构
consumer端设计架构
以上是关于Kafka(二) —— 设计原理的主要内容,如果未能解决你的问题,请参考以下文章