传统LAMP
传统架构LAMP
linux + Apache(nginx) + Mysql + PHP
高可用,高并发,高性能
传统架构过程分析
一个请求到来首先经过nginx反向代理服务器,通过nginx的负载均衡平衡的匹配到应用服务器上,应用服务器通过计算去访问数据库服务获得数据。
传统架构存在的问题
1.首先应用服务器应该是无状态的,我们把可以能够维护用户状态的服务器称之为服务器有状态,如果存在状态,那么出现单点故障之后,会导致其他应用服务器是无法处理请求的。如何让应用服务器变成无状态的,服务器不存储用户状态,构建一个庞大的Session池
(1)Session session 基于redis存储Sessionid优缺点 优点:基于内存,服务器无状态session完全托管给redis 缺点得需要网络通信,redis存储session是无法创建集群的。
(2)Cookie 本地存储jssionid 好处无论服务器那台出现状态都没有问题,信息存在Cookie 弊端1.本地存储用户数据不安全2.如果用户禁止Cookie那么则没有有办法存储
session 池可以用Memacacher 也可以用redis做session管理
2.应用服务器访问数据持久层
数据库服务三两大类
(1)关系型数据库 mysql oracle 等
(2)NoSql mongoDB 基于文档存储 redis 基于key-value存储 基于列 基于图像存储
(3)newSQL 介于关系型数据库 和 NoSql之间
应用服务器访问数据服务提高效率可以用缓存池也可以创建索引库
索引库的特点:牺牲空间换取效率
缓存池的读的特点:
降低穿透率,提高命中率 降低穿透率提高命中率指的是尽量减低应用服务器访问数据服务,尽量去访问缓存池,提高对缓存池的命中,降低对数据访问的穿透,尽量让数据服务保持静默
缓存池的写的特点:
使用缓冲队列进行写操作,把写的操作做成异步的,不需要用户等待信息写入到数据库,只要求用户等写操作到达缓存池即可
队列的特点:first in first out 先进先出