将网站程序放在tmpfs下 然后用nginx直接做对外服务呢 varnish或者squid都是利用内存和它的连接数来做到加速服务. 但是如果是squid->nginx->fastcgi->mysql 这样当中很多连接是开销在内部的连接之中 而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发至fastcgi 对于动态内容的多加了一个步骤. 考虑到nginx有了不低于squid以及varnish的连接能力 那么可以将网站程序直接放在tmpfs中 这样如果是静态的.就会直接从内存读取后返回给用户(和其他缓冲服务器的效果一样) 如果是PHP就丢给后面的fastcgi处理 这样更快.
至于程序同步的问题. 在程序更新的时候使用svn或者rsync去同步tmpfs里面和文件服务器中的内容就可以了
至于服务器重启tmpfs清空的问题 只需要在服务器重启之前,需要将内存中的程序复制到本地硬盘 然后启动之后,将硬盘数据再复制到tmpfs中然后启动服务即可
至于服务器宕机以后无法事先保存tmpfs内容 既然服务器都挂了.在它启动之后用10分钟20分钟把程序全部重新同步过来也不是什么大的开销. 如果是多节点的负载均衡或者HA,那就更没必要担心tmpfs内容丢失的问题.
至于上传文件 如果你都用这么样的架构来加速了. 你的图片还会直接上传到web服务器么? 肯定是直接传到图片服务器了.
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师必看 对观点赞同或支持。如需转载,请注明文章来源。