新浪微博

本文以新浪微博为例,介绍如何使用函数计算的弹性扩容、事件触发及按量付费的功能,解决因业务高峰带来的流量激增等问题。

客户介绍

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

客户痛点

自2009年8月上线以来,新浪微博的用户一直处于爆发式增长的状态。截止2019年6月,新浪微博月活跃用户数高达4.86亿,平均日活跃用户数为2.11亿。业务的急速增长对微博的原有技术体系造成了极大的冲击,例如:

  • 流量激增:一些业务场景例如元旦、春晚、红包飞给微博带来巨大的流量挑战,这些业务场景的主要特点是:瞬间峰值高、持续时间短。每一次峰值事件的互动时间在3小时左右,而明星事件、红包飞等业务,流量经常会增加至原来几倍的瞬间峰值。

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

应对流量激增问题,新浪微博开发者的传统应对手段,主要通过以下几种方式:

  • 提前申请足够的设备保证冗余。

  • 降级非核心及周边的业务。

但以上解决方案需要提前预知相关IT成本,造成业务负载饱和度不一及扩缩容流程繁琐且周期长等问题。如何在用户量飞速增长、热点事件流量激增及请求有明显波峰波谷的情况下,既不影响用户体验,又不增加服务器成本投入是新浪微博开发人员的当务之急。

解决方案

image

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

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

使用效果

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

通过函数计算运行图片处理服务,新浪微博实现了持续的成本节省。无需再为平滑处理业务高峰带来的流量激增而提前预留大量闲置机器资源,同时开发人员无需花费精力管理及维护基础设施,只需集中精力与产品团队合作提升业务价值。

随着新浪微博的活跃用户数不断增加,新浪微博业务规模不断扩张,函数计算可以自动弹性地分配更多执行环境以支撑微博业务的持续发展。