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

美团架构(技术+业务)简化与极致:O2O企业的技术进化与创新 美团的技术架构演变+美团业务架构优化+O2O 技术优化贯通的 阅读详情
摘要 小咖秀的张华伟带来的分享是在移动互联网时代,创业团队在技术储备、经验积累以及资金等有限的情况下,怎样选择合适的服务端技术解决突发式流量增长所带来的压力以及最大化节省运营成本等方面的经验和建议。同时也对划分URL目录,合理使用缓存等问题给出自己独特的答案。
3月18日云栖社区在线实时分享顺利结束,本次由小咖秀技术总监张华伟分享了分享是在移动互联网时代,创业团队在技术储备、经验积累以及资金等有限的情况下,该如何选择合适的服务端技术解决突发式流量增长所带来的压力以及最大化节省运营成本等方面的经验和建议 。本次视频直播的整理文章、视频、幻灯片整理完毕,如下内容。

爆款产品特点
4aeae18a62de9d7b8afe3a9705386467ffd1a9d8
图一 爆款产品的特点

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

b2799c57e7ec50ab08000cc48f5e57494e2933da
图二 高可用系统设计要点

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

系统模块化拆分

c8e6e8ac64a5848b7df413e6b0f473082dfd4a75
图三 系统模块化拆分

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

fedeee322cb6107b29f2757035836fbca7596974
图四 URL分层

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

d0ce9403fce89867f152a7c6c4cdd561f60ca5ea
图五 功能独立的模块化

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

小咖秀云服务结构

62856f96f7a326f856958fa8e631202229c16d0e
图六 小咖秀云服务结构

上图是小咖秀在云服务上的部署结构。小咖秀架构最初就是依赖于阿里云搭建而成,从开始的一台云服务器扩展到现在的接近一百台服务器的规模。云服务架构的最前端采用负载均衡,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。中间是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和连接数两个指标,两者受限于本身购买的资源配额、实例的大小。小咖秀初期在不确定业务量的情况下,先从最小化开始购买,逐步根据压力情况适当调配,升级一个实例配置的时间仅需几秒时间,可实现热升级,过程十分平滑,即使出现闪断,闪断时间也仅在几秒钟之内。

3d2e9f9e1087049542ceb302889a13788eaba875
图七 云服务应用关键指标

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

73d814a5e405e7b79d9e21a880de6fe220ceabd4
图八 云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%的空间。

直播视频:

cda7bee68c3e53a0246ac58b916b45d565d0d9f1
点击图片观看


关于分享者

张华伟,小咖秀技术总监

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


转自:https://yq.aliyun.com/articles/8530
百万级到千万级用户服务器网络架构图_主主负载 百万级到千万级用户服务器,该架构图可以无限扩展,满足对高并发和千万级架构需求 立即下载

相关推荐

千万级用户的大型网站,应该如何设计其高并发架构?

(1)单块架构(2)初步的高可用架构(3)千万级用户量的压力预估(4)服务器压力预估(5)业务垂直拆分(6)用分布式缓存抗下读请求(7)基于数据库主从架构做读写分离(8)总结一般一个网站刚开始建立的时候,用户量是很少的,大概可能就几万或者几十万的用户量,每天活跃的用户可能就几百或者几千个。这个时候一般网站架构都是采用单体架构来设计的,总共就部署3台服务器,1台应用服务器,1台数据库服务器,1台图片服务器。研发团队通常都在10人以内,就是在一个单块应用里写代码,然后写好之后合并代码,接着就是直接在线上的应用服务器上发布。很可能就是手动把应用服务器上的Tomcat给关掉,然后替换系统的代码war包

淘宝APP高并发架构设计pdf已开源:从架构分层到实战维护,挑战全网

我们都知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件处理。 我们在应对高并发大流量时也会采用类似“抵御洪水”的方案,我们在淘宝网APP的高并发系统设计上也沿用了同样的思路,归纳起来共有三种方法。 Scale-out 缓存 异步调用 既然我们了解了这三种方法,那么是不是意味着在高并发系统设计中,开发一个系统时要把这些方法都用上呢?当然不是,系统的设计是

weixin_47067712的博客 1021

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 468

BATZ,一份《Android架构开发手册》就够,已offer

20天啃完218页,这份《Android架构开发手册》,助我“闯进”字节,已offer 前言 今年的面试比往年要难得多,各个互联网企业对于Android岗位的要求越来越多,也越来越高,主要是初级岗位已经趋近饱和,但高级岗位又相对来说缺乏,这类的人才偏少,因此作为Android开发人员,我们应该思考的是怎么去往高级人才发展,而不是转学其他语言,要懂得去成为金字塔顶端的人,而不是逃避一直做基层的人。 本文主要记录了我面试字节跳动的一个经历以及我在面试前个人的一个准备,当然能够拿到字节的offer,也得益于我拿到

