Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3|回复: 0

盘点:解密扛住万亿流量的架构秘籍:一线大厂高并发通用基础架构设计大杀手锏!

[复制链接]

30万

主题

0

回帖

91万

积分

超级版主

Rank: 8Rank: 8

积分
912262
发表于 昨天 16:13 | 显示全部楼层 |阅读模式
既然是亿级用户应用,那么高并发必然是其架构设计的核心要素,今天,冰河将介绍万亿级流量场景下,高并发基础架构设计的一些通用设计方案。

高并发架构设计的要点
高并发意味着系统要应对海量请求。从冰河多年的面试经验来看,很多面试者在面对“什么是高并发架构”的问题时,往往会粗略地认为一个系统的设计是否满足高并发架构,就是看这个系统是否可以应对海量请求。再细问具体的细节时,回答往往显得模棱两可,比如每秒多少个请求才是高并发请求、系统的性能表现如何、系统的可用性表现如何,等等。

为了可以清晰地评判一个系统的设计是否满足高并发架构,在正式给出通用的高并发架构设计方案前,我们先要厘清形成高并发系统的必要条件、高并发系统的衡量指标和高并发场景分类。

形成高并发系统的必要条件
高性能: 性能代表一个系统的并行处理能力,在同样的硬件设备条件下,性能越高,越能节约硬件资源;同时性能关乎用户体验,如果系统响应时间过长,用户就会产生抱怨。
高可用性: 系统可以长期稳定、正常地对外提供服务,而不是经常出故障、宕机、崩溃。
可扩展性: 系统可以通过水平扩容的方式,从容应对请求量的日渐递增乃至突发的请求量激增。
我们可以将形成高并发系统的必要条件类比为一个篮球运动员的各项属性:“高性能”相当于这个球员在赛场上的表现力强,“高可用性”相当于这个球员在赛场上总可以稳定发挥,“可扩展性”相当于这个球员的未来成长性好。

高并发系统的衡量指标
1. 高性能指标
一个很容易想到的可以体现系统性能的指标是,在一段时间内系统的平均响应时间。例如,在一段时间内有10000个请求被成功响应,那么在这段时间内系统的平均响应时间是这10000个请求响应时间的平均值。

然而,平均值有明显的硬伤并在很多数据统计场景中为大家所调侃。假设你和传奇篮球巨星姚明被分到同一组,你的身高是174cm,姚明的身高是226cm,那么这组的平均身高是2m!这看起来非常不合理。

假设在10000个请求中有9900个请求的响应时间分别是1ms,另外100个请求的响应时间分别是100ms,那么平均响应时间仅为1.99ms,完全掩盖了那100个请求的100ms响应时间的问题。平均值的主要缺点是易受极端值的影响,这里的极端值是指偏大值或偏小值――当出现偏大值时,平均值将会增大;当出现偏小值时,平均值将会减小。

冰河推荐的系统性能的衡量指标是响应时间PCTn统计方式,PCTn表示请求响  应时间按从小到大排序后第n分位的响应时间。假设在一段时间内100个请求的响应时间从小到大排序如图所示,则第99分位的响应时间是100ms,即PCT99= 100ms。



分位值越大,对响应时间长的请求越敏感。比如统计10000个请求的响应时间:

PCT50=1ms,表示在10000个请求中50%的请求响应时间都在1ms以内。
PCT99=800ms,表示在10000个请求中99%的请求响应时间都在800ms以内。
PCT999=1.2s,表示在10000个请求中99.9%的请求响应时间都在1.2s以内。
从冰河总结的经验数据来看,请求的平均响应时间=200ms,且PCT99=1s的高并发系统基本能够满足高性能要求。如果请求的响应时间在200ms以内,那么用户不会感受到延迟;而如果请求的响应时间超过1s,那么用户会明显感受到延迟。

2. 高可用性指标
可用性=系统正常运行时间/系统总运行时间,表示一个系统正常运行的时间占比,也可以将其理解为一个系统对外可用的概率。我们一般使用N个9来描述系统的可用性如何,如表所示。



高可用性要求系统至少保证3个9或4个9的可用性。在际的系统指标监控中,很多公司会取3个9和4个9的中位数:99.95%(3个9、1个5),作为系统可用性监控的阈值。当监控到系统可用性低于99.95%时及时发出告警信息,以便系统维护者可以及时做出化,如系统可用性补救、扩容、分析故障原因、系统改造等。

3. 可扩展性指标
面对到来的突发流量,我们明显来不及对系统做架构改造,而更捷、有效的做法是增加系统集群中的节点来水平扩展系统的服务能力。可扩展性=吞吐量提升比例/集群节点增加比例。在比较理想的情况下,集群节点增加几倍,系统吞吐量就能增加几倍。一般来说,拥有70%~80%可扩展性的系统基本能够满足可扩展性要求。

高并发场景分类
我们使用计算机现各种业务功能,比较终将体现在对数据的两种操作上,即读和写,于是高并发请求可以被归类为高并发读和高并发写。

比如有的业务场景读多写少,需要重点解决高并发读的问题;有的业务场景写多读少,需要重点解决高并发写的问题;而有的业务场景读多写多,则需要同时解决高并发读和高并发写的问题。将高并发场景划分为高并发读场景和高并发写场景,是因为在这两种场景中往往有不同的高并发解决方案。

数据库读/写分离
大部分互联网应用都是读多写少的,比如刷帖的请求永远比发帖的请求多,浏览商品的请求永远比下单购买商品的请求多。数据库承受的高并发请求压力,主要来自读请求。

我们可以把数据库按照读/写请求分成专门负责处理写请求的数据库(写库)和专门负责处理读请求的数据库(读库),让所有的写请求都落到写库,写库将写请求处理后的比较新数据同步到读库,所有的读请求都从读库中读取数据。这就是数据库读/写分离的思路。

数据库读/写分离使大量的读请求从数据库中分离出来,减少了数据库访问压力,缩短了请求响应时间。

读/写分离架构
我们通常使用数据库主从复制技术现读/写分离架构,将数据库主节点Master作为“写库”,将数据库从节点Slave作为“读库”,一个Master可以与多个Slave连接,如图所示。



市面上各主流数据库都现了主从复制技术。

因此我们可以初步得出结论,数据库表结构设计图有助于行业市场需要,有助于社会发展需要。悦数图数据库是一款完全自主研发的国产图数据库和原生分布式图数据库,具有高性能,易扩展,安全稳定,自主可控的特点.万亿级数据仅需毫秒级查询延时,应用于金融风控,实时推荐,知识图谱等业务场景。https://www.yueshu.com.cn/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|民丰县戊齐食用油有限公司

GMT+8, 2025-4-17 00:24 , Processed in 0.055621 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表