《大规模 web服务开发》笔记

大规模服务:
    可扩展,负载均衡,保证冗余,低运维成本,开发人数和开发方法的变化
数据处理:
    磁盘—>内存—>缓存—>CPU
障碍:
    持续增长的服务,”无法在内存中计算“(内存要比磁盘快10^5~10^6倍)
 
Linux的页面缓存:
    先把磁盘内容读入内存
    ——>建立页面
    建立好的页面不会释放而是保存下来
    ——>页面缓存
    除了例外情况,页面缓存会透明地作用在所有I/O上
    ——>例外的情况为负责磁盘缓存部分(VFS)
 
VFS(Virtual File System):虚拟文件系统VFS作为一个抽象层,统一各个文件系统不同的函数,使之拥有共同接口,从而使用同样的机制同样的进行缓存,实现页面缓存以提高性能。
 
LRU(Least Recent Used):放弃最老的内容,留下最新的内容(其实就是个队列)。
 
sar工具:①追溯过去的统计数据 ②周期性地查看当前数据(详细内容见sar命令小结,麦库bigdata)
 
CPU扩展比较简单,可以借助于:
    增加相同结构的服务器,通过负载均衡器来进行分散;
    Web、应用程序服务器、爬虫
I/O负载的扩展十分困难,可借助于:
    数据库;
    大规模数据
 
处理大规模数据的重点:
    能在内存中完成多少?
        将磁盘寻道次数降到最低
        可以实现分布式、有效利用局部性
    能应对数据量增加的算法和数据结构
        例如:线性搜索——>二叉树搜索
                    O(n)--->O(log n)
        数据压缩 信息搜索技术
 
处理大规模数据中,程序开发的底层基础
    算法、压缩和搜索
 
写程序在处理大规模数据之前:
    注意操作系统缓存
    以分布式为前提的RDBMS应用
    算法和数据结构
 
以页面缓存为基础的运维的基本规则
    操作系统刚启动时不要将服务器投入生产环境
    性能测试最好在缓存优化后进行

posted @ 2012-03-29 15:16  浮云比翼  阅读(289)  评论(0编辑  收藏  举报