千万级DAU系统该如何设计

发表于 2年以前  | 总阅读数:365 次

最近西安一码通的故障引起了业界广泛的讨论,究其根本原因还是系统未充分考虑到扩展性,在面临超过日常访问数倍甚至十倍以上的突发流量时某个环节达到了瓶颈点,并且系统不能做到自动扩缩容,最终导致了故障。

而之前各个网站频繁崩溃登上微博热搜,也是在应对突发流量方面做的不是很好,一方面是因为系统的冗余度评估不足,流量超出了系统的最大承载能力;另一方面是因为系统不能做到自动扩缩容,在流量超过系统最大承载时需要人工介入,响应速度和故障恢复速度都远远比不上自动扩缩容。

1

通用百万级 DAU 用户系统架构设计

在阐述千万级 DAU 系统的架构设计之前,我们首先来看一个通用的百万级 DAU 互联网应用架构的设计。如下图所示,一次用户访问请求通常要经过以下几层:

1.1

DNS

DNS 最主要的作用是根据用户的 IP 地址,决定把请求解析到哪个地域的 IDC,一般大型互联网公司往往不止一个 IDC,为了访问速度考虑,北方用户多访问联通机房,南方用户多访问电信机房。正常情况下每个用户请求的 DNS 解析是固定的,并且在客户端留有缓存,如果以前访问联通机房就会一直访问联通机房,以前访问电信机房也会一直访问电信机房。

1.2

四层负载均衡

流量经过 DNS 解析后第一个要访问的就是四层负载均衡了。四层负载均衡主要起到流量转发作用,比如根据请求的域名决定流量转发到后端哪个七层网关集群。四层负载均衡设备有软负载也有硬负载,最典型的软负载是 LVS,单台承载能力通常是十万级 QPS 以上。而硬负载如 F5,单台承载能力达到百万级 QPS,不过成本也较高,单台机器成本几十万以上,所以一般互联网公司四层负载均衡设备主要采用软负载 LVS。

1.3

七层负载均衡

七层负载均衡一般又叫做网关,一般互联网公司通过 Nginx 搭建自己的网关集群,当流量经过四层负载均衡转发后,就到了具体某个七层网关集群了。为什么有了四层负载均衡后还要有七层负载均衡呢?主要有以下两方面的考虑:

应用层的转发

对于大型互联网公司应用来说,通常业务包括几十个甚至上百个域名,不仅要针对域名来做四层流量的负载均衡,还要针对统一域名下不同的接口来做七层流量的负载均衡,比如上下行接口的拆分,核心和非核心接口的拆分等。

集成鉴权、日志、监控等通用功能

除此之外,一些通常的接口功能需求,如接口调用鉴权、日志统计、耗时监控等等,适合放在网关层统一进行处理,而不需要每个接口都实现这些功能。

1.4

服务端

流量经过网关转发后,就可以访问某台具体 IP 的服务器了,实际的应用程序就部署在服务器上。服务端的程序部署一般有两种架构:

单体应用

单体应用就是所有的业务的代码开发、合并、打包、部署都集成在一起,通常适合于比较简单的业务或者团队规模比较小的团队。

微服务拆分

当应用的接口上百个或者是团队规模超过十人时,代码开发、合并、打包、部署在一起就会引起开发效率的降低,这个时候就适合进行微服务拆分了,把相同领域的接口拆分到一个应用,独立进行代码开发、合并、打包和部署,更加灵活。

1.5

缓存

业务流量到达服务端后,服务端通常需要请求数据库,再组装处理后返回。一般情况下数据库的延迟在十毫秒以上,为了提高访问速度,可以把经常访问的数据放到缓存中,当前用的最多的如 memcached、redis 等,单机的承载能力都是十万级别,并且延迟只有 1-2 毫秒。

1.6

数据库

一般情况下用户请求的数据大部分都被缓存住,但缓存的命中率不可能达到 100%,穿透过来的请求还是要访问数据库。为了高可用数据库层面一般要做到以下几个层面:

主从分离

一般互联网应用来说,都是读多写少,为此可以将读写分离,写请求访问主库,读请求访问从库,根据读请求的量来决定从库的数量。

分库分表

一般单台服务器的磁盘容量通常在 T 级别,而大型互联网应用的数据总量一般在百 T 甚至千 T 级别,显然单机无法承载,因此要对数据库进行分库。另一方面单表查询的性能会随着容量增加而逐渐衰减,一般情况下单表容量要控制在千万行级别,因此也需要对数据库进行分表。分库分表一般有两个维度,一个是时间维度,不同时间的数据存储在不同的表上,这样单张表的容量就有限了;一个是访问维度,比如以用户 ID 为维度,按照用户 ID 进行 hash,把不同用户 ID 的访问分散到不同的数据库端口上。

基本按照以上架构支撑百万级 DAU 的用户访问通常是没问题的,但对于千万级甚至亿级以上 DAU 的系统来说, 只有在各层都支持自动扩缩容并配合快速降级等手段,才能在面对突发峰值流量时不至于崩溃。笔者结合过去十年在一线互联网公司的实际经历,总结了千万级 DAU 以上系统架构需要做出的改进。

2

混合云架构

当用户的请求经过 DNS 解析后,就决定了要访问哪个机房。首先要求机房出口总带宽要足够大,这是用户流量的入口,如果带宽打满用户请求就失败了。一般情况下,机房出口带宽是固定的,不能实时扩容,所以要预留足够的冗余。但实际情况下,各公司机房出口带宽不可能无限扩容。为此可以利用公有云来解决机房出口带宽有限的问题,可以将业务部署在公有云机房,日常情况下流量主要走私有机房,当流量上涨超出私有机房出口带宽的承载值时,可以把一部分流量切换到公有云上,这就要求系统能支持混合云架构。

混合云架构要求业务不仅要能部署在私有云机房,还要能部署在公有云。首先要求私有云和公有云机房之间的网络互通,对于千万级 DAU 以上的系统来说,通常需要专线才能保证带宽和稳定性需求。其次要考虑哪些层部署在公有云上,一个可以参考的架构如下图所示。

以上混合云架构要求业务在私有云和公有云上都能够部署服务,这对业务来说是一个比较大的挑战,需要有相应的混合云平台支撑,不仅要向业务屏蔽公有云和私有云的资源差异,还要能支持业务同时部署在公有云和私有云上。一个比较好的解决方案是企业在现有的运维基础设施上集成开源算力引擎 BridgX(https://github.com/galaxy-future/bridgx/),它支持从不同的公有云上获取资源,并管理私有云和公有云的机器,通过 Kubernetes 切割并以固定 IP 形式输出等功能,只需要很小的开发成本即可支持混合云部署。

3

全链路弹性扩容

当用户流量访问超过现有机房的承载能力时,可以把一部分流量切换到公有云上,这时候就要求公有云上部署的四七层、服务端、缓存和数据库都要能支撑流量。

3.1

四七层

云上四层单个 SLB 能承载的并发连接数可达百万级,因此在四层预留多几台 SLB 即可支撑几百万连,因为 SLB 是按照流量收费的, 日常没有流量成本也很低。而七层可以根据流量来实时弹性扩容,以 Nginx 为例,单台 Nginx 的承载能力通常在十万级,可以根据实际的 QPS 来决定需要 Nginx 的数量,弹性扩容后实时挂载到 SLB 上。

3.2

服务端

通常服务端是无状态的,可以根据流量实时弹性来应对。但这一层的弹性扩容不能简单的根据 QPS 来判定,还需要考虑耗时、慢速比等因素。一个通用的解决方案是根据接口的耗时分布对 QSP 加权,拟合服务端实际的压力值,再通过压测获取服务端最大承载能力,那么最大承载能力除以实际压力值就是服务端的实时冗余度,最后划定最高冗余度和最低冗余度两条线,即可自动扩缩容。目前有一个比较好的开源解决方案 CudgX(https://github.com/galaxy-future/cudgx),它可以通过各类服务的多维度、大规模的日志数据采集以及机器学习训练分析,对服务进行数字化、指标化度量,从而使业务能够做更加精准的服务自动扩缩容 ( https://github.com/galaxy-future/cudgx),它可以通过各类服务的多维度、大规模的日志数据采集以及机器学习训练分析,对服务进行数字化、指标化度量,从而使业务能够做更加精准的服务自动扩缩容 )。

3.3

缓存和数据库

为了应对千万级 DAU 以上的系统访问,缓存也要支持扩容。但由于缓存加载热数据需要时间,往往以天为单位,如果是业务流量上涨比较快,这时候靠弹性扩容往往难以应对,最好预留足够的冗余度。与缓存扩容类似,数据库的弹性扩容也需要较长时间,因为涉及到数据同步,以 MySQL 的扩容为例,若一个端口的数据量在 T 级别的话,数据同步往往在小时级以上。如果是流量上涨比较快的业务,则数据库层面也要保持充足的冗余度。

4

三级降级机制

为了保障千万 DAU 级的业务,业务除了要支持全链路弹性扩容以外,还要能够支持降级。降级一般是主动牺牲某些系统功能和用户体验,为了能够快速释放系统冗余度的自保措施。为了最大限度的降低降级带来的影响,通常降级要分为三级:

  • 一级降级是用户感知不到的降级,降级能释放的冗余度往往有限,通常在 30%以下;
  • 二级降级是用户可以感知到的降级,降级也能释放一定的冗余度,通常在 50%以下;
  • 三级降级是比较严重的降级,对用户体验的影响比较严重,释放的冗余度可达到 50%-100%,不到最后时刻一般不会采用。

实际在保障千万级 DAU 的系统时,除了要做到混合云架构、全链路弹性扩容、三级降级机制以外,还需要有各种各样的配套机制,比如决策支持系统、值班报警机制等。

本文由哈喽比特于2年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/25BmOrBKkeK8GxgWW8pY-A

 相关推荐

刘强东夫妇:“移民美国”传言被驳斥

京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。

发布于:1年以前  |  808次阅读  |  详细内容 »

博主曝三大运营商,将集体采购百万台华为Mate60系列

日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。

发布于:1年以前  |  770次阅读  |  详细内容 »

ASML CEO警告:出口管制不是可行做法,不要“逼迫中国大陆创新”

据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。

发布于:1年以前  |  756次阅读  |  详细内容 »

抖音中长视频App青桃更名抖音精选,字节再发力对抗B站

今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。

发布于:1年以前  |  648次阅读  |  详细内容 »

威马CDO:中国每百户家庭仅17户有车

日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。

发布于:1年以前  |  589次阅读  |  详细内容 »

研究发现维生素 C 等抗氧化剂会刺激癌症生长和转移

近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。

发布于:1年以前  |  449次阅读  |  详细内容 »

苹果据称正引入3D打印技术,用以生产智能手表的钢质底盘

据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。

发布于:1年以前  |  446次阅读  |  详细内容 »

千万级抖音网红秀才账号被封禁

9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...

发布于:1年以前  |  445次阅读  |  详细内容 »

亚马逊股东起诉公司和贝索斯,称其在购买卫星发射服务时忽视了 SpaceX

9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。

发布于:1年以前  |  444次阅读  |  详细内容 »

苹果上线AppsbyApple网站,以推广自家应用程序

据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。

发布于:1年以前  |  442次阅读  |  详细内容 »

特斯拉美国降价引发投资者不满:“这是短期麻醉剂”

特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。

发布于:1年以前  |  441次阅读  |  详细内容 »

光刻机巨头阿斯麦:拿到许可,继续对华出口

据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。

发布于:1年以前  |  437次阅读  |  详细内容 »

马斯克与库克首次隔空合作:为苹果提供卫星服务

近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。

发布于:1年以前  |  430次阅读  |  详细内容 »

𝕏(推特)调整隐私政策,可拿用户发布的信息训练 AI 模型

据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。

发布于:1年以前  |  428次阅读  |  详细内容 »

荣耀CEO谈华为手机回归:替老同事们高兴,对行业也是好事

9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI操控无人机能力超越人类冠军

《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。

发布于:1年以前  |  423次阅读  |  详细内容 »

AI生成的蘑菇科普书存在可致命错误

近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。

发布于:1年以前  |  420次阅读  |  详细内容 »

社交媒体平台𝕏计划收集用户生物识别数据与工作教育经历

社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”

发布于:1年以前  |  411次阅读  |  详细内容 »

国产扫地机器人热销欧洲,国产割草机器人抢占欧洲草坪

2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。

发布于:1年以前  |  406次阅读  |  详细内容 »

罗永浩吐槽iPhone15和14不会有区别,除了序列号变了

罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。

发布于:1年以前  |  398次阅读  |  详细内容 »
 相关文章
Android插件化方案 5年以前  |  237271次阅读
vscode超好用的代码书签插件Bookmarks 2年以前  |  8108次阅读
 目录