- [搜索引擎技术]垂直搜索引擎更需要注意细节
- [搜索引擎技术]Compass开放源码JAVA搜索引擎框架
- [搜索引擎技术]搜索类相关资料-备份
- [搜索引擎技术]搜索引擎学习资源
- [搜索引擎技术]中文分词研究
- [搜索引擎技术]Google搜索引擎推广排名研究
- [搜索引擎技术]搜索引擎技术
- [搜索引擎技术]垂直搜索引擎中的相似性问题
- [搜索引擎技术]学习搜索开发的重点不在lucene和nutc
- [搜索引擎技术]搜索引擎开源项目大全
- [搜索引擎技术]全文信息检索介绍及算法分析
- [搜索引擎技术]几款免费中文分词模块介绍
- [搜索引擎技术]搜索引擎的软件数据结构-Hit列表
- [搜索引擎技术]搜索引擎的软件数据结构-词典库(Lexi
- [搜索引擎技术]搜索引擎-文档索引库(Document Index
- [搜索引擎技术]搜索引擎开发实例
- [搜索引擎技术]垂直搜索引擎更需要注意细节
- [搜索引擎技术] MapReduce 映射与化简算法
- [搜索引擎技术]用Hadoop搭建分布式存储和分布式运算
- [搜索引擎技术]Compass开放源码JAVA搜索引擎框架
- [搜索引擎技术]搜索类相关资料-备份
- [搜索引擎技术]HadoopMapReduce详解
- [搜索引擎技术]Hadoop安装部署
- [搜索引擎技术]Hadoop入门
- [搜索引擎技术]文件索引设计
- [搜索引擎技术]搜索引擎学习资源
- [搜索引擎技术]中文分词-ICTCLAS分词系统
- [搜索引擎技术] 搜索引擎复制网页的算法和重复网页
- [搜索引擎技术]中文分词研究
- [搜索引擎技术]CommunityServer(3) --Provider
- [搜索引擎技术]搜索引擎开发实例
- [搜索引擎技术]垂直搜索引擎更需要注意细节
- [搜索引擎技术] MapReduce 映射与化简算法
- [搜索引擎技术]用Hadoop搭建分布式存储和分布式运算
- [搜索引擎技术]Compass开放源码JAVA搜索引擎框架
- [搜索引擎技术]搜索类相关资料-备份
- [搜索引擎技术]HadoopMapReduce详解
- [搜索引擎技术]Hadoop安装部署
- [搜索引擎技术]Hadoop入门
- [搜索引擎技术]文件索引设计
- [搜索引擎技术]搜索引擎学习资源
- [搜索引擎技术]中文分词-ICTCLAS分词系统
- [搜索引擎技术] 搜索引擎复制网页的算法和重复网页
- [搜索引擎技术]中文分词研究
- [搜索引擎技术]CommunityServer(3) --Provider
- Google广告位置
- Google AD
我也说说自己的看法.我个人认为,很难衡量所谓项目是否大型,
即便很简单的应用在高负载和高增长情况下都是一个挑战.因此,按照我的想法,姑且说是高负载
高并发或者高增长情况下,需要考虑的问题.这些问题,很多是和程序开发无关,而是和整个系统的
架构密切相关的.
- 数据库
一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,
那么,MySQL的效能急剧下降。常用的优化措施是M-S(主-从)方式进行同步复制,将查询和操作和分别在不同的
服务器上进行操作。我推荐的是M-M-Slaves方式,2个主Mysql,多个Slaves,需要注意的是,虽然有2个Master,
但是同时只有1个是Active,我们可以在一定时候切换。之所以用2个M,是保证M不会又成为系统的SPOF。
Slaves可以进一步负载均衡,可以结合LVS,从而将select操作适当的平衡到不同的slaves上。
以上架构可以抗衡到一定量的负载,但是随着用户进一步增加,你的用户表数据超过1千万,这时那个M变成了
SPOF。你不能任意扩充Slaves,否则复制同步的开销将直线上升,怎么办?我的方法是表分区,
从业务层面上进行分区。最简单的,以用户数据为例。根据一定的切分方式,比如id,切分到不同的数据库集群去。
全局数据库用于meta数据的查询。缺点是每次查询,会增加一次,比如你要查一个用户nightsailer,你首先要到
全局数据库群找到nightsailer对应的cluster id,然后再到指定的cluster找到nightsailer的实际数据。
每个cluster可以用m-m方式,或者m-m-slaves方式。
这是一个可以扩展的结构,随着负载的增加,你可以简单的增加新的mysql cluster进去。
需要注意的是:
1、禁用全部auto_increment的字段
2、id需要采用通用的算法集中分配
3、要具有比较好的方法来监控mysql主机的负载和服务的运行状态。如果你有30台以上的mysql数据库在跑就明白我的意思了。
4、不要使用持久性链接(不要用pconnect),相反,使用sqlrelay这种第三方的数据库链接池,或者干脆自己做,因为php4中mysql的
链接池经常出问题。
- 缓存
swap,最好关闭linux的swap。
- 负载均衡/加速
可能上面说缓存的时候,有人第一想的是页面静态化,所谓的静态html,我认为这是常识,不属于要点了。页面的静态化随之带来的是静态服务的
负载均衡和加速。我认为Lighttped+Squid是最好的方式了。
LVS <------->lighttped====>squid(s) ====lighttpd
上面是我经常用的。注意,我没有用apache,除非特定的需求,否则我不部署apache,因为我一般用php-fastcgi配合lighttpd,
性能比apache+mod_php要强很多。
squid的使用可以解决文件的同步等等问题,但是需要注意,你要很好的监控缓存的命中率,尽可能的提高的90%以上。
squid和lighttped也有很多的话题要讨论,这里不赘述。
最新评论:
