【技术干货】阿里云构建千万级别架构演变之路

前言



一个好的架构是靠演变而来,而不是单纯的靠设计。刚开始做架构设计,我们不可能全方位的考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断的演变及进化,因而造就了一个成熟稳定的大型架构。如淘宝网、Facebook等大型网站的架构,无不从一个小型规模架构,不断进化及演变成为一个大型网站架构。 
 
 
    随着云计算的到来,当前已经从IT时代向DT时代转型。在云端如何构建千万级架构,本文主要结合阿里云最佳实践经验,向大家分享如何从一个小型网站逐步演变到千万级架构的过程。 
 
 
架构原始阶段:万能的单机 
    架构的最原始阶段,即一台ECS服务器搞定一切。传统官网、论坛等应用,只需要一台ECS。对应的web服务器、数据库、静态文件资源等,部署到一台ECS上即可。一般5万pv到30万pv访问量,结合内核参数调优、web应用性能参数调优、数据库调优,基本上能够稳定的运行。 
架构采用单台ECS:

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

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

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

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

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

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

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

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

架构扩展阶段:垂直扩展

当访问量达到1000万pv到5000万pv,虽然这个时候我们可以看到通过分布式文件系统OSS已经解决了文件存储的性能问题,CDN也已经解决静态资源访问的性能问题。但是当访问压力再次增加,这个时候web服务器和数据库方面依旧是瓶颈。在此我们通过垂直扩展,进一步切分web服务器和数据库的压力,解决性能问题。 
“何为垂直扩展,按照不同的业务(或者数据库)切分到不同的服务器(或者数据库)之上,这种切分称之为垂直扩展。” 
 
 
垂直扩展第一招:业务拆分 
在业务层,可以把不同的功能模块拆分到不同的服务器上面进行单独部署。比如,用户模块、订单模块、商品模块等,拆分到不同服务器上面部署。 
 
 
垂直扩展第二招:读写分离 
在数据库层,当结合数据库缓存,数据库压力还是很大的时候。我们通过读写分离的方式,进一步切分及降低数据库的压力。 
 
 
垂直扩展第三招:分库 
结合业务拆分、读写分离,在数据库层,比如我们同样可以把用户模块、订单模块、商品模块等。所涉及的数据库表:用户模块表、订单模块表、商品模块表等,分别存放到不同数据库中,如用户模块库、订单模块库、商品模块库等。然后把不同数据库分别部署到不同服务器中。 
架构采用CDN+SLB +ECS +OSS+ 云数据库memcache + RDS读写分离:

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

当访问量达到5000万pv及以上时,真达到千万级架构的访问量的时候,我们可以看到垂直扩展的架构也已经开始“山穷水尽”。比如,读写分离仅解决“读”的压力,面对高访问量,在数据库“写”的压力上面“力不从心”,出现性能瓶颈。另外,分库虽然将压力拆分到不同数据库中。但单表的数据量达到TB级别以上,显然已经达到传统关系型数据库处理的极限。 
 
 
水平扩展第一招:增加更多的web服务器 
通过业务垂直拆分部署在不同服务器后,当后续压力进一步增大,增加更多的webserver进行水平扩展。 
 
 
水平扩展第二招:增加更多的SLB 
单台SLB也存在单点故障的风险,即SLB也存在性能极限,如QPS最大值为50000。通过DNS轮询,将请求轮询转发至不同可用区的SLB上面,实现SLB水平扩展。 
 
 
水平扩展第三招:采用分布式缓存 
虽然阿里云memcache内存数据库已经是分布式结构,但是同样单一的入口也存在单点故障的风险可能。并且也存在性能极限,如最大吞吐量峰值为512Mbps。所以我们部署多台云数据库memcache版,可以在代码层通过hash算法将数据分别缓存至不同的云数据库memcache版中。 
 
 
水平扩展第四招:sharding + nosql 
面对高并发、大数据的需求,传统的关系型数据库已不再适合。需要采用DRDS(mysql sharding分布式解决方案) + OTS(基于列存储的分布式数据库)对应的分布式数据库来根本性的解决问题。 
架构采用CDN+DNS轮询 + SLB + ECS + OSS + 云数据库memcache + DRDS+OTS:

时间: 2024-10-10 22:14:43

【技术干货】阿里云构建千万级别架构演变之路的相关文章

阿里云构建Kafka单机集群环境

