云场景实践研究第9期:小咖秀

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 具有千万用户的爆款APP小咖秀在最初就是基于阿里云搭建而成,从开始的一台云服务器扩展到现在的接近一百台服务器的规模,而专职运维人员却很少,这是因为其系统级别的监控使用自己搭建的监控平台,而服务方面则依赖于阿里云的成熟的云监控。

更多云场景实践研究案例,点击这里:【云场景实践研究合集】联合不是简单的加法,而是无限的生态,谁会是下一个独角兽

在移动互联网时代,创业团队在技术储备、经验积累以及资金等有限的情况下,该如何选择合适的服务端技术解决突发式流量增长所带来的压力以及最大化节省运营成本是一个非常值得思考的问题。而具有千万用户的爆款APP小咖秀在最初就是基于阿里云搭建而成,从开始的一台云服务器扩展到现在的接近一百台服务器的规模,而专职运维人员却很少,这是因为其系统级别的监控使用自己搭建的监控平台,而服务方面则依赖于阿里云的成熟的云监控。

“初创团队采用云服务,在技术支持和成本控制上可以获得一定程度上的帮助。例如小咖秀在7月底遇到系统瓶颈时,阿里云技术团队给予了很大的帮助,极大的降低了系统自建时间、人力成本,确保产品的正常运行。此外云服务的高稳定性,也减轻了运维人员的压力。”

——张华伟

小咖秀技术总监


采用的阿里云产品
  • 阿里云云服务器 ECS
  • 阿里云云数据库 RDC
  • 阿里云云数据库 Memcache 版

为什么使用阿里云

爆款产品一般都是“现象级应用”,后期用户容易审美疲劳,进入稳定期。如果继续采用高峰值的服务器、网络带宽配置,势必导致资源浪费。

小咖秀初期在不确定业务量的情况下,先从最小化开始购买,逐步根据压力情况适当调配,借助阿里云,升级一个实例配置的时间仅需几秒时间,可实现热升级,过程十分平滑,即使出现闪断,闪断时间也仅在几秒钟之内。


关于 小咖秀

小咖秀App于2015年5月份上线,最初只推出了IOS客户端的单机版,但用户留存达到60%以上。在持续的人力和技术投入下,于该年6月份推出带服务的版本。7月27日登顶App Store,雄踞榜首长达一个月。小咖秀引爆了中国对嘴型飙演技的浪潮,并从高端的娱乐圈走进大众的日常生活中流行开来,引领了2015年视频领域的潮流。


为什么选择阿里云?

打造爆款产品对于架构设计的硬性需求

爆款产品的特点十分明显。首先其团队规模较小,资金少,在未得到风险投资前,花的都是创始人的钱,因此要做好规划;同时产品上线初期用户量较少,但用户增长速度快,指数级的爆炸式增长,如果初期的架构设计不合理,会导致后期该产品的崩溃,无法使用;爆款产品一般都是“现象级应用”,后期用户容易审美疲劳,进入稳定期。如果继续采用高峰值的服务器、网络带宽配置,势必导致资源浪费。

基于爆款产品的上述特点,因此在搭建其系统时要注意架构设计的高可用性。首先系统应该做到集群化设计,无单点,并且需要支持纵横扩容。即使初期整个系统部署在物理机上,也需要有这个理念,以保证后期压力增加时,能快速拆分、扩容。同时要注意系统可模块化拆分,可拆成单独的子系统,子系统之间可通过服务化方式组合。此外数据存储应做到持久化存储,研发人员通过修改配置或者加数据库中间件可以灵活地将每一个模块的数据库、数据表单独拆分到不同的物理机上,做到数据的灵活调配。与此同时,系统还需要尽可能利用缓存,互联网产品中,缓存的重要性不言而喻,通过缓存,可以减轻后端的数据库的压力。在系统设计中,将耗时操作异步队列化,可以提升业务集群的吞吐量,数据的容错率也随之提高。如果系统设计之初不考虑上述情况,后期用户量增长时,需要进行停机维护。


小咖秀系统模块化拆分设计

73488f33cd380730d655f187ef1c588d8c730dd0

小咖秀系统模块化拆分

