Ali云创设千万等级架构演变之路分分快三计划

作者:编程技术

我们以基于Oracle数据库的应用系统上云为例,如何根据实际需求,及不同的应用特征,去选择合适的上云解决方案?看懂了以下这张图,就能找到最适合你的应用系统总体的迁移上云路径。

当访问压力达到500万pv到1000万pv,虽然负载均衡结合多台web服务器,解决了动态请求的性能压力。但是这时候我们发现,数据库出现压力瓶颈,常见的现象就是RDS的连接数增加并且堵塞、CPU100%、IOPS飙升。这个时候我们通过数据库缓存,有效减少数据库访问压力,进一步提升性能。

    一个好的架构是靠演变而来,而不是单纯的靠设计。刚开始做架构设计,我们不可能全方位的考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断的演变及进化,因而造就了一个成熟稳定的大型架构。如淘宝网、Facebook等大型网站的架构,无不从一个小型规模架构,不断进化及演变成为一个大型网站架构。

分分快三计划 1

结合业务拆分、读写分离,在数据库层,比如我们同样可以把用户模块、订单模块、商品模块等。所涉及的数据库表:用户模块表、订单模块表、商品模块表等,分别存放到不同数据库中,如用户模块库、订单模块库、商品模块库等。然后把不同数据库分别部署到不同服务器中。

分分快三计划 2

自建的数据库系统,计划将数据迁移至阿里云云数据库,需要阿里云数据库专家评估方案,协助完成数据库迁移工作。云数据库实例间的数据迁移,需要阿里云专业DBA协助完成迁移工作。

架构数据缓存阶段:数据库缓存

架构基础阶段:物理分离web和数据库

读写分离是采用分布式方式实现对数据库的读和写的职能进行分离,写数据请求主要发生在主库,读请求访问只读库,可以根据需求对只读库进行扩展,以实现整体请求性能的提升。

垂直扩展第三招:分库

垂直扩展第二招:读写分离

对于应用系统是否可直接迁移上云主要看数据库是否去O,是沿用原有的Oracle数据库还是采用阿里云提供的数据库,主要从以下几个方面判断:

垂直扩展第二招:读写分离

分分快三计划 3

小规模系统。这类OLAP系统仅仅针对具体某一类业务的历史数据进行实时分析,一般数据在几百GB的规模,分析的数据维度在十几个以内。对于这类应用系统,其数据库直接采用RDS,并在RDS之上构建OLAP分析工具。

架构扩展阶段:垂直扩展

前言

应用系统对数据库的IOPS性能要求较低且以IO读为主、延时在毫秒级,认为是低性能要求的。在迁移上云方案上可采用在ECS上直接部署Oracle构建数据库,具体迁移上云方法:

分分快三计划 4

垂直扩展第三招:分库

1) 应用层基于ECS部署运行环境,应用程序直接迁移,同时修改应用程序的数据库连接;

架构基础阶段:物理分离web和数据库

架构采用CDN ECS OSS RDS:

应用系统对数据库的IO读写性能要求高、延时在微秒级以内,认为是高性能要求的,在迁移上云方案上考虑采用ECS(采用本地SSD存储)上直接部署Oracle构建数据库,具体迁移上云方法:

通过业务垂直拆分部署在不同服务器后,当后续压力进一步增大,增加更多的webserver进行水平扩展。

分分快三计划 5

此外,对于内容管理类型以及大数据应用类型的应用系统,阿里云提供OSS、ODPS、OTS及专家服务,为迁云提供更专业支持。

在业务层,可以把不同的功能模块拆分到不同的服务器上面进行单独部署。比如,用户模块、订单模块、商品模块等,拆分到不同服务器上面部署。

水平扩展第一招:增加更多的web服务器

2) 数据层基于ECS部署Oracle数据库,Oracle的数据存储采用ECS提供的SSD磁盘。数据库的迁移直接通过RMAN实现快速迁移。

水平扩展第二招:增加更多的SLB

分分快三计划 6

联机分析处理类型系统是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持,可以根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员。阿里云针对OLAP类型应用的规模大小有不同的解决方案:

水平扩展第三招:采用分布式缓存

    当访问压力达到100万pv到300万pv的时候,我们看到前端web服务出现性能瓶颈。大量的web请求被堵塞,同时服务器的CPU、磁盘IO、带宽都有压力。这时候我们一方面将网站图片、js、css、html及应用服务相关的文件存储在oss中,另外一方面通过CDN将静态资源分布式缓存在各个节点实现“就近访问”。通过将动态请求、静态请求的访问分离(“动静分离”),有效解决服务器在磁盘IO、带宽方面的访问压力。

