写点什么

LAXCUS 大数据集群操作系统:一个分布式分时共享 E 级系统软件(三)

用户头像
陈泽云
关注
发布于: 2020 年 10 月 19 日
LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(三)

第二章网络通信

Laxcus 大数据集群操作系统网络建立在 TCP/IP 网络之上。从 1.x 版本开始,同时支持 IPv4 和 IPv6 两种网络地址。网络通信是 Laxcus 体系里最基础和重要的一环,为了能够利用有限的网络资源,获得最大化的使用效率,我们根据大数据网络环境的特点,设计了一套专属网络通信协议,以及在此协议基础上实现的多套网络通信方案,它们共同组成了 Laxcus 大数据集群的网络通信基础。本章将以 TCP/IP 协议为起点,介绍与网络通信有关的各个组成部分。

2.1 FIXP 协议

Laxcus 采用 FIXP 协议通信。FIXP 协议全称是“自由信息交换协议(Free Information  eXchange Protocol)”协议。这是一套建立在 TCP/IP 协议之上的应用层二进制通信协议。二进制字序采用小头编码(Little  Endian)。协议具有平台独立、上下文无关、结构简单、数据尺寸小等特点。

2.1.1 协议结构

如图 2.1 所示,协议结构布局按排列顺序由三部分组成:命令、消息、数据实体。命令分为两种:请求和应答,命令的作用是说明本次通信的基本属性。每次通信由发起方发送请求命令,受理方返回应答命令。消息在命令之后出现,消息在一次通信协议中允许出现任意多个,消息中携带本次通信需要的多类附属信息。消息之间是衔接的,彼此无分隔标记,通过消息头中的标记长度加以区别。在最后面是数据实体部分,数据实体包含本次通信所要传递的内容。这些内容可以是任意格式的,如音频、图像、数据库数据、各种元数据等。数据实体是一个可选部分,是否存在会在消息中注明。比如通信发起方通常是不需要传递数据实体的。

图 2.1 FIXP 协议结构

2.1.2 命令结构

如图 2.2,命令是一个 56 位(7 字节)的数字序列。第一个 8 位的标识的作用是区分当前是请求命令或者应答命令。之后的协议版本号占用 16 位,协议版本号是可变的,不同的协议版本号代表不同的协议格式,在应用中分别有不同的解释。目前协议的最新版本号是 256(0x100)。 命令的主要区别在第 24 至 40 位,请求命令需要提供两个 8 位的主命令和从命令,说明本次操作的作用目标,应答命令返回一个 16 位的应答码,确认本次请求是接受、还是因为其它原因拒绝。最后是 16 位的消息成员数,理论上,一次 FIXP 通信最多可以携带 65535 个消息。


图 2.2 命令(请求/应答)结构

2.1.3 消息结构

如图 2.3,消息是一个不定长的数据结构,由键、类型、参数长度、参数组成。键占用 16 位,每个键都有一个固定的定义,键理论上有 65536 个,目前已经使用了大约 100 个。类型占用 4 位,说明后续的参数属性,包括布尔、短整数、整型、长整型,单浮点、双浮点、二进制数组、字符串、压缩二进制数组、压缩字符串。参数长度是一个 12 位的值,参数的实际尺寸由参数长度说明。需要特别指出的是,数值型参数具有字长压缩能力,例如一个整型数 0x20,按照计算机字长标准需要占用 4 个字节,但是实际尺寸只有 1 个字节。这时参数长度会说明为 1,忽略前面 3 个 0。如本章开篇所述,数值型参数遵循小字头格式(Little Endian)。

图 2.3 消息结构

2.2 通信方案

我们在 FIXP 协议基础上提供了四种通信方案。这些通信方案将根据所在环境条件和任务的不同需求,实现有区别的通信,以达到节约网络流量,降低运行负载,提高计算效率的目的。

2.2.1 TCP 通信

TCP 通信建立在 TCP/IP 协议的 TCP 堆栈之上,主要用来处理持续性高的、流量大的数据传输。如数据块的分发,以及 Diffuse/Converge 分布计算传递的数据等。在 Laxcus 大数据集群中,它们是主要的通信流量,占用了大量的网络带宽,严重的时候会发生网络阻塞,影响到集群正常运行。为了避免这种现象,TCP 通信会受到流量控制机制的限制,通过采用降低数据传输流量的办法,腾出一部分网络带宽,来保证其它通信业务的数据传输和集群的稳定运行。

2.2.2 UDP 通信

UDP 通信建立在 TCP/IP 协议的 UDP 堆栈之上,主要针对于非持续、可靠性不高、流量小的数据传输。在 Laxcus 大数据集群中,基于 UDP 传输的 FIXP 协议包,数据尺寸普遍介于 20 至 300 字节之间,小于一个 IP 包的最大传输单元(MTU),其中以网络监控包为主,测试节点状态的心跳包是最常用一种。目前 UDP 通信是 Laxcus 大数据集群使用频率最高的通信方案。

2.2.3 KEEP UDP 通信

