1.常量与变量的定义
1.1. 常量定义部分:
| 定义的常量 | 数值 | 注释 | 含义 |
|---|---|---|---|
| VALSTART | 0 | val offset in acct | value的地址(kvi+VALSTART) |
| KEYSTART | 1 | key offset in acct | key的地址(kvi+KEYSTART) |
| PARTITION | 2 | partition offset in acct | partition的地址(kvi+PARTITION) |
| VALLEN | 3 | length of value | value的长度(kvi+VALLEN) |
| NMETA | 4 | num meta ints | 元数据的数量 |
| METASIZE | 16 | size in bytes | 一个元数据块包括四个int类型的元数据,大小为16个字节 |
1.2. 变量定义部分:
| 定义的变量 | 注释 | 含义 |
|---|---|---|
| 环形缓冲区 | ||
| byte[] kvbuffer | main output buffer | 环形缓冲区数组 |
| int bufferRemaining | / | 溢写阈值内的缓冲区剩余空间 |
| int spiller | / | 溢写的百分比 |
| int softLimit | / | 进行溢写阈值(spiller*kvbuffer.length) |
| 元数据 | ||
| IntBuffer kvmeta | metadata overlay on backing store | 键值对的元数据 |
| int kvstart | marks origin of spill metadata | 指向元数据块中的第一份元数据 |
| int kvend | marks end of spill metadata | 指向元数据块中的最后一块元数据 |
| int kvindex | marks end of fully serialized records | 指向下次写入元数据的地址 |
| 键值对 | ||
| int equator | marks origin of meta/serialization | 元数据与键值对的分界线 |
| int bufstart | marks beginning of spill | 键值对开始的地址(溢写开始的地址) |
| int bufend | marks beginning of collectable | 键值对结束的地址(溢写结束,收集开始的地址) |
| int bufmark | marks end of record | 当前键值对的结束地址 |
| int bufindex | marks end of collected | 下一份kv数据对的写入地址 |
| int bufvoid | marks the point where we should stop reading at the end of the buffer | 写出数据的截至地址 kvbuffer.length |
2. 示意图

