高速互联网络 -------------- 高速互联网络的作用是在多个节点之间交换大量数据。OushuDB 高速互联网络基于 UDP 协议。大家可能会疑问为什么 OushuDB 不使用 TCP。其实 OushuDB 同时支持 TCP 和 UDP 两种协议,TCP 协议实现早于 UDP 协议。但是因为我们遇到了 TCP 不能很好解决的高连接数并发问题,我们才开发了基于 UDP 的协议。图4展示了一个高速互联网络的例子。 .. image:: ../_static/arch-highspeed-network.png 图4. 高速互联网络 例子中各个节点上的执行器进程形成了一个数据交换的流水线。假设每个节点上有 1000 个进程。有 1000 个节点,这些进程需要相互交互,每个节点上就会有上百万个连接。TCP 是没办法高效地支持这么多的连接数的。所以我们开发了基于 UDP 的互联协议。针对 UDP 传输,操作系统是不能保证可靠性的,并且不能保证是有序传递的。所以我们的设计需要保证和支持如下特性: * 可靠性:能够保证在丢包的情况下,重传丢失的包 * 有序性:保证包传递给接受者的最终有序性 * 流量控制:如果不控制发送者的速度,接收者可能会被淹没,甚至会导致整个网络性能急剧下降 * 性能和可扩展性:性能和可扩展性是我们需要解决 TCP 问题的初衷 可支持多种平台