WEB服务框架升级
一. 项目描述
随着公司业务的逐渐增大,lnmp的服务器无法满足日益增长的数据量,卡顿,延迟的现象时常出现,因此扩容,添加服务器势在必行.二. 演变历程
样例展示
- 单机版LNMP
- 独立数据库服务器
- web服务器集群与Session保持
- 动静分离,数据库集群
- 各种缓存服务与业务模型
1.单机版LNMP
文章图片
用户量少时使用,简单、成本低、存在单点故障。
2.独立数据库服务器
独立数据库服务器是将网站静态文件、代码文件等资料与数据库分离的架构,当用户量增加时单机的处理能力有限,PHP或JAVA代码的执行需要消耗大量CPU资源,数据库的增删改查需要调用大量的内存资源,将两者分离可以减轻服务器的压力,其拓扑结构如图-2所示。
文章图片
Web服务器和数据库服务器的压力都可以得到有效改善,访问量有所增加。但是服务器依然存在单点故障问题。
3.web服务器集群与Session保持
我们可以通过Nginx、Haproxy代理服务器实现Web负载均衡集群,也可以使用LVS调度器实现Web负载均衡集群。部署完Web集群后还需要考虑如何进行Session会话保持,方法很多,如:根据源IP保持,代理服务器重写Cookie信息,共享文件系统保存session,使用数据库共享session等等。
文章图片
但是如果只有一台调度器依然会导致单点故障的问题,因此还需要使用Keepalived或Heartbeat之类的软件进行高可用配置
文章图片
4.动静分离,数据库集群
随着服务器的增加,虽然性能与并发量得到了明显的提升,但是数据的一致性、管理的便利性成为了新的问题,因此就需要增加统一的存储服务器,实现数据的同步一致,可以使用NFS,GlusterFS、Ceph等软件实现该功能
文章图片
但此时所有应用服务器都连接一台数据库服务器进行读写操作,而且后期随着数据库中的数据不断增加,会导致数据库成为整个网站的瓶颈!这就需要我们对数据进行分库分表,创建数据库主从或者数据库集群,实现读写分离
文章图片
5.各种缓存服务与业务模型
【linux运维|网站框架演变】
文章图片
对于静态数据我们可以通过VARnish,squid或者nginx进行缓存,将数据缓存到距离用户更近的位置,构建CND(内容分发网络)框架.
对于传统的SQL数据库而言,我们也可以通过增加NoSQL数据库,实现数据缓存的功能,提示数据库的访问速度.
对数据库的优化放到后面的文章
推荐阅读
- mysql|InnoDB数据页结构
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- vue|电商后台管理系统(vue+python|node.js)
- Java及基础算法及数据结构|旧笔记整理(MySQL)
- mysql|双非本211硕,无实习无项目,自学大数据开发,秋招上岸
- 数据库|Mysql--InnoDB存储引擎详解
- pem pfx 是什么文件