1.前言

 

 微信朋友圈由两个业务架构组成:图片和视频。朋友圈图片的特点是请求量大,消耗更多的计算资源,而视频主要消耗带宽。

 

 朋友圈中的数据都是存储的,随着业务的快速发展,存储容量、带宽和设备的消耗大幅增加,尤其是重大节日带来的使用量的增加,加剧了消耗,给运维人员的保护带来了很大压力。

 

 在以节假日为重点的节点中,技术支持主要包括三个方面:

 

 

 1)软件保障是指通过优化和评估程序和业务逻辑水平来降低负载;

 2)硬件保证主要指带宽和机器负载的评估和扩展;

 3)灵活措施是指通过业务调整减少一些不重要功能的资源,以保证关键功能的正常运行。

 

 

 2.相关文章

 

 "微信朋友圈海量技术PPT[附件下载]"

 “架构方式:3名程序员在微信朋友圈(有视频)中平均每天发布10亿条消息。”

 

 3.软件架构的保证

 

 朋友圈的总体情况如下图所示:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_1.jpg

 

 朋友圈的结构主要分为组委会和国际数据中心:

 

 

 数据中心是指最终存储数据的数据中心;

 指有外部网络的独立机房,SOC指大型机房。

 

 每个数据中心都有一套完整的接口机器/逻辑设备/存储设备,以支持用户的上传和下载以及文件登录存储需求。

 

 OC点的主要功能是提供外部网络接入和承载用户的下载流量。每个OC中的设备一起形成一个缓存池。当用户下载时,本地OC中的缓存会在返回IDC从源中提取文件之前丢失。每个组委会的职能是相同的。用户通常在最近的点下载。当单个OC点出现故障时,将允许用户通过重试或切换在其他OC点下载,以确保下载成功。

 

 4.容灾和重试机制

 

 朋友圈中的模块容灾主要是自动消除单机故障。主要形式是通过主管理服务器的ip列表、心跳检测等来发现异常设备。,屏蔽故障ip,不将其返回前端。

 

 以前一层的单机拒绝为例:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_2.jpg

 

 如果整个OC或IDC点发生故障,通常依靠操作维护人员的手动切换来恢复,或者通过模块间的重试机制来保证。

 

 好友圈下载重试:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_3.jpg

 

 无论用户是从OC下载还是从OC返回到IDC,默认情况下都会在失败后重试两次,并且会选择远程访问点以避免重试失败的节点。实现的原则是每层主机向前端返回至少两组ip列表,并确保这两组ip列表是异地节点,这样当前端出现故障时可以实现异地重试。

 

 然而,重试是一把双刃剑,因为它会导致请求的增加。在假日旺季,由于请求的增加已经非常高,重试更有可能导致问题,需要进行调整:

 

 

 1)通过主路由发送,关闭并重试。在元旦/春节,这种要求已经实施了几次;

 2)值班人员应密切监视,如果IDC故障率超过20%,应手动关闭,并紧急重试。这在中秋节/国庆节实施,这是一个低增长率的节日。

 

 前模块重试控制界面:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_4.jpg

 

 5.硬件保证

 

 

 5.1能力评估和设备扩展

 

 重要节日前,运维人员将与资源小组一起,根据业务预算、业务增长需求和实际负载,对各机房和模块的设备进行扩容。如果预算之外的要求增加,将通过灵活或超载的方式减少或拒绝。

 

 评估方法:

 

 

 1)机房容量主要根据交换机带宽上限进行评估;

 2)接入层设备的容量主要根据中央处理器和内存的负载比以及网卡的流量/数据包比来评估;

 3)存储层设备容量主要根据中央处理器和内存的负载比以及磁盘io的读写次数来评估。

 

 

 5.2春节朋友圈上传加载

 

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_5.jpg

 

 春节期间业务方要求的增长率是上传支持9倍增长,下载支持1倍增长。超过此比率的请求可能会被拒绝。但是,根据预算扩展,上述效果是可以实现的,并且一些模块仍然不能支持这种增加,特别是压缩模块,它需要大量的虚拟机在每次支持双增长时进行扩展,这在预算中是不能支持的,因此需要通过灵活的策略来解决。

 

 6.灵活战略简介

 

 朋友圈的灵活策略分为两层:

 

 

 第一层是粗略的灵活性,即上传和下载的请求直接根据比例和服务进行限制,限制后的请求会返回给用户失败,这与微信C2C相同。这通常用于超出系统的估计负载能力并导致系统故障。快速恢复服务时使用;

 第二层是根据业务特性的灵活性:也就是说,从业务层面来说,通过降低图片和视频的清晰度以及延迟用户更新来降低系统负载。业务灵活性主要描述如下。

 

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_6.jpg

 

 朋友圈业务的主要增长和瓶颈:从以前的设备负荷评估图来看,在预算范围内,接入层和逻辑层只能支持5倍的增长,而压缩模块只能支持1倍的增长。

 

 7.灵活性练习:压缩灵活性

 

 压缩模块的功能是根据需要将客户端上传的原始图片压缩成各种格式和大小,以支持特定的业务场景,节省存储空间和带宽。随着压缩技术的不断发展,使用更先进的压缩格式,相同清晰度的图像压缩比越高,压缩计算资源消耗越多。

 

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_7.jpg

 

 因此,如果在反向操作中用jpeg格式代替当前的hevc格式进行存储,则可以节省压缩资源,并且测量的压缩的cpu负载可以减少到20%,即可以支持5倍的增长。然而,图片的平均大小也会增加,导致下载流量增加。

 

 因此,采用的折衷方法是在将图片上传回jpeg格式时,将图片的清晰度从70降低到50,以减小平均文件大小,从而抵消切换回jpeg格式带来的流量增加效应。在实际测试中,发现用户对清晰度降低的感知并不明显,假期短期开放不会影响用户体验。

 

 8.灵活的做法:小视频码率灵活性

 

 小视频的带宽通常超过1TB,节日效果明显增强。所采用的流量减少方法类似于图片的流量减少方法,即通过减少平均文件大小来降低上传视频的码率并节省带宽。

 

 灵活性:小视频码率1800 -> 1200,平均大小2.1兆-> 1.3兆

 

 经过测试,比特率降低后用户体验不会受到影响,但由于它对新上传的视频有效,反映下载带宽降低需要相当长的延迟,大约需要4个小时才能完全生效。因此,这项灵活的措施需要在节日前开始,不能用于处理紧急情况。

 

 有效费率降低期间的流量变化:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_8.png

 

 9.灵活的做法:上传TSSD缓冲池的灵活性

 

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_9.jpg

 

 由于上传预上传接口机和后台逻辑模块,不能支持10倍的增长。因此,在该架构中构建了两组TSSD缓冲池,用于临时存储新上传的文件,并支持读写。如上图所示,缓冲池1添加在区域模块中,缓冲池2添加在上传预上传中。两个缓冲池的功能不同:

 

 如果区域模块过载,主动过载的上传请求不会直接返回失败,而是会写入缓冲池1。缓冲池1中的文件无法下载,但会以相对较慢的速度分发并写入后端模块。因此,缓冲池1的主要功能是在短时间内减缓大量上传请求,而不是完全抵消上传请求,并且缓冲池1中的文件无法下载。

 

 在预上传模块中添加了缓冲池2,这限制了存储TFS的写请求的数量。如果上传请求的数量超过存储TFS的容量,预上传将把请求写入缓冲池2。下载时,用户会根据文件标识进行判断。如果他们发现文件存储在缓冲池2而不是TFS,他们将去缓冲池2获取文件。因此,缓冲池2可以取代TFS的功能并保护底层模块。当缓冲池2下架时,缓冲池2中的文件需要手动写入TFS。

 

 10.灵活的实践:朋友圈在比例上是灵活的

 

 Timeline指微信朋友圈的更新时间戳。这个灵活的原则是先缓存通知朋友和朋友圈更新的时间戳,而不是将其发送到用户的微信终端。这样,朋友圈的更新内容就不会在微信上出现,也不会有下载图片/视频的请求,这可以直接减少下载流量。

 

 Timeline在灵活性之后将不会在此处更新:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_10.jpg

 

 然而,还有几个考虑因素:

 

 

 1)容易引起用户投诉,用户普遍感觉朋友圈的内容变少了;

 2)如果缓存timeline的时间太长,缓存和分发的过程一定很慢,否则下载流量会进一步激增。

 

 春节期间手动执行灵活性的步骤:

 微信朋友圈1000亿访问量背后的技术挑战和实践总结_11.jpg

 

----------------------------------------------------------------------------------

哇谷im_im即时通讯_私有云_公有云-哇谷云科技官网-JM沟通

IM下载体验 - 哇谷IM-企业云办公IM即时聊天社交系统-JM 沟通下载

IM功能与价格 - 哇谷IM-提供即时通讯IM开发-APP搭建私有化-公有云-私有化云-海外云搭建

新闻动态 - 哇谷IM-即时通讯热门动态博客聊天JM沟通APP

哇谷IM-JM沟通热门动态博客短视频娱乐生活

关于哇谷-哇谷IM-提供企业即时通讯IM开发-语音通话-APP搭建私有化-公有云-私有化云-海外云搭建

联系我们 - 哇谷IM-即时通讯IM私有化搭建提供接口与SDK及哇谷云服务

即时通讯IM融云世界

IM即时通讯钉钉技术:企业IM钉钉在后端架构上的优越之处

新的市场叫板环信、融云、腾讯云!开源版IM即使聊天工具

企业IM即时通讯聊天办公APP钉钉技术分析交流

哇谷云-怎么样正确认识海外云服务器

公有云和私有云之间有什么区别?类似融云、环信云、网易云、哇谷云?