总的来说,通过迁移到RDS、引入数据缓存、分库分表、读写分离等多种方式可以以水平扩展方式取代原有的数据库架构,并且获得更好的性能和扩展性。

虽然阿里云memcache内存数据库已经是分布式结构,但是同样单一的入口也存在单点故障的风险可能。并且也存在性能极限,如最大吞吐量峰值为512Mbps。所以我们部署多台云数据库memcache版,可以在代码层通过hash算法将数据分别缓存至不同的云数据库memcache版中。

    架构的最原始阶段,即一台ECS服务器搞定一切。传统官网、论坛等应用,只需要一台ECS。对应的web服务器、数据库、静态文件资源等,部署到一台ECS上即可。一般5万pv到30万pv访问量,结合内核参数调优、web应用性能参数调优、数据库调优,基本上能够稳定的运行。

对于数据库性能和数据规模要求都高的应用,可通过DRDS实行对数据库性能或规模的扩展。DRDS是通过水平切分的方式,将数据分布在多个RDS实例上,通过并行的分布式数据库操作来实现性能的提升。如下图所示。

分分快三计划 7

分分快三计划 8

如果考虑到高可用的要求,可以配置一个相同的ECS实例为数据库的备机,主备之间通过Oracle Data Guard做数据同步,当主机宕机后,备机可以接管服务,切换时间通常在分钟级别。

在数据库层,当结合数据库缓存,数据库压力还是很大的时候。我们通过读写分离的方式,进一步切分及降低数据库的压力。

在数据库层,当结合数据库缓存,数据库压力还是很大的时候。我们通过读写分离的方式,进一步切分及降低数据库的压力。

传统架构注重于硬件上的高可用,云平台通过分布式架构已经确保自身服务的高可用,并且集成了备份,监控,HA,审计等一系列基础运维服务,云平台采用直接就可用的服务方式提供,使用方随时购买随时就可用,无需考虑一系列繁琐的底层运维,使用方可以更加专注于业务上的研发。

当访问压力达到100万pv到300万pv的时候,我们看到前端web服务出现性能瓶颈。大量的web请求被堵塞,同时服务器的CPU、磁盘IO、带宽都有压力。这时候我们一方面将网站图片、js、css、html及应用服务相关的文件存储在oss中,另外一方面通过CDN将静态资源分布式缓存在各个节点实现“就近访问”。通过将动态请求、静态请求的访问分离(“动静分离”),有效解决服务器在磁盘IO、带宽方面的访问压力。

    当访问压力达到500万pv到1000万pv,虽然负载均衡结合多台web服务器,解决了动态请求的性能压力。但是这时候我们发现,数据库出现压力瓶颈,常见的现象就是RDS的连接数增加并且堵塞、CPU100%、IOPS飙升。这个时候我们通过数据库缓存,有效减少数据库访问压力,进一步提升性能。

摘要: 我们以基于Oracle数据库的应用系统上云为例,如何根据实际需求,及不同的应用特征,去选择合适的上云解决方案?看懂了以下这张图,就能找到最适合你的应用系统总体的迁移上云路径。

分分快三计划 9

“何为垂直扩展,按照不同的业务(或者数据库)切分到不同的服务器(或者数据库)之上,这种切分称之为垂直扩展。”

大规模实时分析。这类OLAP系统面向数据存储规模在100TB级别,单表记录数达到千亿级别,阿里云提供分析数据库服务(Analytic Database Service,简称ADS),可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。还可直接嵌入业务系统为终端客户提供分析服务。

架构采用CDN SLB ECS OSS RDS:

分分快三计划 10

对于数据库性能要求高,但数据规模要求不高的关键应用,可通过引入数据缓存或采用读写分离的方式对RDS做性能扩展。引入数据缓存是采用阿里云Redis缓存服务,将部分查询数据加载至分布式缓存中,减少RDS的数据查询次数,提升系统的数据查询并发效率和降低响应时间。

水平扩展第四招:sharding nosql

水平扩展第四招:sharding nosql

迁移周期要求。应用系统去O会带来更长的迁移周期,若对应用系统迁移上云迁移的周期有严格的要求,则可以选择直接迁移上云;

分分快三计划 11

单台SLB也存在单点故障的风险,即SLB也存在性能极限,如QPS最大值为50000。通过DNS轮询,将请求轮询转发至不同可用区的SLB上面,实现SLB水平扩展。

迁云项目耗时耗力,迁移改造效率很低。阿里云专家提供上云全方位服务,降低上云技术风险和资源成本。包括在线业务系统上云、离线业务大数据上云、技术支撑、应用上云实施、数据迁移实施、大数据实施等。

架构分布式 大数据阶段:水平扩展

架构分布式阶段:负载均衡

