专访虎牙直播毛茂德

2023-11-06

引言

作为一位经历了互联网、移动互联网阶段的老兵,毛茂德老师一路走来,始终保持自己的技术初心,不断探索未知领域的宽度,进入虎牙直播后,他积极推动虎牙拥抱云原生,进行业务创新,同时他也发挥技术优势,通过高效运维为企业实现了降本增效,专注于技术驱动研发效能提升是他一路走来不变的追求。腾讯云TVP、虎牙直播 总经理毛茂德老师将结合他的自身经历,在本期技术指针中为我们解读他是如何利用技术驱动企业效能提升。

一、坚守技术初心,敢于探索未知领域

经历了 PC 互联网,移动互联网,再到如今的产业互联网时代,毛茂德老师先后任职于外企、互联网大厂,“不断拓宽技术宽度,坚守技术初心”是贯穿毛茂德老师历次转向的关键词,一起来聆听他的技术初心:

早期,我曾服务于一家专门做 CORBA 的外资中间件公司,主要专研技术。后来转到了互联网行业,先后在 eBay、阿里巴巴等公司负责业务和应用的运维工作。目前,我在虎牙从事基础保障部门的职位,类似企业的内部运营部门,除了业务以外,整个虎牙国内和海外业务所需的所有基础设施、基础架构和中间件基本上都在我们这个部门里。因此,我的工作更多地会与底层技术打交道。

原来在大型的企业中,可能就只需要负责某一个足够大、足够复杂的产品线,在这个岗位上向纵深发展,在我看来这可能更多是一种“螺丝钉”的状态。我还是更希望去往宽度方面做一些挑战,做一些自己之前没有接触过的东西。而在虎牙,它本身的直播业务既要求做到高清,又需要兼顾互动,这对网络和算力的技术挑战本身就非常大。其实,整个互联网的发展是从文本到图片,再到视频、短视频,再到高清的视频,再下一步其实就是直播。每一层次它的信息密度其实都不一样,而信息的密度就决定了业务对技术的挑战会不断变大,这也是非常吸引我的一点。

二、拥抱云原生,让基础设施跑在业务前

虎牙作为直播赛道的头部企业,其业务的快速发展驱动着虎牙不断探索技术创新,而虎牙的技术布局也极具前瞻性,在 2018 年,虎牙便选择计算上云,启动容器化改造,成为国内首个拥抱云计算的直播平台。为什么虎牙这么早且坚定地拥抱云原生,实现基础设施永远跑在业务前,上云又带来了哪些成效?作为虎牙上云的见证者和推动者,毛茂德老师向我们娓娓道来:

在我看来,上云本身作为一个行业的热点,加上 2018 年上云环境已经比较成熟稳定,因此我们义无反顾选择了上云:

首先,企业上云可以保障资源高效供给。虎牙直播作为一家互联网公司,其业务迭代更新快,当我们出现新业务时,传统而言一般需要耗费三个月时间进行资源准备,而上云后可以立即获取资源,这无疑大大提升了效率。

其次,企业上云有助于保持技术架构先进。另一方面,我们比较看重自身的业务的架构是否足够先进,这两年其实我们从云厂商那边也学到了非常多的技术能力,帮助我们技术团队成长。例如腾讯云的一系列大会,我们也有积极参与,这种技术上的开放和学习对我们自身技术团队的磨砺是有很多帮助和启发的。在我看来,腾讯云不仅仅只是一个资源提供者,而且还是先进技术的布道者。

最后,容器化改造有效帮助虎牙降本增效。我们的容器化改造是在 2018 年底开始启动,当时公司还处于一个物理机为主,携带少量虚拟机的状态。我在 2018 年 5 月加入虎牙,当时我主张我们需要往现代化云原生的架构靠拢,彼时正值上云阶段,我们启动了整个容器化的改造。整个上云和容器成型我们耗时一年多便基本完成。同时,我们也做了在离线混部的系统,很多大数据的东西我们也做容器化,在夜间业务高峰期时是业务去用,然后凌晨业务低峰期时就给大数据用,通过算力的混用来达到降本增效的目的。

三、发挥技术优势,实现高效云上运维

虎牙在基础设施完善并整体上云后,相比传统运维而言,其云上运维可以充分利用云资源来发挥技术优势,云不仅提供丰富的 API,而且使得计算资源获取更为轻松便捷。作为经验颇为资深的运维老兵,毛茂德老师为我们详尽解读了虎牙是如何利用云工具,提升平台的运维效率的:

