端游广播机制在阿里云的配置方案

简介: 原作者:阿里云解决方案架构师,爅冉。对于重度网络通信依赖的端游,怎样在阿里云上配置UDP广播机制,可以在本文中找到答案。

1. 客户需求场景

对于传统端游来说,后台服务端架构通常都很复杂,各个服务器之间需要进行重度的网络通信。如果采用单播通信,就需要服务器随时知晓其他服务器的变动,整个架构往往变得十分笨重。出于对开发灵活性和节省主机计算资源的考虑,目前很多端游各个服务器之间仍然在使用udp广播通信。

2. 基本原理

在目前阿里云的经典网络和VPC网络环境下,由于底层交换机使用了三层交换机,因此不支持二层组播和广播。为了满足客户组播和广播的需求,可以使用单播的方式模拟组播。基本实现原理如下图:

b697ea3f7f133ee0a5656ac4d8f7d38a2e48dc8e

3. Windows环境配置

Windows环境下,多播工具包括服务端udptopoint和客户端udptomulti,服务端安装在需要发送多播数据包的ECS上,客户端安装在需要接收多播数据包的ECS上。

3.1 安装

Windows多播代理程序通过安装包来安装。双击udptopoint-1.3.1.exe和udptomulti-1.1.1.exe安装包程序来安装,按照提示来安装。安安装目录:C:\udptopoint 和 C:\udptomulti。

4638bed9b14396847bbae4e188aeb2b53f0854fc

f5ef3dbe0194ce8a3835c4b9059b17c192de947b

安装说明:

1.     在安装过程中如果检测到winpcap已经安装,直接取消安装便可,也可继续覆盖安装。

2.     如果没有安装winpcap,则需要点击安装,如下图所示:

d5694d1a07f076c63e44c009087f9b66d048d754

3.2 配置

3.2.1 服务端配置

当组播工具安装成功后,运行udptopoint.exe,将会自动执行多播转单播的后台服务,在任务管理器->服务 里可以看到当前服务运行状态。

服务端需要配置多播组以及添加对应的多播成员。主要通过配置文件的形式进行配置。配置文件名称为server_cfg.json.txt。配置文件的格式如下所示:

服务端配置文件格式:

{

  "multi_group_array":[

    {

      "group_ip":"224.2.2.1",

      "group_port":4321,

      "server_port":4322,

      "member_array":[

        "172.16.1.1",

        "172.16.1.2",

        "172.16.1.3"

      ]

    }

  ]

}

说明:group_ip:多播组IP。

group_port:多播组端口,即在服务器端发起的多播端口。

server_port:代理程序的通信端口,即将多播转换成单播使用的端口。

member_array:多播组的成员IP。

服务端辅助工具——send_reload_point_cfg:

目前支持的命令为reload和list命令。

reload命令作用:重新加载配置文件。每当重新修改配置文件后,都需要执行该命令重新加载配置文件。

list命令作用:显示当前代理系统的收发包情况。

使用方法:

终端输入reload或者list命令。

79e51cd91a598d1d6941bdb2e5c00ccdc0a83e00

3.2.2  客户端配置

当组播工具安装成功后,运行udptomulti.exe,将会自动执行多播转单播的后台服务,在任务管理器->服务 里可以看到当前服务运行状态。

客户端需要配置加入的多播组信息,主要通过配置文件中的json数组进行配置,配置文件名称为client_cfg.json.txt。配置文件的格式如下:

客户端配置文件格式:

{

    "multi_server_info_array":[

    {

    "server_ip":"10.65.251.14",

    "server_port":6000,

        "group_ip":"192.168.1.255",

        "group_port":6001

    }

  ]

}

说明:

  server_ip: 发送多播数据的源IP。

  server_port: 代理程序的通信端口,即单播使用的端口。

  group_ip: 多播组IP。即在接受消息后如果需要模拟的多播组IP。

  group_port: 应用程序的通信端口。即在接收消息后需要模拟的多播组端口。

客户端辅助工具——send_reload_multi_cfg:

目前支持的命令为reload和list命令。

reload命令作用:重新加载配置文件。每当重新修改配置文件后,都需要执行该命令重新加载配置文件。

List命令作用:显示当前代理系统的收发包情况。

4. Linux环境配置

4.1 安装

Linux用户组播工具服务器和客户端都打包成了一个主RPM包。目前提供的rpm包是:multicast_usr_tool-1.0.1-1.x86_64.rpm, 版本为1.0.1。安装方法如下:

sudo rpm -ivh multicast_usr_tool-1.0.3-1.el6.x86_64.rpm

可用rpm -q multicast_usr_tool-1.0.3-1.el6.x86_64 查询rpm包是否安装成功。成功安装rpm包后,会自动将用户态组播工具的服务器端程序和客户端程序安装到系统中。

4.2 配置

组播工具安装成功后,客户端启动程序安装目录为/usr/local/bin,配置文件目录为/etc/multicast/

首先利用 cd /usr/local/bin 命令进入到客户端所在目录,

执行source ~/.bashrc

启动: 

   客户端:

手动启动:(root权限)

 nohup multic_admin -R > /dev/null &                          

   服务端:

启动: (root权限)

service multis_monitord start

停止:

   客户端:

手动停止:ps aux|grep multic_admin找到运行进程的pid, 然后kill pid

   服务器:

root权限 service multis_monitord stop

查看运行状态:

    service multis_monitord status

5. 使用案例

d08b6033998fb724ac9c4d6218afa93691e181fc
如上图所示,ECS1为组播源,ECS2, ECS3和ECS4为组播成员,组播IP地址和端口分别为224.1.2.3:7134。此时ECS1上需要安装运行组播服务端,ECS2,ECS3和ECS4分别安装运行组播客户端。操作步骤如下:
Windows下修改udptopoint文件夹下server_cfg.json.txt文件,Linux下修改/etc/multicast/server_cfg.json.txt文件,配置如下:
{
    "multi_group_array": [
        {
"group_ip": "224.1.2.3",
"server_port": 7134,
            "group_port": 7134,
            "member_array": [
                "192.168.1.1",
                "192.168.1.2",
                "192.168.1.3"
            ],
        }
    ]
}
修改后需要用reload工具加载到当前运行的服务器程序中:
Linux下运行:
    server_reload_list
please input command[reload or list]#reload
Windows下运行:
send_reload_point_cfg
please input command[reload or list]#reload
若出现connection refused 提示,请检查服务udptopoint是否运行正常。

5.2 修改客户端配置文件

客户端以ECS2为例,Windows下修改udptopoint文件夹下client_cfg.json.txt文件,Linux下修改/etc/multicast/client_cfg.json.txt文件,配置如下:
client_cfg.json.txt
{
    "multi_server_info_array": [
        {
            "group_ip": "224.1.2.3",
            "group_port": 7134,
            "server_ip": "192.168.0.1",
            "server_port": 7134
        }
    ]
}
同样修改后需要用reload工具加载到当前运行的服务器程序中:
Linux下运行:
    client_reload_list
please input command[reload or list]#reload
Windows下运行:
send_reload_multi_cfg
please input command[reload or list]#reload
若出现connection refused 提示,请检查服务udptomulti是否运行正常。

5.3 注意事项和测试

注意事项:
• 客户端和服务端Server_port需要保持一致,否则收不到数据包。
• 系统会生成日志信息,windows在目录C:\udptomulti下的client_log.txt及C:\udptopoint下的server_log.txt中,linux在目录/etc/multicast/下的client_log.txt和server_log.txt中。
• 服务配置成功后,可使用抓包工具进行测试,windows下推荐使用wireshark,linux下推荐使用自带的tcpdump命令。
• 如不能正常通信,在进行错误排查时,排查顺序为 1、服务端检测组播包是否正常转化成单播包并成功发送。2、客户端检测是否正常接收到单播包,排查网络问题。3、客户端是否正常将单播包重新转换成组播包。

6. 最佳实践结果

