大型、高负载网站架构和应用初探
163,Sina,Sohu等网站他们有很多应用程序都是PHP写的,为什么他们究竟是如何能做出同时跑几千人甚至上万同时在线应用程序呢?
挑选性能更好web服务器
单台 Apache web server 性能的极限 选用性能更好的web server TUX,lighttpd,thttpd ... 动,静文件分开,混合使用
应用程序优化与Cache的使用
常见的缓存技术 生成静态文件 对象持久化 serialize & unserialize
Need for Speed ,在最快的地方做 cache Linux 系统下的 /dev/shm tmpfs/ramdisk php内置的 shared memory function /IPC memcached MySQL的HEAP表
Cache的共享 NFS,memcached,MySQL 优点和缺点
MySQL数据库优化
配置 my.cnf,设置更大的 cache size 利用 phpMyAdmin 找出配置瓶颈,榨干机器的每一点油
集群,提高网站可用性
最简单的集群 域名设置多条A记录,DNS轮询 可用性问题
通过硬件设备实现的商业解决方案 Cisco、F5
来自开源社区的免费解决方案 HAproxy ,基于 layer 7 Linux Virtural Server,基于内核,通过修改TCP/IP数据报文实现负载均衡,确保可用性的守护进程ldirectord 高性能,部署相对麻烦,不便于观察 HAproxy ,基于 layer 7 效率相对较低,部署容易,有web界面便于观察
数据共享问题 NFS,Samba,NAS,SAN
南北互通,电信和网通速度问题
双线服务器 多个IP地址 一个IP地址,多个路由
智能DNS 根据来自不同ISP的用户接入到就近的服务器
CDN 使用Squid 对Web服务器进行反向代理,实现网站加速
小结 挑选性能更好Web服务器 应用程序优化,Cache的使用和共享 MySQL数据库优化 集群,提高网站可用性 解决南北互通,电信和网通访问速度慢的问题
Home Work 用 PHP 写只有一行代码的文本计数器. http://groups.google.com/group/phper_pea
好好学习 天天向上 MSN/GTalk:onion83@gmail.com Homepage :http://blog.yening.cn