推算几天前的日期hnxrtt还登过的站,怎么今天wwWhnxrttcom就变为空白了

即时通讯技术分享即时通讯技术分享IM聊天、实时推送等即时通讯相关技术的研究与分享关注专栏Jack Jiang 的文章{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\u002Fpay.zhihu.com\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&title&:&iOS后台唤醒实战:微信收款到账语音提醒技术总结&,&author&:&nan-ren-2600&,&content&:&\u003Cblockquote\u003E本文引用自腾讯大讲堂公众号的技术分享,感谢原作者。\u003C\u002Fblockquote\u003E\u003Ch2\u003E1、前言\u003C\u002Fh2\u003E\u003Cp\u003E微信为了解决小商户老板们在频繁交易中不方便核对、确认到账的功能痛点,产品MM提出了新版本需要支持收款到账语音提醒功能。本文借此总结了iOS平台上的APP后台唤醒和语音合成、播放等一系列技术开发过程中遇到的坑和小技巧,希望与您分享。\u003C\u002Fp\u003E\u003Cp\u003E(本文同步发布于:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003Ehttp:\u002F\u002Fwww.52im.net\u002Fthread-.html\u003C\u002Fa\u003E)\u003C\u002Fp\u003E\u003Ch2\u003E2、技术方案\u003C\u002Fh2\u003E\u003Ch2\u003E2.1 后台唤醒App\u003C\u002Fh2\u003E\u003Cp\u003E收款到账语音提醒需要收款方在收到款后,播放一段TTS合成语音播报金额,微信在前台时可以通过模板消息将需要播报的金额带下来,再请求TTS数据并播放,但是app在挂起或者被kill掉的情况下要如何请求语音数据并播放呢?\u003C\u002Fp\u003E\u003Cp\u003EiOS提供了两种方式唤醒处于挂起或已经被kill掉的app。分别是Silent Notification和VoIP Push Notification,客户端在被唤醒之后将获得30s的后台运行时间,这段运行时间足以请求合成语音数据并播放。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E具体技术细节如下:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E\u003Cb\u003E1)\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=https%3A%2F%2Fdeveloper.apple.com%2Flibrary%2Fcontent%2Fdocumentation%2FNetworkingInternet%2FConceptual%2FRemoteNotificationsPG%2FCreatingtheNotificationPayload.html%23%2F%2Fapple_ref%2Fdoc%2Fuid%2FTP-CH10-SW8\&\u003ESilent Notification\u003C\u002Fa\u003E:\u003C\u002Fb\u003ESilent Notification在iOS7以上便可以支持,但是每小时能推送的Silent Notification次数有限制;\u003Cbr\u003E\u003Cb\u003E2)\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=https%3A%2F%2Fdeveloper.apple.com%2Flibrary%2Fcontent%2Fdocumentation%2FPerformance%2FConceptual%2FEnergyGuide-iOS%2FOptimizeVoIP.html\&\u003EVoIP Push Notification\u003C\u002Fa\u003E:\u003C\u002Fb\u003EVoIP Push Notification则是在iOS8以上才支持的新Push类型,相比于Silent Notification,VoIP Push具有高优先级、低延迟的优势,并且没有次数限制。\u003C\u002Fblockquote\u003E\u003Cp\u003E对比这两种技术方案,VoIP Push Notification明显更适合用于收款到账语音提醒的唤醒方案。\u003C\u002Fp\u003E\u003Ch2\u003E2.2 TTS合成语音\u003C\u002Fh2\u003E\u003Cp\u003ETTS语音合成方案分为离线合成方案和在线合成方案,离线合成方案省去网络请求,合成速度更快,节省网络流量,但是合成音的听起来比较机械,语速和停顿的处理较差一些。如果对合成音的效果要求不是特别高,可以考虑采用iOS自带的AVSpeechSynthesis框架,免去语音库的合入,减少安装包大小。\u003C\u002Fp\u003E\u003Cp\u003E在线合成方案的效果则相对更像人声,富有感情。考虑到产品体验,我们采用了搜索产品部提供的在线语音合成方案,接入方式\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=https%3A%2F%2Fopen.weixin.qq.com%2Fcgi-bin%2Fshowdocument%3Faction%3Ddir_list%26t%3Dresource%2Fres_list%26verify%3D1%26id%3Dopen%26token%3D%26lang%3Dzh_CN\&\u003E可以看这篇文章\u003C\u002Fa\u003E,合成音格式支持wav、mp3、silk,amr、speex。对比后发现,在合成相同文本的情况下,amr的压缩率最高,但是能听到音质下降明显。silk格式压缩率次高,且能保持相对清晰的音质,单条合成语音大小在2KB左右。\u003C\u002Fp\u003E\u003Ch2\u003E2.3 唤醒后播放音频文件\u003C\u002Fh2\u003E\u003Cp\u003E在请求到合成语音后,要在后台或者锁屏状态下播放音频文件,AVAudio Session的Category值需要使用AVAudioSessionCategoryPlayback或是AVAudioSessionCategoryPlayAndRecord,CategoryOptions根据实际需要可选择MixWithOthers(与其他声音混音)或是DuckOthers(调低其他声音的音量)。\u003C\u002Fp\u003E\u003Cimg src=\&v2-525c581dcf2fda8f6bc47.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&666\& data-rawheight=\&558\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E需要注意的是:\u003C\u002Fb\u003E只有iOS10以上才支持app被唤醒后在后台\u002F锁屏状态下播放音频。所以iOS10以下的设备,在收到VoIP Push后只能在local push上设定一段固定铃声,这也是为什么iOS10以下只有“微信支付收款到账”,而没有后面具体的金额数值。\u003C\u002Fp\u003E\u003Ch2\u003E3、静音开关检测\u003C\u002Fh2\u003E\u003Cp\u003E不幸的是,在产品发布后没多久就受到了某互联网大佬的吐槽。\u003C\u002Fp\u003E\u003Cimg src=\&v2-fd8dbed4d5a.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&674\& data-rawheight=\&580\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E从产品体验上来说,收款到账的金额播报是随着local push的弹出一起播放的,更像是一种特殊的push铃声,而苹果对push铃声的处理是受到静音开关控制的,所以讲道理,这个吐槽是合理的。然而前面提到App在被VoIP Push唤醒之后,需要将AudioSessionCategory设置为AVAudioSessionCategoryPlayback或AVAudioSessionCategoryPlayAndRecord才可以在后台播放音频文件,这两种模式是不受静音开关控制的。要实现这个需求,就必须获取当前静音开关的状态。而苹果在iOS5之后并没有明确地提供一种方式让开发获取静音开关的状态,这就陷入了一个尴尬的局面。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E苹果在iOS5之前可以使用以下方式监听静音键开关:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E- (BOOL)isMuted \u003Cbr\u003E{ \u003Cbr\u003E
CFStringR \u003Cbr\u003E
UInt32 routeSize = sizeof(CFStringRef); \u003Cbr\u003E
OSStatus status = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route); \u003Cbr\u003E
if(status == kAudioSessionNoError) \u003Cbr\u003E
{ \u003Cbr\u003E
if(route == NULL|| !CFStringGetLength(route)) \u003Cbr\u003E
returnYES; \u003Cbr\u003E
} \u003Cbr\u003E\u003Cbr\u003E
returnNO; \u003Cbr\u003E}\u003C\u002Fblockquote\u003E\u003Cp\u003E苹果在iOS5之后便禁止了使用这种方式监听静音按键,背后的原因应该是苹果希望开发者使用AVAudioSession来提供统一的音频播放效果。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E最后我在Reddit上找到了一种曲线救国的方式,实现起来也不复杂:\u003C\u002Fb\u003E使用AudioServicesPlaySystemSound播放一段0.2s的空白音频,并监听音频播放完成事件,如果从开始播放到回调完成方法的间隔时间小于0.1s,则意味当前静音开关为开启状态。\u003C\u002Fp\u003E\u003Cblockquote\u003Evoid SoundMuteNotificationCompletionProc(SystemSoundID
ssID,void* clientData){\u003Cbr\u003E
MMSoundSwitchDetector* detecotr = (__bridge MMSoundSwitchDetector*)clientD\u003Cbr\u003E
[detecotr complete];\u003Cbr\u003E}\u003Cbr\u003E- (instancetype)init {\u003Cbr\u003E
self= [superinit];
\u003Cbr\u003E
if(self) {\u003Cbr\u003E
NSURL*pathURL = [[NSBundlemainBundle] URLForResource:@\&mute\&withExtension:@\&caf\&];
\u003Cbr\u003E
if(AudioServicesCreateSystemSoundID((__bridge CFURLRef)pathURL, &_soundId) == kAudioServicesNoError){\u003Cbr\u003E
AudioServicesAddSystemSoundCompletion(self.soundId, CFRunLoopGetMain(), kCFRunLoopDefaultMode, SoundMuteNotificationCompletionProc,(__bridge void*)(self));\u003Cbr\u003E
UInt32 yes = 1;\u003Cbr\u003E
AudioServicesSetProperty(kAudioServicesPropertyIsUISound, sizeof(_soundId),&_soundId,sizeof(yes), &yes);\u003Cbr\u003E
} else{\u003Cbr\u003E
MMErrorWithModule(LOGMODULE, @\&Create Sound Error.\&);\u003Cbr\u003E
_soundId = 0;\u003Cbr\u003E
}\u003Cbr\u003E
}\u003Cbr\u003E}\u003Cbr\u003E- (void)checkSoundSwitchStatus:(CheckSwitchStatusCompleteBlk)completHandler {
\u003Cbr\u003E
if(self.soundId == 0) {\u003Cbr\u003E
completHandler(YES);
\u003Cbr\u003E\u003Cbr\u003E
}\u003Cbr\u003E
self.completeHandler = completH\u003Cbr\u003E
self.beginTime = CACurrentMediaTime();\u003Cbr\u003E
AudioServicesPlaySystemSound(self.soundId);\u003Cbr\u003E}\u003Cbr\u003E- (void)complete {\u003Cbr\u003E
CFTimeInterval elapsed = CACurrentMediaTime() - self.beginT\u003Cbr\u003E
BOOLisSwitchOn = elapsed & 0.1;
\u003Cbr\u003E
if(self.completeHandler) {\u003Cbr\u003E
self.completeHandler(isSwitchOn);\u003Cbr\u003E
}\u003Cbr\u003E}\u003C\u002Fblockquote\u003E\u003Ch2\u003E4、设置声音阈值\u003C\u002Fh2\u003E\u003Cp\u003E另外一个用户反馈较多的问题是听不到播报声音,通过查看日志发现是触发语音播报时,用户设置的系统音量过小所导致。首先想到的解决方案是直接设置AVAudioPlayer的volume(或者是AudioQueue中的kAudioQueueParam_Volume),然而实验过后发现这样行不通,volume属性受制于系统音量(比如系统volume是0.5,AVAudioPlayer的音量是0.6,则最终的音量为0.5*0.6 =0.3)。\u003C\u002Fp\u003E\u003Cp\u003E要解决音量过小的问题,还是需要通过调节系统音量。最终的解决方案借鉴了进入收付款展示二维码时自动调节屏幕亮度的方案:如果屏幕亮度未达到阈值,则调高屏幕亮度到阈值,离开页面时,将亮度设回原亮度。同理,播放提示音时,若用户设置的系统音量小于阈值,则调节到阈值。提示音播放完毕后,将提示音调回原音量。\u003C\u002Fp\u003E\u003Cp\u003E控制系统音量有以下两种方式。\u003C\u002Fp\u003E\u003Ch2\u003E4.1 方式一:通过MPMusicPlayerController设置音量\u003C\u002Fh2\u003E\u003Cblockquote\u003E\u002F\u002FThis property is deprecated -- use MPVolumeView for volume control instead.mpc.volume = 0;
\u002F\u002F0.0~1.0\u003Cbr\u003EMPMusicPlayerController *mpc = [MPMusicPlayerController applicationMusicPlayer];\u003C\u002Fblockquote\u003E\u003Cp\u003E第一种方式简单粗暴,在设置的时候会弹出系统音量提示框,如果用户在使用app的过程突然弹出音量框,会对用户造成困扰,不建议使用这种方式,并且苹果在iOS7.0以后已将该属性标为deprecated。\u003C\u002Fp\u003E\u003Ch2\u003E4.2 方式二:通过MPVolumeView设置音量\u003C\u002Fh2\u003E\u003Cp\u003E第二种方式则是将一个看不见的MPVolumeView添加到当前视图上,系统音量提示框就不会显示了。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E需要注意的是:\u003C\u002Fb\u003E在调节完系统音量需要将MPVolumeView移除,否则后续用户手动调节音量会出现系统音量提示框不显示的情况。\u003C\u002Fp\u003E\u003Cp\u003E调节音量的方式,则是先取到MPVolumeView中名为MPVolumeSlider的子View,并对其发送模拟用户操作的事件。\u003C\u002Fp\u003E\u003Cblockquote\u003E- (void)setSystemVolume:(float)volume {\u003Cbr\u003E
UISlider* volumeViewSlider = \u003Cbr\u003E
for(UIView *view in [self.m_privateVoulmeView subviews]){
\u003Cbr\u003E
if([view.class.description isEqualToString:@\&MPVolumeSlider\&]){\u003Cbr\u003E
volumeViewSlider = (UISlider*)
\u003Cbr\u003E\u003Cbr\u003E
}\u003Cbr\u003E
if(volumeViewSlider != nil) {\u003Cbr\u003E
[volumeViewSlider setValue:volume animated:NO];
\u002F\u002F通过send\u003Cbr\u003E
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];\u003Cbr\u003E
}\u003Cbr\u003E}\u003C\u002Fblockquote\u003E\u003Ch2\u003E附录:有关微信、QQ的文章汇总\u003C\u002Fh2\u003E\u003Cblockquote\u003E\u003Cb\u003E[1] QQ、微信的技术文章:\u003C\u002Fb\u003E\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EiOS后台唤醒实战:微信收款到账语音提醒技术总结\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E腾讯技术分享:社交网络图片的带宽压缩技术演进之路\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信团队分享:视频图像的超分辨率技术原理和应用场景\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信团队分享:微信每日亿次实时音视频聊天背后的技术解密\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EQQ音乐团队分享:Android中的图片压缩技术详解(上篇)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EQQ音乐团队分享:Android中的图片压缩技术详解(下篇)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E腾讯团队分享:手机QQ中的人脸识别酷炫动画效果实现详解\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E腾讯团队分享 :一次手Q聊天界面中图片显示bug的追踪过程分享\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信团队分享:微信Android版小视频编码填过的那些坑\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信手机端的本地数据全文检索优化之路\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E企业微信客户端中组织架构数据的同步更新方案优化实战\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信团队披露:微信界面卡死超级bug“15。。。。”的来龙去脉\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EQQ 18年:解密8亿月活的QQ后台服务接口隔离技术\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E月活8.89亿的超级IM微信是如何进行Android端兼容测试的\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E以手机QQ为例探讨移动端IM中的“轻应用”\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-932-1-1.html\&\u003E一篇文章get微信开源移动端数据库组件WCDB的一切!\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-921-1-1.html\&\u003E微信客户端团队负责人技术访谈:如何着手客户端性能监控和优化\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-895-1-1.html\&\u003E微信后台基于时间序的海量数据冷热分级架构设计实践\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-893-1-1.html\&\u003E微信团队原创分享:Android版微信的臃肿之困与模块化实践之路\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-801-1-1.html\&\u003E微信后台团队:微信后台异步消息队列的优化升级实践分享\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-789-1-1.html\&\u003E微信团队原创分享:微信客户端SQLite数据库损坏修复实践\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-675-1-1.html\&\u003E腾讯原创分享(一):如何大幅提升移动网络下手机QQ的图片传输速度和成功率\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-697-1-1.html\&\u003E腾讯原创分享(二):如何大幅压缩移动网络下APP的流量消耗(下篇)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-696-1-1.html\&\u003E腾讯原创分享(二):如何大幅压缩移动网络下APP的流量消耗(上篇)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-620-1-1.html\&\u003E微信Mars:微信内部正在使用的网络层封装库,即将开源\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-684-1-1.html\&\u003E如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-623-1-1.html\&\u003E开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石 [源码下载]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-310-1-1.html\&\u003E微信新一代通信安全解决方案:基于TLS1.3的MMTLS详解\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-210-1-1.html\&\u003E微信团队原创分享:Android版微信后台保活实战分享(进程保活篇)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-209-1-1.html\&\u003E微信团队原创分享:Android版微信后台保活实战分享(网络保活篇)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-206-1-1.html\&\u003EAndroid版微信从300KB到30MB的技术演进(PPT讲稿) [附件下载]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-205-1-1.html\&\u003E微信团队原创分享:Android版微信从300KB到30MB的技术演进\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-200-1-1.html\&\u003E微信技术总监谈架构:微信之道——大道至简(演讲全文)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-199-1-1.html\&\u003E微信技术总监谈架构:微信之道——大道至简(PPT讲稿) [附件下载]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-201-1-1.html\&\u003E如何解读《微信技术总监谈架构:微信之道——大道至简》\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-186-1-1.html\&\u003E微信海量用户背后的后台系统存储架构(视频+PPT) [附件下载]\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-624-1-1.html\&\u003E微信异步化改造实践:8亿月活、单机千万连接背后的后台解决方案\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-178-1-1.html\&\u003E微信朋友圈海量技术之道PPT [附件下载]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-195-1-1.html\&\u003E微信对网络影响的技术试验及分析(论文全文)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-179-1-1.html\&\u003E一份微信后台技术架构的总结性笔记\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-177-1-1.html\&\u003E架构之道:3个程序员成就微信朋友圈日均10亿发布量[有视频]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-168-1-1.html\&\u003E快速裂变:见证微信强大后台架构从0到1的演进历程(一)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-170-1-1.html\&\u003E快速裂变:见证微信强大后台架构从0到1的演进历程(二)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-143-1-1.html\&\u003E微信团队原创分享:Android内存泄漏监控和优化技巧总结\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-142-1-1.html\&\u003E全面总结iOS版微信升级iOS9遇到的各种“坑”\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-139-1-1.html\&\u003E微信团队原创资源混淆工具:让你的APK立减1M\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-140-1-1.html\&\u003E微信团队原创Android资源混淆工具:AndResGuard [有源码]\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-138-1-1.html\&\u003EAndroid版微信安装包“减肥”实战记录\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-137-1-1.html\&\u003EiOS版微信安装包“减肥”实战记录\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-136-1-1.html\&\u003E移动端IM实践:iOS版微信界面卡顿监测方案\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-128-1-1.html\&\u003E微信“红包照片”背后的技术难题\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-126-1-1.html\&\u003E移动端IM实践:iOS版微信小视频功能技术方案实录\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-124-1-1.html\&\u003E移动端IM实践:Android版微信如何大幅提升交互性能(一)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-125-1-1.html\&\u003E移动端IM实践:Android版微信如何大幅提升交互性能(二)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-120-1-1.html\&\u003E移动端IM实践:实现Android版微信的智能心跳机制\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-121-1-1.html\&\u003E移动端IM实践:WhatsApp、Line、微信的心跳策略分析\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-122-1-1.html\&\u003E移动端IM实践:谷歌消息推送服务(GCM)研究(来自微信)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-116-1-1.html\&\u003E移动端IM实践:iOS版微信的多设备字体适配方案探讨\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-862-1-1.html\&\u003E信鸽团队原创:一起走过 iOS10 上消息推送(APNS)的坑\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-999-1-1.html\&\u003E腾讯信鸽技术分享:百亿级实时消息推送的实战经验\u003C\u002Fa\u003E》\u003Cbr\u003E&& \u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fforum.php%3Fmod%3Dcollection%26action%3Dview%26ctid%3D12\&\u003E更多同类文章 ……\u003C\u002Fa\u003E\u003Cbr\u003E\u003Cb\u003E[2] QQ、微信的技术故事:\u003C\u002Fb\u003E\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E2017微信数据报告:日活跃用户达9亿、日发消息380亿条\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E腾讯开发微信花了多少钱?技术难度真这么大?难在哪?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-613-1-1.html\&\u003E技术往事:创业初期的腾讯——16年前的冬天,谁动了马化腾的代码\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-599-1-1.html\&\u003E技术往事:史上最全QQ图标变迁过程,追寻IM巨人的演进历史\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-874-1-1.html\&\u003E技术往事:“QQ群”和“微信红包”是怎么来的?\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-290-1-1.html\&\u003E开发往事:深度讲述,微信一路风雨的背后\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-204-1-1.html\&\u003E开发往事:微信千年不变的那张闪屏图片的由来\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-203-1-1.html\&\u003E开发往事:记录微信3.0版背后的故事(距微信1.0发布9个月时)\u003C\u002Fa\u003E》 \u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-115-1-1.html\&\u003E一个微信实习生自述:我眼中的微信开发团队\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-961-1-1.html\&\u003E首次揭秘:QQ实时视频聊天背后的神秘组织\u003C\u002Fa\u003E》\u003Cbr\u003E&& \u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fforum.php%3Fmod%3Dcollection%26action%3Dview%26ctid%3D14\&\u003E更多同类文章 ……\u003C\u002Fa\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E(本文同步发布于:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003Ehttp:\u002F\u002Fwww.52im.net\u002Fthread-.html\u003C\u002Fa\u003E)\u003C\u002Fp\u003E&,&updated&:new Date(&T07:05:38.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:0,&likeCount&:33,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T15:05:38+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\u002Fpic3.zhimg.com\u002Fv2-a24e6d744b84917dfa970fee8beebe9f_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:0,&likesCount&:33},&&:{&title&:&七牛云技术分享:使用QUIC协议实现实时视频直播0卡顿!&,&author&:&nan-ren-2600&,&content&:&\u003Ch2\u003E1、前言\u003C\u002Fh2\u003E\u003Cp\u003E不做任何开发,就能实现弱网环境下实现实时视频直播零卡顿,听上去是不是天方夜谭?看完这篇文章你就知道,我们是如何做到的。\u003C\u002Fp\u003E\u003Ch2\u003E\u003Cb\u003E学习交流:\u003C\u002Fb\u003E\u003C\u002Fh2\u003E\u003Cblockquote\u003E- 即时通讯开发交流群:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http:\u002F\u002Fshang.qq.com\u002Fwpa\u002Fqunwpa?idkey=347e290d9cccc8b56cebcd577f520e3617649\&\u003E\u003C\u002Fa\u003E[推荐]\u003Cbr\u003E- 移动端IM开发入门文章:《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http:\u002F\u002Fwww.52im.net\u002Fthread-464-1-1.html\&\u003E新手入门一篇就够:从零开发移动端IM\u003C\u002Fa\u003E》\u003C\u002Fblockquote\u003E\u003Cp\u003E(本文同步发布于:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003Ehttp:\u002F\u002Fwww.52im.net\u002Fthread-.html\u003C\u002Fa\u003E)\u003C\u002Fp\u003E\u003Ch2\u003E2、相关文章\u003C\u002Fh2\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-530-1-1.html\&\u003E移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-972-1-1.html\&\u003E移动端实时音视频直播技术详解(六):延迟优化\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E如何优化传输机制来实现实时音视频的超低延迟?\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E首次披露:快手是如何做到百万观众同场看直播仍能秒开且不卡顿的?\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Ch2\u003E3、本文作者\u003C\u002Fh2\u003E\u003Cimg src=\&v2-f9ab251be7bc2f61e355.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&640\& data-rawheight=\&196\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E4、视频直播的痛点:卡顿\u003C\u002Fh2\u003E\u003Cp\u003E卡顿是最影响直播体验的因素之一,也是最难解决的问题之一。在流媒体的传输链路中,任何一个环节丢包都可能导致用户观看卡顿。\u003C\u002Fp\u003E\u003Cp\u003E其中,主播端的推流卡顿最影响观看体验,会直接影响到所有观看直播的最终用户。主播推流卡顿在部分场景会特别显著,比如户外直播就非常考验在网络状况复杂的情况下推流的稳定性。\u003C\u002Fp\u003E\u003Cp\u003E减少卡顿一直是开发者重大的技术挑战,那么继续看看我们又有什么样的对策呢?\u003C\u002Fp\u003E\u003Cp\u003EGoogle 从 2014 年推出 QUIC 协议后一直在音视频产品上实践该协议。现在,经过一年多的探索和实践,我们的直播云产品已经拥抱 QUIC,最新推出的直播 QUIC 推流方案可以大幅度的降低直播的卡顿问题,可以在各种复杂网络环境下给客户提供优秀的直播体验。(关于QUIC协议的详细介绍请阅读《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解\u003C\u002Fa\u003E》)\u003C\u002Fp\u003E\u003Ch2\u003E5、QUIC 是什么,为什么可以降低卡顿?\u003C\u002Fh2\u003E\u003Cp\u003E既然 QUIC 可以解决如此重要的直播体验问题,那么我们先从整体了解一下 QUIC 协议(关于QUIC协议的详细介绍请阅读《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解\u003C\u002Fa\u003E》)。\u003C\u002Fp\u003E\u003Ch2\u003E5.1 QUIC 协议的定义\u003C\u002Fh2\u003E\u003Cp\u003EQUIC 全称 Quick UDP Internet Connection, 是谷歌公司制定的一种基于 UDP 协议的低时延互联网传输协议。\u003C\u002Fp\u003E\u003Cp\u003E我们知道,TCP\u002FIP 协议族是互联网的基础。其中传输层协议只有两种: TCP 和 UDP 协议。与 TCP 协议相比,UDP 更为轻量,但是错误校验也要少得多。由于 UDP 是不可靠协议,不保证按序送达,所以其可靠性比不上 TCP 协议。\u003C\u002Fp\u003E\u003Cp\u003EQUIC 传输层基于 UDP 协议但却是一种可靠的传输协议,因为它将很多可靠性的验证策略从系统层转移到应用层来做,这样可以使用更适合现代流媒体传输的拥塞控制策略。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E关于TCP和UDP的差异,以下文章可以给您一些答案:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E网络编程懒人入门(四):快速理解TCP和UDP的差异\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E网络编程懒人入门(五):快速理解为什么说UDP有时比TCP更有优势\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-580-1-1.html\&\u003E简述传输层协议TCP和UDP的区别\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-279-1-1.html\&\u003E为什么QQ用的是UDP协议而不是TCP协议?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-33-1-1.html\&\u003E移动端即时通讯协议选择:UDP还是TCP?\u003C\u002Fa\u003E》\u003C\u002Fblockquote\u003E\u003Ch2\u003E5.2 QUIC 在网络传输中所处的位置\u003C\u002Fh2\u003E\u003Cimg src=\&v2-969c0bc5fc037fb4274bae.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&594\& data-rawheight=\&368\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E从图上可以看出,QUIC 传输层用 UDP 协议替代了 TCP。(另外,更深入的计算机网络协议关系图请见《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-180-1-1.html\&\u003E计算机网络通讯协议关系图(中文珍藏版)[附件下载]\u003C\u002Fa\u003E》)\u003C\u002Fp\u003E\u003Ch2\u003E5.3 QUIC 在传输上为什么有优势\u003C\u002Fh2\u003E\u003Cp\u003E从上面所有对 QUIC 的定义上来看,很明显 QUIC 的对比对象是 TCP。所以下面所有的优势的枚举都是基于 QUIC 和 TCP 的比较。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E【QUIC优势1:更出色的拥塞控制】\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E虽然例如 HTTP\u002F2 或者 SPDY 协议现在都支持将页面的多个数据通过一个数据链接进行传输,该特性也确实能够加快数据的传输速度。但是由于 TCP 协议在处理包时是有严格顺序的,所以还是会遇到队首阻塞的问题。\u003C\u002Fp\u003E\u003Cp\u003E比如发生如下图所示场景下的问题时,当其中一个数据没有发送成功,TCP 连接需要等待这个包完成重传之后才能继续进行。因此,即使逻辑上一个 TCP 连接上并行的在进行多路数据传输,其他毫无关联的数据也会因此阻塞:\u003C\u002Fp\u003E\u003Cimg src=\&v2-01f43d7b2b.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&265\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003EQUIC 协议直接通过传输层使用 UDP 协议就可以避免该问题的发送。由于 UDP 协议没有严格的顺序要求,当一个数据包遇到问题需要重传时只会影响该数据包对应的资源,其他独立的资源不会受到影响而阻塞传输:\u003C\u002Fp\u003E\u003Cimg src=\&v2-68c81aec14f0.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&185\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E【QUIC优势2:更加灵活】\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003ETCP 协议栈通常由操作系统层面来实现,例如如 Linux、Windows、iOS、Android 操作系统。因此如果要修改 TCP 协议需要从操作系统层面去做很多事情,这是一项复杂的工程。相对来说 UDP 协议在操作系统层面实现更为简单,QUIC 基于 UDP 在应用层做了很多网络拥塞控制层面的优化,帮助用户减少复杂网络下的卡顿率,提高流畅度,这是 TCP 无法做到的。\u003C\u002Fp\u003E\u003Ch2\u003E5.4 QUIC小结\u003C\u002Fh2\u003E\u003Cp\u003E从以上所有的介绍中可以看出,如果我们需要使用 QUIC 改善直播体验,就是用它来代替直播中 TCP 协议所扮演的角色。大家都清楚目前直播所使用的协议都基本是 RTMP 协议,而 RTMP 协议的传输层是基于 TCP 协议。所以\u003Cb\u003E我们的 QUIC 推流方案就是把 RTMP 当中的传输层协议换成 QUIC,从而达到推流卡顿率下降的效果\u003C\u002Fb\u003E。\u003C\u002Fp\u003E\u003Ch2\u003E6、使用 QUIC 后的效果\u003C\u002Fh2\u003E\u003Cp\u003E上面说了那么多基于 QUIC 做媒体传输的理论优势,那么有没有实际的实验测试作为理论的支撑呢?下面一起来看看测试数据吧。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E测试的参数配置:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-d465e5cf00b18.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&610\& data-rawheight=\&59\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E测试方式: \u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E使用 ATC 模拟的弱网环境下,用 srs 播放器播放 5 mins,记录流畅度和卡顿次数。\u003C\u002Fp\u003E\u003Ch2\u003E6.1 测试场景之弱网配置一\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003EATC配置:\u003C\u002Fb\u003Edelay 100ms
loss 1%\u003C\u002Fp\u003E\u003Cimg src=\&v2-4d9e75cda.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&233\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E结果分别如图所示:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-8eec56e8.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&579\&\u003E\u003Cimg src=\&v2-34efd81ea7dd90adea90222.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&574\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E6.2 测试场景之弱网配置二\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003EATC配置:\u003C\u002Fb\u003Edelay 200ms loss 10%\u003C\u002Fp\u003E\u003Cimg src=\&v2-700e1bf9c.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&640\& data-rawheight=\&213\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E测试结果如图所示:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-4ff907e10b2ac.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&566\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E而在 TCP 这种网络配置下,推不起来,或者推一会就会断开。\u003C\u002Fp\u003E\u003Ch2\u003E附件:更多实时视频技术文章\u003C\u002Fh2\u003E\u003Cblockquote\u003E\u003Cb\u003E[1] 开源实时音视频技术WebRTC的文章:\u003C\u002Fb\u003E\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Farticle-126-1.html\&\u003E开源实时音视频技术WebRTC的现状\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-225-1-1.html\&\u003E简述开源实时音视频技术WebRTC的优缺点\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-227-1-1.html\&\u003E访谈WebRTC标准之父:WebRTC的过去、现在和未来\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-265-1-1.html\&\u003E良心分享:WebRTC 零基础开发者教程(中文)[附件下载]\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-284-1-1.html\&\u003EWebRTC实时音视频技术的整体架构介绍\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-356-1-1.html\&\u003E新手入门:到底什么是WebRTC服务器,以及它是如何联接通话的?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-442-1-1.html\&\u003EWebRTC实时音视频技术基础:基本架构和协议栈\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-475-1-1.html\&\u003E浅谈开发实时视频直播平台的技术要点\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-488-1-1.html\&\u003E[观点] WebRTC应该选择H.264视频编码的四大理由\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-510-1-1.html\&\u003E基于开源WebRTC开发实时音视频靠谱吗?第3方SDK有哪些?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-589-1-1.html\&\u003E开源实时音视频技术WebRTC中RTP\u002FRTCP数据传输协议的应用\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-763-1-1.html\&\u003E简述实时音视频聊天中端到端加密(E2EE)的工作原理\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E实时通信RTC技术栈之:视频编解码\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E开源实时音视频技术WebRTC在Windows下的简明编译教程\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E网页端实时音视频技术WebRTC:看起来很美,但离生产应用还有多少坑要填?\u003C\u002Fa\u003E》\u003Cbr\u003E&& \u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fforum.php%3Fmod%3Dcollection%26action%3Dview%26ctid%3D5\&\u003E更多同类文章 ……\u003C\u002Fa\u003E\u003Cbr\u003E\u003Cb\u003E[2] 实时音视频开发的其它精华资料:\u003C\u002Fb\u003E\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-228-1-1.html\&\u003E即时通讯音视频开发(一):视频编解码之理论概述\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-229-1-1.html\&\u003E即时通讯音视频开发(二):视频编解码之数字视频介绍\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-232-1-1.html\&\u003E即时通讯音视频开发(三):视频编解码之编码基础\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-235-1-1.html\&\u003E即时通讯音视频开发(四):视频编解码之预测技术介绍\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-237-1-1.html\&\u003E即时通讯音视频开发(五):认识主流视频编码技术H.264\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-241-1-1.html\&\u003E即时通讯音视频开发(六):如何开始音频编解码技术的学习\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-242-1-1.html\&\u003E即时通讯音视频开发(七):音频基础及编码原理入门\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-243-1-1.html\&\u003E即时通讯音视频开发(八):常见的实时语音通讯编码标准\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-247-1-1.html\&\u003E即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-250-1-1.html\&\u003E即时通讯音视频开发(十):实时语音通讯的回音消除技术详解\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-251-1-1.html\&\u003E即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-253-1-1.html\&\u003E即时通讯音视频开发(十二):多人实时音视频聊天架构探讨\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-266-1-1.html\&\u003E即时通讯音视频开发(十三):实时视频编码H.264的特点与优势\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-267-1-1.html\&\u003E即时通讯音视频开发(十四):实时音视频数据传输协议介绍\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-269-1-1.html\&\u003E即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情况\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-270-1-1.html\&\u003E即时通讯音视频开发(十六):移动端实时音视频开发的几个建议\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-274-1-1.html\&\u003E即时通讯音视频开发(十七):视频编码H.264、VP8的前世今生\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-825-1-1.html\&\u003E实时语音聊天中的音频处理与编码压缩技术简述\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-678-1-1.html\&\u003E网易视频云技术分享:音频处理与压缩技术快速入门\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-590-1-1.html\&\u003E学习RFC3550:RTP\u002FRTCP实时传输协议基础知识\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-273-1-1.html\&\u003E基于RTMP数据传输协议的实时流媒体技术研究(论文全文)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-399-1-1.html\&\u003E声网架构师谈实时音视频云的实现难点(视频采访)\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-475-1-1.html\&\u003E浅谈开发实时视频直播平台的技术要点\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-507-1-1.html\&\u003E还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-528-1-1.html\&\u003E实现延迟低于500毫秒的1080P实时音视频直播的实践分享\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-530-1-1.html\&\u003E移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-535-1-1.html\&\u003E如何用最简单的方法测试你的实时音视频方案\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-541-1-1.html\&\u003E技术揭秘:支持百万级粉丝互动的Facebook实时视频直播\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-763-1-1.html\&\u003E简述实时音视频聊天中端到端加密(E2EE)的工作原理\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-853-1-1.html\&\u003E移动端实时音视频直播技术详解(一):开篇\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-955-1-1.html\&\u003E移动端实时音视频直播技术详解(二):采集\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-960-1-1.html\&\u003E移动端实时音视频直播技术详解(三):处理\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-965-1-1.html\&\u003E移动端实时音视频直播技术详解(四):编码和封装\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-967-1-1.html\&\u003E移动端实时音视频直播技术详解(五):推流和传输\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-972-1-1.html\&\u003E移动端实时音视频直播技术详解(六):延迟优化\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-875-1-1.html\&\u003E理论联系实际:实现一个简单地基于HTML5的实时视频直播\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-939-1-1.html\&\u003EIM实时音视频聊天时的回声消除技术详解\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-953-1-1.html\&\u003E浅谈实时音视频直播中直接影响用户体验的几项关键技术指标\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E如何优化传输机制来实现实时音视频的超低延迟?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E首次披露:快手是如何做到百万观众同场看直播仍能秒开且不卡顿的?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EAndroid直播入门实践:动手搭建一套简单的直播系统\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E网易云信实时视频直播在TCP数据传输层的一些优化思路\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003EP2P技术如何将实时视频直播带宽降低75%?\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E专访微信视频技术负责人:微信实时视频聊天技术的演进\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E腾讯音视频实验室:使用AI黑科技实现超低码率的高清实时视频聊天\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E微信团队分享:微信每日亿次实时音视频聊天背后的技术解密\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E近期大热的实时直播答题系统的实现思路与技术难点分享\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E福利贴:最全实时音视频开发要用到的开源工程汇总\u003C\u002Fa\u003E》\u003Cbr\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E七牛云技术分享:使用QUIC协议实现实时视频直播0卡顿!\u003C\u002Fa\u003E》\u003Cbr\u003E&& \u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fforum.php%3Fmod%3Dcollection%26action%3Dview%26ctid%3D4\&\u003E更多同类文章 ……\u003C\u002Fa\u003E\u003C\u002Fblockquote\u003E\u003Cp\u003E(本文同步发布于:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003Ehttp:\u002F\u002Fwww.52im.net\u002Fthread-.html\u003C\u002Fa\u003E)\u003C\u002Fp\u003E&,&updated&:new Date(&T04:35:19.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:1,&likeCount&:45,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&sourceUrl&:&&,&publishedTime&:&T12:35:19+08:00&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&url&:&\u002Fp\u002F&,&titleImage&:&https:\u002F\u002Fpic4.zhimg.com\u002Fv2-2edeb78bed49af9eed25b_r.jpg&,&summary&:&&,&href&:&\u002Fapi\u002Fposts\u002F&,&meta&:{&previous&:null,&next&:null},&snapshotUrl&:&&,&commentsCount&:1,&likesCount&:45},&&:{&title&:&让互联网更快:新一代QUIC协议在腾讯的技术实践分享&,&author&:&nan-ren-2600&,&content&:&\u003Cblockquote\u003E本文来自腾讯资深研发工程师罗成在InfoQ的技术分享。\u003C\u002Fblockquote\u003E\u003Ch2\u003E1、前言\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E如果:\u003C\u002Fb\u003E你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度,特别是弱网络的时候能够提升 20% 以上的访问速度。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E如果:\u003C\u002Fb\u003E你的 App,在频繁切换 4G 和 WIFI 网络的情况下,不会断线,不需要重连,用户无任何感知。如果你的 App,既需要 TLS 的安全,也想实现多路复用的强大。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E如果:\u003C\u002Fb\u003E你刚刚才听说 HTTP2 是下一代互联网协议,如果你刚刚才关注到 TLS1.3 是一个革命性具有里程碑意义的协议,但是这两个协议却一直在被另一个更新兴的协议所影响和挑战。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E如果:\u003C\u002Fb\u003E这个新兴的协议,它的名字就叫做“快”,并且正在标准化为新一代的互联网传输协议。\u003C\u002Fp\u003E\u003Cp\u003E你愿意花一点点时间了解这个协议吗?你愿意投入精力去研究这个协议吗?你愿意全力推动业务来使用这个协议吗?\u003C\u002Fp\u003E\u003Cp\u003E本文主要介绍 QUIC 协议在腾讯内部及腾讯云上的实践和性能优化,新一代的互联网协议需要大家一起努力推动,你准备好了吗?\u003C\u002Fp\u003E\u003Cp\u003E欲了解 QUIC 协议产生的背景和核心特性,可阅读《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解\u003C\u002Fa\u003E》。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E学习交流:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E- 即时通讯开发交流群:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http:\u002F\u002Fshang.qq.com\u002Fwpa\u002Fqunwpa?idkey=347e290d9cccc8b56cebcd577f520e3617649\&\u003E\u003C\u002Fa\u003E[推荐]\u003Cbr\u003E- 移动端IM开发入门文章:《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http:\u002F\u002Fwww.52im.net\u002Fthread-464-1-1.html\&\u003E新手入门一篇就够:从零开发移动端IM\u003C\u002Fa\u003E》\u003C\u002Fblockquote\u003E\u003Cp\u003E(本文同步发布于:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003Ehttp:\u002F\u002Fwww.52im.net\u002Fthread-.html\u003C\u002Fa\u003E)\u003C\u002Fp\u003E\u003Ch2\u003E2、相关文章\u003C\u002Fh2\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E让互联网更快:新一代QUIC协议在腾讯的技术实践分享\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Cp\u003E《\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=http%3A%2F%2Fwww.52im.net%2Fthread-.html\&\u003E七牛云技术分享:使用QUIC协议实现实时视频直播0卡顿!\u003C\u002Fa\u003E》\u003C\u002Fp\u003E\u003Ch2\u003E3、本文作者\u003C\u002Fh2\u003E\u003Cimg src=\&v2-2ab951cfe229da.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&180\& data-rawheight=\&180\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E罗成:\u003C\u002Fb\u003E腾讯资深研发工程师。目前主要负责腾讯 stgw(腾讯安全云网关)的相关工作,整体推进腾讯内部及腾讯公有云,混合云的七层负载均衡及全站 HTTPS 接入。对 HTTPS,SPDY,HTTP2,QUIC 等应用层协议、高性能服务器技术、云网络技术、用户访问速度、分布式文件传输等有较深的理解。(作者微博:\u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=https%3A%2F%2Fweibo.com%2Fu%2F\&\u003E点此进入\u003C\u002Fa\u003E)\u003C\u002Fp\u003E\u003Ch2\u003E4、QUIC 在腾讯的实践\u003C\u002Fh2\u003E\u003Cp\u003E腾讯安全云网关 (STGW) 和腾讯云负载均衡器(Cloud Load Balance)在 2017 年 7 月份就已经在服务端上支持了 Quic 协议,在工程实现上也有很多优化点,同时在生产环境中也取得了较好的效果。相比现在几个开源的方案,STGW 的实现主要有如下几个优点。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E1)高性能:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E复用 Nginx 全异步事件驱动框架;\u003C\u002Fp\u003E\u003Cp\u003E私钥代理计算集群加速签名计算;\u003C\u002Fp\u003E\u003Cp\u003E全局缓存提速,减少计算量的同时,提升访问速度。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E2)强大的功能:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E支持 Nginx 现有全部模块指令,丰富的第三方模块;\u003C\u002Fp\u003E\u003Cp\u003E复用 Nginx 模块框架,非常灵活地新增第三方功能。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E3)稳定性:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E代码完全自主可控;\u003C\u002Fp\u003E\u003Cp\u003E正在经受腾讯亿万级并发流量的考验。\u003C\u002Fp\u003E\u003Cp\u003E同时我们也在腾讯很多业务包括 QQ 空间、WEB 游戏页面、腾讯云 CLB 上灰度支持了 QUIC 协议。详细的提升数据可以参考文中线上灰度数据一节。\u003C\u002Fp\u003E\u003Ch2\u003E5、QUIC 选型调研时的测试方案\u003C\u002Fh2\u003E\u003Cp\u003E在决定使用 QUIC 协议之前,我们需要对 QUIC 协议的特性及性能做一个全面的测试,如何测试呢?这里简单说一下测试方案。\u003C\u002Fp\u003E\u003Cp\u003E需要特别说明的测试是在 2016 年底进行的,目前所有域名已经失效,无法再进行测试。\u003C\u002Fp\u003E\u003Ch2\u003E5.1 页面构造\u003C\u002Fh2\u003E\u003Cp\u003E\u003Cb\u003E根据 httparchive.org 的统计,构造了如下页面:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-b4aae86e09acc5bb95e62.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&176\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E5.2 测试环境\u003C\u002Fh2\u003E\u003Cblockquote\u003E手机:华为 mate9 \u003Cbr\u003EUser-Agent:MHA-AL00 Build\u002FHUAWEIMHA-AL00) AppleWebKit\u002F537.36 (KHTML, like Gecko) Chrome\u002F55.0.2883.91 Mobile Safari\u002F537.36\u003Cbr\u003E操作系统:Android 7.0\u003Cbr\u003E服务端 QUIC 程序:caddy 0.9.4\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cb\u003E网站和客户端分布如下:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-3c470a3cf118e5af0a564.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&677\& data-rawheight=\&388\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E① 表示客户端主动发起的用户请求;\u003C\u002Fp\u003E\u003Cp\u003E② 表示从 html 里发出的资源请求;\u003C\u002Fp\u003E\u003Cp\u003E③ 表示数据上报请求。\u003C\u002Fp\u003E\u003Ch2\u003E5.3 测试流程\u003C\u002Fh2\u003E\u003Cp\u003E整个测试流程通过 python 脚本和 adb shell 工具自动化进行,其中移动端和 PC 端的控制流程有所区别。现分别简介如下。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E【移动端测试流程】:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E准备事项:\u003C\u002Fp\u003E\u003Cblockquote\u003E打开手机的 usb 调试选项;\u003Cbr\u003E在 PC 端安装 adb;\u003Cbr\u003E在 PC 上通过 USB 连接手机,确保能够通过 adb
devices 命令发现设备;\u003Cbr\u003E在服务端配置 cache-control: no-cache, no-store。禁止客户端缓存。\u003C\u002Fblockquote\u003E\u003Cp\u003E自动化测试流程如下:\u003C\u002Fp\u003E\u003Cblockquote\u003E启动 android chrome;\u003Cbr\u003E访问 \u003Ca href=\&https:\u002F\u002Flink.jianshu.com\u002F?t=https%3A%2F%2Fwww.helloworlds.cc%2F\&\u003Ehttps:\u002F\u002Fwww.helloworlds.cc\u003C\u002Fa\u003E;\u003Cbr\u003E待页面加载完后会触发 onload 事件,将各个时间点上报。\u003C\u002Fblockquote\u003E\u003Cp\u003E\u003Cb\u003E【PC 端流程】:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003EPC 端不需要 adb,使用 webbrowser 模块控制 chrome 完成即可。\u003C\u002Fp\u003E\u003Ch2\u003E5.4 测试结论\u003C\u002Fh2\u003E\u003Cp\u003E由于公司内网的 WIFI 环境不稳定,多次测试发现数据跳动较大,4G 环境下的数据更加稳定可靠,所以主要结论参考 4G 网络下的数据。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E测试结果显示,QUIC 的优势非常明显:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E即使在元素比较少(12 个元素)的情况下:相比 HTTP 也能提升 9%,相比 HTTP2 提升 42%,相比 HTTPS 提升 52%;\u003C\u002Fp\u003E\u003Cp\u003E在页面元素增多的情况下:QUIC 的优势就更加明显,相比 HTTP 提升 36%,相比 HTTP2 提升 47%,相比 HTTPS 提升 64%。\u003C\u002Fp\u003E\u003Ch2\u003E5.5 优化空间\u003C\u002Fh2\u003E\u003Cp\u003EQUIC 的特性虽然比较先进,但是实现起来却非常复杂,在工程实现方面也有很多优化的空间。比如如何提升 0RTT 成功率,减少服务端的 CPU 消耗量,实现连接迁移和动态的拥塞控制算法等。我们继续看下节。\u003C\u002Fp\u003E\u003Ch2\u003E6、QUIC 性能优化1:提升 0RTT 成功率\u003C\u002Fh2\u003E\u003Cp\u003E安全传输层虽然能够实现 0RTT,优势非常明显。但问题是,不是每一次连接都能实现 0RTT,对于我们的客户端和服务端来讲,如何最大程度地提升 0RTT 的成功率?\u003C\u002Fp\u003E\u003Cp\u003E0RTT 能实现的关键是 ServerConfig。就像 TLS session resume 实现的关键是 session id 或者 session ticket 一样。\u003C\u002Fp\u003E\u003Cp\u003EServerConfig 到达服务端后,我们根据 ServerConfig ID 查找本地内存,如果找到了,即认为这个数据是可信的,能够完成 0RTT 握手。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E但是会有两个问题:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cblockquote\u003E1)进程间 ID 数据无法共享;\u003Cbr\u003E2)多台服务器间的 ID 数据无法共享。\u003C\u002Fblockquote\u003E\u003Cp\u003E明确了问题,那工程层面就需要实现多进程共享及分布式多集群的 ID 共享。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003ESeverConfig Cache 集群如下图所示:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-6081e43fbeb593c3f83fc7.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&634\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E如上图所示,Stgw 在生成 ServerConfig ID 和内容时,会存储到全局的 Cache 集群。用户握手请求落到任意一台 STGW 机器,从全局 Cache 集群都能找到相应的内容,实现 0RTT 握手。\u003C\u002Fp\u003E\u003Ch2\u003E7、QUIC 性能优化2:加密性能的优化\u003C\u002Fh2\u003E\u003Ch2\u003E7.1 签名计算\u003C\u002Fh2\u003E\u003Cp\u003EQUIC 实现 0RTT 的前提是 ServerConfig 这个内容签名和校验都没有问题。由于 ServerConfig 涉及到 RSA 签名或者 ECDSA 签名,非常消耗我们的 CPU 资源。根据之前的测试数据,RSA 私钥签名计算会降低 90% 的性能。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E那如何优化呢?使用 RSA 或者 ECDSA 异步代理计算,核心思路也是三点:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E算法分离:剥离私钥计算部分,不让这个过程占用本地 CPU 资源;\u003C\u002Fp\u003E\u003Cp\u003E异步执行:算法剥离和执行异步的,上层服务不需要同步等待这个计算过程的完成;\u003C\u002Fp\u003E\u003Cp\u003E并行计算:我们使用配置了专用硬件的私钥计算集群来完成私钥计算。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E架构如下图所示:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-234ddbc0d6a888ca81c46f65.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&484\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Ch2\u003E7.2 对称加密的优化\u003C\u002Fh2\u003E\u003Cp\u003E相比非对称密钥交换算法来讲,对称加密算法的性能非常卓越(好 1 到 2 个数量级),但是如果应用层传输内容较大的话,特别是移动端的 CPU 计算能力较弱,对称加密算法对性能的影响也不容忽视。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E常用对称加密算法性能比较:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-449c6de853e5da9de78776.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&671\& data-rawheight=\&372\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E如何优化呢?通过异步代理的方式显然不可能。原因是:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E会极大降低用户访问速度。由于应用层的每一个字节都需要对称加解密,使用异步的方式实现会严重降低加解密的实时性。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E那有没有同步的优化方式呢?有:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E类似 SSL 硬件加速卡,intel 针对 AES 算法实现硬件加速,并将它集成到了 CPU 指令里。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E【AES-NI 指令】:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003EAES-NI 是 intel 推出的针对 AES 对称加密算法进行优化的一系列指令,通过硬件计算实现计算速度的提升。\u003C\u002Fp\u003E\u003Cp\u003E如何测试 AES-NI 的性能呢?\u003C\u002Fp\u003E\u003Cp\u003E通过环境变量:aes-ni: OPENSSL_ia32cap=\&~0x000\& openssl speed -elapsed -evp aes-128-gcm 或者在代码里将 crypto\u002Fevp\u002Fe_aes.c # define AESNI_CAPABLE (OPENSSL_ia32cap_P[1]&(1&&(57-32))) 进行设置。\u003C\u002Fp\u003E\u003Cp\u003Eaesni 对性能的提升约 20%, 由 4.3W 提升到 5.1W。\u003C\u002Fp\u003E\u003Cp\u003E这里需要注意的是,如果需要单独使用 openssl 的 API 进行 AES 对称加解密,最好使用 aes evp API,这样才会默认开启 AES-NI 指令。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E【chacha20-poly1305】:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003Echacha20-poly1305 是由 Dan Bernstein 发明,并且由 google 推出的一种带身份认证的对称加密算法。其中 chacha20 是指对称加密算法,poly1305 指身份认证算法。这个算法是对没有 AES 硬件加速功能的移动平台的补充,比如 ARM 芯片。\u003C\u002Fp\u003E\u003Cp\u003E从 google 公布的数据来看,chacha20-poly1305 能够提升 30% 以上的加解密性能,节省移动端耗电量。当然,如果手机端支持 AES-NI 指令的话,chacha20 就没有优势了。\u003C\u002Fp\u003E\u003Cp\u003EOpenssl 在 1.1.0 版本中正式支持了 chacha20-poly1305。\u003C\u002Fp\u003E\u003Ch2\u003E8、QUIC 性能优化3:连接迁移 (Connection Migration) 的实现\u003C\u002Fh2\u003E\u003Cp\u003E那 STGW 服务端如何实现的呢?我们在 CLB 四层转发层面实现了根据 ID 进行哈希的负载均衡算法,保证将相同 ID 的 QUIC 请求落到相同的 CLB7 层集群上,在 CLB7 上,我们又会优先根据 ID 进行处理。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003EQUIC 连接迁移图示如下:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-aa0b04bdd4ad5df0.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&919\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E如上图所述,客户端最开始使用 4G 移动网络访问业务,源 IP 假设为 IP1,整个访问流程使用蓝色线条标识。\u003C\u002Fp\u003E\u003Cp\u003E当用户进入 WIFI 网络时,源 IP 发生了变化,从 IP1 切换到了 IP2,整个访问流程使用绿色线条标识。由于接入的 CLB4 有可能发生变化,但整个 CLB 集群统一使用 QUIC Connection ID 调度,只要 QUIC 连接的 ID 没有发生变化,能够将该请求调度到相同的 CLB7 层机器上。\u003C\u002Fp\u003E\u003Cp\u003E同一台 CLB7 保存了相同的 Stream 及 Connection 处理上下文,能够将该请求继续调度到相同的业务 RS 机器。\u003C\u002Fp\u003E\u003Cp\u003E整个网络和 IP 切换过程,对于用户和业务来讲,没有任何感知。\u003C\u002Fp\u003E\u003Ch2\u003E9、QUIC 性能优化4:动态的流量控制和拥塞控制\u003C\u002Fh2\u003E\u003Cp\u003ESTGW 在连接和 Stream 级别设置了不同的窗口数。\u003C\u002Fp\u003E\u003Cp\u003E最重要的是,我们可以在内存不足或者上游处理性能出现问题时,通过流量控制来限制传输速率,保障服务可用性。\u003C\u002Fp\u003E\u003Ch2\u003E10、STGW 针对 QUIC 的性能统计\u003C\u002Fh2\u003E\u003Cp\u003ESTGW 针对 QUIC 的线上使用情况进行了很多的变量统计和分析,包括 0RTT 握手成功率,握手时间,密码套件使用分布,QUIC 协议版本,stream 并发数量等。\u003C\u002Fp\u003E\u003Cp\u003E这些统计变量能够为我们的协议优化提供更加精细的数据支撑。\u003C\u002Fp\u003E\u003Ch2\u003E11、QUIC 线上灰度数据\u003C\u002Fh2\u003E\u003Cp\u003EQUIC 目前已经在 STGW 上线运行。我们针对腾讯几个重要域名(包括 QQ 黄钻页面,游戏页面)进行了灰度实验。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003EQzone QUIC 页面:\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cimg src=\&v2-e97bca9d129bd68b8c82d.jpg\& data-caption=\&\& data-size=\&normal\& data-rawwidth=\&700\& data-rawheight=\&432\&\u003E\u003Cp\u003E\u003Cbr\u003E\u003C\u002Fp\u003E\u003Cp\u003E如上图所示,图中红色箭头指向的绿色标识表示该页面使用了 QUIC 协议。\u003C\u002Fp\u003E\u003Cp\u003E灰度实}

我要回帖

更多关于 推算几天前的日期 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信