您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 构建基于LAMP的中型网站架构
黑夜路人2010.12.19网站架构的迭代开源软件选型网站基础优化Q&A没有通用的架构,只有适合自己网站特点的架构没有一成不变不用升级的架构,架构一定是迭代、迭代、再迭代实践,实践,再实践最简单的单台Web+DB架构多Web服务器缓存服务器DB服务器(主从)CDN/代理服务器:缓存静态资源,比如Squid负载均衡服务器:解决服务器定位和服务器存活检查,比如LVS、HAProxyWeb服务器:提供主要的Web业务服务器,比如Apache、Nginx资源服务器:持久存储静态资源的服务器,比如存储JS、CSS、图片等数据,一般构建也是Web系统缓存服务器:减少数据库查询,缓存查多改少的数据,比如MemcachedDB连接池:解决数据库并发连接数(长连接)、数据库读写分离,比如MySQLProxy数据库:采用双主,多从的架构模式,保证冗余和高可用性(标配MySQL)内容检索服务器:为减轻数据库的压力,解决中型站点经常的排序和关键字检索需求,比如Shpinx,Xapian其他:按照网站需要的服务,比如消息队列系统、可持久化缓存系统、分布式文件系统等达到高可用性(HighAvailability)是架构的重点之一资源定位、健康检查、负载均衡关键服务的主备冗余:Web、DB及时有效的监控和报警达到高可扩展性(HighScalability)是架构的重点之二数据库的切片(Sharding):水平切分、垂直切分减少模块耦合度,基础模块独立服务:比如用户系统(Passport)达到高可维护性(HighMaintainability)是架构的重点之三架构模块和服务可以容易替换架构可升级负载均衡Web服务PHP缓存服务DB连接池数据库其他LVS工作在四层,内核态,性能极高,有VIP功能,配合keepalived做有效的心跳检查和负载均衡安装配置麻烦,HAProxy工作在四层到七层,功能强大,有VIP功能,配置简单,CPU占用高Nginx工作在七层,应用层功能多,配置简单,无法支持VIP功能负载均衡器测试数据机器足够并且应用重要建议独立使用LVS或HAProxy,机器不足使用Nginx软件每秒并发量CPU占用结论LVS(DR模式)1.6W25%性能综合比最好,配置复杂HAProxy2.3W95%转发快,CPU占用高,配置简单Nginx2W80%转发没有haproxy快,CPU比haproxy占用低Apache2.2版本非常稳定强大Preworker模式取消了进程创建开销,性能很高Nginx基于异步IO模型,性能强悍,能够支持数万并发对小文件支持很好,性能很高代码优美,扩展库必须编译进主程序Lighttpd基于异步IO模型,性能Nginx没有差别扩展库是SO模式,比Nginx要灵活全球使用率比以前低,安全性没有上面两个好Web服务器静态内容测试数据处理静态文件Apache性能比nginx和lighttpd要差Nginx在处理小文件优势明显Web服务器动态内容测试数据处理动态内容三者相差不大(测试环境差异),主要是取决于PHP和数据库的处理性能版本选择PHP4:马上抛弃它吧,低下的性能,不完整的面向对象支持PHP5.2.x:成熟稳定,各种扩展都支持,性能卓越,建议使用PHP5.3.x:有一些包括Unicode、命名空间之类的新功能,看个人喜好工作模式选择Mod_php5.so:如果使用Apache的话,简单配置,可以使用本模式,挺稳定,性能不错FastCGI模式:推荐结合php-fpm的fastcgi模式,性能很高,工作稳定,而且可以跟Apache、Nginx、Lighttpd完美结合其他注意安全配置,注意safe_mode、open_base_dir等选项停掉不需要使用的PHP扩展毋庸置疑,选择Memcached吧Memcached注意点32位机上开辟内存不要超过2G,建议可以多开几个进程如果没有富余的机器可以跟Web一起部署它单个数据值长度不能超过1M数据存储最长有效期是30天MySQLProxy性能不是太好,目前功能不完善无法进行读写分离,需要自己写Lua脚本实现SQLRelay业内普遍反映不好用您有推荐的吗?毋庸置疑,选择MySQLMySQL特点开放式存储引擎,可以编制自己的引擎安装部署简单,运维对比其他数据库简洁标配MyISAM和InnoDB引擎,各有所长MySQL缺点没有好的热备工具(收费)目前Cluster支持不太完善Orache收购后,前途未卜替代品MariaDB:创始人Monty构建,Maria引擎、XtraDB引擎Drizzle:精简版MySQL,云计算目标反向代理服务器SquidVarnish数据检索服务SphinxXapian消息队列MemcacheQMySQL优化前端优化服务优化选择合适的版本:MySQL5.x选择合适的存储引擎:MyISAM、InnoDBMyISAM:表级锁、查询快(500W),可以countInnodb:行级锁、事务支持(隔离级别),不要count,要设置主键重要的配置:Max_connections、Query_cache、key_buffer、sort_bufferInnodb_buffer_pool_size、innodb_flush_log_at_trx_commit硬件SSDSASSCSI,随机存取内存,多核CPU应用优化对数据进行Sharding:分表,分库垂直切分:按照业务或产品切分水平切分:按照数据拆分,比如mod或div尽量减少查询可以缓存的就不要查数据库部分数据可以借助比如Shpinx解决要注意的查询给需要的字段加上索引,比如需要WHERE或者ORDERBY的字段不要LIKE‘%key%’,不使用索引,可以LIKE‘key%’如果可以,少使用SELECT*FROMXX,尽量查询自己需要的字段避免使用JOIN/GROUPBY/DISTINCKINNODB表不要count雅虎十四条前端优化规则减少HTTP请求把JS文件和CSS文件合并压缩把页面图标类大图做成一个,使用CSS进行调用雅虎十四条前端优化规则对静态资源进行处理静态资源修改过期时间为未来给静态资源独立的域名,比如img.abc.com其他谷歌搜索
本文标题:构建基于LAMP的中型网站架构
链接地址:https://www.777doc.com/doc-4797237 .html