其实,从对资源的利用维度而言,上云和不上云的变化是非常大的,但从运维的维度来说,可以把它简单当作是多了一个云的机房,其变化主要体现在效率的提升。

一方面,云本身提供了非常丰富的 API,而这在过去是不存在的。每个公司都会有自己的一套方式去做运维,有的是黑屏模式,有的可能有一些简单的脚本,有些可能自己会做一些 API,但是这些 API 相对来说都不是通用、规范的,缺乏可适用性和推广性。云则基本把整个 IaaS 这一层的 API 全部暴露出来,大家可以通过这样的方式去组合自己的运维工具、脚本,大大降低了维护难度。

传统而言,我们在 IDC 这块,需要提前一个月甚至两个月甚至更长的时间去准备资源。过去业务方只要有一个需求,我们就得进行评估、采购、上机器、上架然后调试等一连串的工作。而上云后,能够非常灵活轻松,随时随地调用计算资源,如果你觉得这个资源不行,可以马上在不同的 Region,在不同的 AZ 之间切换,大大减轻了传统运维的工作量。

另一方面,云也提供了非常完善的一套工具链。在云上我们有很多 PaaS、SaaS 类的产品,甚至连底层的资源都不需要去管理,这无疑对业务的迭代和创新会带来非常大的帮助。

四、加强上云治理,探索降本增效路径

在把握云上运维之时,更需要加强治理进行管理,方能有效实现降本增效。毛茂德老师深谙虎牙直播的治理管理之道,不仅采取了相应的重点举措,也分别从硬件和软件展开了探索,为降本增效找到最佳方式。

其实,早在两三年前,虎牙就已经着手在做降本增效这件事。而对于基础设施部门来说,业务稳定性是最重要的,因为业务不能中断;其次,我们需要提高运维效率,用更少的人力支持更多的业务。最后,还需要关注成本,以更低的成本服务业务。我们的团队需要将这些问题都考虑完备,只有将直播成本降到最低,我们才能在直播领域持续保持竞争力。

在我看来,降本增效的本质是提高资源利用率。它实际涉及到很多方面,无论是算力、网络还是存储。归根结底,我们需要看的是,我们使用的资源是否合理,我们是否将资源的利用率充分提升了?此外,互联网业务本身也具有高峰低谷的特点,如果我们是否能够充分利用资源的低谷期,这样就相当于一台机器能够发挥两台机器的效果。因此,我们需要找到适当的资源,同时充分提高它们的利用率。

在降本增效的过程中,可能出现与业务质量冲突的情况,例如为了降本而将高清的画质调低。如何在业务质量指标不降低的情况下去实现成本的降低,这才是我们真正需要解决的问题。因此,我们更多的还是需要找出资源浪费的情况并对其进行优化,这样才能实现降本增效而不影响业务质量。

(一)从治理到管理的举措

首先,治理用云账单势在必行。在云计算盛行时,人们普遍认为上云很时髦,但容易忽略一个潜在的问题:上云后账单容易失控。虽然现在的运维系统相对自动化,可以自动扩缩容等,但是也同时存在代码漏洞和人为操作不当,导致账单失控的风险。因此,对于云计算的治理变得越来越重要,需要找到方法将账单回归到合理且可控的状态。

其次,联动业务侧共同降本也不可或缺。如果业务方面滥用资源,即使在技术层面做到极致,也容易造成资源浪费。我认为业务和技术的一号位必须同时参与进来,业务团队和技术部门通力合作,联动配合,才能真正实现降本和增效。

此外,建立度量体系方能有效规范。实现降本增效不是一蹴而就的,而是一个需要不断度量和监控的过程。业务的 ROI 我们很清楚,但是业务在 IT 方面花费了多少成本却可能不容易回答,这是因为过去没有进行度量。在虎牙,我们使用基于单位 PCU (Peak Concurrent Users)的标准进行度量,这是因为我们的资源是按照峰值来准备的。通过找到一个基准,就可以容易地进行度量,确定当前业务 IT 投入是否合理。因此,建立度量体系是非常重要的。

最后,智能化计量计费也能有效提供保障。云产品相对比较复杂,包含许多计费项。过去在我们进行计量计费时,更多的是数据展示和数据挖掘,但是现在我们需要更进一步地去实现一些智能化的数据分析,直接告诉业务方云成本、IT 成本都有哪些不健康的地方。否则实现降本增效的工作仅仅是一次性的,大家可能会认为成本问题已经得到解决,但如果代码质量不佳导致浪费增加,成本很快又会飙升。因此,我们需要将一些智能化的数据分析能力纳入到系统中,这是我们目前正在努力实现的。

