千万级用户App小咖秀:服务端架构设计分享

直播视频:


(点击图片观看)

幻灯片下载地址:https://oss.aliyuncs.com/yqfiles/9a8fc5f636a0151d678e125f0e63678f.pdf


3月18日在线实时分享顺利结束,本次由小咖秀技术总监张华伟的分享是在移动互联网时代,创业团队在技术储备、经验积累以及资金等有限的情况下,该如何选择合适的服务端技术解决突发式流量增长所带来的压力以及最大化节省运营成本等方面的经验和建议。本次视频直播的整理文章、视频、幻灯片整理完毕,如下内容。

爆款产品特点

图一 爆款产品的特点

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

图二 高可用系统设计要点


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

系统模块化拆分

图三 系统模块化拆分


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

图四 URL分层

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

图五 功能独立的模块化


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

小咖秀云服务结构

图六 小咖秀云服务结构


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

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

云应用的关键指标

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

图七 云服务应用关键指标


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

图八 云Memcached实例监控

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

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

QA环节:

1、作为架构设计师,在设计架构时最为重要的一点是?

答:最为重要一点系统一定要支持纵横扩容,可以拆分。比如你设计了一个很好的系统,但只能部署在一台机器上运行,某一天压力上来后如果不能进一步拆分,那整个系统就无法承载更多的业务量,就毫无意义。

2、优化应该是系统开发哪一个阶段进行考虑?

答:对于快速上线的产品,前期需要有优化的理念,设计时要有所预留。如果开发团队很小的情况下,可以先快速上线,上线后逐个模块进行优化,优先优化核心模块。

3、小咖秀在涉黄、防护攻击方面对应的措施?

答:事实上,在小咖秀最初运行时也遭遇过几次攻击。最初小咖秀的负载均衡是自行搭建的,后来将负载均衡迁移到阿里云的SLB上。鉴黄方面,小咖秀将视频和图片通过鉴黄系统进行打分分值较高的直接屏蔽,分值中间段的,通过后台人员重点关注审核。

4、目前小咖秀的运维人员有多少?

答:目前专职运维人员只有一人,系统级的监控是自己搭的监控平台;服务方面的方面依赖于云监控,因为云监控目前比较成熟。

5、PHP服务器具体使用的是那种框架?

答:小咖秀核心业务服务器都是PHP实现的,框架是我们自己开发的一套MVC框架,比较轻量级,没有开源。

6、请问读写分离是如何实现的?

答:小咖秀底层数据库操作驱动使用PHP封装过,直接支持分表分库和主从分离操作,这个用数据库中间件就可以实现。

7、PHP代码放到内存是如何实现的?

答:可以把PHP代码复制到/dev/shm目录中,符合连接到应用配置目录就可以。需要注意的是/dev/shm目录只能使用物理内存50%的空间。

关于分享者

张华伟,小咖秀技术总监

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


相关系列文章:

  • 第九期:《微博:一亿访问量背后的分钟级服务器扩容》
  • 第八期:《有货:六层混合云架构打造中国最潮生态圈》
  • 第七期:《美柚:最懂女性App背后的混合云架构与大数据服务》
  • 第六期:《涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维!》
  • 第四期:《空格App亿元A轮融资背后:云上多场景技术架构实践与经验》
  • 第三期:《国内在线预订模式开创者驴妈妈旅游网:如何在混合云上搭建产品数据分析系统》
  • 第二期:《游族网络:如何运维千台以上游戏云服务器》
  • 第一期:《淘宝丁奇:如何解决影响MySQL使用的9大问题》
时间: 2025-01-30 08:59:27

千万级用户App小咖秀:服务端架构设计分享的相关文章

大咖直播第五期问答整理:小咖秀张华伟讲解千万级用户App服务端架构设计

3月18日在线实时分享顺利结束,本次由小咖秀技术总监张华伟讲解千万级用户App服务端架构设计.本次直播中现场观众提出了很多技术问题,我们把这些问题和答案整理好分享给大家. 问答列表: 负载均衡是怎么做的? 如果使用阿里云负载均衡,是如何做数据同步? 有用到反向代理吗?技术架构能说下吗? 程序怎么扩展 能说下服务器数量? 怎么上线? 上线版本怎么控制的? 初期搭建系统的时候,阿里云选择的基本配置是什么呢 请问功能模块之间的通信是怎么实现的?http接口?RPC?WS?还是其他? 缓存选择的方向是怎

新浪微博千万级规模高性能、高并发的网络架构经验分享

[本文转载自新浪微博千万级规模高性能.高并发的网络架构经验分享] 架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上要重视它,战术上又要藐视它. 先举个例子感受一下千万级到底是什么数量级?现在很流行的优步(Uber),从媒体公布的信息看,它每天接单量平均在百万左右, 假如每天有10个小时的服务时间,平均QPS只有30左右.对于一个后台服务器,单机的平均QPS可以到达800-1000,单独看写