如图所示的是系统模块化拆分过程,按功能将系统拆分成负载均衡、URL路由、业务处理集群、缓存集群、数据库集群五层,按模块路由。URL路由按地址将不同的功能拆分成不同的模块,每个模块后面都有单独的业务集群、缓存集群和数据库集群。

9555358e4398c7c971a5931d0ab877269ec01bb4

URL分层

上图案例中URL分层可分为用户、评论、视频、图片四个模块,这里的分层方式是根据二级目录划分,在后期可以通过路由将不同的功能模块划分到不同的集群上,这里之所以采用二级目录划分而非二级域名,是因为二级域名数量过于庞大。

53118ba6fde55ae55e2bff554f6945e2d5129cd5

功能独立的模块化

每个业务集群设计时需要将独立功能进行模块化设计,每一个小的模块单独出来就是一个子系统,比如评论,本身就具有自己的缓存和数据库,并且在设计之初,就已经考虑数据库的分库分表。上图的四个业务模块对应于URL的四个分层,中间的系统API类似总线功能,其不处理业务逻辑,主要用于模块间交互。持久化耗时业务进行队列任务化,用来减轻并发的压力。系统内部交互非常频繁,每个模块之间通过内部API进行封装调用,将结果反馈给前端用户,同时数据库做到分库分表,不同数据库根据业务模块的特征、压力配置进行读写分离。


小咖秀基于阿里云的系统架构设计

ff012b1cd0beef4f6b5032db5a5362790cf63aeb

小咖秀基于阿里云服务结构

如图所示的是小咖秀在云服务上的部署结构。小咖秀架构最初就是依赖于阿里云搭建而成,从开始的一台云服务器扩展到现在的接近一百台服务器的规模。云服务架构的最前端采用负载均衡,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。中间是URL分发路由,内部的子系统通过ECS服务器搭建PHP集群。缓存部分分为一级缓存和二级缓存两个部分。一级缓存主要通过云Memcache搭建,二级缓存是在ECS部署的Redis搭建而成。最后端是数据库集群,开始阶段是采用自建的MySQL数据库。后期从自建MySQL迁移到RDS上,迁移中通过DPS热切换,切换时间仅用了几十秒的时间,并且迁移过程中没有停机。

在该架构中采用了多种缓存方式,其中Redis可以用于存储多种数据类型,但由于Redis本身是单进程单线程的,I/O和CPU与物理机相比还有一定的差距,所以导致在并发量高的情况下,压力较大。因此架构设计的巧妙地将大量的Key -Value请求全部转移到云Memcache上。同时考虑到ECS的I/O瓶颈,目前Redis集群采用主备方式,将写等持久化操作放在从库上,从库不用与对外提供服务,单独用于持久化操作。这样做目的一方面是可以进一步缓存数据库的压力,另一方面如果缓存集群崩溃时,可以Sliver切换为主库,快速实现产品上线。根据模块的功能、压力不同,个性化调整数据库采用RDS主从模式。云服务不同于物理机,开发者需要根据云服务的特性,适当调整程序部署,配置来做优化。


云应用的关键指标

从物理机刚开始切换到云上需要一个适应过程。首先内网流量不能再像之前使用物理机那样随意使用,具有一定的上限。另外网卡过包量也是一个很关键的指标。磁盘I/O,云磁盘的I/O相对于物理机还是有一定差距。最初,小咖秀系统架构中将PHP程序部署普通云磁盘上,后期将PHP代码迁移到内存之中。这样的操作之后,系统运行时无需提取磁盘内的内容,加上PHP本身的内存优化,得到性能的大幅度提升。在使用RDS需要注意IOPS和连接数两个指标,两者受限于本身购买的资源配额、实例的大小。小咖秀初期在不确定业务量的情况下,先从最小化开始购买,逐步根据压力情况适当调配,升级一个实例配置的时间仅需几秒时间,可实现热升级,过程十分平滑,即使出现闪断,闪断时间也仅在几秒钟之内。

c548ae7132f3769c440a719d0f4010b7957089f8

云服务应用关键指标

