小程序、容器、SCF、直播加速…最全面的云端架构技术揭秘(下)

接上篇《小程序、容器、SCF、直播加速…最全面的云端架构技术揭秘(上)》

腾讯云X-P2P直播加速方案

腾讯云X-P2P是业内领先成熟的P2P产品,从2014年开始,到现在历时2年多,其中多个产品线均已成熟,包括不同平台、不同延迟场景下的P2P直播、点播P2P等,现已推广到斗鱼、熊 猫等直播平台使用,经受住了大流量阅兵活动直播、赛事直播的考验。腾讯云X-P2P直播加速技术负责人张鹏,就P2P的发展历史、X-P2P方案架构以及腾讯云在X-P2P的探索与优化等内容作了详细分享。

P2P技术的发展史

P2P概念最早出现在1969年被RFC 1所收录,2000年Guntella网络诞生,紧接着BT协议发布,在这段期间,人们一度以为P2P仅适用于文件分享。2004年底随着PPLive的发布,开发者才逐渐意识到这项技术同样适用于流媒体直播,从05年开始,P2P在直播领域大行其道,具体发展技术路线如下:

  • 2005年,香港科技大学研究出了基于网状无结构网络拓扑的Goo1Streaming,通过定期交换缓冲映射表和邻居列表,实现每个节点与邻居共享媒体数据。这项技术的优点是实现了节点之间随机获取,让各个peer之间达到负载平衡。但同样有硬伤:两个距离很远连接很差的节点也可能被调度为邻居,大大影响系统的服务质量;
  • 2006,华中科技大学基于树状结构研发了一款叫AnySee的直播技术,其实现原理是根据IP邻近原则构建IP多播。这种结构使节点的邻居质量变高,相对更容易达到更高的P2P分享率。劣势是树的父节点离开造成波动大,极易导致中低层节点与顶层节点播放时差大;
  • 2008年,清华大学采用推送数据模型构建了GridMedia,达到低延迟的效果,这个系统经历过春晚和奥运会直播的洗礼,延迟更低、连接速度更快,用户越多的情况下播放越流畅,与之相对应的,当用户少的时候,观看体验就不尽如人意了。

腾讯云X-P2P直播方案及其优化之路

腾讯云根据自身的业务场景在直播技术上做了系列优化,下图为腾讯云基于Segment的直播P2P架构,整个直播流程分为两大部分:首先主播将媒体源推到服务器上,P2P技术将它们进行切片,切成时长1S 的Segment ,集成到CTN上,然后CTN对其进行回源;接下来就是客户端的行为,客户端会先请求一个com服务,这里包含着该频道的穿透服务器、日志服务器、及最新的切片信息,然后开始请求播放,手机获取由公网址来提供端口,种子服务器获取同一个频道的端口后发起连接,P2P数据就开始产生了。

在直播体验优化上,张鹏现场介绍了腾讯云的内部传输控制、精准播送以及大房间高并发三大解决方案:

  • 内部传输控制:当多人共用同一网络时,资源抢占时有发生,X-P2P方案节点之间采用优胜劣汰,自动演进,不与TCP抢占资源、不突发发包,避免造成网络拥塞,节点替换波动亦不会影响到播放质量;
  • 精准播控:秒播是直播的一个必备的元素,X-P2P系统针对不同的播放器,设置快速写数据,使其播放视频秒起画面,同时,为满足低延迟需求,启动播放时快进,消除GOP延迟;
  • 大房间高并发:大房间高并发是所有直播供应商最为头疼的一个问题,腾讯云采取的手段是主动分裂大房间,在每个分裂的房间里配置一台服务器,将用户分流。

说到X-P2P现在面临的挑战,张鹏最后表示,以前的视频码率低,现在的视频清晰度已有4k、10M码率,远超过带宽的增速,P2P流量跨省跨运营商流动,易造成运营商不满,都是X-P2P需要考虑的问题。在未来,P4P是解决这些问题的一剂良药。

用户如何能开发一款实用的小程序?

关于微信小程序,相信大家都并不陌生。本次沙龙的最后一位讲师黄荣奎就小程序实现的的具体原理、 如何开发一个简单的小程序等实战内容作了精彩的分享和诠释。黄荣奎首先给出了小程序的定义:小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。

小程序是如何实现的

下图为小程序核心框架,分为三个大块,一块是视图层,也就是在整个页面的展示;块是逻辑层,功能是什么,或者和后台的逻辑,都是在这层来做的;最重要的一部分就是它底层提供的功能,就是点击、扫描二维码,或者调取一下它的硬件相关的一些接口,或者发起网络请求,这些都是在native这层做的。

