IM 即时通讯
Android
开发指南

海外数据中心

更新时间: 2024/01/08 16:37:26

云信提供国内和海外数据中心,支持用户的国内外相关业务。

本节主要介绍海外数据中心的接入流程、国内外节点的迁移流程以及相关说明。

海外数据中心接入流程

1. 创建应用并选择服务区域

2. 使用海外数据中心的专属 API 域名

3. 配置客户端 SDK 中的 link 域名和 LBS 域名

  • 接入海外数据中心的应用需使用 8.10.0 版本以上的 SDK ,该版本 SDK 支持融合存储。

  • 当前只有使用 S3 存储时,所有图片/文件才存储于对应的数据中心。

创建应用并选择服务区域

  1. 云信控制台创建应用,具体请参考控制台的创建应用文档。
  2. 在控制台首页应用管理中选择创建好的应用进入应用配置页面。
  3. 单击免费试用正式开通,指定 IM 节点的服务区域为海外,并填写其他基本信息。

免费试用:

试用版海外.png

正式开通:

正式版海外.png

  1. 如果免费试用,则单击立即试用;如果正式开通,则单击选择该套餐,配置并提交套餐订单。

目前云信控制台支持用户配置的仅包含 IM 服务区域,其余 SKU 产品(RTC、直播、点播)的服务区域不支持自主配置,若有需要,请联系您的商务经理进行沟通。

使用海外数据中心的专属 API 域名

云信服务器的默认 API 域名为 api.netease.im,属于国内数据中心,而海外数据中心则需要使用海外指定的专属域名。目前海外仅支持新加坡数据中心,API 域名是 api-sg.netease.im

用户在对接云信服务器时需要自行替换 API 域名。

如果您的应用的服务区域为海外数据中心,为满足海外访问域名合规性,用户需要自行配置海外专属域名,包括 link 域名和 LBS 域名。

目前海外仅支持新加坡数据中心,新加波域名地址如下表所示。

地址类型 新加披域名
link 域名 link-sg.netease.im:7000
weblink 域名 weblink01-sg.netease.im:443
LBS 域名 lbs.netease.im
Android 端

初始化 SDK 时,通过SDKOptions.serverConfig配置服务器地址中的 LBS 和 link 域名相关信息。示例如下:

serverConfig.defaultLink = "link-sg.netease.im:7000"; 
serverConfig.lbs = "https://lbs.netease.im/lbs/conf.jsp"; 
serverConfig.nosUploadLbs = "https://wannos.127.net/lbs"; 
serverConfig.nosUploadDefaultLink = "https://nosup-hz1.127.net"; 
serverConfig.nosDownloadUrlFormat = "{bucket}-nosdn.netease.im/{object}";
serverConfig.nosUpload = "nosup-hz1.127.net"; 
serverConfig.nosSupportHttps = true;

相关参数说明如下:

参数 类型 说明
SDKOption
Object
可自定义的 SDK 选项,用来进行 SDK 初始化配置。
defaultLink
String
IM 默认的 link 服务器地址,当 LBS 不可用时先连接该地址。填"IP/Host:PORT"。
lbs
String
IM LBS 服务器地址,通过它获取 IM link 地址信息。填 HTTP/HTTPS 地址。
nosUploadLbs
String
NOS 上传 LBS 服务器地址。填 HTTP/HTTPS 地址。
nosUploadDefaultLink
String
NOS上传默认的 link 服务器地址,当 NOS LBS 不可用时先连接该地址。填 HTTP/HTTPS 地址。
nosDownloadUrlFormat
String
NOS 下载地址拼接模板,用于拼接最终得到的下载地址。
nosUpload
String
NOS 上传服务器主机地址(仅 nosSupportHttps=true 时有效,用作 HTTPS 上传时的域名校验及 http header host 字段填充)。填 Host 地址。
nosSupportHttps
Boolean
NOS 上传/下载是否都转换为 HTTPS 协议。
iOS 端

初始化 SDK 时,在NIMServerSetting中配置 LBS 和 link 域名参数,NIMServerSetting需要开发者自己创建并注入。示例如下:

setting.lbsAddress =  @"https://lbs.netease.im/lbs/conf.jsp";
setting.linkAddress =  @"link-sg.netease.im:7000";
setting.httpsEnabled =  YES;

相关参数说明如下:

参数 类型 说明
NIMServerSetting
Object
配置云信服务器相关信息。
lbsAddress
String
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。
linkAddress
String
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。填"IP/Host:PORT"。
httpsEnabled
BOOL
NOS 上传/下载是否都转换为 HTTPS 协议。
Web 端

初始化 SDK 时,在NIM.getInstance中添加 LBS 和 link 域名参数的配置。示例如下:

var nim = window.SDK.NIM.getInstance({
      "lbsUrl": "https://lbs.netease.im/lbs/webconf",
      "defaultLink": "weblink01-sg.netease.im:443",
      "httpsEnabled": true
    })

相关参数说明如下:

