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

    比如针对评论数据,可按照商品ID停止hash,路由到对应的表中存储;针对支付记载,可按照小时创立表,每个小时表继续拆分为小表,运用用户ID或记载编号去路由数据。只需实时操作的表数据量足够小,央求可以足够平均的分发到多台效劳器上的小表,那数据库就能经进水平扩展的方式来提高功用。其中前面提到的Mycat也支持在大表拆分为小表状况下的拜访控制。

    这种做法清楚的添加了数据库运维的难度,对DBA的要求较高。数据库设计到这种结构时,曾经可以称为散布式数据库,但是这只是一个逻辑的数据库全体,数据库里不同的组成部分是由不同的组件独自来完成的,如分库分表的管理和央求分发,由Mycat完成,SQL的解析由单机的数据库完成,读写别离能够由网关和音讯队列来完成,查询结果的汇总能够由数据库接口层来完成等等,这种架构其实是MPP(大规模并行处置)架构的一类完成。

    目前开源和商用都曾经有不少MPP数据库,开源中比较盛行的有Greenplum、TiDB、Postgresql XC、HAWQ等,商用的如南大通用的GBase、睿帆科技的雪球DB、华为的LibrA等等,不同的MPP数据库的侧重点也不一样,如TiDB更侧重于散布式OLTP场景,Greenplum更侧重于散布式OLAP场景,这些MPP数据库基本都提供了相似Postgresql、Oracle、MySQL那样的SQL标准支持才能,能把一个查询解析为散布式的执行方案分发到每台机器上并行执行,最终由数据库本身汇总数据停止前往,也提供了诸如权限管理、分库分表、事务、数据正本等才能,并且大多可以支持100个节点以上的集群,大大降低了数据库运维的成本,并且使数据库也可以完成水平扩展。

    数据库和Tomcat都可以水平扩展,可支撑的并发大幅提高,随着用户数的增长,最终单机的Nginx会成为瓶颈

    3.8 第七次演进:运用LVS或F5来使多个Nginx负载平衡

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

    由于瓶颈在Nginx,因此无法经过两层的Nginx来完成多个Nginx的负载平衡。图中的LVS和F5是任务在网络第四层的负载平衡处置方案,其中LVS是软件,运转在操作系统内核态,可对TCP央求或更高层级的网络协议停止转发,因此支持的协议更丰厚,并且功用也远高于Nginx,可假定单机的LVS可支持几十万个并发的央求转发;F5是一种负载平衡硬件,与LVS提供的才能相似,功用比LVS更高,但价钱昂贵。由于LVS是单机版的软件,若LVS所在效劳器宕机则会招致整个后端系统都无法拜访,因此需求有备用节点。可运用keepalived软件模拟出虚拟IP,然后把虚拟IP绑定到多台LVS效劳器上,阅读器拜访虚拟IP时,会被路由重视定向到真实的LVS效劳器,当主LVS效劳器宕机时,keepalived软件会自动更新路由器中的路由表,把虚拟IP重定向到另外一台正常的LVS效劳器,从而到达LVS效劳器高可用的效果。

    此处需求留意的是,上图中从Nginx层到Tomcat层这样画并不代表全部Nginx都转发央求到全部的Tomcat,在实践运用时,能够会是几个Nginx下面接一部分的Tomcat,这些Nginx之间经过keepalived完成高可用,其他的Nginx接另外的Tomcat,这样可接入的Tomcat数量就能成倍的添加。

    由于LVS也是单机的,随着并发数增长到几十万时,LVS效劳器最终会到达瓶颈,此时用户数到达千万甚至上亿级别,用户散布在不同的地域,与效劳器机房距离不同,招致了拜访的延迟会清楚不同

    3.9 第八次演进:经过DNS轮询完成机房间的负载平衡

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

    在DNS效劳器中可配置一个域名对应多个IP地址,每个IP地址对应到不同的机房里的虚拟IP。当用户拜访时,DNS效劳器会运用轮询策略或其他策略,来选择某个IP供用户拜访。此方式能完成机房间的负载平衡,至此,系统可做到机房级别的水平扩展,千万级到亿级的并发量都可经过添加机房来处置,系统入口处的央求并发量不再是成绩。

    随着数据的丰厚水平和业务的开展,检索、剖析等需求越来越丰厚,单单依托数据库无法处置如此丰厚的需求

    3.10 第九次演进:引入NoSQL数据库和搜索引擎等技术

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

    当数据库中的数据多到一定规模时,数据库就不适用于复杂的查询了,往往只能满足普通查询的场景。关于统计报表场景,在数据量大时不一定能跑出结果,而且在跑复杂查询时会招致其他查询变慢,关于全文检索、可变数据结构等场景,数据库天生不适用。因此需求针对特定的场景,引入适宜的处置方案。如关于海量文件存储,可经过火布式文件系统HDFS处置,关于key value类型的数据,可经过HBase和Redis等方案处置,关于全文检索场景,可经过搜索引擎如ElasticSearch处置,关于多维剖析场景,可经过Kylin或Druid等方案处置。

    当然,引入更多组件同时会提高系统的复杂度,不同的组件保存的数据需求同步,需求思索分歧性的成绩,需求有更多的运维手腕来管理这些组件等。

    引入更多组件处置了丰厚的需求,业务维度可以极大扩大,随之而来的是一个运用中包含了太多的业务代码,业务的晋级迭代变得困难

    3.11 第十次演进:大运用拆分为小运用

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

    (责任编辑:admin)