如果让你设计一个支持千万级流量的架构,你会怎样设计?

目录

设计一个千万级流量的架构

1、前端优化

三个环节:减少请求次数、页面静态化、边缘计算

减少请求次数:减少前端脚本与后端服务的请求次数,有三种方案:

1.1、增加缓存控制:

1.2、减少图像的请求次数

1.3、减少脚本的请求次数

2、后端优化

可以从基础设施层面、网络层面、架构层面三个角度进行考量。

3、高性能设计中的“道”


设计一个千万级流量的架构

对于这个问题,需要从系统的全链路视角,从前端请求到后端服务评估,各环节性能指标,要从全链路的视角进行高性能的设计。

1、前端优化

三个环节:减少请求次数、页面静态化、边缘计算

减少请求次数:减少前端脚本与后端服务的请求次数,有三种方案:
1.1、增加缓存控制:

前端研发经常会设置HTML的缓存头部(Cache-Control头),这样浏览器在请求同一个文件时,只访问本地保存的资源副本,从而加速文件的访问速度。

1.2、减少图像的请求次数

大部分网站会将所有用到的多张图片拼成一张,这样多张图片只需要下载一次,然后通过CSS中的background-image和background-position来定位目标位置选择显示哪一张图片。

1.3、减少脚本的请求次数

通用的做法就是CSS压缩和JavaScript压缩,将多个文件压缩成一个,目的是减少传输文件的大小,而更重要的是减少请求数。

而页面静态化就是缓存的一种方式,相当于把整个页面元素缓存起来,那么缓存到了那里?

通常是将页面问及那先存储到CDN节点中,比如将商品详情页做静态化,就是将商品详情页的页面元素存储到CDN节点,然后所有请求就可以直接以由CDN来提供服务,不会到达后端,减少对后端服务的压力。

边缘计算被很多人提及,原因是大数据处理的实时性越来越高,由集中式的服务系统提供实时性的计算能力捉襟见肘,所以很多大厂开始将计算能力放到距离用户最近的CDN节点中,这就要求原有的CDN节点不只作为静态资源文件的缓存,而是要提供可以定制化的计算能力。

2、后端优化

可以从基础设施层面、网络层面、架构层面三个角度进行考量。

网络层面可以考虑网络专线、CDN优化;

架构层面可以考虑动静态分离、集群优化、数据隔离、服务拆分、异步驱动、负载均衡等

3、高性能设计中的“道”

设计高性能系统架构师,首先是清楚认知系统的硬性性能指标。

指数需求:我们要保证系统的TP 99为2s;

表面意思:系统要保证99%的请求的相应时间都在2s内;

深层意思:对有经验的架构师来说,这样说的需求是不明确的,任何系统都有自己的承受能力范围,换句话说就是在并单用户数限定范围内,一定要保证系统 TP99=2s,例如:“我们要保证系统并发数在100万用户内的时候,有所不能”。

所以,对一个架构师而言,要一个高性能架构至少有以下4个系统设计思考步骤。

明确指标:比如系统小于100万并发用户时,保证系统的TP 99为2s;

保护系统:当系统并发用户量超过100万,要做到保证有100万用的TP99=2s;然后保护系统,并拒绝其他用户连接请求。

用户体验:为了用户体验,要给系统承载容量外的用户提供优雅的体验,比如如服务器排队机制,并附加具体,明确的信息提示。

快速扩容:这一步很容易被忽略,如今系统的性能指标还有一点就是贵在快速反应,比如能承诺出现并发用户数量的TP99=2s;

在明确了性能之后,高性能架构的落地工作,可以氛围以下三个关键技术点:

做好系统限流:通过流量控制来保证系统稳定性。当实际并发压力超过系统性能设计指标的时候,就拒绝新的请求连接,让用户进行排队。

做好快速扩容:对于扩容能力,一般要储备额外的计算资源,用于不时之需,也就是事先通过预估流出一部分资源池。

会有人疑惑,既然有多余的资源为什么不提前扩容呢,只是处于对IT成本的考虑,作为系统设计者要把成本作为系统的设计原则之一。

另一个关键因素是系统的扩容速度,这是当今互联网软件中非常重要的系统能力之一,就算架构设计的不够优雅单如果相应速度够快,也就是能解决问题。

做好系统优化:结合上述后端优化,补充:性能设计要贯穿于系统建设的始终,以一个系统的研发管理过程为例,内容大致包括:需求阶段,设计阶段,研发阶段,测试阶段,上线阶段,运行阶段。

对于性能设计,(不仅仅是性能设计,所有的非功能性的设计)要在项目的各个阶段进行考虑,以便根据项目过程的推进,随时进行优化和调整。

未雨绸缪ing......

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值