1.为什么需要vainish或者memcached缓存?
·缓存服务器把数据存在内存中,http或者mysql服务器是把数据存在硬盘上
·从内存中读取数据比从硬盘中读取数据快
·用户发来一个请求查看图片,缓存服务器线查看本地有没有,如果有直接返回给客户,如果没有就去http服务器去找,然后保存在本地内存中一份,再返回给客户一份
2.nginx和apache怎么处理php动态页面?
Apache用mod_php模块处理
Nginx用FastCGI处理
3.各节点的作用
·nginx作为反向代理:用户访问动态内容时分发到apache,访问静态内容时分到到nginx
·varnish:收到用户请求,如果缓存服务器里没有,就到web服务器中去找,然后先保存在本地服务器,再返回给客户
·rabbitmq消息队列:比如有4000个请求进来,rabbitmq服务器全部缓存起来,根据real server的处理能力来分配。
·HAproxy负载均衡:给apache real server做负载均衡,可以设置每个apache最多处理多少个请求(比如500)。4000个请求进来,haproxy设置每个real server最多处理500个,rabbitmq配合haproxy,让后端real server一直到处理完位置
·memcached:缓存数据库
·mysql-proxy:给mysql做读写分离,如果是读就转给读库,如果是写就转给写库
·lvs:给mysql读库做负载均衡
架构流程:
用户输入一个网址,经过DNS解析出IP地址,到达企业防火墙,如果访问的是动态内容,到varnish缓存服务器,如果,到rabbitmq消息队列,到haproxy根据算法交给一台apache real server处理,web服务器连接mysql-proxy如果是写交给写库,如果是读库交给lvs,lvs根据算法找到一台数据库,数据库把内容交给web服务器,web服务器在返回给客户