参数 类型 说明
NIM.getInstance
Object
IM 的初始化构造函数。
lbsUrl
String
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。
defaultLink
String
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。填"IP/Host:PORT"。
httpsEnabled
Boolean
NOS 上传/下载是否都转换为 HTTPS 协议。
PC 端

用户需要自行创建nim_server.conf文件,放至 SDK 的同级目录,SDK 会自动识别。nim_server.conf文件的内容,请参考以下示例:

{
    "lbs":"https://lbs.netease.im/lbs/conf.jsp",
    "lbs.backup":[
        "https://lbs.netease.im/lbs/conf.jsp"
    ],
    "link":"link-sg.netease.im:7000",
    "nos_lbs":"https://wannos.127.net/lbs?version=1.0&bucketname=nim",
    "nos_uploader":"https://nosup-hz1.127.net",
    "nos_uploader_host":"nosup-hz1.127.net",
    "nos_downloader":" {bucket}-nosdn.netease.im/{object}",
    "https_enabled":true
}

在使用前,请先校验 json 格式是否正确。

增强版 Web 端

初始化 SDK 时,添加 LBS 和长连接域名参数的配置。

new NIM({

  "lbsUrls": ["https://lbs.netease.im/lbs/webconf"],
  "linkUrl": "weblink01-sg.netease.im:443",
  "httpsEnabled": true
})

相关参数说明如下:

参数 类型 说明
NIMInitializeOptions
Object
IM 的初始化构造函数。
lbsUrls
String
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。
linkUrl
String
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。填"IP/Host:PORT"。
httpsEnabled
Boolean
NOS 上传/下载是否都转换为 HTTPS 协议。
增强版 uni-app/小程序

初始化 SDK 时,添加 LBS 和长连接域名参数的配置。

getInstance({

  "lbsUrls": ["https://lbs.netease.im/lbs/webconf"],
  "linkUrl": "weblink01-sg.netease.im:443",
  "httpsEnabled": true
})

相关参数说明如下:

参数 类型 说明
NIMInitializeOptions
Object
IM 的初始化构造函数。
lbsUrls
String
LBS 地址,默认为云信公网提供的链接。SDK 连接时会向 LBS 地址请求得到 Socket 连接地址。填 HTTP/HTTPS 地址。
linkUrl
String
Socket 备用地址,当 LBS 请求失败时,尝试直接连接 Socket 备用地址。填"IP/Host:PORT"。
httpsEnabled
Boolean
NOS 上传/下载是否都转换为 HTTPS 协议。
Flutter 端

初始化 SDK 时,通过 NIMServerConfig 配置服务器地址中的 LBS 和 link 域名相关信息。示例如下:

NIMServerConfig config = NIMServerConfig(
    defaultLink: "link-sg.netease.im:7000",
    lbs: "https://lbs.netease.im/lbs/conf.jsp",
    nosUploadLbs: "https://wannos.127.net/lbs",
    nosUploadDefaultLink: "https://nosup-hz1.127.net",
    nosDownloadUrlFormat: "{bucket}-nosdn.netease.im/{object}",
    nosUpload: "nosup-hz1.127.net",
    nosSupportHttps: true);
if (Platform.isAndroid) {
  final directory = await getExternalStorageDirectory();
  options = NIMAndroidSDKOptions(
      appKey: appKey,
      shouldSyncStickTopSessionInfos: true,
      serverConfig: config,
      sdkRootDir:
          directory != null ? '${directory.path}/NIMFlutter' : null);
} else if (Platform.isIOS) {
  final directory = await getApplicationDocumentsDirectory();
  options = NIMIOSSDKOptions(
    appKey: appKey,
    shouldSyncStickTopSessionInfos: true,
    sdkRootDir: '${directory.path}/NIMFlutter',
    apnsCername: 'ENTERPRISE',
    serverConfig: config,
    pkCername: 'DEMO_PUSH_KIT',
  );
}

相关参数说明如下:

参数 类型 说明
NIMServerConfig
Object
配置专属服务器的地址。
defaultLink
String
IM 默认的 link 服务器地址,当 LBS 不可用时先连接该地址。填"IP/Host:PORT"。
lbs
String
IM LBS 服务器地址,通过它获取 IM link 地址信息。填 HTTP/HTTPS 地址。
nosUploadLbs
String
NOS 上传 LBS 服务器地址。填 HTTP/HTTPS 地址。
nosUploadDefaultLink
String
NOS上传默认的 link 服务器地址,当 NOS LBS 不可用时先连接该地址。填 HTTP/HTTPS 地址。
nosDownloadUrlFormat
String
NOS 下载地址拼接模板,用于拼接最终得到的下载地址。
nosUpload
String
NOS 上传服务器主机地址(仅 nosSupportHttps=true 时有效,用作 HTTPS 上传时的域名校验及 http header host 字段填充)。填 Host 地址。
nosSupportHttps
boolean
NOS 上传是否需要支持 HTTPS 。

