您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    阿里为什么能抗住双 11 ?看完这篇你就明白了!
    时间:2021-08-26 12:10 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    1. 概述

    本文以淘宝作为例子,引见从一百个到千万级并发状况下效劳端的架构的演进进程,同时罗列出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个全体的认知,文章最后汇总了一些架构设计的准绳。

    特别阐明:本文以淘宝为例仅仅是为了便于阐明演进进程能够遇到的成绩,并非是淘宝真正的技术演进途径 2. 基本概念

    在引见架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念停止引见:

    散布式 系统中的多个模块在不同效劳器上部署,即可称为散布式系统,如Tomcat和数据库辨别部署在不同的效劳器上,或两个相反功用的Tomcat辨别部署在不同效劳器上

    高可用 系统中部分节点失效时,其他节点可以接替它继续提供效劳,则可以为系统具有高可用性

    集群 一个特定范围的软件部署在多台效劳器上并作为一个全体提供一类效劳,这个全体称为集群。如Zookeeper中的Master和Slave辨别部署在多台效劳器上,共同组成一个全体提供集中配置效劳。在常见的集群中,客户端往往可以衔接恣意一个节点取得效劳,并且当集群中一个节点掉线时,其他节点往往可以自动的接替它继续提供效劳,这时分阐明集群具有高可用性

    负载平衡 央求发送到系统时,经过某些方式把央求平均分发到多个节点上,使系统中每个节点可以平均的处置央求负载,则可以为系统是负载平衡的

    正向代理和反向代理 系统外部要拜访外部网络时,一致经过一个代理效劳器把央求转收回去,在外部网络看来就是代理效劳器发起的拜访,此时代理效劳器完成的是正向代理;当外部央求进入系统时,代理效劳器把该央求转发到系统中的某台效劳器上,对外部央求来说,与之交互的只要代理效劳器,此时代理效劳器完成的是反向代理。复杂来说,正向代理是代理效劳器替代系统外部来拜访外部网络的进程,反向代理是外部央求拜访系统时经过代理效劳器转发到外部效劳器的进程。

    3. 架构演进

    3.1 单机架构

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    以淘宝作为例子。在网站最后时,运用数量与用户数都较少,可以把Tomcat和数据库部署在同一台效劳器上。阅读器往发起央求时,首先经过DNS效劳器(域名系统)把域名转换为实践IP地址10.102.4.1,阅读器转而拜访该IP对应的Tomcat。

    随着用户数的增长,Tomcat和数据库之间竞争资源,单机功用不足以支撑业务

    3.2 第一次演进:Tomcat与数据库分开部署

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    Tomcat和数据库辨别独占效劳器资源,清楚提高两者各自功用。

    随着用户数的增长,并发读写数据库成为瓶颈

    3.3 第二次演进:引入本地缓存和散布式缓存

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    在Tomcat同效劳器上或同JVM中添加本地缓存,并在外部添加散布式缓存,缓存抢手商品信息或抢手商品的html页面等。经过缓存能把绝大少数央求在读写数据库前阻拦掉,大大降低数据库压力。其中触及的技术包括:运用memcached作为本地缓存,运用Redis作为散布式缓存,还会触及缓存分歧性、缓存穿透/击穿、缓存雪崩、热点数据集中失效等成绩。

    缓存抗住了大部分的拜访央求,随着用户数的增长,并发压力主要落在单机的Tomcat上,照应逐突变慢

    3.4 第三次演进:引入反向代理完成负载平衡

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    在多台效劳器上辨别部署Tomcat,运用反向代理软件(Nginx)把央求平均分发到每个Tomcat中。此处假定Tomcat最多支持100个并发,Nginx最多支持50000个并发,那么实际上Nginx把央求分发到500个Tomcat上,就能抗住50000个并发。其中触及的技术包括:Nginx、HAProxy,两者都是任务在网络第七层的反向代理软件,主要支持http协议,还会触及session共享、文件上传下载的成绩。

    反向代理使运用效劳器可支持的并发量大大添加,但并发量的增长也意味着更多央求穿透到数据库,单机的数据库最终成为瓶颈

    3.5 第四次演进:数据库读写别离

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    把数据库划分为读库和写库,读库可以有多个,经过同步机制把写库的数据同步到读库,关于需求查询最新写入数据场景,可经过在缓存中多写一份,经过缓存取得最新数据。其中触及的技术包括:Mycat,它是数据库中间件,可经过它来组织数据库的别离读写和分库分表,客户端经过它来拜访下层数据库,还会触及数据同步,数据分歧性的成绩。

    业务逐突变多,不同业务之间的拜访量差距较大,不同业务直接竞争数据库,相互影响功用

    3.6 第五次演进:数据库按业务分库

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    把不同业务的数据保存到不同的数据库中,使业务之间的资源竞争降低,关于拜访量大的业务,可以部署更多的效劳器来支撑。这样同时招致跨业务的表无法直接做关联剖析,需求经过其他途臼状处置,但这不是本文讨论的重点,有兴味的可以自行搜索处置方案。

    随着用户数的增长,单机的写库会逐渐会到达功用瓶颈

    3.7 第六次演进:把大表拆分为小表

    阿里为什么能抗住双 11 ?看完这篇你就明白了!

    (责任编辑:admin)