大模型学习路线 1273

AI智能体安全沙箱agentguard:为LLM代码执行筑起防火墙

在AI应用开发领域,大语言模型(LLM)驱动的智能体(Agent)能够自动生成并执行代码,极大地提升了自动化能力。然而,赋予AI直接执行系统命令的权限也带来了显著的安全风险,如恶意代码注入、敏感数据泄露和系统资源滥用。为了解决这一核心矛盾,安全沙箱技术应运而生,它通过在不可信代码与宿主系统之间建立隔离层,实现"默认拒绝、最小权限"的安全原则。agentguard项目正是这一理念的工程实践,它结合白名单机制与容器化隔离,为AI智能体提供了可配置、可审计的安全执行环境。该方案不仅适用于内部自动化工具开发,也为构

weixin_28695537的博客 297

Python之美——Python2与Python3多版本共存

Python多版本共存的方法Python2、Python3共存的方法python2下载及环境变量配置第一步、打开Python官网,下载Python2第二步、python2环境变量配置测试结果 Python2、Python3共存的方法 方法如下: 1.先确保不同版本解释器的python.exe所在的路径在环境变量中 2.拷贝各自的python.exe并重命名即可 步骤(理解不了下面有图示): 1、首先你需要将不同的python版本安装,且都已经将跟版本的环境变量配置好了,python3和2的下载方式

chenchen5152的博客 3946

以微博核心业务为例,解读如何仅用1台服务器支持百万DAU

点击上方“服务端思维”,选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」作者 |孙云晨编辑 |InfoQ近些年,各家公司都在不断推出各...

梁桂钊的博客 409

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3433

如何设计一个扛住千万级并发的架构?需要多少服务器?

阿里P8面试官:如何设计一个扛住千万级并发的架构?

u012272367的博客 7668

基于CST的PCB通孔三维建模实例

本文简明扼要地描述了如何利用CST的参数化脚本快速生成PCB的通孔三维模型,非常适合于进行快速精准的PCB参数分析。

一只豌豆象的博客 1834

WPF+MVVM案例实战(一)- 设备状态LED灯变化实现

采用WPF+MVVM框架实现,MVVM框架使用CommunityToolkit.Mvvm 依赖包,代码案例部署了三个LED灯,按照红黄绿三色后台自动刷新状态进行变化,根据后台数据不同,UI层显示不同颜色。

lingshuangcanxue 1382

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

3月18日云栖社区在线实时分享顺利结束,本次由小咖秀技术总监张华伟讲解千万级用户App服务端架构设计。本次直播中现场观众提出了很多技术问题,我们把这些问题和答案整理好分享给大家。 问答列表: 负载均衡是怎么做的? 如果使用阿里云负载均衡,是如何做数据同步? 有用到反向代理吗?技术架构能说下吗? 程序怎么扩展 能说下服务器数量? 怎么上线? 上线版本怎么...

weixin_34396103的博客 243

【个人学习总结】CRC校验原理及实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 ..................

星Yeah 的博客 7967

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

摘要:在2016杭州云栖大会的“开发者技术峰会”上,来自一下科技的技术副总裁张华伟给大家解密了一直播千万级用户服务端架构设计和成长历程。 一直播产品是一下科技今年五月份刚上线的产品。得益于与微博的深度合作,以及与小咖秀、秒拍共同运营,一直播开始时就有一个很高的起点,短短半年内,达到同时在线用户百万级规模。在2016杭州云栖大会的“开发者技术峰会”上,来自一下科技的技术副总裁张华伟给大家解密了一...

做最专业的总结 大师 1582

【论文精读】Graph WaveNet-深度时空图模型

Graph WaveNet构建了一个自适应邻接矩阵,它能保留隐藏的空间依赖关系,能够自动从数据中发现未见的图结构。提出了一个有效且高效的框架,可同时捕捉空间和时间依赖关系。其核心思想是将其提出的图卷积与扩张因果卷积相结合,使每个图卷积层都能处理空间依赖关系。在交通数据集上评估了提出的模型,并以较低的计算成本获得了最先进的结果。

打酱油的葫芦娃 1007

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

架构设计内容分享(四十三):千万级连接,知乎如何架构长连接网关?

知乎长连接网关由基础架构组 (Infra) 开发和维护,主要贡献者是@faceair、@安江泽。基础架构组负责知乎的流量入口和内部基础设施建设,对外我们奋斗在直面海量流量的的第一战线,对内我们为所有的业务提供坚如磐石的基础设施,用户的每一次访问、每一个请求、内网的每一次调用都与我们的系统息息相关。

之乎者也·的博客 1356

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

大咖直播第九期问答整理:微博一亿访问量背后的分钟级服务器扩容

