《构建基于LAMP的中型网站架构.ppt》由会员分享,可在线阅读,更多相关《构建基于LAMP的中型网站架构.ppt(29页珍藏版)》请在三一文库上搜索。
1、构建基于LAMP的中型网站架构,黑夜路人 2010.12.19 http:/ 开源软件选型 网站基础优化 Q&A,网站架构原则,没有通用的架构,只有适合自己网站特点的架构 没有一成不变不用升级的架构,架构一定是迭代、迭代、再迭代 实践,实践,再实践,10万PV网站架构,最简单的单台Web+DB架构,100万PV网站架构,多Web服务器 缓存服务器 DB服务器 (主从),1000万PV网站架构,1000 万PV的架构,CDN/代理服务器:缓存静态资源,比如Squid 负载均衡服务器:解决服务器定位和服务器存活检查,比如LVS、HAProxy Web服务器:提供主要的Web业务服务器,比如Apac
2、he、Nginx 资源服务器:持久存储静态资源的服务器,比如存储JS、CSS、图片等数据,一般构建也是Web系统 缓存服务器:减少数据库查询,缓存查多改少的数据,比如Memcached,1000 万PV的架构,DB连接池:解决数据库并发连接数(长连接)、数据库读写分离,比如 MySQL Proxy 数据库:采用双主,多从的架构模式,保证冗余和高可用性(标配MySQL) 内容检索服务器:为减轻数据库的压力,解决中型站点经常的排序和关键字检索需求 ,比如 Shpinx,Xapian 其他:按照网站需要的服务,比如 消息队列系统、可持久化缓存系统、分布式文件系统等,中型网站架构重点,达到高可用性(H
3、igh Availability)是架构的重点之一 资源定位、健康检查、负载均衡 关键服务的主备冗余:Web、DB 及时有效的监控和报警,中型网站架构重点,达到高可扩展性 (High Scalability)是架构的重点之二 数据库的切片(Sharding):水平切分、垂直切分 减少模块耦合度,基础模块独立服务:比如用户系统(Passport),中型网站架构重点,达到高可维护性(High Maintainability)是架构的重点之三 架构模块和服务可以容易替换 架构可升级,开源软件选型,负载均衡 Web服务 PHP 缓存服务 DB连接池 数据库 其他,选型:负载均衡,LVS 工作在四层,内
4、核态,性能极高,有VIP功能,配合 keepalived 做有效的 心跳检查和负载均衡安装配置麻烦, HAProxy 工作在四层到七层,功能强大,有VIP功能,配置简单,CPU占用高 Nginx 工作在七层,应用层功能多,配置简单,无法支持VIP功能,选型:负载均衡,负载均衡器测试数据 机器足够并且应用重要建议独立使用LVS或HAProxy,机器不足使用 Nginx,选型:Web服务,Apache 2.2版本非常稳定强大 Preworker模式取消了进程创建开销,性能很高 Nginx 基于异步IO模型,性能强悍,能够支持数万并发 对小文件支持很好,性能很高 代码优美,扩展库必须编译进主程序 L
5、ighttpd 基于异步IO模型,性能Nginx没有差别 扩展库是SO模式,比Nginx要灵活 全球使用率比以前低,安全性没有上面两个好,选型:Web服务,Web服务器静态内容测试数据 处理静态文件Apache 性能比 nginx和lighttpd要差 Nginx在处理小文件优势明显,选型:Web服务,Web服务器动态内容测试数据 处理动态内容三者相差不大(测试环境差异),主要是取决于PHP和数据库的处理性能,选型:PHP,版本选择 PHP 4:马上抛弃它吧,低下的性能,不完整的面向对象支持 PHP 5.2.x:成熟稳定,各种扩展都支持,性能卓越,建议使用 PHP 5.3.x:有一些包括Uni
6、code、命名空间之类的新功能,看个人喜好 工作模式选择 Mod_php5.so:如果使用Apache的话,简单配置,可以使用本模式,挺稳定,性能不错 FastCGI模式:推荐结合 php-fpm 的 fastcgi模式,性能很高,工作稳定,而且可以跟 Apache、Nginx、Lighttpd 完美结合 其他 注意安全配置,注意 safe_mode、open_base_dir 等选项 停掉不需要使用的PHP扩展,选型:缓存服务,毋庸置疑,选择 Memcached 吧 Memcached注意点 32位机上开辟内存不要超过2G,建议可以多开几个进程 如果没有富余的机器可以跟Web一起部署 它单个
7、数据值长度不能超过1M 数据存储最长有效期是30天,选型:数据库连接池,MySQL Proxy 性能不是太好,目前功能不完善 无法进行读写分离,需要自己写Lua脚本实现 SQL Relay 业内普遍反映不好用 您有推荐的吗?,选型:数据库,毋庸置疑,选择MySQL MySQL特点 开放式存储引擎,可以编制自己的引擎 安装部署简单,运维对比其他数据库简洁 标配MyISAM 和 InnoDB引擎,各有所长 MySQL缺点 没有好的热备工具(收费) 目前Cluster支持不太完善 Orache收购后,前途未卜 替代品 MariaDB:创始人Monty构建,Maria引擎、XtraDB引擎 Drizz
8、le:精简版MySQL,云计算目标,选型:其他,反向代理服务器 Squid Varnish 数据检索服务 Sphinx Xapian 消息队列 MemcacheQ,网站基础优化,MySQL优化 前端优化,MySQL优化,服务优化 选择合适的版本:MySQL 5.x 选择合适的存储引擎:MyISAM、InnoDB MyISAM:表级锁、查询快(500W),可以count Innodb:行级锁、事务支持(隔离级别),不要count,要设置主键 重要的配置: Max_connections、Query_cache、key_buffer、sort_buffer Innodb_buffer_pool_s
9、ize、 innodb_flush_log_at_trx_commit 硬件 SSD SAS SCSI,随机存取 内存,多核CPU,MySQL优化,应用优化 对数据进行Sharding:分表,分库 垂直切分:按照业务或产品切分 水平切分:按照数据拆分,比如mod或div 尽量减少查询 可以缓存的就不要查数据库 部分数据可以借助比如 Shpinx解决 要注意的查询 给需要的字段加上索引,比如需要 WHERE 或者 ORDER BY 的字段 不要LIKE %key%,不使用索引,可以 LIKE key% 如果可以,少使用 SELECT * FROM XX,尽量查询自己需要的字段 避免使用 JOIN/GROUP BY/DISTINCK INNODB表不要count,前端优化,雅虎十四条前端优化规则 减少HTTP请求 把JS文件 和CSS文件合并压缩 把页面图标类大图做成一个,使用CSS进行调用雅虎十四条前端优化规则 对静态资源进行处理 静态资源修改过期时间为未来 给静态资源独立的域名,比如 其他,相关参考,http:/ http:/zh.linuxvirtualserver.org/node/1394 谷歌搜索,Q &A,谢谢大家,
链接地址:https://www.31doc.com/p-2463014.html