前言
一个好的架构是靠演变而来,而不是单纯的靠设计。刚开始做架构设计,我们不可能全方位的考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断的演变及进化,因而造就了一个成熟稳定的大型架构。如淘宝网、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:
相关推荐
阿里云构建千万级别的架构演变之路,是一篇关于如何在云计算时代逐步发展和优化大型系统架构的技术分享。文章的作者,乔锐杰,拥有丰富的运维和架构经验,包括在阿里云担任架构师的角色,主导过多个千万级用户的上云...
阿里云新型互联网架构是阿里巴巴为适应互联网业务快速发展而构建的一套高效、稳定、灵活的云计算解决方案。该架构的演变过程体现了阿里巴巴从传统的IOE(IBM小型机、Oracle数据库、EMC存储)架构向完全自主研发的...
阿里云云原生架构是基于云的技术理念,旨在帮助企业快速构建、部署和管理现代应用程序。这一架构涵盖了从基础设施到上层应用的各种组件和服务,旨在提高灵活性、可扩展性和整体效率。以下是阿里云云原生架构的关键...
- **云服务的进步**:云服务提供商推出了更多的服务选项,如阿里云的消息队列服务、SLS等,这些都为我们的技术架构提供了强有力的支持。 - **架构设计**: - 采用了更加模块化的设计思路,使得系统能够更好地适应...
本文档主要介绍了阿里巴巴的企业级互联网架构演变之路,及其技术创新之路。通过四项技术架构变革,阿里巴巴实现了高可用分布式架构的建立,突破了硬件设备的天花板,实现了业务的快速发展。 一、应用微服务化与...
通过对阿里巴巴中文网站架构演变过程的分析,我们可以看到软件体系结构如何随着业务和技术的发展而不断进化。未来,随着技术的进步和应用场景的变化,软件体系结构将继续向着更加高效、智能和灵活的方向发展。
阿里巴巴作为全球领先的电子商务公司之一,其网站架构经历了从“史前”到“星际时代”的不断演变,每一步都体现了技术的进步与业务需求的紧密结合。 ##### 1. 史前时代(1999年) 在阿里巴巴网站建立之初,技术栈...
云时代的数据库演变之路 阿里万亿级数据洪峰下的消息引擎 小米生态云应用引擎实践 去哪儿网基于Mesos Docker的Elasticsearch容器化私有云 滴滴统一资源调度平台建设实践 亚马逊云平台计算服务进化之路 京东云为企业...
结合云连接网(Cloud Connect Network, CEN)、边界路由器和智能接入网关等云服务,阿里云构建了一张覆盖全球的网络,实现了跨地域、跨云的高速互联。例如,在新加坡、杭州、香港等不同地区的用户可以通过云企业网...
通过持续激发创新潜能,阿里云正在构建DT时代的云生态系统,为经济社会的发展提供了新型基础设施。这种生态系统以“+”为核心,聚集了行业、企业等资源和要素,形成了“一横一纵”的利益共享、合作共赢体系。通过...
在部分内容中,提到了阿里云游戏生态布局、云基础设施、大数据应用、安全游戏盾、玩家行为分析、Hadoop 到 ODPS 的演变之路等关键技术概念。 以下是对这些技术概念的详细解释: 一、阿里云游戏生态布局 阿里云...
《买单侠数据库架构之路》是秦苍科技DBA负责人赵怀刚分享的一份关于基于云平台的数据库运维的深入探讨。这份文档详细介绍了买单侠在发展过程中遇到的问题、架构的演变以及具体的案例,同时提出了对云数据库运维的...
### 阿里云移动云峰会+NO1天施 #### 概述 阿里云移动云峰会+NO1天施,这一活动源自2017年杭州云栖大会的官方资料,聚焦于移动互联网技术的发展趋势及应用实践。在此次峰会上,阿里巴巴资深技术专家天施(吴志华)...
在大数据架构的演变过程中,阿里始终坚持拥抱变化,以应对更多的用户、数据和功能需求。同时,为了降低成本,提高质量和收益,阿里不断优化架构,引入了云计算技术,实现了更高的处理能力和更低的成本。 阿里大数据...
8. **电商架构演变**:阿里巴巴的电商系统经历了从集中式到分布式、再到微服务架构的转变,以适应业务的快速发展。 9. **游戏行业DDoS防护**:讨论了如何构建抗DDoS攻击的架构,确保游戏服务的稳定。 10. **混合云...
陈康贤,淘宝花名龙隆,淘宝技术部研发工程师,2011年加入淘宝网,参与了阿里云手机商城、口碑网迁移、店铺建站、offer、支付宝卡宝、生活商城、淘宝同学等项目,在分布式系统架构设计、高并发系统设计、系统稳定性...
#### 一、系统架构演变及微服务架构概述 ##### 1.1 系统架构演变 随着互联网技术的不断发展,网站应用规模不断扩大,系统架构也随之演变。从最初的单体应用架构到当前流行的微服务架构,每一步演变都有其特定背景...
随着其发展,语雀的技术架构经历了从简单到复杂的演变,以满足不断增长的业务需求和用户规模。 在【原型阶段】,语雀的技术选型非常简洁,底层服务基于体验技术部内部提供的BaaS服务,包括Object服务(类似MongoDB...
- **架构演变**:运行模式从集中式转变为分布式;运维方式从分散式向云化方向发展。 ##### 2. 容器技术要素 - **网络隔离**:通过虚拟网卡和网桥技术实现容器间的独立IP。 - **资源隔离**:采用CGroup实现CPU、...