3月30日云栖社区在线实时分享顺利结束,本次由微博研发中心技术经理及高级技术专家陈飞分享了微博利用阿里云实现分钟级服务器规模成倍扩容的技术体系。本次直播中现场观众提出了很多技术问题,我们把这些问题和答案整理好分享给大家。 问答列表: Feed流目前貌似组成包括很多内容,比如最新、点赞、热门等,肯定涉及到大量排序计算,这个怎么处理的? 当初为什么选择基于...

weixin_34235105的博客 184

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

大咖直播第七期问答整理:美柚黄益聪最懂女性App背后的混合云架构与大数据服务...

3月25日云栖社区在线实时分享顺利结束,本次由美柚技术总监黄益聪最懂女性App背后的混合云架构与大数据服务。本次直播中现场观众提出了很多技术问题,我们把这些问题和答案整理好分享给大家。 问答列表: 报表图表展现工具 目前你们全都迁移到阿里云上了吗?为什么迁移到阿里云? 有没有高并发的场景?你们怎么应对的? 美柚这样的规模,一年租用阿里云的金额大概是多少...

weixin_34331102的博客 341

知乎技术分享:知乎千万级并发的高性能长连接网关技术实践

本文来自知乎官方技术团队的“知乎技术专栏”,感谢原作者faceair的无私分享。 1、引言 实时的响应总是让人兴奋的,就如你在微信里看到对方正在输入,如你在王者峡谷里一呼百应,如你们在直播弹幕里不约而同的 666,它们的背后都离不开长连接技术的加持。 每个互联网公司里几乎都有一套长连接系统,它们被应用在消息提醒、即时通讯、推送、直播弹幕、游戏、共享定位、股票行情等等场景。而当公司发展到一定规模...

hellojackjiang2011的博客 708

大咖直播第三期问答整理:邵汉成讲解驴妈妈基于混合云的OTA行业数据分析、精准运营和大数据用户推荐...

3月11日云栖社区在线实时分享顺利结束,本次由驴妈妈技术副总邵汉成讲解驴妈妈基于混合云的OTA行业数据分析、精准运营和大数据用户推荐,本次直播中现场观解众提出了很多技术问题,我们把这些问题和答案整理好分享给大家。 问答列表: 混合云 ,自建和阿里在网络上 如何优化 驴妈妈的标签系统是如何一步步建立起来的? 对于学生来说 能否简明说一下学习路线 推荐一些...

weixin_33975951的博客 229

PCA9422与PIC18F86K22协同实现嵌入式电源状态感知与智能管理

电源管理在嵌入式系统中远不止稳压与供电,其本质是电压、电流、温度等多维物理量的实时感知、状态建模与闭环调控。基于专用电源监控IC(如PCA9422)与工业级MCU(如PIC18F86K22)的协同架构,可将分散的电源逻辑转化为可配置、可验证的固件模块,显著提升系统抗扰性与能效精度。该方案支撑电池电量预测、多电压域协同启停、热失控防护等关键场景,尤其适用于工业控制、车载设备及高可靠性便携终端。文中深入解析PCA9422的硬件级监测能力与PIC18F86K22的事件驱动固件架构,为构建鲁棒电源管理系统提供工程落

weixin_33834628的博客 484

千万级IM系统架构设计与Netty实战

即时通讯(IM)系统作为高并发分布式系统的典型代表,其核心技术挑战在于如何实现低延迟、高可靠的消息传输。基于TCP/IP协议栈的网络通信是IM系统的基石,而Netty作为高性能NIO框架,通过Reactor模式、零拷贝等技术显著提升了I/O效率。在分布式场景下,服务发现、消息路由和一致性保证成为关键设计点,通常需要结合ZooKeeper等协调服务实现节点管理。现代IM系统普遍采用分层架构设计,结合SpringBoot快速开发框架和Electron跨平台客户端,既保证了服务端处理能力,又提供了良好的用户体验。

weixin_33749131的博客 443

企业级应用实战:开·云App登录系统架构设计

最惊喜的是部署功能——配置好Dockerfile后,点击按钮就能把整套系统发布到线上环境测试,省去了自己折腾服务器的麻烦。采用Spring Cloud微服务架构,将登录系统拆分成多个独立的服务模块。认证服务负责核心登录逻辑,用户服务管理用户数据,验证码服务处理图形/短信验证码,风控服务实现安全防护。建议有类似需求的开发者都试试这个"开箱即用"的平台,尤其适合需要快速验证架构方案的场景。基础密码登录后,根据风险等级动态触发附加认证:低风险仅需短信验证码,中风险叠加邮箱验证,高风险必须人脸识别。

SilverMoon18的博客 1409
上一篇: Linux 防火墙开放特定端口 (iptables)
下一篇: mysql timeout调研与实测
sofia1217
博客等级 码龄17年 36粉丝 24原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值