目前仅支持 Android 和 iOS 平台。

:::

国内节点迁移至海外节点

对于已上线的国内节点应用,如果您有海外业务需求,可将应用迁移至海外数据中心。

迁移说明

云信支持将已有的国内应用数据、用户信息、好友关系、会话列表、群组数据、超大群组数据、聊天室数据、漫游、历史消息、离线消息等内容,平滑迁移至对应的海外数据中心。

  • 用户信息:已经在云信获取过 Token 的所有用户信息支持迁移至海外数据中心,包括用户 ID、用户名、用户头像等
  • 群组数据:群基本信息、群成员信息
  • 超大群组数据:超大群基本信息、超大群成员信息
  • 聊天室数据:聊天室基本信息、聊天室固定成员信息
  • 历史消息数据:针对应用发送过的历史消息支持迁移至海外数据中心,包含:单聊、群聊、聊天室消息
  • 离线消息数据:针对用户未收取过的离线消息,支持迁移至海外数据中心

迁移准备

您需要向云信申请公有云专属服务,由云信负责部署专属云服务(具体费用可咨询商务经理)。

公有云专属服务主要用于迁移海外节点过程中为保证业务不受公有云流量干扰而产生的隔离资源。部署的时间范围以实际迁移时间为准,全部迁移完成后,可取消该服务部署。

迁移流程

  1. 联系云信商务经理,申请将指定的 AppKey 迁移至对应海外数据中心,并与云信技术支持确认迁移范围。

  2. 对于用户迁移前的国内数据中心公有云环境(api.netease.im),云信将部署专属云服务,并提供专属云对应的 API 域名和 link 域名。

  3. 用户在对接云信服务器时需要将云信 API 公有云域名替换为专属云域名

  4. 将云信客户端 SDK 的 link 公有云域名替换为专属云域名,并发布客户端新版本。

  5. 云信对迁移后的海外数据中心(api-sg.netease.im)部署专属云服务,然后将国内公有云数据中心的数据,迁移至海外数据中心。

  6. 升级应用客户端。从国内迁移至海外数据中心,因涉及修改客户端 SDK 中的 link 服务地址,所以应用客户端必须强制升级到新的版本,才能连接到迁移后的数据中心。老版本将无法使用。

  7. 用户需要与云信商务协商正式迁移的时间节点。协商好后,云信正式开始流量迁移。建议在线上业务低峰期时执行。

海外数据中心相关说明

  • 接入海外数据中心的 App Key 的数据均存储于海外,包括但不限于:

    • 账号信息(accid、昵称、头像等)
    • 群组、聊天室等
    • 好友、黑名单等
    • 历史消息等
    • 图片/文件存储
    • 其他
  • 国内数据中心和海外数据中心的关系:

    • 应用级别的信息全局共享,如 App Key 信息、功能开通关闭(包括云信侧功能,安全通等)。
    • 应用内的信息存储于所属数据中心。
  • 安全通

    • 海外数据中心的安全通使用了对应的海外易盾能力,数据不回国。
    • 支持多语种的内容安全审核。
  • 国内数据中心和海外数据中心的 link、weblink、chatlink、chatwl、以及 API 域名不互通,如果连接错误,会返回 403。

  • 为了方便客户接入和提高接入效果,海外数据中心相关域名会添加国内加速代理和海外其他地区的加速代理,如:新加坡 API 域名api-sg.netease.im

    • 在国内会解析到我们的国内 bgp 入口,但是所有数据最终都存储在新加坡。
    • 在美国地区会解析到美国的加速入口,但是所有数据最终都存储在新加坡。

数据迁移常见问题

Q:App 是否必须强制升级?

A:是,云信从 8.10.0 开始才支持海外节点且迁移需要更换为海外域名,所以必须强制升级到新的版本,才能连接到指定数据中心。

Q:漫游消息是否支持迁移?

A:支持,在正式迁移前 7 天,云信会开启双写,将漫游消息双写写到指定数据中心。

Q:存储在云信服务端的历史消息是否支持迁移?

A: 支持,需要和云信商务说明历史消息迁移时间范围。

Q:是否支持从海外节点迁移至国内节点?

A:不支持。

Q:迁移过程中服务是否不可用?

A:是的,在切换的瞬间所有客户端会强制下线,触发重连到海外单元。切换期间有分钟级服务不可用,正常不超过一分钟。

Q:是否支持历史图片和文件的迁移?

A:不支持。 历史图片和文件不会迁移,还是存储在国内数据中心,但是不影响访问。

此文档是否对你有帮助?
有帮助
去反馈
  • 海外数据中心接入流程
  • 创建应用并选择服务区域
  • 使用海外数据中心的专属 API 域名
  • 配置客户端 SDK 中的 link 域名和 LBS 域名
  • 国内节点迁移至海外节点
  • 迁移说明
  • 迁移准备
  • 迁移流程
  • 海外数据中心相关说明
  • 数据迁移常见问题