2024 年最新 Golang 全套学习资料,助你体系化提升技能

2024-09-11
来源:网络整理

先自我介绍一下,我毕业于浙江大学,曾在华为、字节跳动等大公司任职,目前在阿里P7工作。

我知道大部分程序员,想要提升自己的技术,往往都是通过自我探索来成长,但是这种无系统的自学效率低,耗时长,而且很容易遭遇天花板而停滞不前!

因此我收集整理了一本《2024最新全套学习资料》,初衷很简单,就是为了帮助那些想提升自己却不知道从何下手的朋友。

既有适合初学者学习的零基础资料,也有适合经验3年以上小伙伴深入学习提高的进阶课程,覆盖95%以上的Go语言开发知识点,真正做到了系统化!

由于文件较多,这里只截图部分目录,全套包括厂方访谈、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,后续会陆续更新。

如果你需要这些材料,可以加V获取:(注意去)

文本

下图是一次直播的简化流程:

在直播的传输链路中,对延迟影响较大的主要因素有转码、分发和播放缓冲。使用实时转码模式时,转码器引入的延迟一般在 5s 以内甚至更短。CDN 的分发链路也会带来一定的延迟,但相对较短。为了对抗网络抖动引入的播放缓冲引入的延迟,播放缓冲引入的延迟往往在 5s 甚至更长。因此本文主要讨论如何在不断优化延迟的同时,降低播放缓冲,不影响整体播放体验(而不仅仅是卡顿)。在调优过程中,大家对播放体验有了更细致、更深入的理解,逐渐摸清了哪些 QoS 指标能够对关键的 QoE 指标产生直接影响,对未来的优化有了更明确的方向。

3.1 FLV解决方案

FLV是国内主流的直播协议,火山引擎对低延迟直播的探索也是从FLV开始,在百万英雄会、内购大会等活动中,FLV低延迟方案得到多次验证。

之前我们详细介绍过FLV-3s方案在抖音的详细实践过程(详细内容请跳转至基于http-FLV的抖音直播端到端时延优化实践)。同时我们提出使用FLV方案来降低时延,面临的挑战会更大:低时延场景会让直播整个链路的传输稳定性要求成倍增加。由于整体端到端链路较低,无论是制作链路还是观众网络的抖动都会更容易出现卡顿,只要出现卡顿,时延就会以秒为单位增加,累计时延最终会越来越大。世界杯赛事时延要求是2s,继续使用FLV-3s方案显然不能满足要求,需要精密的帧跟踪或者丢帧策略。

3.1.1 基于拥塞信息的双阈值时延追赶策略

音频和视频数据流时序

数据驱动的 QoE 和 QoS 优化

综上所述,需要完善的广播控制策略来平衡延迟和QoE指标。

输出:目标播放速度。

原则:

3.1.2 抖音 FLV 2s 低延迟方案优化总结

福利摘要

调优经验总结

3.2 RTM解决方案

RTM方案是一个借鉴,可以将端到端延迟降低到1s以内,在抖音上打磨了一年多,总体来说遇到的困难是很大的,在推进的过程中不断发现新的问题,也逐渐意识到直接把视频会议中的RTC方案应用到直播场景中效果并不好,需要做大量的修改才能让直播体验得到抖音用户的认可。同时评测同学们也持续跟踪和测试行业内已经上线的类似方案,经过上线测试发现现有的多个方案都存在很多问题,所以自研一直没有停止。RTM优化的目标是在延迟降低的情况下,让用户的核心体验指标跟上或者优于市场上的FLV方案。但是由于FLV低延迟方案的持续优化和取得的成果,RTM的优化目标的门槛也在不断提升。

每次迭代都需要经过分析数据 -> 发现问题点 -> 提出优化方案 -> 完成开发测试 -> AB 实验 -> 分析数据等反复的循环,每个循环至少需要一个版本,甚至多个版本,因此整体项目耗时较长。在如何提高实验效率方面,我们也做了很多思考和探索。最终通过多次实验和反复解决问题,核心用户体验指标基本与 FLV 对齐。因此在多场世界杯比赛中,RTM 方案也承担了一定的 CDN 容量,核心关键指标与市场对齐,稳定性和质量也得到了充分验证。

3.2.1 RTM解决方案优化概述

项目上线后,直接将 RTC 实时通讯 SDK 集成到播放器中,并先进行了线上 AB 测试。初步的实验结果让人惊喜:除了端到端时延指标符合预期外,推流成功率、首屏打开时间、卡顿等指标均远远落后于 FLV。因此,RTC 技术方案若想成功部署在直播场景,还需要结合直播控制策略进一步优化。

为了让RTM的综合指标与FLV看齐,RTM的播控逻辑从多个角度进行了定制,所有优化都围绕核心用户体验指标进行:

3.2.2 首帧时间优化

传统的 RTC 技术使用 SDP 信令来协商媒体功能。SDP 信令以以下方式交互:

抖音信息延迟_抖音聊天有延迟_抖音说话有延迟

