网格研究之百人会议八风不动
E-Mail: bfbd@sina.com 或 bfbd@53941.com
关于蜂巢模型的相关知识,请参考拙作《网格研究之蜂巢模型》。
一、对QQ"多人超级语音"功能的技术分析 QQ的"多人超级语音"功能需要由其中一个人做主持人,其他人参与聊天。当主持人的机器配置较低,而参与聊天的人数又比较多时,聊天性能明显下降,更换高配置机器做主持人后,性能得到明显改善。
根据以上情况分析,洒家认为QQ采用的是一人建主机,多人参与的技术,也就是类似于星际争霸游戏的多人联网机制。在此机制中,建主的机器(主持人)成为一台服务器,其他机器成为客户机,本质上还是C/S结构。这种结构的最大问题是客户机数量受到服务器性能的限制,如果要增加客户机的数量,就必须要有硬件配置和网络配置都非常高的服务器主机的支持。
网格技术的本质就是让网络上的所有机器平等相处,随意扩充。网络的容量扩充不需要依赖于个别机器的硬件和网络环境的限制。鉴于此,洒家考虑利用蜂巢模型建立容量更大且不受主机硬件和网络性能限制的多人语音聊天功能,以支持百人级别的网络语音会议。
二、基于网格的设计 1、基本功能的实现:参与会议者之间要建立一个基于非对称蜂巢模型的网络。在此网络中,每个人的语音信息都借助于蜂巢网的指令发布功能向其他节点发布。这样,任意一个节点的语音信息都不需要经过服务器的中转而直接散布给蜂巢中的所有节点。
2、非对称的作用:非对称的含义就是根据机器的硬件配置和网络性能决定与本节点直接相连的节点数量。例如,一台硬件性能高且网络状况好的机器可以同时与5~15台机器建立TCP连接并接收和转发其语音数据。而一台性能差的机器则只能与两台机器建立TCP连接并完成接收和转发语音数据的功能。因此,非对称配置可以充分发挥网格中所有节点的最大潜能,实现网格性能的最大化。
3、传输数据量的最小化:蜂巢模型的指令传输机制有一次指令反馈的过程。例如:A节点将指令发送给与A节点相邻近的B、C、D节点后,B、C、D节点又将指令转发给所有与自己相邻近的节点,当然,A节点也包括在内。因此,A节点又收到来自B、C、D节点的相同指令。但A节点通过对指令编号的自查后发现这条指令是自己曾经发出的指令,于是停止再次转发。这里,指令的传递是由冗余的。对于数据量小的简单指令来说,传递中的冗余不会对网络性能造成太大影响。但对于数据量巨大的语音和视频信息来说,一次重复传递的代价将非常巨大,以至于严重影响网格的性能。为此,可以使用询问指令来决定是否进行大数据的传输。例如:A节点首先给相邻的B、C、D节点发送一条询问指令,根据B、C、D节点的回复信息决定是否将大数据量的语音或视频信息发送给B、C、D节点,如果询问指令在预定的时间内没有得到肯定的回复,就放弃大数据包的转发。其他节点在转发大数据包之前的操作过程也与A节点相同。这样,就很好地避免了大数据包的冗余传递,使原始节点发出的语音或视频信息可以顺利地扩散到网格中的所有节点上。