UDP 的优点在于对计算机的资源占用率低,缺点是数据通信不稳定,存在丢包现象。TCP 恰恰相反,可以提供稳定的数据通信通道,但是对 TCP/IP 堆栈的资源占用率高。在 Laxcus 大数据集群里,存在着大量即需要保持稳定通信,又希望采用 UDP 的网络通信业务。如何在拥有二者优点的情况下又避免它们的缺点,答案就是“KEEP UDP(可持续的包通信)”。KEEP UDP 是我们在 TCP 和 UDP 之间,为 Laxcus 大数据集群网络通信设计的一种过渡方案,通过在 UDP 基础上模拟 TCP 通信过程,为 UDP 数据提供稳定的通信保证。这个方案的实质就是将原来在 TCP/IP 堆栈上进行的包的分组和重组的工作,转移到 Laxcus 控制的工作线程上去执行。在减轻 TCP/IP 堆栈压力的同时,还能够根据当时需求,自由定义一些对包的特殊规则。目前 KEEP UDP 主要用来执行 RPC 处理和传输网络日志,这些都是数据流量不大但是要求可靠传输的通信业务。

2.2.4 RPC 通信

RPC(远程进程调用)已经出现很长时间,是一种非常优秀的网络通信方案,至今仍在被广泛使用。它通过隐藏网络两端通信的方式,使网络上两台计算机之间进行的网络调用类似本地 API 调用的过程。这样就极大地简化了开发者对网络编程的难度,提高了工作效率,减少了出错的机会。

Laxcus 包含了对 RPC 的实现,它的通信建立在 TCP 和 KEEP UDP 通信基础之上,通过在本地嵌入接口和对开发者屏蔽网络流程,实现 RPC 调用处理。目前 Laxcus 大数据集群里许多复杂的、安全度高的网络通信都是采用 RPC 方案执行。

2.3 通信检测

集群运行过程中,发生的很多故障都与网络和网络设备有关。根据统计,这些故障大致包括:线路损坏、插口松动、电磁影响、网络阻塞、网络设备损坏。其中有些是硬件故障,有些是暂时性的网络故障。判断故障的有效手段是通过发送 ICMP 包来检测网络可达。这项测试可以由单机处理,必要时需要多个节点对一个地址共同测试,然后汇总测试结果得出答案。系统将判断故障是暂时性的网络问题或是不可恢复的物理故障。如果问题严重,将报告给系统管理员,通过人工处理来解决故障问题。通信检测在所有节点都会执行,是体现集群弱中心化和自维持能力的必要手段。

2.4 通信服务器

通信服务器是节点管理下的一个工作模块,采用 FIXP 协议通信。通信服务器在启动时分别绑定 TCP/UDP 两个模式的监听套接字(SOCKET),套接字参数在配置文件中定义。根据系统的规定,工作节点的套接字地址在启动时由系统随机选择,管理节点的套接字必须有固定的 IP 地址和端口。因为只有管理节点的地址固定,工作节点才能够在网络上找到管理节点。通信服务器不主动发起通信工作,只接收外部发来的命令。在收到命令后,分派给下属的任务线程完成具体的任务处理。通信服务器还承担网络通信安全的职能,确保通信过程中,网络两端传输的数据是正确和可信任的。通信服务器的安全管理是一个可选项,是否使用由用户决定,在配置文件中设置。

2.5 全局时间

在网络通信过程中,为了能够辨别各节点之间数据处理的先后顺序,需要一个统一的参数来标识它们当时所处的位置。这个参数被称为全局时间,也称为主时钟或者时间轴。全局时间以集群中 Top Master 状态节点的操作系统时间为标准,其它所有节点必须遵从这个时间定义,与 Top Master 节点保持一致。全局时间在节点启动时向所属上级管理节点申请和获取,在本地操作系统上设置,误差要求不超过 1 秒。全局时间目前已经使用在网络日志、网络计算,以及主块冲突、数据冗灾处理中。

2.6 流量控制

在造成集群运行不稳定的因素中,有相当大一部分原因是网络传输流量过大所致,如果可以控制每项数据业务的通信流量,让它们以公平和合理的速率传输数据,对于改善集群运行的不稳定状况,将有很大促进作用。Laxcus 采用“等/停传输机制”来控制每项工作的网络传输速率,这是一项 TCP/IP 应用层的技术,是“Invoke/Produce”任务调度模型的一部分,具有实时判断网络流量和错误重传的能力。可以根据当时的网络状况,选择合适的传输速率去传输数据,如果丢包率增加,表明当前网络负载过重,就会延迟数据发送间隔。流量控制对上层是透明的,不用对它做任何管理控制措施。目前 Laxcus 大数据集群所有数据处理业务中,网络通信都默认使用“等/停传输机制”。根据我们对各种数据流量的检测显示,当网络通信启用“等/停传输机制”后,网络传输速率是未启用前的 70% - 84%左右,但是网络在面对重负载的数据通信时,它的适应能力增强了。所以,总体而言,这对提高系统稳定性是有利的。


发布于: 2020 年 10 月 19 日阅读数: 32
用户头像

陈泽云

关注

陈泽云 2020.10.09 加入

LAXCUS人工智能技术实验室系统工作师,八年分布系统研发经历,目前参与LAXCUS大数据集群操作系统的集群管理模块和小样本深度学习(DFL3)的开发工作.

评论

发布
暂无评论
LAXCUS大数据集群操作系统:一个分布式分时共享E级系统软件(三)