腾讯会议怎么扩容

疫情期间,腾讯会议作为一款非常便捷的远程协作工具,成为国内众多企业日常会议沟通交流的主要平台。殊不知,这款产品从2019年12月26日才正式推出。如何在这么短的时间内,有效撑起国内数以亿计的用户访问量,保证系统的稳定运行?本文来自腾讯云的技术人员,为你解析8天时间内完成100万核资源的扩容背后的技术,希望对大家有所借鉴。

如果需要交付100万核的计算资源,需要做什么?准备资源,然后按用户需求进行交付。如果在前面加一个定语“快速”呢?可以加班加点完成。但是如果要实现8天内完成100万核的资源交付,换算下来,每天需要交付12.5万核,这就有点苛刻。在云计算的历史上,从未出现过类似的案例。

那么,腾讯会议是如何做到的呢?

解决思路

首先,分析如此短的时间内,交付这些资源需要做哪些事情,会遇到哪些问题。

实际上,借助于当前成熟的虚拟化技术,可以基于已经制作好的镜像系统文件,快速地部署一套用于提供服务的生产环境,所以,只需要准备好足够的计算资源就能够实现服务的无限扩容,而这个过程大概需要以下四步。1.准备资源,投放物理机:作为云计算服务提供商,首先资源是第一位的,所以第一步要准备用于提供服务的物理机。这100万核心的资源,相当于约12000台物理机。以防资源不足的问题,需要快速将这些物理机全部上架,同时,保证每台物理机经过验证,并且部署了正确版本的后台组件。2.资源注册与分配:有了物理机资源,下一步就需要把初始化好的物理机资源投放到现网环境中,确保每一台物理机资源都在CVM后台服务中注册。腾讯云操作系统VStation需要维护数十万级的物理机资源,这无疑对资源调度能力提出了极大的挑战。这一步需要快速将所有计算资源找到对应的物理机承载。3.资源创建与交付:当后台调度系统选择好承载计算能力的物理机之后,下一步是到物理机上创建虚拟机资源。这一步看似简单但需要做的事情却不少,如生成用户控制数据,与存储、网络系统交互,生成对应的虚拟机配置,启动虚拟机。4.虚拟机初始化:虚拟机成功创建之后,就已经可以交付使用了。不过可能还需要进行配置,如拉取配置、加入服务集群、启动服务等。

完整历程解密

图1是腾讯云操作系统VStation架构图,腾讯云操作系统VStation,承担资源调度、请求排队的任务,已经对大批量、高并发的创建请求进行了充分优化。具体来说:

  • API 部分接入用户请求,管理用户角色、CVM 机型、用户配额等;
  • 云操作系统VStation,承担资源调度、请求排队,目前虚拟机每分钟吞吐可达到5000台;
  • Host组件上安装用于生产和配置CVM实例的各种辅助组件。
   

图1:VStation云操作系统

下面从资源准备、注册与分配、创建与交付、虚拟机初始化四大部分详细介绍下其中的具体过程。

1.准备资源,投放物理机

腾讯云基于定制化腾讯TLinux、自研的虚拟化hypervisor系统,可以实现批量自动部署、自动投放,并且在投放到现网之前进行自动验证,保证软硬件不存在隐患。腾讯云Host组件管控系统,方便管理腾讯云hypervisor上的各种代理组件,易于发布,方便运维。

   

图2:Host初始化过程

  • 安装系统:运维平台从资产管理平台CMDB拉取对应Host相关机型信息,寻找与该机型对应的TLinux操作系统控制BMC配置从pxe启动,从pxe服务器拉取系统镜像安装系统。
  • 系统初始化:安装完系统后需要配置各种系统参数,调优。
  • 部署Host使用的组件:每种不同机型的CVM使用的Host 会使用不同的后台Agent,以及相关配置。通过Host组件管控系统Host使用的插件进行统一管理,下发。
  • 导入集群:已经初始化好的Host,需要导入到VStation 集群才能售卖和生产CVM。
   

图3:Host组件管控系统

Host组件管控系统用于下发Host组件、灰度版本、控制、支持并发下载、灰度发布,同时上报Host上各个组件的信息、组件健康管理、自动拉起组件、异常告警等。

2.资源注册与分配

作为整个系统的核心,腾讯云操作系统VStation需要管理10万级的物理机资源,近千万级的核数,所以需要实现快速和稳定的调度系统。VStation服务类似Google Borg/Omega 使用的分布式调度架构,对计算资源进行调度。

   