但是HTTP SDP信令交互存在以下缺点:在弱网环境下(如RTT大/网络信号不稳定),HTTP信令连接建立成功率不够理想;导致播放请求响应慢或者超时(基于信令数据包大、TCP重传导致信令响应速度不理想);另一方面SDP交互传输SDP文内容非常大(一般3KB~10KB),连接建立代价高,导致初始化开销难以承受;相比FLV在HTTP请求完成后直接完成连接建立和媒体数据传输,可以采用一种新的信令方式:信令。这是一种基于二进制编码的压缩协议,为标准SDP协议提供压缩处理;该方案可以减少信令交互时间,提高网络传输效率,减少直播推流首帧的渲染时间,提高推流秒开率/推流成功率等QoS统计指标。它的工作原理是将原生的SDP转换成更小的二进制格式(),通过一个UDP数据包(在MTU限制内)完成整个C/S交互。

利用信令进行媒体协商通信的信令交互流程如下图所示:采用压缩信令在UDP网络上传输;期望单个UDP数据包请求能够完成SDP完整压缩信息的传输。

当前信令(UDP)信令上线后,观察后续QoS指标发现,信令连接建立成功率和首帧时间都有了很大的优化。

3.2.3 优化推流成功率

通过线上AB实验我们发现RTM推流成功率和FLV存在一定的差距,并且这种差距通过观察可以看出用户的网络级别质量和用户的推流成功率存在一定的正相关性(UDP协议本身的特性),即用户的网络质量越高,成功率越高。

拉流网络层级筛选

UDP节点检测

信号预加载

3.2.4 滞后优化

内核禁用丢帧优化

RTC内核平滑帧优化

3.2.5 播控逻辑优化

RTM 网络传输 SDK 抽象:改造内核,复用引擎中的网络传输打包/模块,移除解码/渲染模块,抛弃原始音视频数据,方便播放器集成。

解码器复用:减少解码器重新初始化的时间和首帧解码的延迟;重用解码器-渲染器的播放缓冲区速度控制逻辑。

音视频同步优化:RTC音视频帧输出后,根据FLV播控逻辑在播放器端进行二次音视频同步处理;根据主时钟进行渲染校准,将视频帧渲染同步到音频时间线。

3.2.6 世界杯RTM优化

世界杯UHD分辨率已经达到了4K,给RTM方案的性能带来了极大的挑战,在前期的测试中也发现了一些在低分辨率下不会出现的问题。当时时间非常紧张,不过在正式比赛前,这些问题都得到了修复,搭上了末班车。主要问题及解决方案如下:

最终性能和效果通过了测试,并在世界杯期间成功上线RTM,承担了一定的流量,上线后稳定性和质量均符合预期。

3.3 世界杯期间抖音与其他产品平均延迟对比

在实际的世界杯比赛中,抖音的延迟一直领先于相同信号源的其他产品30s左右。甚至在最近的两场比赛中,其他产品在部分直播间采用了快速追赶的策略,比抖音快了0~1s,但追赶速度过快,持续时间超过15s,明显有感知,体验相对较差。这个策略之前也在抖音上试过,播放时间明显为负,所以最终没有跟进。

4. 未来优化方向

未来在高清化、沉浸式、互动式直播场景中,针对高码率、低延时的需求,火山引擎视频云将不断完善现有的各种适合不同场景的低延时方案,同时不断探索新的方案,在延时、成本、卡顿等播放体验上找到适合不同场景的最佳或最均衡的解决方案。

我认为火山引擎视频云最大的优势在于能够把先进的技术放到拥有大量用户的真实场景中进行在线训练,通过不断总结失败的教训、成功的经验,对用户体验的理解更加深刻细致。下面就简单介绍一下火山引擎视频云在各类解决方案上会继续努力的方向。

4.1 FLV 4.2 RTM

在RTM方案中,火山引擎视频云还在探索优化点,以下是未来会探索的一些方向:

不断提升拉流量成功率

RTP扩展功能持续迭代

网上有很多的学习资料,但是如果学习到的知识不系统,遇到问题也只是触及表面,不再深入研究,就很难真正提高技能。

需要此系统资料的朋友可以加V获取:(注:转)

一个人可以走得很快,但一群人才能走得更远!无论你是IT行业资深人士,还是对IT行业感兴趣的新人,都欢迎加入我们的圈子(技术交流、学习资源、职场吐槽、大公司内部推荐、面试辅导),让我们一起学习成长!

持续迭代

网上有很多的学习资料,但是如果学习到的知识不系统,遇到问题也只是触及表面,不再深入研究,就很难真正提高技能。

需要此系统资料的朋友可以加V获取:(注:转)

[外部链接图片正在转移...(img--19)]

一个人可以走得很快,但一群人才能走得更远!无论你是IT行业资深人士,还是对IT行业感兴趣的新人,都欢迎加入我们的圈子(技术交流、学习资源、职场吐槽、大公司内部推荐、面试辅导),让我们一起学习成长!

分享