美文网首页技术分享
亿级流量压力来袭,会不会被击垮

亿级流量压力来袭,会不会被击垮

作者: 星月落 | 来源:发表于2019-08-21 12:03 被阅读0次

本文我们将讨论大型网站的演进过程,随着用户量以及业务量的不断增加,网站规模越来越大,就需要不断更新技术架构,使网站能够满足日益增长的业务需求。

我们将根据一个网站的发展来展开今天对大型网站架构的讨论,下面我们将重点讨论大型分布式网站需要哪些技术的支撑,才能应对日益增长的业务处理需求。

1、首先我们需要做一个交易类的网站,网站内容基本包含以下内容。

用户注册登录、管理、信息维护等

商品展示、维护

订单、购物车、结算等

。。。

有了这些模块之后,我们的网站可以访问了,也能完成一些交易,基本架构就是一个应用程序包含所有模块,并且访问本机的数据库。

2、单机负载告警,数据库与应用分离

当我们的网站被推广后,用户越来越多,但是单机的访问最大限度只能支持少量用户在线,服务器负载持续增高。

这时我们应该考虑将应用和数据库分离开来,即应用和数据库部署在不同机器上,通过网络获取和保存数据。两台服务器分别运行数据库和应用,性能得到了提升。

如下图所示:

3、应用服务器告警、集群部署

对着业务量的增大,应用所在的服务器最大支持的并发数是有限的,当超过这个并发数后,系统就会出现变慢、响应时间长等问题,甚至宕机。

这时我们应该考虑将应用服务器由一台变为多台,采用集群部署的方式。让多台服务器共同处理用户的请求,这样我们的网站性能一下提升了很多倍。

集群部署架构图

这时我们就会想到有以下问题需要解决:如何将用户请求均衡的分发至集群中的各个服务器?

答:通过DNS和增加负载均衡设备来解决,这里我们采用负载均衡来解决。

即用户先来请求负载均衡服务器,负载均衡服务器会决定将这次请求转发至集群中的哪一台应用服务器,这里涉及到负载均衡算法。

负载均衡算法:轮询、加权轮询、随机、加权随机、原地址哈希法、最小连接数法,关于这六种负载均衡算法有专门的文章进行详细介绍

添加负载均衡后的网站架构如下图所示:

负载均衡每次将请求转发至不同服务器,如何解决Session的问题?关于Session共享的解决方案,我将专门写一遍文章来详细介绍!

Session Sticky:通过源地址哈希法,将同一客户端的所有请求都转发至同一个服务器去处理,这样就能保证每次请求都在同一机器上。

Session Replication:在服务器中配置Session共享,用户登陆后,立即将Session复制到集群中的每一台服务器上

这样用户的每次请求无论转发至哪一台机器,都可以获取到用户Session信息。

Session集中存储:将session的信息保存至其他缓存服务器,需要session信息时,从缓存服务器上获取

这样每一台机器都可以方位缓存服务器,都能获取到session信息。

Cookie Based:将Session信息保存到Cookie中,用户每次请求都从Cookie中获取

这样也能保证每次请求无论在那台服务器上,都可以获取到session信息。

解决了以上问题,我们网站变成了集群模式,大大提高了所能承受的并发数量。

4、数据库压力变大,读写分离

经过集群部署方式,我们的网站接受了大量的用户请求,但是所有的应用服务器都连接到单机数据库上,数据库的数据量和访问量都在大量增长。

经过分析,我们会发现大部分网站的业务都是读多写少,这样我们可以考虑将数据库使用读写分离的方式来部署。

即将数据库部署在多台服务器上,一部分承担读库的工作、一部分承担写库的工作。如下图所示:

数据库读写分离

这种方式提高了数据库读写性能,但是有以下问题需要解决:

我们需要保读库和写库数据一致,存在数据复制问题,既要保证时效性还要保证准确性。

大部分的数据库系统都提供了数据的复制机制,但是当有大量更新时,复制过程中会有一些延迟。

