知识卡片
控制通道与数据通道分离防止大数据阻塞小消息
内容
把控制信息和实际数据分成两条独立通道传输,是应对大小差异悬殊的通信内容的通用解法。控制信息通常很小、延迟敏感、需要马上送达;实际负载数据可能很大、传输耗时更长。如果把两者塞进同一条通道,一条正在传输的大数据会把后面排队的小控制消息一起拖住,导致控制信息也被迫等待,哪怕它本身处理起来很快。把两种性质不同的流量拆开走各自的通道,才能让延迟敏感的部分不被吞吐量大的部分拖累。
参考来源
- 位置:《架构之美》第12章《当集市开始构建教堂》12.3.3节《Akonadi的架构》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0247.xhtml)
- 结论依据:原文明确弃用DBUS改用IMAP作为数据传输通道的原因是"可以对数据传输过程进行控制,因此可以取消冗长的数据传输,这样数据管道就不会阻塞控制管道",DBUS被放弃正是因其"不是针对这种应用场景设计的"。
- 原始内容:之所以选择它,主要考虑到它能够对数据传输过程进行控制,因此可以取消冗长的数据传输,这样数据管道就不会阻塞控制管道……而DBUS的传输性能正是放弃它的主要原因之一,在其文档中就已经明确地说明它不是针对这种应用场景设计的。