瞎扯淡 直播 -- 从技术保障聊一点成长感悟

early · 2021年11月20日 · 最后由 theblock24block 回复于 2021年11月22日 · 587 次阅读

直播业务有类似“双 11”的时刻,本文简单聊聊直播业务系统保障的一些点。为降低写作成本,以陈列式展开。

1. 直播业务的基本特点

一、横向业务面很广

直播的业务点非常的繁杂。其一是需要为用户 - 主播之间搭建足够丰富的互动桥梁,其二是需要为用户提供足够宽泛的方式释放存在感。有的是为试错,有的是为能覆盖更广泛的群体。总之言之,横向的业务面很广,这从很多直播平台花样百出的功能就可以感受到。

大部分情况下,特别是高速发展期,业务追求快速迭代,一般会牺牲技术质量。

二、纵向业务深度浅

这里可以拿电商的业务做对比,电商的基本核心对于用户来讲,无非是:选商品、下单、选优惠券、支付。但在简单的操作后面,还有非常复杂和冗长的业务流程,涉及类似订单、库存、支付、商户、物流、供应链等等。纵深长、技术挑战大,所以电商业务也是最早实施全链路压测的业务。

回到直播,虽然横向面广,但大部分业务纵深较浅,大多是重客户端逻辑,服务端接口调用层次一般不深。除了营收业务类似送礼、购买等业务,这部分和电商类似,但复杂度也要少一些。

三、业务和流量不确定

直播业务繁多,不同的直播间其业务功能可能有差异,有些功能在特定的场景和条件下才会出现,这里特别容易出现疏漏或信息不对称。

同时,直播业务的流量波动很大,小房间或平常时间流量很小,但是一到重大节假日、重大赛事流量就会出现几十倍的突增,类似电商领域的双 11。典型的就是刚刚过去的 S11 总决赛。

2. 大型活动常常需要做保障

基于上面的特点,在大型活动前夕,平台都需要做大型技术保障。技术团队需要保证业务系统在此期间能正常运转。其原因有:

  • 业务很多很散,很容易出现漏网之鱼 (有瓶颈或不合理),在大流量下出现问题
  • 业务追求快速迭代,历史经验或结论不牢靠,容易轻信而埋下祸根
  • 流量不确定,场景多样,有些临界连锁反应可能会被忽视

假设三个月前刚刚做过一次大流量考验,但马上又要来一次,假设流量量级接近,那还需要做技术保障吗?

其实还是需要的,有几个原因:

  • 业务场景不同,例如有些是晚会,有些是赛事,不同模块承受的压力有差异
  • 业务一直在迭代,你不知道谁可能埋了什么隐患,只是因为流量小未暴露
  • 依赖方可能发生变化

这在横向业务繁多的情况下,是很难简单梳理下就能放心的。

3. 技术保障到底在干什么?

技术保障的目标很简单,就是基于当前的 case,在流量可能大幅突增的情况下,保证技术系统能平稳度过。

整个过程分为两个阶段:一、前期准备;二、现场保障。需要思考下整个过程中,到底在做什么?

现场保障,往往在做几个事情:

  • 根据容量监控执行扩容、根据预案降级
  • 分析各种告警、报错,找到问题原因以及应对

应对问题时,极端情况下有可能会改代码、改数据,但如果临时做这些事,往往无法解决问题,还可能雪上加霜,因为人在临场会慌,时间也紧,叠加信息不对称一般都会闯祸。

换个视角,当按照预案扩容、降级或其他操作后,应对了挑战。实际上这些动作本质上算是结果,因为系统可以通过扩容解决问题、系统可降级、你知道该怎么操作。

人的注意力容易聚焦在现场的应对操作,关键点其实在准备阶段。

4. 技术保障的核心

根据实际成功经验,准备阶段最本质的要点有几个:

  1. 解决信息不对称。对所有业务场景、触发条件、交互方式做细致的梳理。5H2W
  2. 针对场景做压测。基于流量预期,模拟场景、发现问题、解决问题。
  3. 场景容量建模。场景容量和 QPS、在线人数的数学关系
  4. 问题应对方案。每个场景,要清楚挑战有哪些,遇到了该如何应对。降级、限流、扩容还是什么,需要将操作细化并进行演练。

将要点进一步升华,可以发现最本质的目标是:

  1. 系统可以横向扩展的,只要简单扩容就可以应对流量
  2. 系统是可以降级的,以用户弱感知的方式牺牲部分功能
  3. 系统可自保护,难以扩容的场景如 DB,需要限流自保护。
  4. 有预案、有演练。可能会面临问题以及详尽的应对方案,演练让临场不慌。

到了现场保障时,关键点是决策和执行。保证信息、指令、动作有章法,即按照计划行事即可。

如果真实流量远超过预期,那将是难得的经历。

5. 技术保障的产物

技术保障最直观的产物就是:

  • 系统熵骤降,问题暴露、信息透明
  • 系统架构更健康,提供标准和沉淀
  • 系统容量上升
  • 团队整体协作能力提升
  • 个人成就感

平时可以达到这些吗?我想很难,其一是平常难有对应的流量契机,其二是平常难以集中组织资源攻关,其三是人性是懒惰短时的,感觉没问题就不会动,也没有足够动力。

6. 一些小感悟

技术系统

业务 (or 技术系统) 只能在持续的挑战下才能往更健康的方向发展。如果系统容量远超过需求,实际上是浪费。技术系统说到底是实现业务的工具,需要吃大量的资源,背后都是机会成本。资源有限需要放到更急迫的地方。

团队

一个组织要往更好的方向发展,其实也是这样。如果你面临一个组织或团队,心里觉得破烂不堪,心里可能有抱怨或想要去改变它。但如果你能脱离个人视角,从公司运作的角度看,这个团队其实是以刚刚好的成本,满足了业务的需求,没有拖后腿,也没有浪费资源。

当业务或公司需要它更强大时,投入资源其自然会变得更好,只不过个体面临的可能是动荡甚至利益损失,但从产权方 (公司 or 老板) 的角度看,它一定可以变得更好。

它可以变得更好,只是当下还不需要。

个人

如果个人想要变得更好怎么办?实际上是一样的道理。

其一,让自己面临更高的外部要求,其二,让自己有更多的资源投入。你在压力或推动下自然而然就会变得更好。离开了这两个条件你都不可能成长。

所以脱离环境谈走出舒适区是很难的,如果环境不需要你更强,你还会返回舒适区,只是扒上井沿看了一眼而已,最终还是会倦缩回去。人性如此,万不能对抗。

承担更大的责任、选择要求更高的环境、去资源投入更充足的地方。人是环境的产物,选择和自己同步伐的环境,让自己配得上环境,让环境带自己起飞。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号