冗灾指南

142 阅读4分钟

当我们开发完一个项目并上线后,最紧要的一件事情,就是如何做好项目冗灾数据备份等工作。

简介

什么是冗灾?异地灾备的重要性?

当光缆被挖断、机房出现异常,或因不可抗拒原因(如地质灾害)等造成正常路径上业务不可用,通过备份路径和措施来保证业务继续正常进行。

实现跨城冗灾整体流程

在这里插入图片描述

公网商户方案

在这里插入图片描述 跨城容灾方案说明:

正常使用主域名调用,备域名需有流量,保证业务能实时切换。当域名出现请求超时、读写超时,自动换备域名重试。

交易主链路和交易备链路做好动态流量分配,保证遇到异常能够自动切换。例如可以统计主备域名的连接耗时、丢包率、业务失败率,出现异常情况(例如5秒钟内统计业务失败率超过50%)可自动切换到最优链路。

在这里插入图片描述

方案一:统计主域名实际请求成功率,实现主备域名实时切换策略

主域名:api.mch.weixin.qq.com, api.weixin.qq.com 备用域名:api2.mch.weixin.qq.com, api2.weixin.qq.com

方案流程图

在这里插入图片描述

业务请求流程

1)、准备好全局存储空间(比如配置文件、内存空间等)存放“域名信息”、“日志信息”并进行初始化;

2)、发起业务请求之前,从域名信息库里面获取域名;

3)、使用当前域名发起请求,成功,则上报成功结果并且流程结束;

4)、使用当前域名发起请求,失败(连接超时、读写超时),则上报失败结果并且获取另一个域名进行重试,流程结束;

5)、因业务问题导致失败,商户侧根据自身逻辑处理;

6)、第3步和第4步中上报的请求结果存储规则:保留主域名10分钟内最近100次请求,商户也可根据实际情况自行调整。

方案二:定时探测主域名连通性,实现主备域名实时切换策略

主域名:api.mch.weixin.qq.com, api.weixin.qq.com 备用域名:api2.mch.weixin.qq.com, api2.weixin.qq.com

方案流程图

在这里插入图片描述

业务请求流程

1)、准备好全局存储空间(比如配置文件、内存空间等)存放“域名信息”并进行初始化;

2)、发起交易前,从“域名信息”中获取当前域名;

3)、使用当前域名发起请求,成功,则流程结束;

4)、使用当前域名发起请求,失败(连接超时、读写超时),获取另一个域名进行重试,流程结束;

5)、因业务问题导致失败,商户侧根据自身逻辑处理;

失败重试策略

主域名:api.mch.weixin.qq.com, api.weixin.qq.com 备用域名:api2.mch.weixin.qq.com, api2.weixin.qq.com

方案流程图

在这里插入图片描述

业务请求流程

1)、发起交易前,从“域名信息”中获取当前域名;

2)、使用当前域名发起请求,成功,则流程结束;

3)、使用当前域名发起请求,失败(连接超时、读写超时),获取另一个域名进行重试,流程结束;

4)、因业务问题导致失败,商户侧根据自身逻辑处理

实现双活的流量分配策略

主域名:api.mch.weixin.qq.com, api.weixin.qq.com 备用域名:api2.mch.weixin.qq.com, api2.weixin.qq.com

方案流程图

在这里插入图片描述

双活域名流量分配策略

1)、发起交易前配置好主备切换比率,值范围在0~99之间(具体数值商户可根据实际业务情况进行设定);

2)、当前域名是主域名的情况下,要进行流量分配。流量分配规则:先获取0~99的随机数,当随机数<主备切换比率则使用主域名发起交易,随机数>=主备切换比率则使用备用域名发起交易;

3)、当前域名是备用域名的情况下,直接用备用域名发起请求。

专线冗灾演练

1). 双方约定时间定期或者不定期演练专线冗灾自动切换

2). 商户侧排查所有专线策略是否都通

3). 微信支付侧排查专线回调策略是否都通

4). 商户侧通过调整防火墙策略等方式断开其中一条专线,验证观察业务是否能自动切换至另一条线路,且切换过程中业务无损失

5). 恢复后再断开验证另一条专线

6). 如果商户侧能实现两条专线都不通自动走公网调用的话,可以再验证两条专线都断开的情况下,是否如预期走公网调用和走公网回调

7). 如遇故障影响业务,请优先回退,之后再排查原因。

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 24 天,点击查看活动详情