联机事务处理类型应用属于业务交易型系统,在各个行业内占有绝大多数比重。对于OLTP中低性能要求的通用应用,数据库可直接采用RDS。在实际迁移上云过程中涉及到数据库从Oracle向RDS的MySQL数据库的迁移。为了得到更好的性能,需要对待迁移系统所使用的Oracle特性进行转换,以适配RDS数据库,进行应用系统代码改造。

架构的最原始阶段,即一台ECS服务器搞定一切。传统官网、论坛等应用,只需要一台ECS。对应的web服务器、数据库、静态文件资源等,部署到一台ECS上即可。一般5万pv到30万pv访问量,结合内核参数调优、web应用性能参数调优、数据库调优,基本上能够稳定的运行。

水平扩展第二招:增加更多的SLB

高可用要求。采用直接迁移上云方式是在ECS上部署Oracle数据库环境,数据库的高可用由用户来保障;若采用阿里云产品,则数据库的高可用可有阿里云保障。所以,直接迁移上云后数据库的高可用级别是否能够达到实际应用的运行要求也是判断应用是否直接迁移上云的重要方面。

(mysql sharding分布式解决方案) OTS(基于列存储的分布式数据库)对应的分布式数据库来根本性的解决问题。

架构采用CDN SLB ECS OSS 云数据库memcache RDS :

系统的复杂度。应用对数据库特征强依赖,以及应用层对数据库的强耦合会导致去O的难度和风险增加。如果去O的难度和风险达到不可控范围,则可以考虑直接迁移上云;

当访问量达到1000万pv到5000万pv,虽然这个时候我们可以看到通过分布式文件系统OSS已经解决了文件存储的性能问题,CDN也已经解决静态资源访问的性能问题。但是当访问压力再次增加,这个时候web服务器和数据库方面依旧是瓶颈。在此我们通过垂直扩展,进一步切分web服务器和数据库的压力,解决性能问题。

分分快三计划 12

对于传统应用系统,其原有的架构设计和采用的数据库、中间件与阿里云产品存在较大的差异,对于这种情况,需要对原有应用系统进行改造后迁移上云。针对不同类型的应用系统,其改造的方案也有所不同,一般将应用系统分为OLTP类型、OLAP类型、内容管理类型以及大数据应用类型四个大类。

当访问量达到5000万pv及以上时,真达到千万级架构以上访问量的时候,我们可以看到垂直扩展的架构也已经开始“山穷水尽”。比如,读写分离仅解决“读”的压力,面对高访问量,在数据库“写”的压力上面“力不从心”,出现性能瓶颈。另外,分库虽然将压力拆分到不同数据库中。但单表的数据量达到TB级别以上,显然已经达到传统关系型数据库处理的极限。

在业务层,可以把不同的功能模块拆分到不同的服务器上面进行单独部署。比如,用户模块、订单模块、商品模块等,拆分到不同服务器上面部署。

1) 应用层基于ECS部署运行环境,应用程序直接迁移,同时修改应用程序的数据库连接;

架构采用CDN SLB ECS OSS 云数据库memcache RDS读写分离:

结合业务拆分、读写分离,在数据库层,比如我们同样可以把用户模块、订单模块、商品模块等。所涉及的数据库表:用户模块表、订单模块表、商品模块表等,分别存放到不同数据库中,如用户模块库、订单模块库、商品模块库等。然后把不同数据库分别部署到不同服务器中。

2) 数据层基于ECS部署Oracle数据库,Oracle的数据存储采用ECS提供的云磁盘。数据库的迁移直接通过RMAN实现快速迁移。

架构分布式阶段:负载均衡

架构分布式 大数据阶段:水平扩展

性能要求。相对而言,采用直接迁移上云的方式对数据库的性能会有所限制,同时数据库的性能扩展空间有限,所以选择直接迁移上云方式的应用必须考虑在规划的系统运行周期内性能上无较大规模的扩展要求。

当访问压力达到50万pv到100万pv的时候,部署在一台服务器上面的web应用及数据库等服务应用,会对服务器的CPU/内存/磁盘/带宽等系统资源进行竞争。显然单机已经出现性能瓶颈。我们将web应用和数据库物理分离单独部署,解决对应性能问题。这里的架构采用ECS RDS:

通过业务垂直拆分部署在不同服务器后,当后续压力进一步增大,增加更多的webserver进行水平扩展。

分分快三计划 13

随着云计算的到来,当前已经从IT时代向DT时代开始转型。在云端如何构建千万级架构,本文主要结合阿里云最佳实践经验,向大家分享如何从一个小型网站逐步演变到千万级架构的过程。

架构数据缓存阶段:数据库缓存

一个好的架构是靠演变而来,而不是单纯的靠设计。刚开始做架构设计,我们不可能全方位的考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断的演变及进化,因而造就了一个成熟稳定的大型架构。如淘宝网、Facebook等大型网站的架构,无不从一个小型规模架构,不断进化及演变成为一个大型网站架构。

架构采用单台ECS:

面对高并发、大数据的需求,传统的关系型数据库已不再适合。需要采用DRDS

    当访问压力达到50万pv到100万pv的时候,部署在一台服务器上面的web应用及数据库等服务应用,会对服务器的CPU/内存/磁盘/带宽等系统资源进行竞争。显然单机已经出现性能瓶颈。我们将web应用和数据库物理分离单独部署,解决对应性能问题。这里的架构采用ECS RDS:

前言


垂直扩展第一招:业务拆分

    当访问压力达到300万pv到500万pv的时候,虽然“动静分离”有效分离了静态请求的压力,但是动态请求的压力已经让服务器“吃不消”。最直观的现象是,前端访问堵塞、延迟、服务器进程增多、cpu100%,并且出现常见502/503/504的错误码。显然单台web服务器已经满足不了需求,这里需要通过负载均衡技术增加多台web服务器(对应ECS可以选择不同可用区,进一步保障高可用)。因而告别单机的时代,转变分布式架构的阶段。

 

面对高并发、大数据的需求,传统的关系型数据库已不再适合。需要采用DRDS(mysql sharding分布式解决方案) OTS(基于列存储的分布式数据库)对应的分布式数据库来根本性的解决问题。

架构采用CDN SLB ECS OSS 云数据库memcache RDS :

    当访问量达到1000万pv到5000万pv,虽然这个时候我们可以看到通过分布式文件系统OSS已经解决了文件存储的性能问题,CDN也已经解决静态资源访问的性能问题。但是当访问压力再次增加,这个时候web服务器和数据库方面依旧是瓶颈。在此我们通过垂直扩展,进一步切分web服务器和数据库的压力,解决性能问题。

架构原始阶段:万能的单机

架构动静分离阶段:静态缓存 文件存储

单台SLB也存在单点故障的风险,即SLB也存在性能极限,如QPS最大值为50000。通过DNS轮询,将请求轮询转发至不同可用区的SLB上面,实现SLB水平扩展。

架构原始阶段:万能的单机

Ali云创设千万等级架构演变之路分分快三计划。架构采用CDN ECS OSS RDS:

架构扩展阶段:垂直扩展

分分快三计划 14

    当访问量达到5000万pv及以上时,真达到千万级架构以上访问量的时候,我们可以看到垂直扩展的架构也已经开始“山穷水尽”。比如,读写分离仅解决“读”的压力,面对高访问量,在数据库“写”的压力上面“力不从心”,出现性能瓶颈。另外,分库虽然将压力拆分到不同数据库中。但单表的数据量达到TB级别以上,显然已经达到传统关系型数据库处理的极限。

分分快三计划 15

水平扩展第三招:采用分布式缓存

架构动静分离阶段:静态缓存 文件存储

架构采用CDN SLB ECS OSS 云数据库memcache

“何为垂直扩展,按照不同的业务(或者数据库)切分到不同的服务器(或者数据库)之上,这种切分称之为垂直扩展。”

虽然阿里云memcache内存数据库已经是分布式结构,但是同样单一的入口也存在单点故障的风险可能。并且也存在性能极限,如最大吞吐量峰值为512Mbps。所以我们部署多台云数据库memcache版,可以在代码层通过hash算法将数据分别缓存至不同的云数据库memcache版中。

分分快三计划 16

    随着云计算的到来,当前已经从IT时代向DT时代开始转型。在云端如何构建千万级架构,本文主要结合阿里云最佳实践经验,向大家分享如何从一个小型网站逐步演变到千万级架构的过程。

当访问压力达到300万pv到500万pv的时候,虽然“动静分离”有效分离了静态请求的压力,但是动态请求的压力已经让服务器“吃不消”。最直观的现象是,前端访问堵塞、延迟、服务器进程增多、cpu100%,并且出现常见502/503/504的错误码。显然单台web服务器已经满足不了需求,这里需要通过负载均衡技术增加多台web服务器(对应ECS可以选择不同可用区,进一步保障高可用)。因而告别单机的时代,转变分布式架构的阶段。

垂直扩展第一招:业务拆分

架构采用单台ECS:

架构采用CDN SLB ECS OSS RDS:

架构采用CDN DNS轮询 SLB ECS OSS 云数据库memcache DRDS OTS:

  • RDS读写分离:

水平扩展第一招:增加更多的web服务器

架构采用CDN DNS轮询 SLB ECS OSS 云数据库memcache DRDS OTS:

分分快三计划 17

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 数据库 路径 一张图 NoSQL