IBM有将近60个数据中心和PoP点,音视频客户能依托IBM的所有站点在全球部署节点。此外,IBM所有数据中心搭建了全球内网专线,所有数据中心的内网传输免费,节点的数据同步没有任何开销,在经典网络环境中,IBM在全球机房提供了强大的金属裸机, 同时也供应灵活部署的虚拟机加快构建异构的音视频服务。在本次LiveVideoStackCon 2021北京站,IBM 胡磊分享了IBM Cloud 助力音视频解决方案成功出海。在此次LiveVideoStackCon 2021 音视频技术大会 北京站,我们邀请到了IBM云平台事业部资深云计算架构师——胡磊,为我们介绍了IBM Cloud 是如何助力音视频解决方案成功出海的。
文 | 胡磊
整理 | LiveVideoStack
大家好,很荣幸能够参加LVS这次大会,来给大家介绍一下IBM海外公有云,以及IBM海外公有云怎么去帮助直播行业或者说音视频解决方案成功出海。今天的分享大概分为两个部分。因为我基本在公有云是负责架构部分,所以关于怎么做架构方案会多一些。另外一块,我将介绍如何帮助客户得到一些经验,去建设例如海外CDN的这种方案。
首先,我们看一下IBM 定义的云的一个理念。很多年以前,我刚做公有云起步的时候,很多人谈公有云、私有云、Cloud Native或者是Public Cloud Destination。其实这么多年过去以后,发现不管是哪个云,云只是一个工具,一个运营模式,你可以把你的idea很方便的放到一朵云里面。当然还有很多的用法,尤其是大企业或者互联网行业可能会有很多个云,用多云的方式,像刚才即构科技的肖总说的,就是基于海外多云的架构。
除此之外,关于自建的私有云,不管是海外的还是国内的,势必都要和公有云的一些服务打通。有些大的互联网行业比如专注于音视频的,音视频的编码、RTC、边缘节点,包括云平台上的数据库以及其他的一些服务都是自建在私有云里的。
但是,更多的企业像中小的互联网公司,他们无法完成公有云上很多服务的开发,所以或多或少会使用到一些公有云的能力。举个简单的例子,他们在私有云里积累了很多历史数据,要做一个阶段的数据分析,但如果去买一个专做数据分析的传统服务商,来帮助完成这个项目可能耗时会非常久,需要在它的环境里面搭平台搭环境。
有了公有云之后,包括IBM以及一些大厂的云供应商会提供数据引擎和大数据分析的服务。你可以直接将你的数据以加密方式或者二次加密方式传到公有云上,只要符合规则,就可以帮你完成云服务上的一些分析。云服务上只需要一个月就可以完成大数据分析,相较于选择一家单独的供应商,会节约很多成本。所以混合云的使用场景是非常多的。
1. IBM Cloud 介绍
刚讲到多云,IBM就是多云中的一朵云。
IBM Cloud整体架构如图。底层是基础设施比如Bare Metal,虚机,IBM自家的小机 Power,大机z。我们和VMware签了全球的战略合作,VMware全部的solution都可以放在IBM海外公有云上。然后,我们既提供Public(共享型)又提供Dedicated(专属型)的虚拟机。底层还有很多建设,比如自有数据中心的建设,所有数据中心之间的内网也都是自建的专线。我们区域分很多种,一种叫做Multi Zone Regions, 它是一个高可用设立的三个区域划到一个多重区域里,换而言之,在这个多重区域里有三个数据中心,这三个数据中心的标准是以30公里以内,延迟在2毫秒以内的方式来建设的。当然,我们还有一种叫做Single Zone Regions,比如说像香港、韩国还有一些欧洲的小国家我们是以单一数据中心来建立的。以上是基础设施和区域。
接下来,我们看看基础设施上一层,也就是IBM 的Foundation。我们的公有云比较开放,有很多的工具和平台服务都是基于开源的。比如拿Kubernetes来说,我们有自己的IBM cloud native services,基于原生的Kubernetes构建的。当然还有CNCF组织里面的很多项目,比如CI/CD的一些能力,都是可以和我们Kubernetes来集成的,还有镜像库等功能。我们有两个Kubernetes平台,并且收购了红帽,有一个Red Cat OpenShift平台。
再上面,有一些我们称之为能力,也就是基于Red Cat OpenShift平台,IBM把很多的软件还有一些服务都容器化到这个平台里,比如说数据库服务、security服务、集成服务、自动化工具、network自动化、AI Ops都是我们云上的一些能力,直接以容器化的方式构建在OpenShift的一个平台里。我们内部称之为Cloud Paks。
再上一层,是我们IBM 独有的领先技术。像IBM的AI可能有些人听说过,叫做Watson,上面还有有很多人工智能的服务,通过API的方式让客户去使用。比如一些分析、区块链服务、安全性很高的加密技术、IoT服务、ML和量子计算。IBM的量子计算目前来说,在云平台上是商用中量子量最大的,现在都是可以给客户去使用的。
除了上面那些介绍以外,截止到21年第三季度,我们大概有170多种服务,这些服务归类为AI的、分析的、安全相关的、Dev Tools的、Web&Mobile相关的、Web&App相关的等等。还有一些模板工具,这些模板工具有助于run一些python的app或者是Java的app。还有很多的DB server,前面提到开源,我们有很多DB也是开源的,比如说Redis、MongoDB、RabbitMQ、etcd等等。另外,我们还有存储服务、网络服务等等。最底下是云平台提供的计算服务,除了虚拟机、物理机,还有一些机器是SAP、VMware认证的服务器,当然还有高性能计算的服务器。所以我们一共有170+种服务在IBM Cloud上。
IBM在全球大概有60+的数据中心和30+的POP节点,有些数据中心自带POP节点,所以加起来大概是90个。我们全球范围内有9个MZRs,分布在US South、法兰克福、东京、大版、华盛顿、伦敦、悉尼、圣保罗、多伦多,也就是说有27个availability 区。其实我们还单独建立了一个巴黎的MZR,这是只供巴黎银行一家客户使用的。
IBM在公有云方面有两类,与其他云不太一样,我们支持两个网络环境。第一类叫经典网络,对于一些运维比较少的企业或者是中小客户来讲是非常合适的。但IBM会帮经典网络的客户自己打理好VLAN、子网的建设。生成的机器无论是虚拟机还是物理机都可以在很快的时间内交付给客户。提供给客户的就是route,IP,密码等。第二类较为复杂的称之为VPC网络,不同VPC网络内网不互通,适用于运维较多或是经验丰富的客户,帮助自家客户去建立一些私网。客户可以建立子网,比如设定IP规则等。
对于经典网络环境来讲,无论是公网,内网还是管理网络,隔离性和安全性都非常好。我们有Public Network和 Private Network。Public Network中可以接入Load Balance和Network Security。Private Network 就可以连入IBM内网的一些服务,内网机器之间还可以进行互通。除此之外,还有管理网端是通过VPN方式去连到机器。比如,内网和外网四个网口都坏了,无法访问这个机器时,我们还有管理网口可以通过VPN的方式去访问。
接下来,介绍一下我们IBM的直播方案架构。我们的直播方案与肖总介绍的差不多。其实也就是主播端,推流到源服务器,这也是帮助客户去做的。比如客户在三个大区,有三个源服务器,把最近主播的流推到源服务器,收集到源服务器后再走内网。如果有很多的边缘节点或者是用IBM各个区域的服务器去搭建RTC或CDN服务等。走IBM内网的好处是我们音视频的解决方案流量很大,所以通过IBM 内网的所有数据中心,传输都是不限流量,免费的。因此,我们中间的这套可以很大程度节省海外流量传出的费用。而且,走IBM 内网都是自建的专线,具有很强的稳定性。
另外一边是观众方,也就是收看端。收看端首先去过Cloud Load Balancer和CDN边缘节点进行一次握手。第二次以后,直接去连边缘节点节点URL或是域名或是直接连到IP去收看,中间走的线路都是UDP协议。这个架构已经过多次演变了,最早的时候是RTMP,现在已经是UDP的方案了。
那么,从IBM助力音视频的场景来看,目前我们提供了三个场景。第一个就是帮助客户去做RTC,我们RTC从功能流程上来说,包括采集、编码、前后处理、传输、解码、缓冲、渲染等很多环节。每个环节都有很多的子环节。IBM在RTC这块可以提供一些高性能,自主可控的金属裸机。而且是在全球所有机房都供应了很多规格的,不同型号的金属裸机,帮助客户去部署RTC相关的能力。通过金属裸机的强大能力和IBM的全球覆盖来看,可以大大降低音视频的延迟,全球平均延迟可以达到350ms以内,视频最低可达80ms以内,音频可以达到50ms左右。
第二个助力场景就是帮助客户搭建自己的CDN。直播场景中,有很多协议或是特定要求可能在大厂无法都满足。大的CDN厂商也不会为了某一个客户去定制化一些功能,一些小厂CDN还有可能做到,比如Akamai这一类的可能就做不到。有些协议还是基础的,那对直播场景也不一定适用。那么,借助于IBM全球节点,也是物理机虚拟机融合的方式部署,客户也可以通过全球网络内网免费传输,将stream流数据可以快速传发到一个边缘节点,或者是通过大区的节点传发到自己最后一公里的边缘节点。我们自建CDN方案,从客户那边的评价就是更流畅、更低延迟,而且全球平均延迟可以降低至300ms以内。
第三个赋能是在人工智能这块,IBM 好几十年前就开始提供人工智能服务。IBM 还提供AutoAI的功能,这是在IBM Watson studio中的一个自动机器学习工具。音视频解决方案里很多人想要了解转码、编码或者是音视频相关的。但像直播,你需要出海,出海以后不光有这些技术,公有云也会提供助力。如果数据在IBM里,就可以很方便地使用IBM中的人工智能,去帮助你做自动AI的内容审核。比如在直播场景里的违规现象,每个国家对于直播的规则或者是合规性要求都是不同的,如何做好人工智能内容审核也是IBM的强项,可以助力到音视频行业。
2. 海外自建CDN之路
下一部分就讲一下如何在海外自建CDN之路,这一部分就是从公有云的角度去帮助客户建立CDN。
自建CDN从成本上来讲,在初期不一定比买国内的CDN便宜,但是在后期,尤其是对音视频覆盖全球的流量来讲,商业CDN也非常昂贵。
关于其他的挑战,在音视频方案中有非常专业的内容需要分发,不同的协议,不同大厂中的CDN不一定能够支持。还有一点就是需要一些的定制,这些定制也是不能满足大厂的,只有自建才可以做到。
同时,商业CDN对于爆发式的增长无法满足,比如需要扩节点,在中东或是印尼、东南亚这种传统大的区域里,正好遇上疫情了,音视频流量一下暴增500%,这时候就需要对CDN厂商提出扩容,但因为在疫情期间,芯片缺少以及采购周期长的情况下是很难快速的扩容的,这个时候如果采用多云或公有云的方式就能很快地扩容CDN节点。
而在传统的内容分发场景里面,除了编码以外,还有大量有价值的数据需要得到很好的分析,但是在CDN厂商那边可能最多就拉到一些日志或是top几的排名,但是还有一些没有被发掘的数据往往是可以影响到业务决策的数据,这些如果CDN厂商不能帮助做到,那势必需要自建CDN实现这些功能。
并且不是每家CDN厂商都能全球覆盖,还有很多新兴市场不一定是传统CDN厂商的覆盖点。所以基于这些CDN的挑战就带来了一个议题——如何去自建CDN。
IBM帮助客户自建CDN的优势有这样几块。
第一个就是我们有全球60多个数据中心覆盖了很多的国家和城市,可以帮助你快速的构建节点。
第二点就是IBM的内网全部都是专线打通的,全球的内网免费,这样就可以降低自建CDN初期的建设成本。还有,全球的每个机房都通过BGP 的方式去和6-8 T1 的当地运营商,根据机房用户使用量,带宽大概在60-120GB。
第三点就是在计算方面,每台金属裸机每个月赠送大量的出站流量,欧美赠送20TB,亚太和巴西每个月赠送5TB。内网流量免费,外网每个月出站流量可以帮你cover很多,所以在网络流量这一块,做好流量池之后基本上都不会超出很多的现象。
在创新上,IBM在去年已经发布了叫做Satellite的新链产品,Satellite主要帮助客户在自家数据中心的边缘节点中去构建类似IBM云,IBM云上面有170多种产品,目前已经有十几种产品能够通过Satellite直接自动化的部署到各个边缘节点上去。比如在其他公有云或是在印尼建设的数据中心、一个IDC机房,只要符合Satellite X86标准 ,就可以部署IBM的数据库服务、容器平台、对象存储以及AI的服务等等,都可以直接部署到边缘或自家的数据中心。这种方式就可以非常快地去帮助客户,把CDN的工具或配置都组装好,以容器方式去部署到各个边缘节点,迅速的进行扩展。
还有就是对象存储,我们的对象存储也是行业非常高标准的,也是全部兼容S3标准的。
下面就是我们自建CDN的解决方案,有最基础的物理机、虚机、对象存储,Cloud Internet Service就是做global load balance还集成了一些高防DDoS。还有Satellite,怎么去做Satellite部署好之后的自动服务生成,或是代码、应用的部署。Schematics就集成了Terraform和Ansible这两个工具,就可以快速的帮助客户通过Infrastructure as Code方式来部署基础设施,把应用或是服务器初始化的步骤,通过Ansible来实现统一的管理和部署。
自建CDN给客户的价值就是我们金属裸机的高定制以及更专业化的内容分发,虚机提供了业务弹性和高可用性,Satellite也是一种类似多云的方案能够应对不断增长的CDN市场需求,还有内网传输可以节约初期的建设CDN的成本。
3. 协议的选择
接下来讲一下协议的选择。
协议分为TCP和UDP,很多人可能了解TCP 这一块,可靠性非常好,面向连接,但是效率非常低,因为他要做三次握手,是全双工的,传输速度和拥塞控制都相对较弱。UDP可靠性现在还可以,可能最早期是说不可靠,连接性是无连接,主要是面向报文的,效率非常高,可以实现一对多、多对一、多对多等等,UDP的传输速度是非常快的,但是没有流量控制和拥塞控制。
现在非常多的客户偏向于使用UDP的解决方案,随着网络技术发展,网速已不再是传输的瓶颈,UDP协议以简单、快速的优势取代了TCP。从2008年到2015年,各个国家网络平均速率由1.5Mbps提升为5.1Mbps,这里列举的是所有国家的,像中国和一些西方国家速率会更高,网速提升近4倍。网络环境变好,UDP的丢包率可以低于5%,所以UDP的传输重回以及可靠性都大大的提高了。
但TCP使用了复杂的拥塞控制算法,建立了繁琐的握手过程以及重传策略。所以TCP的传输速率非常低。
推荐使用UDP协议有三个优点 :能够对握手过程进行精简,减少网络通信往返次数,能够对TLS加解密过程进行优化,收发快速,无阻塞。
接下来讲QUIC与STR,QUIC是从谷歌出来的,它主要面向的是web,有点复杂,但应用可控性非常好,弱网抗性也非常好,拥塞控制也比较好,版本较多,现在支持HTTP3,方向还是web方向。SRT由Haivision和Wowza联盟提出来的,它可以支持FFmpeg,对web的支持较弱,复杂度也是在中等,可控性弱网的抗性也是非常好的,拥塞控制一般,版本较少,主要面向直播或者传输这类。
有很多厂商会推荐使用QUIC,也有很多音视频厂商会使用SRT,各个厂商都会根据自己的业务做出选择,没有哪个更好的说法。
优化协议才是最好的办法。优化协议就从这四方面来讲,第一延迟优化,比如不需要握手等待、不需要固定延迟,在协议里尽量减少握手,一些固定的延时尽量减少,还有一个就是支持探测。第二个就是要做无锁设计,比如基于网络事件驱动模型,不要用锁进行同步,这样可以提升性能。刚刚说的拥塞一般,可以通过借鉴Google的BBR,引入拥塞控制的能力去改造协议,并与直播模型形成联动,在网络拥塞时, 保证用户正常观看。连接迁移可以参考QUIC协议,修改内核,实现连接迁移,保证用户观看体验。所以一般来讲很多客户都会选择自建协议。
自建期间对协议架构的探索,第一就是通过IBM原有的网络去建设CDN。上图是一个简单的架构,首先我们在外面有DNS, DNS 和全球负载均衡器虽然在逻辑上是分开的,其实是一个产品叫CIS,CIS带DNS和 global load balance功能,所以实现了在场景里面DNS和全球负载均衡这样的能力。到了边缘节点就分了主节点、父节点和普通的边缘节点。主要是做动静分离,比如有些需要静态缓存就放在静态的节点,有些需要动态加速的就放在动态路由节点,动态加速叫做DCA。获取就是从一般的CDN直接连到对象存储作为源站,还有一种方式就是用一般服务器挂的存储去做源站,这种使用的就较少一些。上层可能会用到一些CDN的控制能力,还有一些配置中心等等,去协调配置中心的CDN网络。这是基于IBM原生产品和服务构成的简单架构。
接下来是如何用 Satellite去进行扩展, Satellite是IBM去做各家云厂商IDC、边缘节点的云赋能,云交付的工具,IBM的所有产品今后都会放到各家云厂商上去。有了这个服务以后,我们看下图的架构方案。
这个架构方案就是如何去扩展CDN节点,比如IBM只有60多个数据中心,30个pop点,但是这些不够新兴市场的覆盖,也不能帮助客户快速的构建,因为客户都要自建,这一套IBM就可以至少自动化70-80%的能力。刚才讲到的公有云,比如IBM在达拉斯布了一套Satellite,还有Schematics里面含有Terraform技术和Ansible这是基础设施管理的一套平台。
有了Terraform以后,IBM就会把边缘节点,在图上画出来了IDC机房,还有DMZ,里面布了一些服务器。还用了其他公有云,比如AWS,现在阿里云应该也支持了,只要提供了基础设施都可以使用,还有IBM自己家的,比如IBM东京节点。
在CDN场景中, Satellite会去分发容器平台,容器平台中就包装好了一些运行好的pod,Kubernetes运行的最小工作节点,这个pod就带来了应用、数据库、和CDN相关的Application、Nginx、Squid来搭建的,所以这个可以直接通过Openshfit去部署。每个边缘节点、或是数据中心都可以快速的通过Satellite把Openshfit平台部署好,有些平台是自有Openshfit,就不用部署,原生默认很快就能起好。Satellite也可以很方便的把应用和包放到Openshfit里面,通过Schematics和Ansible进行部署。
所以,这种方案就可以很快速的帮助客户把Openshfit部署上去。或者你如果不需要有容器平台,如果你需要数据库服务,或是对象存储,那未来IBM还有很多服务可以马上交付到边缘平台里面,这是一个基于IBM如何扩展到新兴市场的架构方案。
以上就是本次的所有介绍,谢谢!
讲师招募
LiveVideoStackCon 2022 音视频技术大会 上海站,正在面向社会公开招募讲师,无论你所处的公司大小,title高低,老鸟还是菜鸟,只要你的内容对技术人有帮助,其他都是次要的。欢迎通过 speaker@livevideostack.com 提交个人资料及议题描述,我们将会在24小时内给予反馈。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。