本人此前对此书中的大多数知识有过接触,但都是在不同场合,所以显得知识点很分散、不集中。而这本书刚好可以将这些知识点串起来,形成一个体系,这是我读本书的最大感触;另一方面,作者通过实际项目将大多数知识点都覆盖到了,虽然讲解不是特别深入但是毕竟可以作为参考资料,起到抛砖引玉的作用。现在我就讲自认为串起来的小体系给一个记录:
大规模web服务开发主要从以下三个方面进行分析处理(软件方面):
1. 缓存。缓存的使用在提升性能方面实在是太重要了,掌握缓存的使用也就特别必要。作者主要讲解了什么是操作系统缓存,以缓存为前提的IO负载降低策略,以及利用缓存的局部性原理进行的分布式。同时作者还讲解了如何使用linux自带的sar命令查看系统的CPU负载以及IO负载情况以及内存缓存使用情况。但是缺憾的是作者没有将其他一些中间件缓存机制引入到这部分,而是放到了书的最后,其中主要包括分布式缓存系统memcached以及HTTP缓存服务器nagix等。
2. 以分布式为前提的RDBMS的使用。这部分需要掌握三点:
(1)数据库索引。实现索引的数据结构B+数;复合索引;
(2)数据库的同步与复制。
(3)数据库的分割与横向扩展。
3. 常用技巧、特定领域的数据结构,算法。
常用技巧包括各种压缩算法(求差+可变字节码压缩算法)、在数据库无法处理大规模文本数据是所建立的特殊用途索引(lucene索引等)
特定领域的数据结构算法,比如文本处理领域的trie数,以及模式匹配算法(KMP算法:单模式匹配算法;AC自动机:多模式匹配算法)、动态规划算法下的字符串编辑距离实现(用于字符串相似度计算)、贝叶斯分类器算法(用于自动分类)、去重算法(布隆过滤器);
这些常用技巧和数据结构算法在一点程度上都可以极大地提高web处理性能。
大规模web服务开发主要从以下三个方面进行分析处理(软件方面):
1. 缓存。缓存的使用在提升性能方面实在是太重要了,掌握缓存的使用也就特别必要。作者主要讲解了什么是操作系统缓存,以缓存为前提的IO负载降低策略,以及利用缓存的局部性原理进行的分布式。同时作者还讲解了如何使用linux自带的sar命令查看系统的CPU负载以及IO负载情况以及内存缓存使用情况。但是缺憾的是作者没有将其他一些中间件缓存机制引入到这部分,而是放到了书的最后,其中主要包括分布式缓存系统memcached以及HTTP缓存服务器nagix等。
2. 以分布式为前提的RDBMS的使用。这部分需要掌握三点:
(1)数据库索引。实现索引的数据结构B+数;复合索引;
(2)数据库的同步与复制。
(3)数据库的分割与横向扩展。
3. 常用技巧、特定领域的数据结构,算法。
常用技巧包括各种压缩算法(求差+可变字节码压缩算法)、在数据库无法处理大规模文本数据是所建立的特殊用途索引(lucene索引等)
特定领域的数据结构算法,比如文本处理领域的trie数,以及模式匹配算法(KMP算法:单模式匹配算法;AC自动机:多模式匹配算法)、动态规划算法下的字符串编辑距离实现(用于字符串相似度计算)、贝叶斯分类器算法(用于自动分类)、去重算法(布隆过滤器);
这些常用技巧和数据结构算法在一点程度上都可以极大地提高web处理性能。