使用场景 用户案例 新浪微博

客户介绍

新浪微博(Sina Weibo)是基于用户关系的社交媒体平台,用户可以通过 PC、手机等多种移动终端接入,以文字、图片、视频等多媒体形式,实现信息的即时分享、传播互动。任何用户都可以创作并发布微博,人人都是世界的主角。微博基于公开平台架构,提供简单、前所未有的方式使用户能够公开实时发表内容,通过裂变式传播,让用户与他人互动并与世界紧密相连。

客户痛点

自 2009 年 8 月上线以来,新浪微博就一直保持着爆发式增长。截止 2019 年 6 月,微博月活跃用户数高达 4.86 亿,平均日活跃用户数为 2.11 亿。业务的快速增长向微博的原有技术体系立下战书。

每年的元旦、春晚、红包飞等更是为微博带来巨大的流量挑战,这些业务场景的主要特点是:瞬间峰值高、持续时间短。每一次峰值事件的互动时间在 3 小时左右,而明星事件、红包飞等业务,经常会遇到高达几倍的瞬间峰值。微博 IT 的传统应对手段,主要是 “靠提前申请足够的设备保证冗余、降级非核心及周边的业务” 这两种,除了需要提前预知相关 IT 成本外,还有业务负载饱和度不一、扩缩容流程繁琐且周期长等问题。

与此同时,社交媒体与人们生活作息时间紧密相关,在奔波忙碌的午后,人们专心工作无暇与朋友们分享生活,请求量平缓;在闲暇安逸的傍晚,纷纷掏出手机查看当日的新鲜事,请求量激增。在生活一朝一夕的背后,微博的负载有着明显的波峰波谷,且峰值相差 5 倍以上。

如何在应对用户量飞速增长,热点事件流量暴增,请求有明显波峰波谷的同时,不影响用户体验,又不增加巨大的服务器成本投入是微博技术同学的当务之急。

解决方案

借助公有云 Serverless 架构应对爆发式峰值流量的解决方案映入微博同学的眼帘。

函数计算是阿里云提供的 Serverless 计算平台,根据请求量动态分配执行环境,毫秒级调度计算资源,确保在负载高时保持稳定的延时,在负载低时有着较高的资源利用率,且只会对代码运行时使用的计算资源付费。更棒的是函数计算与对象存储服务无缝集成,可以方便地对存储在对象存储中的图片进行实时处理。

函数计算的弹性扩容、事件触发、按量付费的特性与新浪微博一拍即合。微博决定使用函数计算部署图片处理业务。
微博将用户上传的图片存储到阿里云对象存储中,编写函数实现个性化的图片处理。当微博的用户通过客户端获取图片时,请求通过阿里云 CDN 回源到函数计算,函数从对象存储中下载原图,根据客户端类型实时处理成预期规格的图片,并将结果图片返回。

使用效果

函数计算毫秒级伸缩计算资源确保应用在热点事件发生时仍能保证稳定的延时,用户体验完全不受访问次数的影响。

通过函数计算运行图片处理服务,微博实现了持续的成本节省。再也不需要为平滑处理业务高峰带来的流量激增而提前预留大量闲置机器资源,同时由于不需要维护复杂的机器状态,工程师可以集中精力与产品团队合作增加业务价值,而不是花时间管理基础设施。

微博的活跃用户数不断增长,截止到 2019 年底,函数计算平均每天承载微博几十亿次请求。随着微博业务规模的不断扩张,函数计算可以自动弹性地分配更多执行环境以支撑微博业务的持续发展。