一、适用场景
适用于出货区域预先不确定,且需要对设备/服务器做分区管理的场景(如全球化部署、跨区域服务隔离等)。
二、部署策略
每个区域需独立部署P2P服务器,且该区域的P2P服务器需挂载目标VPG(UID群组),部署架构可参考下图:

P2P分区部署架构示意图
架构说明:
- VPG1、VPG2 为目标设备群组(对应唯一UID标识);
- P_CN、P_ASIA、P_EU、P_US 分别为中国、亚太、欧洲、美洲区域的P2P服务器;
- M_CN、M_ASIA、M_EU、M_US 分别为对应区域的Master服务器。
核心部署步骤:
- 将VPG1/VPG2分别配置到4个区域的P2P服务器(绑定至对应分区);
- 各区域P2P服务器仅配置本区域的Master服务器,避免跨区域依赖;
- APP配网时,根据自身定位(GPS/IP)将区域信息发送至设备;
- 设备持久化保存区域信息,后续登录均使用该区域的服务器;
- APP保存设备绑定的区域信息,后续连线均定向至该区域的P2P服务器。
三、服务器配置
P2P服务器需通过环境变量配置区域属性,以下为通用启动脚本示例(Shell):
#!/bin/bash
export P2P_LICENSE_KEY= #填写申请好的P2P License Key
export P2P_SERVER_KEY= #填写申请好的Server Key
export P2P_SERVICE_REGION=all #设定需要服务的区域,可选值:'asia', 'us', 'eu', 'cn', 'all'
export P2P_LOCAL_REGION=non-cn #P2P服务器物理区域,可选值:'cn' / 'non-cn'
CUR_DIR=$(cd `dirname $0`; pwd) #获取程序运行目录,用于开机重启路径配置
s=1
while [ "$s" != "0" ]
do
if [ $(ps -A | grep -c 'IOTC_Server') == "0" ]; then
${CUR_DIR}/IOTC_Server --config=${CUR_DIR}/config.db -gP:G -p10001 &
fi
sleep 5
done
四、区域设定方法
1. APP给设备设定区域
根据设备添加方式差异化传输区域信息:
- BLE配网:将区域编码(如eu/cn/us)嵌入BLE广播数据中传输;
- WiFi配网:在配网指令中携带区域标识字段;
- 有线配网:通过首次登录指令同步区域信息。
2. 设备设定登录区域
设备需在初始化SDK前指定登录区域,核心代码示例:
// 指定区域为欧洲区(EU),必须在IOTC_Initialize2之前调用
TUTK_SDK_Set_Region_Code(REGION_STRING_EU);
3. APP设定连线区域
3.1 SDK 4.3.3以下版本
仅支持全局区域设定,所有设备均使用该区域连线:
// 全局设定连线区域为EU,需在IOTC_Initialize2之前调用
TUTK_SDK_Set_Region_Code(REGION_STRING_EU);
3.2 SDK 4.3.3以上版本
支持按设备单独指定连线区域,核心代码示例:
IOTCConnectInput input;
memset(&input, 0, sizeof(input));
input.cb = sizeof(input);
input.authentication_type = AUTHENTICATE_BY_KEY;
strcpy(input.auth_key, "00000000");
// 填写设备绑定的区域(与设备登录区域一致)
strcpy(input.device_region, REGION_STRING_EU);
input.timeout = 10;
// 定向连接指定区域的设备
IOTC_Connect_ByUIDEx(uid, IOTC_Get_SessionID(), &input);
重要提示
APP设定的连线区域必须与设备登录区域完全一致,否则可能会导致连接失败。
