保障 REST 服务高可用
为保障 REST 服务的高可用,避免因区域网络故障造成的服务不可用,声网提供故障迁移和切换域名的方案。
故障迁移
针对网络故障,以及非声网云、非声网软件、设施和不可抗力因素等因素导致的推流中断,声网旁路推流为了保证更好的用户体验,提供自动故障迁移服务,该服务会在尽量短的时间内完成迁移(预计 2 分钟内),迁移期间推流任务中断,可能导致部分数据丢失。 如果对于频道内较多观众端的场景或关键性业务,你需要基于当前业务的重要性和声网提供的自动迁移时效性来考虑是否采用更高的质量保障,例如准备多路流保障以应对迁移期间的快速切换,或者可以采用退避重试策略主动迁移以减少迁移时间。
多路推流任务保障
如需比故障迁移更高的质量保障,你可以采用多路推流任务保障策略。每路推流任务单独计费,详见计费说明。
你可以选择以下两种方式实现多路推流任务保障:
-
同时开启推流主任务和多个备份任务,在每个推流任务中设置不同的 CDN 地址,当主任务发生故障,CDN 观众端可以及时切换到备份的 CDN 地址。
-
如果你想要推送的 CDN 支持优先级功能,你可以开启一个推流任务 1,向优先级为 1 的 CDN 地址(例如:
rtmp://xxx/xxx/xxx?priority=1
)进行推流,如果任务 1 发生故障,及时开启推流任务 2,向优先级为 2 的 CDN 地址进行推流。此时,任务 1 会被 CDN 忽略。
不同 CDN 优先级字段不相同,你需要与 CDN 厂商确认是否支持优先级功能,以及优先级的字段名。
切换域名
切换域名的操作如下:
-
根据你的业务服务器所在地设置主域名:
- 业务服务器 DNS 地址位于中国大陆时,设置主域名为
api.sd-rtn.com
。 - 业务服务器 DNS 地址位于中国大陆以外的国家或地区时,设置主域名为
api.agora.io
。
- 业务服务器 DNS 地址位于中国大陆时,设置主域名为
-
当使用主域名发起 RESTful API 请求失败时,使用该域名重试一次。
-
如果步骤 2 的重试依然失败,使用备用的主域名重试:
- 如果当前设置的主域名为
api.sd-rtn.com
,备用的主域名指api.agora.io
。 - 如果当前设置的主域名为
api.agora.io
,备用的主域名指api.sd-rtn.com
。
- 如果当前设置的主域名为
-
如果步骤 3 的重试依然失败,使用与当前解析区域相邻的区域域名重试。
举例说明:假设你的业务服务器位于欧洲,你设置主域名为
api.agora.io
,而且业务服务器解析主域名解析到德国。德国位于欧洲中部api-eu-central-1.agora.io
,查域名信息表可知,相邻区域为欧洲西部api-eu-west-1.agora.io
或api-eu-west-1.sd-rtn.com
。因此,出现网络故障且步骤 2、3 的重试失败时,请使用api-eu-west-1.agora.io
或api-eu-west-1.sd-rtn.com
域名重试。
注意事项
- 为避免重试请求过于频繁,超过声网服务所规定的 QPS(每秒请求数),声网建议你使用退避策略。例如,第一次等待 1 秒后重试、第二次等待 3 秒后重试、第三次等待 6 秒后重试。
- 如果是网络问题而非 DNS 解析域名问题导致的请求失败,声网建议你跳过步骤 3,直接进行步骤 4。
- 切换至区域域名前,请确保你使用的业务(例如,云端录制、云信令、频道管理等 REST 服务)在该区域有部署服务。
域名信息
主域名 | 区域域名 | 地理区域 |
---|---|---|
api.sd-rtn.com | api-us-west-1.sd-rtn.com | 美国西部 |
api-us-east-1.sd-rtn.com | 美国东部 | |
api-ap-southeast-1.sd-rtn.com | 亚太东南 | |
api-ap-northeast-1.sd-rtn.com | 亚太东北 | |
api-eu-west-1.sd-rtn.com | 欧洲西部 | |
api-eu-central-1.sd-rtn.com | 欧洲中部 | |
api-cn-east-1.sd-rtn.com | 中国华东 | |
api-cn-north-1.sd-rtn.com | 中国华北 | |
api.agora.io | api-us-west-1.agora.io | 美国西部 |
api-us-east-1.agora.io | 美国东部 | |
api-ap-southeast-1.agora.io | 亚太东南 | |
api-ap-northeast-1.agora.io | 亚太东北 | |
api-eu-west-1.agora.io | 欧洲西部 | |
api-eu-central-1.agora.io | 欧洲中部 | |
api-cn-east-1.agora.io | 中国华东 | |
api-cn-north-1.agora.io | 中国华北 |
使用退避策略重试
当推流过程中出现 404、429、5xx 错误码时,你需要采取退避策略,例如等待 5-6 秒、10-11 秒、15-16 秒后重试。
使用退避策略重试后,如果连续 3 次出现 404、5xx 错误码,或查询推流状态响应包体中的 state
字段为 failed
,说明推流失败,请按照以下步骤进行排查:
- 确认 CDN 推流地址是否正确。
- 如果 CDN 推流地址正确,请销毁当前 Converter,并重新创建。
其他异常情况下,旁路推流服务会自动更换推流服务器重新推流。