重组器(Reassembler)
重组器的核心目标是将可能乱序、重复或缺失的数据段按照原始顺序重组成连续的字节流,同时有效管理内存使用。
1. 三类数据处理策略
重组器面对三种不同情况的数据需采取不同策略:
-
立即处理的数据:当收到的数据正好是流中下一个期望的字节时,直接写入ByteStream,不需要在重组器中存储。
-
暂存的数据:已接收但因缺失前面部分而无法写入的数据,这部分数据需要在重组器内部暂存,等到缺失的部分到达后再一起写入。
-
丢弃的数据:超出当前容量限制的数据,为了控制内存使用,这部分数据直接丢弃,不进行处理。
2. 内存使用限制
重组器设计的一个关键点是严格限制内存使用。总容量限制同时约束:
- ByteStream中已组装但未读取的字节数
- 重组器中存储的未组装字节数
这两部分的总和不能超过设定的容量上限,确保了无论网络条件如何,内存使用都有上限。