图4:VStation 调度系统

其中,水平扩展调度器支持横向扩容,每个调度器拥有几乎全部的集群信息,方便掌握全局资源;采取增量同步、定时更新、局部缓存的方式,尽可能多地掌握全局视图,并且维持集群状态信息的准确性。

调度决策方面,将可能过滤掉更多物理机的基础条件放在调度器的靠前位置,过滤掉无法满足基本条件的物理机列表,减少调度过程中物理机集合在不同调度器之间的传递;同时,根据多个维度,如物理机资源使用率、剩余资源等,对满足装箱条件的物理机进行排序,尽可能优先使用优质Host资源,合理调配。此外,避免多个调度器在并发时选中相近的物理机,对经过排序后的物理机进行随机调整,减少大并发时造成的冲突。

3.资源创建与交付

解决资源调度问题后,需要在选中的物理机上创建虚拟机资源,其中有一些耗时的硬性阶段无法解决,VStation对此结合资源创建过程的的特点,做出了令人满意的优化,把单台虚拟机创建时间基本控制在3-5秒。

前面提到,资源创建需要与诸如用户控制数据、网络服务、存储服务、镜像服务、密钥、安全组服务等进行交互,完成用户与所创建的虚拟机资源之间的映射。VStation平台设计之初就考虑到高并发,批量创建的场景,对周边系统的交互实现了并行化通信。同时,为支持高并发,提高服务的吞吐量,每种与其他服务交互的工作进程通过高可用消息队列通信,都是无状态和可扩容的。真正实现了高可用、高并发、自动容灾。图5是VStation 内部系统的核心架构。

   

图5:VStation 后台架构

VStation 通过高可用的消息队列,控制数据与周边系统交互的工作进程间通信,同时对创建过程中的关键任务按照依赖关系实现并行化,最大限度的压缩创建总耗时。针对高并发请求,为减少对系统自身的影响,系统具备以下特性:

1、控制信息载荷自动压缩

控制消息携带了CVM实例的各种控制信息:计算、存储、网络以及各种元数据信息。随着系统功能增加,控制层面数据也有所增长,控制信息载荷增大。使用压缩算法在投递消息前进行压缩并在接受消息后解压缩,能够大大降低消息占用消息总线,提高消息吞吐率。目前VStation 使用开源LZ4 - Extremely fast compression压缩和解压缩算法,压缩速率可达到780 MB/s,解压缩速率在4970 MB/s,压缩率在2倍左右。

2、负载平衡

分布式系统中会使用多个实例以增加系统请求响应吞吐率,控制模块负载平衡可以保证请求均匀地被各个worker处理。负载平衡需要后台处理请求的worker均匀分配到不同处理实例上,降低等待队伍长度,并发执行任务。同时需要将虚拟机实例尽量均匀地分配在不同Host。将并发请求尽可能均匀地分在不同物理机,有利于加快办法创建速度。生产虚拟机较为耗时的任务有创建虚拟机磁盘、下载虚拟机镜像、申请网卡、配置网络等。如果多台虚拟机串行地在同一台物理机上创建,必然是系统瓶颈,创建耗时延长。VStation Scheduler 在装箱时,每个Scheduler实例有近乎全局的资源视图,对同一批次的创建任务,可以在虚拟机并发装箱时保证虚拟机尽量不落在同一台物理机。

3、流控系统

当请求数超过系统承载能力时,如果不加控制,会对周边系统造成危害,导致系统过载,内部组件异常(如DB慢查询、不响应、消息队列丢消息),破坏性较大,严重时会造成服务不响应,甚至用户数据不一致。VStation增加排队机制,降级服务,而不是返回系统内部错误,以提升用户体验。流控系统由以下几个方面组成:

  • 关键请求频次控制:在API请求频次上对用户做限制,防止恶意用户频发请求系统,如恶意购买,刷单等。
  • 用户配额限制:限制用户随意申请资源,尤其是按量资源,限制配额。
  • 后台请求排队与流速控制:任何系统都有能承载的处理容量,当VStation正在处理的请求超过一定阈值时,对新加入的请求不做拒绝处理,而是放入等待队列中待正在处理的任务完成后继续执行。
   

图6:VStation 流控系统

4、任务编排优化