在使用云服务过程中,应注意其关键指标变化情况。上图显示的是云服务应用的部分实时关键指标图表,最上面是对数据过包量的监控,通过对数据过包量的监控,可以观察影响系统的访问速度的因素。左下角是当前RDS实例IOPS使用量,从表格中可以看出,其峰值趋于稳定状态,中间突发高峰值是系统完成一次任务产生的。右下角显示的是链接数,当有任务执行时,峰值也仅在200左右,整体来看非常平滑,这得益于前期的结构分层、分模块、缓存优化。

f7f815fc9ace6d2ca523a3cd6fc4d41899f9e1b6

云Memcached实例监控

上图是使用云Memcache时的实例监控,最开始缓存的命中率达到98%左右,经过数据过期等优化后,目前在90%左右,目前仍在不断优化。在云Memcache重点关注的QPS指标,在峰值的时候可以接近20万左右。


关于小咖秀的更多实践详情:千万级用户App小咖秀:服务端架构设计分享
原文发布日期:2016-03-20
云栖社区场景研究小组成员:贾子甲,仲浩。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
开发者
“共携手,趣挑战!”——阿里云开发者能力评测团队排位赛正式开赛!
阿里云开发者能力评测团队排位赛开始啦!比赛时间为2月28日—3月20日,您可以叫上技术小伙伴一起组团参赛,不断刷新自测成绩,取得好的名次,获取丰厚的奖励!
“共携手,趣挑战!”——阿里云开发者能力评测团队排位赛正式开赛!
|
存储 弹性计算 安全
云场景实践研究第80期:华大基因
作为全球最大的基因组学研究中心,华大基因在阿里云的帮助下,实现了海量数据的及时获取、快速分析、安全储存。本文将带领大家一同了解华大基因的基于大数据分析的云计算实践之路。
4507 1
|
分布式计算 大数据 关系型数据库
云场景实践研究第83期:众安保险
当传统保险公司还在将“开门红”作为重中之重提前几个月做准备的时候,互联网保险公司关注的则是“双十一”和“双十二”。2017年双十一当日,刚刚在香港上市的众安保险的保单量突破3亿,比2014年增长超过200%。阿里云所输出的服务,则在帮助基础设施建设发挥“乘数效应”。
1916 0
|
新零售 分布式计算 监控
云场景实践研究第40期:网聚宝
作为阿里云的深度用户,网聚宝的成长和阿里云的成长已经深深交织在了一起,在公开的5个产品技术上总投入资源大约是同类产品的1/5。作为一个中小规模的技术团队,客户已有3000多家品牌。本文将详细解读网聚宝在使用阿里云产品4年的过程中,基于云计算的架构心得。
2015 0
|
人工智能 运维 大数据
云场景实践研究第59期:饿了么
饿了么日订单从几十万增长到一百万,又从一百万增长到三百万,接着到2016年圣诞节的九百万。至今天,其订单量仅次于淘宝和滴滴,与美团不相上下。亮眼数字背后,技术团队背负的技术压力可想而知。作为创业公司,时间对饿了么来说更为宝贵,尤其是还处在一个业务快速上升期的创业公司。
3306 0
|
安全 NoSQL 大数据
云场景实践研究第51期:趣店
对于像趣店这样的创业团队而言,由于成本问题,自建IDC显然是不现实的,所以趣店在创业之初就选择了上云。如今,趣店对于阿里云存在着深度依赖的关系,只要有需求一来,技术团队首先会去思考阿里云有没有这样的服务,这样的方式帮助趣店将精力集中在自己的业务本身,使得产品能够迅速得以迭代。
2124 0
|
运维 关系型数据库 数据库
云场景实践研究第52期:畅游
混合云在安全上有很重要的优势,阿里安全体系很健全,混合云模式既保证了用户线下的场景核心需求,同时依托阿里安全防护体系,将安全堡垒又加固了一层,混合云可能比常规的云上云下打通更实际,优势更明显。借助阿里云提供的混合云解决方案,畅游在游戏的维护成本等各方面都有很大的进步,其故障修复和应用上线的时间速度提升几十倍甚至上百倍。
2530 0
|
监控 数据可视化 大数据
云场景实践研究第86期:美甲帮
借助阿里云的力量,美甲帮实现了针对百万用户的精细运营,并且在业务上更敏捷、更智能、更具洞察力,还能够快速响应新业务的数据及分析需求。
2110 0