(二)从硬件芯片入手,抓住技术红利

善于利用技术,拥有先进的芯片硬件对长期主义而言是实现降本增效的正确方式。在算力方面,我们考虑使用 NPU 或 DPU 替代 GPU。因为 GPU 是通用卡,有很多功能,如果只是为了某个领域的推理,可以将所需功能做成单独的卡来降低成本。经过我们与国内芯片制造商合作一整年的测试结果,降本效果确实非常明显,个别模型的成本可以降低 80%,这是非常可观的。然而,NPU 是专用的,通用性较差,生态体系尚不完善,一旦企业改变模型或参数,以前的优化效果可能会消失,这是存在的问题。我们仍在朝着这个方向与腾讯云一起探索。

(三)探索新兴软件架构,Serverless释放资源

另一方面是在软件架构层面,除了容器之外,Serverless 也非常关键,它实现了真正的按需付费和使用。虎牙也在业务 Serverless 化方面进行了探索,效果也比较明显。我认为这是一种被认可的方向,例如大数据、AI 等都可以用这种方式快速配置环境和资源,实现按秒甚至按微秒计费。

我加入虎牙时曾谈到如果业务呈 10 倍速增长,基础设施和能力是否跟得上的问题。实际上,我的初心是希望我们能在资源层面建立一个健康、能够应对各种风险和灾难的架构,在业务以 10 倍速增长时,我们的基础设施能够轻松应对,并在资源层面具有很好的成本优势。

五、携手腾讯云,助力降本增效落地

腾讯云作为虎牙降本增效落地过程中携手共进的好伙伴,协助虎牙提升音视频能力,保障了各种大型赛事直播,毛茂德老师一路在虎牙见证着点点滴滴。让我们一起跟随毛茂德老师,共寻虎牙降本增效之路的落地之旅:

值得一提的是,我们与腾讯云合作的过程中,腾讯云团队会主动帮我们寻找可以优化的成本,并与我们一起进行优化。例如在 CDN 层面,腾讯云免除了很多成本,而在转码方面,我们也通过按需进行转码的方式合作进行了优化,例如在没有观众观看直播的时候,我们不需要进行转码,就可以降低成本,腾讯云也会将这些降低的成本返回给我们。同样,在云游戏方面,腾讯云也会根据监控的情况来为我们提供有效的建议,例如如何最大限度地利用 GPU 卡、如何优化调度以实现成本降低。

与和腾讯云合作后,我们在降本增效上也取得了非常不错的成果,去年团队仅仅使用 8 个月的成本就完成了 11 个月的业务量,达到了非常可观的效果。

具体而言,在虎牙云游戏方面,我们积极发挥云技术优势。我们的云游戏完全依赖于腾讯云,在北京、上海、广州和成都等地,腾讯云都为我们提供了所需的资源和技术上的支持,快速帮助我们实现业务需求。

  • 在技术方面,云游戏对于实时高清性和时延要求非常高,因此需要先将算力下沉到离玩家最近的地方。在过去几年中,我们一直在进行边缘计算的探索,腾讯云也为我们提供了许多边缘技术支持。
  • 在网络带宽方面,包括成本的降低,需要解决许多技术挑战。
  • 在 GPU 测试方面,腾讯云为我们提供了许多相关技术,例如如何将 GPU 进行合理的分割以及与其他业务共享以降低成本,从 T4 到 A10 再到 A30 等各种方面都有涉及,这些技术显著降低了云游戏的成本。

我们还通过调度音视频直播线路来降低了成本。而在计量计费方面我们也有所创新,云游戏业务本身有高低峰期之分,对此,云 GPU 的弹性计量计费使我们在准备资源时不必一直为高峰期做准备,从而带来很多的降本效益。

此外,借助腾讯云,我们主要采取以下四方面措施来实现对许多重要的大型赛事直播的保障:

其一,合理预测流量及资源。虎牙采用了混合云架构,每次保障赛事时需要对所需容量进行预估,考虑各种因素如比赛举办地点、参赛队伍、预计流量等,从而转换为所需资源量,以确保云和 CDN 的容量充足。然而,我们发现仅按照总决赛的峰值进行资源准备会造成资源浪费。因此,我们采用了一些 AI 技术,通过整理历史比赛数据,分析四分之一和八分之一决赛等各个环节的流量需求,并逐步实现阶梯式扩容。这种阶梯式扩容方法,不仅有助于优化资源分配,也能大大降低成本。