一个完整的创建任务涉及到的各种子任务较多,单纯串行执行虽然逻辑清楚且维护简单,但不利于充分发挥系统能力,高并发创建场景中耗时较长。通过分析虚拟机实例创建过程中的各种依赖关系,将不耦合的任务并行执行,把简单的单项图转换成有向无环图(DAG),进一步提升任务的并行度。

   

图7:创建流程任务优化

调整后,单台CVM实例创建任务可以控制在5秒以内。

4.虚拟机初始化

提到云主机的初始化,CVM 支持使用云原生的cloud-init服务,支持云计算主机镜像初始化协议,用户通过传入自定义的脚本程序,实现云主机创建后自动执行预定义配置。同时,腾讯云提供实例metadata 服务。用户在自定义脚本程序中可以访问实例metadata服务获取与实例有关的信息,如IP地址、实例名称等,来实现每个实例的特殊化配置。

   

图8:CVM元数据

CVM 实例相关元数据信息包括镜像、用户数据、vendor数据、元数据几部分组成。其中镜像信息和用户数据信息可以让用户自行配置,vendor数据和实例元数据(如IP信息、地域信息等)可以通过内网访问腾讯云元数据服务获取,从而实现快速自动化配置CVM实例。

总结

8天内完成为腾讯会议扩容100万核的任务,在此一役,腾讯云CVM后台服务有效地支持了高并发请求,通过优化调度算法、优化内部架构、降低创建耗时,完美经受住了此次考验。未来,将更有信心迎接其它更艰巨的挑战。

(0)

相关推荐

  • 如何在手机中下载安装腾讯会议软件

    有的小伙伴想要在手机中使用腾讯会议软件,但是却不知道如何安装,其实安卓手机和苹果手机下载安装的方法不同,那么小编就来为大家介绍一下吧.一.安卓手机下载腾讯会议的方法和步骤:1. 第一步,点击并打开软件 ...

  • 怎么使用手机腾讯会议app开远程会议

    假如因有事不能及时在公司开会的话,在家里也是可以远程办公的哦,今天小编就告大家怎么使用手机腾讯会议app开远程会议.具体如下:1.首先我们需要在手机中打开[腾讯会议]APP.2.输入账号密码进行登录( ...

  • 如何在电脑上通过腾讯会议上课

    以上就是如何在电脑上通过腾讯会议上课的具体操作步骤.1. 首先我们需要在电脑上将腾讯会议下载下来并进行安装,然后还要事先准备好课件并打开,并保证我们的麦克风是正常的.下载好腾讯会议后,需要注册一个腾讯 ...

  • 怎么在腾讯会议APP中创建会议

    今天给大家介绍一下怎么在腾讯会议APP中创建会议的具体操作步骤.1. 打开手机,找到桌面上的腾讯会议APP,打开.2. 在打开的页面,点击下方的"注册/登录".3. 登陆之后,点击 ...

  • 如何查看与使用腾讯会议的会议号?

    现在很多软件都支持线上会议,比如说腾讯会议App.接下来小编就给大家介绍一下如何查看与使用腾讯会议的会议号.具体如下:1. 首先第一步打开手机中的[腾讯会议]App.2. 第二步如果想要查看会议号,根 ...

  • 腾讯会议APP中怎么在其他应用中共享屏幕

    今天小编分享的是腾讯会议APP中怎么在其他应用中共享屏幕.具体如下:1. 点击打开[腾讯会议]2. 点击箭头指示的"注册登录".3. 登录后,点击箭头指示的"加入会议&q ...

  • 怎么在腾讯会议APP中加入会议

    今天给大家介绍一下怎么在腾讯会议APP中加入会议的具体操作步骤.1. 首先打开手机,进入桌面,找到腾讯会议APP,打开.2. 打开之后,进入登录页面,点击下方的"注册/登录"选项3 ...

  • 腾讯会议APP中怎么邀请他人加入会议

    今天小编分享的是腾讯会议APP中怎么邀请他人加入会议.具体如下:1. 点击打开[腾讯会议]2. 选择箭头指示的[创建会议].3. 点击箭头指示的[管理成员]4. 如图界面中,点击下方的[邀请]5. 点 ...

  • 如何在腾讯会议软件中的会议设置静音

    有的小伙伴在使用腾讯会议软件开会议时,突然遇到了特别紧急的事情,因此想要设置静音,但是却不知道如何设置,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,点击并打开腾讯会议APP.2. 第二步,来 ...