了解小程序的核心框架之后,黄荣奎着重讲解了各个模块之间的通信过程。首先,用户进行操作如点击登录的操作,点击了之后会调取后台的逻辑。具体的交互过程如下:

  • 首先,通过View展现,结合第一步,message到JSBridge,JSBridge会通过Webview,再结合Native方法,把事件成列到Native里面;
  • 随后,信息流通过Native再通过JSBCore传递到JSBridge,然后再通过JSBridge传递给service,这样业务就会搜到消息;
  • Service接受了消息之后会进行处理,通知给View,View接受了消息处理完了之后会发出一个消息,给JSBridge,然后再通过JSCore,到Native;
  • 最后再通过native到View,把view展示的结果通过JSBridge去告诉到View,然后View会做界面展示的更改。

上图为各模块之间的通信视图,简而言之,当用户进行一个点击操作,进入到组件,里面指View,再到JSBridge到view和Native,然后再到service,然后在一步一步传到组件里面这样一个过程。

开发者如何能够方便快捷的开发小程序

小程序联合微信联合做了一个相对比较完整的解决方案。下图是一个后台的部署窗口,在右上角可以看到有一个腾讯的标识,在这里可以完成一些更加快捷方便的操作。一键自动配置可运行后台的环境。第二个是后台代码编写。第三是一键上传代码自动部署,第四远程调试。具体部署过程在此就不加以详述,感兴趣的读者可以下载讲师PPT查看完整信息。

值得一提的是,在云上,小程序还提供了一些分装的比较高级的实用接口,其中包括Websocket服务,图片鉴黄、语音识别,还有视频还有直播相关的一些东西,在这里都可以找到解决方案的。另外,一些比较高级的应用,比如图像识别OCR,也可以提升到SDK里面去。据黄荣奎介绍,目前的腾讯AI图像识别已经在很多的业务中使用到了,准确率达到99%以上。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全华班

如何理解软件缺陷?

软件缺陷(software defect)是对软件产品预期属性的偏离现象。它包括检测缺陷和残留缺陷。每一个软件组织都知道必须妥善处理软件中的缺陷。这是关系到...

2564
来自专栏韩伟的专栏

如何提高程序员的生产率(下)

目录 3. 开发过程... 12 4. 架构设计... 20 5. 管理激励... 23 三、 开发过程 沟通 软件通常都需要经过很多人和很多次的沟通才能生产出...

2954
来自专栏java一日一条

Java,传奇的一生!

1991 年,James Gosling 带领着名为“Green Team”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时 4 年...

561
来自专栏携程技术中心

开源 | 携程数据库访问框架Ctrip DAL

随着企业规模扩张和业务量的急剧增加,作为系统核心的数据库相关开发也会经历一个由单一团队发展为多团队;由单机扩张到集群;由单数据库发展为多数据库;由采用单一数据库...

2135
来自专栏人工智能的秘密

ROS:机器人开源操作系统

ROS,英文全称 Robot Operating System,即机器人操作系统。它的目标是为机器人软件开发者的提供了一个灵活的框架,其中包含一些列的工具、库和...

4105
来自专栏杨建荣的学习笔记

自动化平台开发小结(六)

最近几天还在不断的改进平台里的事情,而翻了下之前写过的文章,发现从起步到现在也有一个多月了。如果不是看看自己总结的文章,好像啥也没干。 在此期间,我设立了两个里...

3215
来自专栏企鹅号快讯

2018年中间件技术展望

2017年即将过去,Java新技术新版本纷纷出现和发布,让人眼花缭乱。除了springboot2不知是否会作为新年贺礼能否及时发布之外,其余重要的技术都已经登...

2038
来自专栏腾讯移动品质中心TMQ的专栏

腾讯电量仪——智能硬件测试工具尝试之路

随着移动互联网的快速发展,智能手机对电量的消耗也变得越来越大,续航短板一直是用户吐槽的焦点,不管是iOS还是android,每天为手机充电成为一个惯例,甚至一天...

1888
来自专栏机器人网

解读工业机器人的大脑:控制系统基础

如果工业机器人只有主体和驱动器,机械臂是不能正常工作。原因是传感器输出的信号没有起作用,驱动电动机也得不到驱动电压和电流,所以机器人需要有一个控制器,用硬件坨和...

3266
来自专栏机器人网

简述机器人操作系统——ROS

简述 ROS为Robot Operating System(机器人操作系统)的简写,是一个面向机器人的开源元操作系统(open-source,meta-ope...

4814

扫码关注云+社区