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


本文作者:乔锐杰,现担任上海驻云信息科技有限公司运维总监/架构师。曾任职过黑客讲师、java软件工程师/网站架构师、高级运维、阿里云架构师等职位。维护过上千台服务器,主导过众安保险、新华社等千万级上云架构。在云端运维、分布式集群架构等方面有着丰富的经验。

前言


    一个好的架构是靠演变而来,而不是单纯的靠设计。刚开始做架构设计,我们不可能全方位的考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断的演变及进化,因而造就了一个成熟稳定的大型架构。如淘宝网、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-30 06:18:10

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

干货来袭!Redis技术盛宴——阿里云Redis交流会火热召开

    2016年5月15日,阿里云Redis用户交流会在阿里巴巴北京国家广告园办公区万松书院火热召开,来自各个行业的Redis技术爱好者齐聚一堂,共同交流探讨最前沿的Redis技术,分享最干货的Redis应用案例.我们邀请到了阿里云数据库产品线的各位大咖,新浪微博的资深专家,CCTV的数据库技术核心成员,高德的数据库技术专家等行业大牛为大家做精彩分享. 阿里云Redis发展历程及未来展望--阿里云数据库产品总监  何云飞(何导)     何导主要介绍了Redis项目的发展历程及本次会议的主要目

聊聊阿里云的海外业务与架构,比如杭州、新加坡双中心

先说一个冷知识:阿里巴巴的第一个网站 www.alibaba.com 是英文界面的.如果真的有所谓"初心"的话,阿里巴巴可能是 BAT 中最早有全球野心的.一穷二白的年代,还被人视作"疯子"的马云就已经四处布道,要帮助中企业出海. 十几年过去了,无论阿里巴巴在中国多么成功,国际化始终是一个艰巨的挑战.马云说阿里巴巴仍然不是一个国际化公司,而只是有国际业务的公司.仅仅是微小的措辞差异,却揭示了一个残酷现实:阿里巴巴仍然没有被老外们当做"自己人".纵

阿里云SDN/NFV之架构与实践

摘要:在10月23日阿里云网络技术演讲上,来自阿里云网络产品团队孙成浩(花名:梵叶)分享了<阿里云SDN/NFV之架构与实践--一次自然的技术演进>.作为网络产品团队中负责产品相关的技术架构架构师,他结合阿里云的网络云产品探讨了阿里云虚拟网络的网络技术架构,并且结合SDN和NFV分享了阿里云的思考和实践. 他的演讲内容主要分为三个方面:1.为什么抽象出来了SDN和NFV的概念,如何一步一步摸索出这两套架构 2.如何理解SDN和NFV?.3未来的SDN/NFV架构上的展望.以下是本次演讲上的发言

双11逼近技术极限 阿里云刷新世界纪录

本文讲的是双11逼近技术极限 阿里云刷新世界纪录[IT168 云计算]2015天猫双11全球狂欢节再次刷新一系列世界纪录.商业奇迹背后,是中国计算能力的登顶全球.11日,阿里巴巴集团披露,当天系统交易创建峰值达到每秒钟14万笔,支付峰值达到每秒钟8.59万笔.相比2009年首届双11,订单创建峰值增长了350倍,支付峰值增长了430倍. 为了支撑这一天量的高并发交易,阿里巴巴今年实现了多项世界级技术创新:全球最大规模混合云架构;全球首个核心交易系统上云;1000公里外交易支付"异地多活"

云加数商业地产转型——基于阿里云构建云+中台

在2017云栖大会-上海峰会上,正佳金控集团CIO宋亦皇做了题为<云加数商业地产转型--基于阿里云构建云+中台>的分享.未来在大数据技术和云计算的推动下,商业地产中将出现原生金融.融合体验.对于企业来说,商业决策也会变得更加智慧,体制也会被不断创新.云在未来的商业活动中将凸显其核心地位.

上云培训课程:在阿里云上进行通用架构设计

课程名称:在阿里云上进行通用架构设计   课程代码:ACA21201   课程介绍:云平台架构是指将ECS / SLB / RDS  / OSS / OCS / OTS / ODPS / CDN等云平台服务按照业务场景对不同资源类型的需求以合理的关联关系组合在一起.而架构设计是指按照业务需求选择最优的云平台服务部署对应的系统或存储对应的资源,并结合各个云平台的服务特性设计出高性能.高可用的组合方案,以最终满足业务系统运行的需求.本课程从理论.产品.技术.实践多角度结合,深入讲解如何在阿里云上进行

云栖网络技术峰会-阿里云公网产品正确使用姿势节省50%成本秘诀-PPT和演讲文字实录

    大家好,我是阿里云的秋光.今天很高兴在这和大家一起分享一下 阿里云的公网产品以及如何省钱的的使用阿里云的公网.     首先问大家一个问题,大家都知道数据中心基础设施三大件是什么吗?     三大件指的是,网络.计算和存储.这三大件中其中网络是特别影响用户体验的一个要素.因为对于大部分数据中心来说都需要对外提供服务,让用户可以访问到服务器上所部署的业务系统.如果公网质量比较差那么对外提供的服务给用户带来的体验就会很差.     几年前网络上有句流行语叫做"世上最远的距离,不是南极和北极,

飞天技术汇 - 阿里云技术大牛为您揭秘双11幕后的技术保障

飞天技术汇 - 阿里云技术大牛为您揭秘双11幕后的技术保障 年年"双11"买买买,但是您了解双11幕后的技术故事吗?数以亿计的峰值检索请求,高并发的购买订单管理,花样繁多的红包和折扣信息比对,海量的库存和物流信息处理,这一切的背后都有阿里云的影子.11月18日,我们为您邀请到了阿里巴巴双11项目阿里云核心技术团队的弹性计算高级技术专家祝犁.存储高级开发工程师姜琦和数据库高级开发工程师凌洛,在北京望京阿里中心为您详细解读阿里云如何为阿里巴巴双11全球购物狂欢节提供技术支撑和保障服务. 时

深入剖析阿里云推荐引擎——新架构,新体验

摘要:本文的整理自2017云栖大会-上海峰会上阿里云算法专家郑重(卢梭)的分享讲义,从2016年2月V2.0公开使用到现在,阿里云推荐引擎有了更大的进步.有着获取排序的在线计算,修正匹配的近线计算及匹配排序的离线计算的计算机架构. 在2017云栖大会-上海峰会上,阿里云算法专家郑重(卢梭)做了题为<深入剖析阿里云推荐引擎--新架构,新体验>的分享.相比于22016年推出的阿里云推荐引擎V2.X,阿里云推荐引擎V3.0在业务,场景,流程,AB Testing,计算架构及算法架构上都有了很大的提高