简介 在一台ECS阿里云服务器上构建Kafa单个集群环境需要如下的几个步骤: 服务器环境 JDK的安装 ZooKeeper的安装 Kafka的安装 1. 服务器环境 CPU: 1核 内存: 2048 MB (I/O优化) 1Mbps 操作系统 ubuntu14.04 64位 感觉服务器性能还是很好的,当然不是给阿里打广告,汗. 随便向kafka里面发了点数据,性能图如下所示:  2. 安装JDK 想要跑Java程序,就必须安装JDK.JDK版本,本人用的是JDK1.7. 基本操作如下: 从JDK

学汉语、来云栖、海外布道阿里云……这位印度架构师不一般

阿里云MVP(最有价值专家).印度架构师Sai Sarath Chandra P 最近有了一个新的爱好:学中文. Sai学中文的想法,与一家中国企业有着密切的关系. "当时因为工作需要,开始寻找用于运行机器学习.性价比比较高的云产品.在这个过程中,我偶然发现了阿里云."从使用产品开始,Sai与阿里云开始结缘.随着产品使用的深入和与阿里云团队交流的增多,Sai已经不仅仅是一个用户,而变成了阿里云技术和产品的讲解者.传播者. "在印度,我见证了阿里巴巴的发展,并成为了阿里云MVP

OCR技术之阿里云产品

OCR技术,开源免费的技术产品之前小编已经写过,想看请点击 https://www.cnblogs.com/zhizhixiaoxia/p/12015657.html 没事研究了下阿里云收费的OCR技术产品. 以身份证识别为例,代码调用接口实现:(idea编写的Java,maven项目) 1.所需依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclie

(转载) 中大型网站架构演变之路

标签:网站架构 大型网站架构 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lizhenliang.blog.51cto.com/7876557/1951651 前言 网上有很多文章类似于我今天要分享的课程,有架构师写的,有运维写的,还有开发些的,偏重点都不同,今天我以咱们运维角度全面讲解. 一个成熟的网站架构并不是一开始设计就具备高可用.高伸缩.高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的.在发展初

dubbo架构演变之路

背景 (#) 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本. 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键. 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 此时,用于加速前端页面开发的 Web框架(MVC) 是关键

阿里大牛亲授阿里云主机(ECS)与CentOS7实战

??第1章 阿里云ECS基础篇本章节讲解阿里云ECS的基础部分内容:阿里云控制台界面介绍和使用,ECS底层架构,ECS如何选型及配置等等.1-1 ECS&Centos7导学1-2 ECS基础介绍1-3 ECS云服务逻辑架构1-4 阿里云管理控制台使用 第2章 阿里云ECS进阶篇本章讲解什么是专线.BGP,讲解ECS镜像及快照原理和使用方式,讲解VPC网络的原理和优势,讲解弹性网络是什么及使用场景,介绍ECS的EIP及经典网络区别等等.2-1 ECS云服务构建2-2 阿里云节点BGP和专线概念介绍

阿里大牛亲授 阿里云主机(ECS)与CentOS7实战 高清无密

第1章 阿里云ECS基础篇 本章节讲解阿里云ECS的基础部分内容:阿里云控制台界面介绍和使用,ECS底层架构,ECS如何选型及配置等等. 1-1 ECS&Centos7导学 1-2 ECS基础介绍 1-3 ECS云服务逻辑架构 1-4 阿里云管理控制台使用 第2章 阿里云ECS进阶篇 本章讲解什么是专线.BGP,讲解ECS镜像及快照原理和使用方式,讲解VPC网络的原理和优势,讲解弹性网络是什么及使用场景,介绍ECS的EIP及经典网络区别等等. 2-1 ECS云服务构建 2-2 阿里云节点BGP和

基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

摘要: 数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台. 本次分享嘉宾是来自阿里云大数据的技术专家祎休 背景与总体思路 数据仓库是一个面向主题的.集成的.非易失的.反映历史变化的数据集合用于支持管理决策. 原文链接:http://click.aliyun.com/m/43803/ 数加大数据直播系列课程,主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主

重磅干货免费下载!阿里云RDS团队论文被数据库顶会SIGMOD 2018收录

ACM SIGMOD数据管理国际会议是由美国计算机协会(ACM) 数据管理专业委员会(SIGMOD)发起.在数据库领域具有最高学术地位的国际性学术会议. SIGMOD和另外两大数据库会议VLDB.ICDE构成了数据库领域的三个顶级会议.相对而言,SIGMOD比另外两个会议的含金量更高,被录取的难度更大.ACM SIGMOD的论文录取率是很低的,平均录取率大约仅为15%-17%. 来自阿里云RDS团队的论文"TcpRT: Instrument and Diagnostic Analysis Sys