linux运维|网站框架演变

WEB服务框架升级 一. 项目描述

随着公司业务的逐渐增大,lnmp的服务器无法满足日益增长的数据量,卡顿,延迟的现象时常出现,因此扩容,添加服务器势在必行.
二. 演变历程
  1. 单机版LNMP
  2. 独立数据库服务器
  3. web服务器集群与Session保持
  4. 动静分离,数据库集群
  5. 各种缓存服务与业务模型
样例展示
1.单机版LNMP

linux运维|网站框架演变
文章图片

用户量少时使用,简单、成本低、存在单点故障。
2.独立数据库服务器

独立数据库服务器是将网站静态文件、代码文件等资料与数据库分离的架构,当用户量增加时单机的处理能力有限,PHP或JAVA代码的执行需要消耗大量CPU资源,数据库的增删改查需要调用大量的内存资源,将两者分离可以减轻服务器的压力,其拓扑结构如图-2所示。
linux运维|网站框架演变
文章图片

Web服务器和数据库服务器的压力都可以得到有效改善,访问量有所增加。但是服务器依然存在单点故障问题。
3.web服务器集群与Session保持

我们可以通过Nginx、Haproxy代理服务器实现Web负载均衡集群,也可以使用LVS调度器实现Web负载均衡集群。部署完Web集群后还需要考虑如何进行Session会话保持,方法很多,如:根据源IP保持,代理服务器重写Cookie信息,共享文件系统保存session,使用数据库共享session等等。
linux运维|网站框架演变
文章图片

但是如果只有一台调度器依然会导致单点故障的问题,因此还需要使用Keepalived或Heartbeat之类的软件进行高可用配置
linux运维|网站框架演变
文章图片

4.动静分离,数据库集群

随着服务器的增加,虽然性能与并发量得到了明显的提升,但是数据的一致性、管理的便利性成为了新的问题,因此就需要增加统一的存储服务器,实现数据的同步一致,可以使用NFS,GlusterFS、Ceph等软件实现该功能
linux运维|网站框架演变
文章图片

但此时所有应用服务器都连接一台数据库服务器进行读写操作,而且后期随着数据库中的数据不断增加,会导致数据库成为整个网站的瓶颈!这就需要我们对数据进行分库分表,创建数据库主从或者数据库集群,实现读写分离
linux运维|网站框架演变
文章图片

5.各种缓存服务与业务模型

【linux运维|网站框架演变】linux运维|网站框架演变
文章图片

对于静态数据我们可以通过VARnish,squid或者nginx进行缓存,将数据缓存到距离用户更近的位置,构建CND(内容分发网络)框架.
对于传统的SQL数据库而言,我们也可以通过增加NoSQL数据库,实现数据缓存的功能,提示数据库的访问速度.
对数据库的优化放到后面的文章

    推荐阅读