千万级规模高性能、高并发的网络架构经验分享

千万级规模高性能.高并发的网络架构经验分享 主 题 :INTO100沙龙时间 :2015年11月21日下午地点 :梦想加联合办公空间分享人:卫向军(毕业于北京邮电大学,现任微博平台架构师,先后在微软.金山云.新浪微博从事技术研发工作,专注于系统架构设计.音视频通讯系统.分布式文件系统和数据挖掘等领域.) 架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又 要 藐

千万级用户直播APP——服务端结构设计和思考

一直播产品是一下科技今年五月份刚上线的产品.得益于与微博的深度合作,以及与小咖秀.秒拍共同运营,一直播开始时就有一个很高的起点,短短半年内,达到同时在线用户百万级规模.在2016杭州云栖大会的"开发者技术峰会"上,来自一下科技的技术副总裁张华伟给大家解密了一直播千万级用户服务端架构设计和成长历程. 以下内容根据演讲PPT及现场分享整理. 直播行业是今年最为火爆的行业,作为新兴的产品形态,直播产品最大的特点是:快.推流速度足够快,主播通过移动端快速推流,用户能快速看到直播场景,延迟需要足

揭开爆火小咖秀背后的神秘力量

     "人生如戏,全靠演技"--一款来自秒拍团队的短视频App小咖秀出尽了风头.今年五月份上线后,在短短两个月的时间里小咖秀在几乎没有消耗任何预算的条件下一度冲到AppStore的全榜前十.目前,小咖秀日活跃用户超过百万,下载量则达到千万级. 最近,该团队的首席执行官韩坤主题为<小咖秀,人人都是大导演>的演讲中透露,小咖秀是一款彻底的云构建产品,通过大量的公有云服务,其产品开发周期仅为两天.在海量用户支持上,小咖秀只有两个后端工程师和一个运维人员,在应对海量用户带来的峰

小咖秀设为封面的方法《图文教程》

1,首先在手机上打开小咖秀应用软件,随后选择一个素材,然后点击[开始]按钮,如下图所示: 2,接着就是视频录制的过程,如下图所示: 3,最后视频录制完之后,我们点击视频进行预览,在视频播放的时候,看到你想要的画面,点击屏幕左上方[设为封面].将停止该画面,该画面则为封面,如下图所示: 小咖秀,人生如戏全凭演技! 小咖秀是一款自带逗比功能的视频拍摄应用,用户可以配合小咖秀提供的音频字幕像唱KTV一样创作搞怪视频,同时小咖秀还支持视频同步分享到微博.微信朋友圈.QQ和更多好友分享你的视频. 小咖秀于

七牛访谈|秒拍&小咖秀CTO汤力嘉:产品的生存系于技术

     近日,七牛小伙伴.知名短视频社交产品"秒拍"."小咖秀"背后母公司炫一下科技宣布完成2亿美元D轮融资,并将继续深耕移动短视频领域,加大在移动短视频内容领域的投入.从炫一下科技的两款产品表现来看,"秒拍"每日视频上传量超过100万,日播放次数则达到5.1亿次:而"小咖秀"上线短短半年,日活跃用户已突破500万大关.可见,用户对短视频社交产品的消费已经开始爆发. 众所周知,秒拍是智能手机终端可使用的视频分享拍摄工具,主要

小咖秀打不开闪退问题总结及解决方法

1.App兼容性问题 就是与版本不兼容了,我们如这个app只能使用在ios8.0上结果我们升级了ios9.0就有可能不兼容了. 2.后台程序多内存不足 手机内存不足了不足以让小咖秀正常启动了这们就会出现闪退了 解决办法 直接退出其它的应用保证手机有足够的内存了删除手机中不用的垃圾数据,可以使用手机助手清除一下. 3.越狱修改字体 部分越狱用户可能会出现App闪退现象.特别是美化换过字体的,一般你所换的字体字库不全的话碰到没有的字体就会出现闪退.解决办法:换回原厂字体或者不越狱一般能解决. 4.在

小咖秀上传视频失败是什么原因?

小咖秀就是一个小公司了所以视频同时上传人数多了可能服务器负载不了,当然也有可能是你自己网络的原因了,下面我们来看看. 先检查下手机网络问题,可能是小咖秀app的端口问题,晚上用户太多,导致无法上传,其实只要避开上传高峰期就没问题了,建议大家早上上传. 好了以上就是小编为各位整理的关于手机中的小咖秀上传视频失败的原因了,对于这个问题小编就介绍到了这里了,希望文章能够帮助到大家的哦.