奇异果投屏的进化之路

笔者按:奇异果投屏伴随奇异果TV一路发展至2022年,日活用户已达300多万,用户和我们都对投屏的功能和性能提出了更多的诉求和更高要求,因此2022开始系统地对投屏功能和性能做了扩展和优化。本文立足于TV端,为大家介绍爱奇艺站内投屏优化过程中面临的困难和解决方案,虚心以待您的指正和建议。

01

   优化历程回顾

自2022年初接手投屏功能,先后开展了功能扩展、报障处理提效等工作,至2022年底仍深感投屏功能迭代和问题处理效率不高。投屏功能作为连接手机和电视的桥梁,对其可靠性、稳定性有着很高的要求,夯实基础才能行稳致远,因此开启了投屏优化的历程,针对投屏服务不稳定、线上数据不可用、线上报障解决效率低这三大问题寻求彻底的解决方案。

问题一:投屏服务不稳定

投屏服务为了最大化的保证可用性,需要独立于客户端进程存活,因此采用子进程启动;为了更灵活的迭代以及修复线上问题,需要可以独立部署升级,因此采用独立插件的方式。历史版本的投屏服务架构虽然能够支撑以上两点,但是采用的单服务方案(投屏服务通过ModuleManager注册到客户端),无法很好地支持投屏的双向通信稳定性、投屏服务监测与保活。

17ee207d1a0eb71c3729d43b791e776f.png

新方案采用双服务设计,基于Android系统的Binder机制,可以稳定可靠的感知对端状态并监测连接状态。同时使用Bind和Start两种方式启动Service,提升投屏进程优先级以达到更好的保活效果,进而提供更稳定的双向通信能力。

78d22a4ab8c3f1048af06a9b8e9091d8.png

问题二:线上数据不可用

旧的投屏服务架构,数据打点无法覆盖全流程,导致上报数据不完整,无法监控投屏服务线上质量,更无法分析、解决线上问题。

新的投屏服务架构,设计了3个层级投递监控:

  • 投屏服务模块运行及可靠性监控

  • 投屏协议启动及结果

  • 推片链路步骤打点

每个层级建立相应的业务会话Session机制,每次业务过程生成唯一的SessionId作为会话标识,串联整个业务逻辑生命周期,在各关键节点上报对应业务数据,作为线上数据分析的基础。

  1. 投屏服务模块

此层级的设计目标,确保并提高投屏整体可靠性,服务功能及进程保活,重试重连等数据收集。

该模块完成了线上设备进程保活状态信息的收集,暴露并验证了旧架构不稳定的原因,在新版本上针对性进行规避。如:

数据反馈暴露出的问题

规避和改进方案

startService方式启动子进程,进程优先级较低,进程易被回收并产生频繁重启

加入Bind方式,提升进程优先级

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值