其二,做好预防,保障快速切换。在大型赛事中,代码和架构的更改非常困难,因此我们更多会关注预防和快速切换来避免故障影响。我们在 CDN 和后端架构层面都实施了多种容灾措施,在赛前进行容灾演练,以确保能够在故障发生时快速响应。

其三,定义关键指标。我们定义了许多“黄金指标”的监控指标。对于整个虎牙来说,我们非常关注登录、支付、弹幕等关键业务指标。一旦这些关键指标出现问题,我们的监控团队会迅速进行切换或重新部署等操作。这些黄金指标的定义使得监控团队能够迅速了解到哪些业务出现了异常状况,为其后续行动提供了非常方便的参考。

其四,弹性调度也至关重要。在过去,我们需要提前一个月甚至两个月就开始进行资源报备和准备工作,不管是中心云、边缘还是 IDC 网络,我们都需要进行扩容等动作。但是现在,由于整个公司都实现了容器化,我们的调度平台也非常完善。因此,我们准备资源的周期不需要那么长了。

实际上,我们与腾讯云的合作从很早期就开始了,随着腾讯云技术的迅速进步,我们的合作更加紧密,如今已经是全方位合作,基本涵盖了 IaaS 的各种层面,包括算力、网络、边缘计算以及 CDN 等等。对于云游戏这一特殊业务而言,我们不仅需要在技术层面进行合作,更需要在游戏内容方面进行改进和协调,这一方面的合作给了我们非常大的帮助。此外,我们在音视频领域也一直有 IaaS 方面的合作。

在我看来,腾讯云的服务非常专业到位。对于我们的 B 端产品而言,服务至关重要,解决问题的过程并不仅限于售卖给我们一个产品,还需要深入关注技术上的细节、问题、需求以及开发和专家对接等多个方面。在我们与腾讯云的合作中,服务方面的同事非常敬业,基本上长期驻扎在我们的虎牙团队之中,深入了解并收集我们的各种需求,甚至有时比我们自己的技术同事对我们的系统架构有更深刻的认识。在这一方面,腾讯云表现得非常出色。

结语

作为一位互联网老兵,毛茂德老师在虎牙夯实基础能力建设,并拥有一双前瞻性的慧眼,保持技术架构先进,以技术驱动效能提升,走出了一条属于虎牙的降本增效之路。相信在未来,虎牙一定会走得更稳,更远。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

专访虎牙直播毛茂德 的相关文章

