文章详情广告pc

【独家私享】3个案例带你掌握云端上的组播技术!

董西孝
原创 2731       2017-03-10  

本文是在某实际项目在云环境及自有机房网络对接中udp的组播通讯案例和涉及到的工具,提高大家对组播/单播通讯的了解,同时可以掌握udp通讯时的测试工具及测试方法,也包含了项目在多个环境下udp通讯组播过程中的调试情景和相应工具的使用方式,具体请往下看。

云环境内组播通讯

涉及工具:multi_client、multi_server、mserver.py、mclient.py

▪ 云和自有机房间的组播/单播通讯

涉及工具:rm3test、UDPclient、UDPserver、udpclient

▪ 自有机房和券商机房间的组播/单播通讯

涉及工具:rm3test、UDPclient、UDPserver、udpclient



【单播/广播/组播的概念解析】

IP网络数据传输三种方式:单播、广播和组播,以下是对三种方式的简单介绍:

单播(Unicast)传输

在发送者和每一接收者之间实现点对点网络连接。如果一个发送者同时给多个的接收者传输相同的数据,必须相应地复制多份的相同数据包。如果有大量主机希望获得数据包的同一份拷贝时,将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。


广播(Broadcast)传输

是指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小,只在本地子网内有效,通过路由器和网络设备控制广播传输。


组播(Multicast)传输

在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。

组播解决了单播和广播方式效率低的问题。当网络中的某些用户需求特定信息时,组播源(即组播信息发送者)仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。




【云环境内组播通讯】

由于云机房内所有服务器间的通讯不支持组播传输(云环境的所有服务器都是虚拟机,为了避免组播造成的网络风暴引起多服务器的瘫痪,云环境限制了组播传输),可以联系云的技术支持,开发相应版本的服务组件,满足特定服务要求的服务期间的组播通讯。

主要的原理是服务器A上的应用服务组件a发送组播通讯,通过转换程序multi_server转换为单播通讯,从而满足云的组播限制,发送单播消息a-b到服务器B,服务器B接收到单播消息a-b后,通过转换程序multi_client将单播消息转换为组播消息,然后发送给应用程序b,反向服务器B到服务器A的通讯亦是如此。

Ps:服务器A和B要实现双向通讯时,每台服务器都要安装两个程序。

【操作】

(1)安装

linux服务器安装程序:multi_client-1.3.2-1.x86_64.rpm和multi_server-1.3.2-1.x86_64.rpm,并根据实际情况配置相应组播发送者的组播组IP和端口及接收者成员的地址和端口。

同样的道理win服务器安装程序udptomulti.exe和udptopoint.exe。 

(2)启动

登录win服务器,进入启动脚本的路径/usr/local/bin/,为启动脚本赋执行权限并启动脚本,startMultiServer、startMultiClient,并使用ps查看相应的进程是否存在。

*Ps:启动脚本时如报错 sudo:  multis_admin :command not found,需要修改文件etc/sudoers添加sudo权限:

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

(3)测试

编辑测试脚本mserver.py(发送端)和mclient.py(接收端),发送端需要配置接收者的IP和端口及消息内容,接收端需要配置发送者的IP端口,然后先在B服务器启动接收端脚本,然后再启动发送端脚本,查看接收端是否有消息收到,正常情况下,可以收到消息内容,同样的方式发向测试B的A的组播通讯是否正常。



【云和自有机房间的组播/单播通讯】

由于云机房对外防火墙的限制,导致对接交易所报盘的FENS地址时不通,所以将报盘组件部署到自有机房,此案例是介绍云和自有机房间的组播/单播通讯,本案例介绍工具rm3test和rm2ping。

【操作】
(1)安装:先创建一个hundsun账户,将rm3test的文件夹放到hundsun用户的根目录,先修改属主和属组权限,然后进入rm3test的目录并修改权限chmod +x rm3test,最后根据服务器IP和需要测试组件的端口修改配置文件deploy.xml和topic.xml,并保证这两个文件中的topic name一致:

同样的方式配置修改的rm3test的脚本和配置文件并检查组播主题名称。

(2)启动:首先登录

然后登录发送端服务器并启动脚本./rm3test,然后根据提示进行相应的选择操作:

(3)测试:当发送端和接收端都启动时,检查接收端和发送端的会话是否创建成功,如果成功,表示服务器间的网络和端口是通的,否则需求调整网络,以下是自有的截图
发送端:

接收端:

检查网络自有性正常后,发送端发消息并查收接收端的状态↓

发送端:

接收端:

*Ps:运行rm3test脚本前先清理一下rm3data目录下的缓存数据



【自有机房和客户机房间的组播/单播通讯】

由于云业务部分产品需要和客户的系统进行对接,云的产品在自有机房或云,客户的系统在自建机房,需要满足udp的组播/单播通讯,从而实现业务组件的连通性,满足产品间的对接需求。


【操作】
(1)安装:将发送端脚本UDPclient和接收端脚本UDPserver放到相应服务器的hundsun用户的根目录,先修改属主和属组权限,然后修改权限chmod +x rm3test。

*Ps:脚本不需要依赖配置文件,只需要配置发送端和接收端的服务器IP和调用的端口。

(2)启动:先登录接收端的程序./UDPclient,然后根据提示信息输入发送端的IP和端口,然后登录发送端的程序./UDPserver并根据提示信息输入发送端的IP和端口,以下是配置截图可以参考:
接收端:

发送端:

(3)测试:启动接收端和发送端并输入相应的服务器的IP和端口之后,发送端会提示需要输出组播消息,否则的话,表示网络和端口异常,可参考截图↓

然后发送端输入消息,并查看发送端和接收端的消息信息,可以参考截图
发送端:

接收端:


版权所有 侵权必究

如需转载请联系

0571-28829811

恒生技术之眼原创文章,未经授权禁止转载。详情见转载须知

联系我们

恒 生 技 术 之 眼