读写分离后,需要在应用中的读写业务选择不同的数据源。

读写分离并非只局限在数据库层面,有更多的场景可以利用读写分离解决数据库压力。

即将原有数据库中数据提前加载到其他地方,不直接读取数据库中的数据。例如,搜索引擎就可以看做一个读库。

搜索引擎可减少一些数据库压力,可看做读库

5、使用缓存增加数据读取速度

尽管到目前为止我们的网站可支持大量并发了,但是作为一个大型网站需要注重用户体验,要求高并发情况下快速响应,并且需要考虑到数据库负载问题

尽管我们已经使用来了读写分离,但是数据库的性能似乎总存在一个瓶颈,很难得到大幅度提升。我们应该寻找一种能够减少数据库压力并且能够快速读取的数据替代品。

这时缓存应运而生,缓存直接读取内存中数据,速度要比硬盘中快得多,我们可以将一部分常用的数据存在缓存在,这样就不用每次使用这些数据都到数据库中查询了,大大减少了数据的读操作。

如下图所示:

加入缓存后的网站架构图

由于缓存存取速度相当快,应用范围逐渐扩大,不仅用于数据缓存,还要用于页面缓存、公共存储等

数据缓存:以Key-Value的形式存储,由于缓存空间有些且昂贵,所以只存储一些热点数据,使用缓存应该注意不能影响正常的业务逻辑,在读取数据时先判断缓存中是否存在。还要注意数据修改的同步问题。

页面缓存:对于访问量特别大的页面,比如首页,就可以缓存整个页面,直接返回给用户。

公共存储:对于一些集群中需要共享的数据,如Session集中存储方式中,可使用缓存存贮session信息。

源网络,版权归原创者所有。如有侵权烦请告知,我们会立即删除并表示歉意。


更多技术,欢迎关注下方公众号

相关文章

  • 亿级流量压力来袭,会不会被击垮

    本文我们将讨论大型网站的演进过程,随着用户量以及业务量的不断增加,网站规模越来越大,就需要不断更新技术架构,使网站...

  • 亿级流量压力来袭,网站会被击垮吗?(2)

    承接上文,继续我们关于大型分布式网站解决方案的讨论。 上篇中,我们一起研究了应用与数据库分离、集群、读写分离、缓存...

  • 你用过哪些Redis集群?

    前言 在数据爆炸的信息时代,为了防止数据库被巨大的流量所击垮,人们开始利用缓存,以此减少数据库的压力;而对于缓存的...

  • 被压力击垮的中年男性

    人到四十,可能有些人早早发际线前移了不少,更有的头发早就掉得没剩下多少,身体开始出现各种小问题。随身体素质下降,各...

  • 2018日志192

    人与人,身处同样压力环境下的表现会有很大差异,有人会因为压力而激发潜力,也会有人因为压力而被击垮。 在奇葩说第五季...

  • 2018日志192

    人与人,身处压力环境下的表现会有很大差异,有人会因为压力而激发潜力,也会有人因为压力而被击垮。 在奇葩说第五季残酷...

  • 人性:无法品味压力,就找点自己喜欢的事吧

    你好,我是前中义。 适当的压力能让人成长。 压力变大的时候,就不太好说。 要么被击垮,要么突破自我。 一方面要看悟...

  • 何为成长?

    万老师说:成长 = 压力 + 休息。压力太大休息太少,人会被击垮;压力不够而休息太多,人就会自满而停滞不前。高手会...

  • 人体衰老的关键因素

    一:压力:这里的关键不在于压力本身,而在于你对压力的感受。如果你把压力视作威胁而不是挑战,那么压力就很容易击垮你,...

  • 【课堂1笔记】20170501秋叶《如何找到自己的定位》

    【大纲】 1 什么是定位? 2 定位五步法——对标、拆解、试错、借势、围城 【开场】 不是在压力中击垮,而是在压力...

网友评论

    本文标题:亿级流量压力来袭,会不会被击垮

    本文链接:https://www.haomeiwen.com/subject/ggsbsctx.html