经过组播工具改造后,客户的各个经典网络下ECS之间已能够正常通过广播方式通信。


目录
相关文章
|
存储 SQL 运维
一篇文章彻底理解 HDFS 的安全模式
一篇文章彻底理解 HDFS 的安全模式
|
API 数据安全/隐私保护 数据格式
API 资源详解:从概念到实战的完整指南
本文深入解析了 API 资源的概念、特征与设计原则,涵盖 RESTful 规范、资源分类、层级结构及实际应用示例。内容还包括版本管理、安全策略与性能优化技巧,帮助开发者构建高效、可维护的 API 系统。
952 115
|
11月前
|
API PHP 开发者
周边地点搜索免费API接口详解
周边地点搜索API由接口盒子提供,支持基于经纬度搜索周边POI信息,涵盖公交站、酒店、餐厅等。具备多类型筛选、自定义半径(最大10公里)、分页查询等功能,返回数据包含地址、距离、坐标及公交线路详情,适用于各类位置服务应用。
774 1
|
12月前
|
缓存 监控 供应链
沃尔玛商品详情 API 与库存 API 联动:实时库存同步与低库存预警实现
沃尔玛商品详情 API 与库存 API 的联动,核心是通过 “基础信息缓存 + 实时库存拉取 + 数据关联解析” 实现库存可视化与预警。本文方案不仅解决了 “商品 - 库存” 数据割裂问题,还通过缓存、重试、定时调度等机制保障了系统稳定性与数据实时性,可直接应用于供应链补货、店铺运营监控等实战场景。生产环境中可根据商品量级(如万级商品)优化批量请求拆分逻辑,进一步提升同步效率。
|
存储 人工智能 自然语言处理
深度解析智能体工作流(Agentic Workflows):核心概念、模式与应用
本文系统解析智能体工作流(Agentic Workflow),结合AI智能体的推理、工具与记忆能力,实现复杂任务的动态执行。内容涵盖核心概念、关键模式及实际应用,帮助读者全面理解其价值与挑战。
8092 1
|
人工智能 前端开发 安全
构建现代交互式平台:CodeBuddy如何简化复杂系统开发
文章探讨了构建交互式平台的复杂架构挑战,涵盖前后端分离的五层架构设计。重点介绍了AI编程助手CodeBuddy在简化开发中的作用,包括智能代码生成、架构优化建议、跨技术栈支持、安全实践集成及文档生成等功能。通过实战案例展示,CodeBuddy显著提升开发效率与代码质量,助力团队应对复杂系统开发挑战,成为开发者不可或缺的工具。下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴。
764 10
|
Shell 定位技术 Android开发
微信号要养多久才稳定?微信怎么定位假位置呢
作为专注社交平台技术研究的开发者,我在过去三年中累计维护过200+企业微信账号矩阵
|
存储 固态存储 文件存储
一台电脑最多能接几个硬盘?
电脑硬盘扩展指南:从硬件接口(SATA、M.2、USB)到供电散热,再到操作系统盘符限制,本文全面解析一台电脑最多能接多少硬盘。普通用户适合2-4块硬盘,专业人士可扩展至8块以上,企业服务器则无明确上限。通过RAID阵列或NAS设备,还能突破传统限制,满足海量存储需求。了解这些技巧,助您合理规划存储方案!
|
Go 网络架构 网络协议
UDP 单播、广播和多播
阅读目录(Content) 一、UDP广播  二、UDP多播 1、多播(组播)的概念 2、广域网的多播 三、UDP广播与单播 广播与单播的比较      使用UDP协议进行信息的传输之前不需要建议连接。
4782 0
|
NoSQL 应用服务中间件 Redis
Docker跨宿主机容器通信-通过网络跨宿主机互联
这篇文章介绍了Docker容器跨宿主机通信的实现方法,包括Docker的四种网络模式(host、none、container、bridge)以及如何通过修改网络配置和添加路由规则来实现不同宿主机上的容器之间的互联。
1717 0
Docker跨宿主机容器通信-通过网络跨宿主机互联