直播-计费

直播系统收费模式,目前市面上似乎比较少见。我们所看到的大多数是免费直播,礼物和 其他服务收费。因业务需要,本系统直播收费。需求提出时,我们很自然想到的是运营商电话收费模式:按分钟收费,不足1分钟按一分钟计算。此处不讨论此计费方式是否合理,如果你有更好的计费方式欢迎留言。
按分钟计费的模式,我们需要处理以下几个问题:

  1. 计费开始时间
  2. 何时计费(每分钟计费,直播结束)
  3. 用户异常退出
  4. 如何保证用户在费用不足时正常结束直播
  5. 用户在直播过程费用因其他因素变化(充值,消费)如何通知客户端

直播-计费_第1张图片

计费开始时间

开始时间我们选择在用户成功进入房间后,客户端通知服务端并获取当次直播可用时长。如上图红色部分,此处简单看似乎没问题。在我们监控的数据显示,客户端有概率出现用户进入房间后腾讯云直播未正常回调。此时因为这服务端未能正常处理直播开始逻辑,同时客户端用户未能获得当次直播可用时长。其结果就是用户可以无限时长直播(假设客户端未对直播时长做上限设置),直播结束时计费也会出现问题。
针对上面的问题。正常情况,针对第三方直播平台,一般都提供用户状态改变时可以选择透传消息给服务端。因此,我们就在用户进入房间后,处理第三方透传事件。新的顺序图如下:
直播-计费_第2张图片
补充说明: 第三方平台异步通知正常情况远快于同步通知客户端(服务端的网络情况相对问题且速度快),因此似乎客户端就无需处理同步通知(本系统依然保持该流程)。业务服务器在处理完直播开始逻辑后,将用户可用时长通过长连接推送至客户端。

何时计费

系统采取直播结束时计费。次方法存在一定的问题:1)直播非正常退出引起未计费,2)直播结束因用户费用(直播过程消耗)不足导致损失等等。此处不再深入讨论这些问题和解决方案,这些问题可以通过其他手段加以完善。

用户异常退出

异常退出分主播和用户: 1)主播异常退出,直播会正常结束因此不存在问题;2)用户异常退出,会出现主播挂机导致用户无限扣费;2)主播和用户同时异常退出,未计费。
以上问题可以通过长连接监控用户退出行为。如果是用户异常离开房间,则通知另一方退出直播。(此机制会在后续文章做详细分析)

问题4,5都需要通过长连接手段进行处理。因此,长连接在直播过程就显得非常重要

总结

在计费方案确定时,我们就一直遗留着用户异常退出未处理。该问题直到5个版本后才完全解决。文中提到的几个问题都是在一定时间后才处理。对于未收费情况,早期阶段只得有人工做处理。因此,在移动互联网尤其注重快速迭代的时代。一方面考虑成本,以及重要性。那些看似非常严重的bug,其实在早期阶段对你整体系统并不会产生严重影响,完全可以在之后的迭代版本调整。

你可能感兴趣的:(直播)