随机推荐

  • vscode 个人使用配置

    因公司绿盾加密导致使用source insight远程访问代码受限 转战vscode 把自己第一次接触以来的操作记录一下 省的哪天要重新配置还得百度半天 文章目录 1 插件安装 2 设置中文 3 设置ssh远程访问代码 3 1 安装Remo
  • 单例模式的4种写法

    单例模式是开发过程中常用的模式之一 首先了解下单例模式的四大原则 构造方法私有 以静态方法或枚举返回实例 确保实例只有一个 尤其是多线程环境 确保反射或反序列化时不会重新构建对象 饿汉模式 饿汉模式在类被初始化时就创建对象 以空间换时间 故
  • Redis的多路复用机制

    Redis是单线程还是多线程 通常我们所说的Redis 是单线程 主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的 这也是 Redis 对外提供键值存储服务的主要流程 但 Redis 的其他功能 比如持久化 异步删除 集
  • [RoarCTF 2019]Easy Calc

    进入题目是一个计算器的功能界面 查看源代码 可以发现是有WAF的 且存在一个calc php文件 这里接收一个num参数 可以看到这里创建了一个黑名单列表 然后用正则是去匹配 进行非法参数的过滤 那这题就是要绕过这个过滤和过一个WAF了 先
  • Pycharm使用---Black代码格式化工具

    前言 一个代码规范 可读性强是我们在写代码或者看代码时最期望的 也便于我们理解代码的功能和思路 而对于格式不是很规范的代码 要去修改其格式 如果单纯靠人工更正格式 对于简短的代码 难度不是很高 但是遇到一个较长 功能复杂的代码或者项目 人工
  • vue3.3 v-model 双向绑定

    配置代码还是有必要贴出的 老截图也不好 plugins vue script defineModel true propsDestructure true vueJsx
  • mongoDB数据库net stop mongoDB 发生系统错误 5。 拒绝访问。

    在使用mongoDB的时候命令行输入 net stop start mongDB停止 启动数据数据库时 终端报错如下 报错原因 权限不够 启动MongoDB服务需要以管理员的身份启动CMD 解决方案 CMD命令提示符地址 c盘 gt win
  • jmeter—建立测试计划

    一个测试计划描述了一系列 Jmeter 运行时要执行的步骤 一个 完整的测试计划包含 一个或者多个线程组 逻 辑控制 取样发生控制 监听器 定时器 断言和配置元件 一 建立测试计划 在这一部分 你将学到如何创建一个基础的测试计划来测试网站
  • 谈谈测试种类有哪些?

    此块引用怎么也删不掉了 那就留着吧 本来想在前面写点感想 害 也许是我不会用 灰度测试 A B测试 BVT测试 UAT测试 埋点测试 接口测试 缓存测试 灰度测试 灰度测试 就是在某项产品或应用正式发布前 选择特定人群试用 逐步扩大其试用者
  • @RequestBody不生效,获取不到数据

    RequestBody不生效 获取不到数据 网上找了很多 试过了不生效 最后检查引用包的时候 看到引用到了swagger的 RequestBody去了 大无语事件 不看还不知道swagger也有一个 RequestBody 改为引用spri
  • 【廖雪峰python进阶笔记】函数式编程

    1 高阶函数 高阶函数就是可以把函数作为参数的函数 下面我们看一个简单的高阶函数 def add x y f return f x f y 如果传入abs作为参数f的值 add 5 9 abs 根据函数的定义 函数执行的代码实际上是 abs
  • 常用的COMSOL操作符和数学函数

    算符 d f x f对x方向的微分 1 使用d算符来计算一个变量对另一个变量的导数 如 d T x 指变量T对x求导 而d u 2 u 2 u等 2 如果模型中含有任何独立变量 建模中使用d算符会使模型变为非线性 3 在解的后处理上使用d算
  • moviepy音视频剪辑:使用fl_time进行诸如快播、慢播、倒序播放等时间特效处理的原理、代码实现以及需要注意的坑

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt moviepy音视频剪辑实战 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一 引言 在 moviepy音视频剪辑 mo
  • Eclipse中创建Web项目(2023年)

    在创建Web项目前要先配置好JDK环境以及Tomcat环境 配置教程已经发过了 接下来我们开始创建第一个Web项目 目录 一 创建web项目 二 整合Tomcat服务器 三 项目部署到Tomcat中 一 创建web项目 1 打开Eclips
  • Android集合和数据的相互转换

    1 集合转换成数组 如有需要可以把String换成其他类 List
  • 知识图谱从哪里来:实体关系抽取的现状与未来

    点击上方 Datawhale 选择 星标 公众号 第一时间获取价值内容 最近几年深度学习引发的人工智能浪潮席卷全球 在互联网普及带来的海量数据资源和摩尔定律支配下飞速提升的算力资源双重加持下 深度学习深入影响了自然语言处理的各个方向 极大推
  • iOS Provisioning Profile(Certificate)与Code Signing详解

    引言 关于开发证书配置 Certificates Identifiers Provisioning Profiles 相信做 iOS 开发的同学没少被折腾 对于一个 iOS 开发小白 半吊子 比如像我自己 抑或老兵 或多或少会有或曾有过以下
  • js中数组常用几种方法

    Array 前端js数组常用方法 1 for Each 此方法是将数组中的每个元素执行传进提供的函数 没有返回值 var arr 1 2 3 4 5 function m1 a console log a 2 arr forEach m1
  • jQuery XSS漏洞原因查找及解决方案

    测试网站是否存在此XSS跨站漏洞 以google浏览器为例 打开要测试的网站 在Console窗口输入 element attribute img src 123123 回车之后会出现弹窗 说明存在XSS跨站漏洞 解决方案 升级jquery
  • 专访虎牙直播毛茂德

    引言 作为一位经历了互联网 移动互联网阶段的老兵 毛茂德老师一路走来 始终保持自己的技术初心 不断探索未知领域的宽度 进入虎牙直播后 他积极推动虎牙拥抱云原生 进行业务创新 同时他也发挥技术优势 通过高效运维为企业实现了降本增效 专注于技术