除夕夜,是全国人民阖家团圆的日子,也是鹅厂这帮技术人最紧张的时刻——一年一度的春节重保。
在这辞旧迎新的重要节点,全球十多亿用户通过微信和QQ拜年、发红包,在朋友圈、QQ空间分享心情,通过微信视频号、腾讯视频等观看春晚直播。
这些“新年俗”带来的是秒级内增长几十倍甚至数百倍的流量洪峰,就像传说中每年如约而至的“年兽”,稍有不慎,鹅厂系统就有被流量打崩的风险。
今年是腾讯自研业务全面上云之后的首个春保,相比往年,不仅顺利完成了护航任务,而且效率更高、质量更好、成本更低。
究其原因,这与腾讯自研业务全面上云、云原生技术的大规模应用,以及多部门的统一协调密不可分。
对于很多人来说,“看春晚”是除夕必做的事情。
无论是电视、电脑还是手机,春晚直播能够做到高清、实时、顺畅,都与直播平台与直播技术提供方的技术保障密不可分。直播保障也是鹅厂技术团队每年春保的重要任务之一。
如今,越来越多的人选择通过微信视频号看春晚。加上今年竖屏春晚玩法升级,通过微信视频号竖屏看春晚的用户达到了1.9亿,相比去年1.2亿的直播观看人数有了大幅增长。
据测算,全网观看直播的流量峰值在除夕夜达到近百T。微信视频号、腾讯视频等作为春晚的主要直播平台,为应对瞬间的流量高峰,对网络速度和稳定性提出极高要求。
全面上云之后,不管是微信视频号、腾讯视频等腾讯产品,还是腾讯云支持的央视频等外部客户,海量访问流量都合并跑在腾讯云直播平台上。
相比起一条条小路各自设立红绿灯和缓冲带,这个统一的调度系统更为高效,大大提升了整体的资源利用率,也进一步降低了成本。平台打造了完善的大盘监测系统,可以按秒级分析直播流的卡顿率、延迟情况与画质清晰度等指标。
特别是在春晚精彩的抽奖环节、以及沈腾小品播出时段,面对陡然拉升的流量冲击,腾讯云直播平台建立了智能化的调控方案。
其中,腾讯云直播的极速高清能力,借助AI自动适配网络情况,在网络不佳的时候降低直播码率。CDN 可通过智能负载均衡系统,将用户的直播访问定位至最佳节点,避开网络拥塞,降低源站压力。腾讯云自研新一代 P2P 技术,则更好地利用了整体网络闲置带宽,进一步降低 CDN 网络的压力。
作为疫情防控进入新阶段后的首个春节,节日氛围分外浓烈。“团圆”来之不易,短暂的相聚让数亿用户更加愿意在朋友圈借助图片和视频分享喜悦之情,传递久违的年味儿。
相对应的,春节期间,数据的上传下载量也远超预期,除夕峰值达到平常均值的10倍以上。从技术层面来说,当微信用户给朋友发图片、视频,或者发表朋友圈、抢红包的时候,不管是发出还是收到内容,背后都是腾讯存储系统的一次读写。
过去,微信核心模块使用的是 TFS 存储架构。这种架构虽然过去支撑不少腾讯产品打赢了“海量之战”,但由于存储集群较小,无法充分调动不同集群间的闲置资源,需要储备大量资源用于故障恢复和应对突发。
全面上云后,微信所用的对象存储 COS,首次全面从TFS存储引擎切换到最新的自研 YottaStore 架构。基于新一代存储引擎 Yottastore,无论是存储规模,还是 IO 能力都有比较大的提升:
作为一个云原生的数据存储系统,YottaStore 的一个集群可以管理上千万台服务器,集群规模大了,集群内的 IO 资源自然水涨船高。YottaStore 可以充分调动集群内所有存储节点 IO 能力,在春节视频和图片这种高峰值的上传下载场景中,能够有效节省存储资源,实现整体的降本增效。
同时,腾讯云对象存储 COS 结合自研业务的特点,充分发挥 YottaStore 引擎的优势,提供了智能分层、深度归档等存储能力,在保障用户体验的前提下大大降低了存储成本。
往年国庆一过,春保技术团队的气氛就开始紧张起来,收集业务需求,评估所需资源,进行机器采买和资源建设、系统扩容,加上必要的单机和全链路压测,技术团队的铺排容灾和柔性演习等,一般都需要持续好几个月时间。
去年腾讯全面上云之后,最直接的一个变化就是春保从一个需要严阵以待的大项目,变成了一份“寻常工作”。
比如,在资源准备阶段,由于业务的资源由物理服务器变为 CVM 虚拟机,这让资源准备周期大幅缩短,过去至少需要1个月时间申请采购、生产虚拟机,现在只需1周就能完成。
同时,在运维效率上,借助腾讯云容器服务 TKE,应用的扩容也变得更加弹性,同样扩容100万核的资源并部署业务完成上线,时间从2周缩短到2天以内。
为了充分利用云原生的特性,去年开始,微信核心模块全量部署在了**腾讯云容器服务平台 TKE **上,进入容器化上云阶段。
通过全力容器化改造,采用多容器减少上T级的流量穿越、支持所有应用可调度提升故障实例恢复时效、多集群多 workload 容灾打散调度提高应用容错能力、Quota 资源按需申请节省大量成本、容器监控和业务监控双管齐下提升服务质量。
利用 TKE 超强的集群管理、资源调度、容器编排,屏蔽了底层基础构架的差异,简化了分布式应用的管理和运维,根据微信业务的使用场景,建设了灵活高效的 DevOps 运营体系,整体效率提升了40%以上。
当业务核心模块容器化后,单机异常、版本不一致等问题降为0。利用 TKE 的增强 HPA 弹性伸缩特性,当业务负载急剧飙升时,能够快速扩容多个 Pod 副本;业务负载变⼩时,适当缩容来节省计算资源。整个过程⾃动化,不需要人工⼲预,应对突发时扩容更快、成本更低。
在2013年之前,腾讯还没有“春保”。PC 互联网时代,春节的流量相对分散,高峰还不需要太大规模的技术保障。
2013年,微信群发拜年视频兴起,六七倍的流量涌入,远超技术团队原先的储备,只能靠系统硬扛。
2015年,微信红包亮相春晚互动。原来只是几万人使用的红包系统,紧急扩大到支撑十几亿人抢红包。20点到次日凌晨零点48分的时间里,春晚微信摇一摇互动总量达到了110亿次。很多已经在家吃年夜饭的技术人员被紧急“召回”公司。
2020年,线上会议需求爆发,春节8天紧急扩容100万核,腾讯会议创下了中国云计算史上的又一个记录。
如今,负责“春保”的团队规模越来越小,越来越多的同事又可以年三十跟家人一起吃年夜饭了。回望过去十年,从“被打的措手不及”,到“想方设法先扛住再优化”,腾讯春保如今回归“静悄悄”。
与上云前相比,此次春保的资源利用率提升1倍,CPU 峰均值利用率达45%以上;交付效率提升50%,扩缩容效率提升5倍以上。腾讯的全面上云,为业务春保带来了效率、容量、成本的全方位优化,也支撑了数以亿计的用户,度过了一个热闹祥和的春节。
“以前春保更多考虑的是系统会不会崩掉,怎么能扛住一波接一波的流量高峰,而当全面上云之后,能力足够强大,不崩已经变成新的常态,我们未来需要考虑的是如何提升用户体验,并进一步降低成本,通过智能化的容量预测、智能化的调度,实现更精细的运营。”
腾讯云副总裁、云架构平台部副总经理高向冉表示:“现在的春节保障相当于是人工在驾驶的,将来希望完全由机器来完成自动驾驶。”
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b
我正在使用rails_xss运行Rails2.3.14插入。我有另一个用于创建管理仪表板View的插件。我的问题是rails_xss正在转义我的仪表板插件生成的所有HTML。有没有一种方法可以将rails_xss配置为不转义匹配example.com/admin或基于目录(app/views/admin)或任何类似的页面结果一样吗? 最佳答案 更新仪表板生成插件以使用raw或html_safe进行内容输出可能会更简单。 关于ruby-on-rails-仅在某些页面上使用rails_xss
我正在开发一个Rails2.3.1网站。在整个网站中,我需要一个用于在各种页面(主页、创建帖子页面、帖子列表页面、评论列表页面等)上创建帖子的表单——只要说这个表单需要在由各种Controller)。这些页面中的每一个都显示在相应的Controller/操作中检索到的各种其他信息。例如,主页列出了最新的10篇文章、从数据库中提取的内容等。因此,我已将帖子创建表单移动到它自己的部分中,并将该部分包含在所有必要的页面中。请注意,部分POST中的表单到/questions(路由到PostsController::create——这是默认的Rails行为)。我遇到的问题是当Posts表单没有正
我在View中有这段代码prawn_document(:page_size=>"A4",:top_margin=>80,:bottom_margin=>40,:background=>"public/uploads/1.png")do|pdf|creation_date=Time.now.strftime('%d-%m-%Y')posts=@posts.eachdo|post|pdf.pad(10)dopdf.textpost.titlepdf.textpost.textendendpdf.page_count.timesdo|i|pdf.go_to_page(i+1)pdf.draw
事实证明,由于securityconcerns,自定义ruby插件在GitHub页面上不起作用。.我正在尝试将插件(thisone)添加到我的Jekyll项目的_plugins文件夹中,但是当我将它部署到GitHub时,它会被忽略。问题:有没有办法解决这个问题?有没有人找到解决办法?注意:显然我可以在本地生成html文件并将它们提交到我的存储库。但这不是我想要的。 最佳答案 如果你想让Jekyll站点像在本地一样运行,比如让自定义插件正常工作,这里有一种非常方便的方式来构建和部署Jekyll站点到GithubPages。?AGi
三大公有云厂商,香港地区主机测评一、ping时延比对(厦门电信本地测试):Ping时延测试腾讯云阿里云华为云延迟率最低时延44ms,最高72ms,平均46ms47.242段:最低时延59ms,最高204ms,平均107ms最低时延45ms,最高93ms,平均47ms丢包率丢包率小有的ip段丢包率较大每个段都会有概率丢包阿里云:47.242段:最低时延59ms,最高204ms,平均107ms,有的ip段丢包率较大8.210段:最低时延64ms,最高232ms,平均119ms,丢包率较好腾讯云:最低时延44ms,最高72ms,平均46ms,丢包率小华为云:最低时延45ms,最高93ms,平均47m
所以我正在为高中生构建一个Rails应用程序,但在创建用户时遇到了问题。我希望学生只有在选择学校并正确输入学校密码后才能创建帐户。这样做的正确/最简单的方法是什么?我是否应该为他们必须首先通过的user#new操作创建一个看门人,或者他们是否应该以一种方式让学生在同一页面上提交表单。一种是常规用户名、电子邮件、密码,使用:form_for@userdo...end然后为高中/高中密码选择创建另一种形式。理想情况下,Controller将能够获取高中表单的参数,验证这些参数,然后继续从用户参数创建用户。这可以使用Rails吗?我的设置:Rails3和Ruby1.9.2dev谢谢!
给定以下内容,如何获取URL的完整路径uri=URI("http://foo.com/posts?id=30&limit=5#time=1305298413")我只想要posts?id=30&limit=5#time=1305298413我试过uri.path并返回/posts和ui.query返回'id=30&limit=5' 最佳答案 您要找的方法是request_uriuri.request_uri=>"/posts?id=30&limit=5"如果需要,您可以使用任何您想要删除前导/的方法。编辑:要获取#符号后的部分,请使用