3个案例带你掌握云端上的组播技术

  本文是在某实际项目在云环境及自有机房网络对接中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)测试:当发送端和接收端都启动时,检查接收端和发送端的会话是否创建成功,如果成功,表示服务器间的网络和端口是通的,否则需求调整网络,以下是自有的截图↓

  发送端:

  接收端:

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

  发送端:

  接收端:  大连渤海医院电话是多少 http://yyk.39.net/hospital/f9a8f_registers.html

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

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

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

  【操作】

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

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

  (2)启动:先登录接收端的程序./UDPclient,然后根据提示信息输入发送端的IP和端口,然后登录发送端的程序./UDPserver并根据提示信息输入发送端的IP和端口.


猜你喜欢

转载自blog.51cto.com/14195265/2351203