一文详解云端架构的演变过程

时间:2022-04-17 01:29:00

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

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