专栏首页后台开发+音视频+ffmpeg视频云转拉灾备——腾讯云挂掉引发的思考
原创

视频云转拉灾备——腾讯云挂掉引发的思考

故事背景

就在昨天,腾讯云部分功能挂了,经查实广州机房的光缆被挖断导致。当时也影响到了我们视频云转拉这边的业务。有个例子是,一个小客户有个流没有拉起,但是收到了已经拉起的回包。经过我们的分析,原因如下:当转拉请求下发到服务器(内网之间的通信,使用的是内网IP),服务器能收到并处理该请求,所以正常回包。当请求处理程序启动ffmpeg进程时,ffmpeg会去和源站建连(使用外网IP),由于光缆断了,外网肯定是不通的,转拉自然也不会成功。正因此也引发了我们关于转拉灾备的一个思考。

思考与解决方案

解决方案说起来肯定是很简单的,既然机器外网不同,那很简单,以后的转拉请求不发给这台机器就ok了。那现在问题就变成了:怎样知道这台机器不行了?

对此我们充分利用了转拉模块的上游模块——状态中心。解决方案:

1,ffmpeg进程定期上报心跳包到状态中心(上报的字段至少包括两个:进程所在ip, 进程状态);

2,状态中心定期(比如1分钟)统计下各ffmpeg进程发过来的包,以ip为作为关键字分类,统计该ip下正常的ffmpeg进程和异常的进程(对于网络这个问题,异常就是ffmpeg报建立连接失败错误)的次数。

3,当异常情况的比例达到一定的阈值的时候,我们可以认为这台机器有些问题了,暂时到不可用ip列表中。

4,状态中心隔一段时间(比如1小时)扫描一次不可用ip列表。将存在超过一定时间阈值(同样可以是1小时)的ip解禁。因为ip放入到不可用列表后,该机器不会收到转拉请求,所以不知道机器所处的状态,故需要手动删除。如果此时故障还未修复(比如外网依然不通),该机器很快又会加入到不可用ip列表中。

结语

阿里云挂完,腾讯云挂。像腾讯,阿里这样中国互联网超一流的公司,也偶尔会遇到因为容灾问题而导致的服务不可用问题。对于我们后台开发,很多服务经常会依赖于别人,除了指望别人做的可靠之外,也应该思考下如何从自身出发,加强程序的健壮性。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 优惠券系统设计

    对于一个电商系统,一般都会有很多的促销手段,包括优惠券,拼团,砍价,老带新等等。我们在线教育的产品(腾讯课堂,企鹅辅导等)作为一个电商系统(商品比较单一,主要是...

    榴莲其实还可以
  • ffmpeg视频云转拉过程中耗时分析与优化

    在整个视频云的流程中(对于冷流整个流程是比较多的),其中有一个环节是转拉。转拉就是从源站拉流,然后推流到目的服务器上的过程。

    榴莲其实还可以
  • dpvs源码分析(续)

    在上一篇https://cloud.tencent.com/developer/article/1180256?s=original-sharing,我们已经介...

    榴莲其实还可以
  • dnspod通过接口解析本地ip python脚本

    最近内网搭建了一台gitlab服务器,因为是内网没有公网ip,为了方便同事访问,dnspod直接解析了内网ip 但是网卡使用的是dhcp的获取ip的,每次关机...

    开心分享
  • python脚本修改hosts文件

    记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太...

    py3study
  • SpringBoot自定义拦截器实现IP白名单功能

    上帝
  • 一个简单的ip黑名单实例

    Youngxj
  • SpringBoot自定义拦截器实现IP白名单功能

    上帝
  • 关于java

    大整数10进制转16进制问题 google了都没什么好的解决方法,因为要转换的十进制有300多位,long都装不下,没有直接可用的函数可以拿来用 王总的方法分享...

    财主刀刀
  • SpringBoot自定义拦截器实现IP白名单功能

    转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8993331.html

    上帝

扫码关注云+社区

领取腾讯云代金券