一文简述:云端架构的演变过程
一个好的架构是靠演变而来的,而不是单纯靠设计。刚开始做架构设计时,我们不可能全方位地考虑到架构的高性能、高扩展性、高安全等各方面的因素。随着业务需求越来越多、业务访问压力越来越大,架构不断地演变及进化,进而造就了一个成熟稳定的大型架构。
1、架构原始阶段:单机的天下
架构的最原始阶段,即一台 ECS 服务器搞定一切。传统官网、论坛等应用,只需要一台 ECS 即可,对应的 Web 服务器、数据库、静态文件资源等,都可以部署到一台 ECS 上。一般 5 万 PV 到 30 万 PV 访问量,结合内核参数调优、Web 应用性能参数、数据库调优,基本上能够在一台 ECS 上稳定运行。
2、架构基础阶段:物理分离 Web 和数据库
当访问压力达到 50 万 PV 到 100 万 PV 的时候,部署在一台服务器上面的 Web 应用及数据库等服务应用,会对服务器的 CPU、内存、磁盘、带宽等系统资源进行争抢。单机出现性能瓶颈。将 Web 应用和数据库物理分离单独部署,即可解决对应性能问题。这里的架构采用 ECS+RDS。
3、架构动静分离阶段:静态缓存+对象存储
当访问压力达到 100 万 PV 到 300 万 PV 的时候,前端 Web 服务就会出现性能瓶颈。大量的 Web 请求被堵塞,同时服务器的 CPU、磁盘 I/O、带宽都有压力。需要一方面要将网站图片、js、css、html 及应用服务相关的文件存储在 OSS 中进行静态资源集中管理,另一方面要通过 CDN 将静态资源分布式缓存在各个节点实现“就近访问”。通过将动态请求、静态请求的访问分离(“动静分离”),有效解决服务器在磁盘 I/O、带宽方面的访问压力。该架构采用 CDN+ECS+OSS+RDS。
4、架构分布式阶段:负载均衡
当访问压力达到 300 万 PV 到 500 万 PV 的时候,虽然“动静分离”有效分离了静态请求的压力,但是动态请求的压力已经让服务器“吃不消”。最直观的表现是前端访问堵塞、延迟、服务器进程增多、CPU100%,并且出现常见的 502、503、504 等错误码。显然单台 Web 服务器已经满足不了需求,这里需要通过负载均衡技术增加多台 Web 服务器。该架构采用 CDN+SLB+ECS+OSS+RDS。
5、架构数据缓存阶段:数据库缓存
当访问压力达到 500 万 PV 到 1000 万 PV 时,虽然负载均衡结合多台 Web 服务器,解决了动态请求的性能压力。但是数据库出现压力瓶颈,常见的现象就是 RDS 的连接数增加并且堵塞、CPU100%、IOPS 飙升。这时候可通过数据库缓存,有效减少数据库访问压力,进一步提升性能。该架构采用 CDN+SLB+ECS+OSS+云 Memcache+RDS。
6、架构扩展阶段:垂直扩展
当访问量达到 1000 万 PV 到 5000 万 PV 时,虽然这个时候通过分布式文件系统 OSS 已经解决了文件存储的性能问题,也通过 CDN 解决了静态资源访问的性能问题,但是当访问压力再次增加时,Web 服务器和数据库仍然是瓶颈。在此我们通过垂直扩展,进一步切分 Web 服务器和数据库的压力,解决性能问题。主要通过业务拆分、数据流读写分离及分库来现实。该架构采用 CDN+SLB+ECS+OSS+云 Memcache+RDS 读写分离。
7、架构分布式+大数据阶段:水平扩展
当访问量达到 5000 万 PV 及以上时,也就是说真正达到千万级架构以上访问量时,垂直扩展的架构也开始走到尽头。比如,读写分离仅解决读的压力,面对高访问量,在数据库“写”的压力上面“力不从心”,会出现性能瓶颈。另外,分库虽然将压力拆分到不同数据库中。但当数据量达到 TB 级别以上,显然已经达到传统关系型数据库处理的极限。通过增加更多的 Web 服务器、更多的 SLB、分布式缓存、Sharding+NoSQL。该架构采用 CDN+DNS 轮询+SLB+ECS+OSS+云 Memcache+DRDS+OTS。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/993851494c529604e53484c11】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论