读书笔记——《大规模Web服务开发技术》

原创 2012年03月30日 10:27:59
读书笔记——《大规模Web服务开发技术》


第一章:定位——掌握整体

1、大规模web的概念、规模
2、Hatena的成长经历


第二章-第五章:大规模数据处理方法

第二章:入门——内存和磁盘、web应用和负载
1、大规模数据处理入门
    HatenaBookmark的数据规模
    精辟言论:每天发生的未知问题——在尝试中积累经验。没有“出现某种问题就该怎么做”的理论,只能在反复尝试中积累着经验。
2、大规模数据处理的难点——内存和磁盘
    关于瓶颈,不要推测,要测量,掌握测量工具top,uptime,sar,ps,strace,oprofile
    操作系统调优,就是找出负载原因(瓶颈)并去除之
3、可扩展性要点——cpu负载和i/o负载
    cpu负载的扩展十分简单,可借助于:
        增加相同结构的服务器,通过负载均衡器来分散
        web、应用程序服务器、爬虫
    i/0负载的扩展十分困难,可借助于:
        数据库 
        大规模数据    
4、处理大规模数据的基础知识
        写程序的技巧(能在内存中完成多少,能应对数据量增加的算法和数据结构,数据压缩、信息搜索技术)
        程序开发的底层基础(操作系统缓存,以分布式为前提的RDBMS应用,算法和数据结构)
          

第三章:操作系统的缓存和分布式
处理大规模数据的要点——i/o方面由操作系统负责
1、操作系统的缓存
    内存的速度是磁盘的10的5次方-10的6次方倍
2、以缓存为前提的i/o负载降低策略
3、利用缓存上的局部性进行分布式


第四章:数据库的横向扩展策略——以分布式为基础
1、索引的重点
2、mysql的分布式
    Replication,读写分离
3、横向扩展与Partitioning
    Partitioning的优点:降低负载、增加局部性,提高缓存效果
                  缺点:运维变复杂,故障率上升,经济成本上升
    Partitioning是杀手锏


第十一章-第十五章:web服务的基础设施
第十一章:支持大规模数据处理的服务器/基础设施入门——web服务的后台
1、web服务的基础设施特点和Hatena的特点
   企业软件vs web服务
      web服务基础设施重视的三点:
          1)低成本、高效率(不应当追求100%可靠性)
          2)设计很重要(可扩展性、响应性很重要)
          3)开发速度很重要(要为服务提供灵活的资源)
   云vs.自行构建基础设置

各种技术(后续章节详细介绍,第十二章-第十五章)
2、可扩展性
3、冗余化
4、提高效率
5、网络


第十二章:可扩展性思路——规模扩大和系统扩展
1、层和可扩展性
可扩展性要求:
    许多服务可以在1台服务器上运行
    大规模服务无法在一台服务器上运行
各层的可扩展性:
    应用程序服务器,配置相同、不持有状态,扩展容易
    数据源(数据库、文件服务器等)
        read的分布式比较容易(安装大量内存等)
        write的分布式,难

2、掌握负载进行调优
掌握负载
   使用服务器管理工具
状态的监视
将负载可视化,以便掌握瓶颈、异常等
    (测量负载的指标——平均负载、内存、cpu信息)
理解操作系统运行原理,正确发挥服务器性能
     根据用途调优——面向用户服务器和面向爬虫服务器
负载均衡(lvs)


第十三章:保证冗余性和系统稳定性
不追求100%在线率(但需努力达到),去除单点故障(SPOF)
冗余性:
应用程序服务器:
    增加服务器数量
    负载均衡器实现失败转移和失败恢复
数据库服务器:
    增加数量
    Multi_master(切换时有不同步的风险,忽略该风险,有问题人工恢复)
存储服务器:
    分布式文件系统(MogileFS)

稳定性:
不稳定因素
    负载增大(功能增加、内存泄露、地雷、用户访问模式、数据量增加、外部管理程序增加)
    硬件问题(性能下降,内存、硬盘、网卡故障)
稳定性措施:
    维持适当余量(内存容量、cpu负载使用7成)
    去除不稳定因素(规定sql负载上限,必要时转移,减少内存泄露,异常行为自律,自动DoS判断(mod_dossdetector),自动重启(应用程序服务器和宿主操作系统),自动终止耗时查询(kill掉耗时过长的sql))


第十四章:提高效率——提高硬件资源使用率
1、硬件效率(实现冗余化导致使用率下降)
2、虚拟化技术(提高主机集成度)
虚拟化优缺点及必要性
    Hatena使用Xen
3、自行组装服务器(只组装必须设备,降低成本)
    ssd做slave(性能优秀)
    ssd寿命


第十五章:web服务和网络
网络的分界点
  1Gbps的界限(pc路由器极限)
  500主机的界限(一个子网的极限,子网、arp表极限)
  全球化、CDN
  更高的界限


第十六章:当前构建web服务需要的实践技术
1、作业队列系统——TheSchwarts/Gearman
2、存储的选择——RDBMS或key-value存储
3、缓存选择_Squid/Varnish
4、计算集群——Hadoop












相关文章推荐

大规模Web服务的开发技术(读书笔记)

一.小规模服务和大规模服务的区别: 1.保证可扩展性,负载均衡的必要性: 1). 对于大规模访问量: 用横向扩展(增加服务器数量,廉价) 2).用户请求如何分配:负载均衡 3).数据同步 4).网络延...

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

转载自:http://www.cnblogs.com/teloon/archive/2012/02/02/2335813.html 2012-02-02 15:06 by teloon, 716...

【读书笔记】大规模Web开发技术(第十六章 part2)

特别篇第3课 缓存系统——squid、varnish 当Web 应用程序负载的逐渐增大,系统容量不足时,增加应用程序服务器和数据库服务器当然可以应对,但使用HTTP加速器在HTTP 层增加缓存处理,...

大规模web服务开发技术

前段时间趁空把《大规模web服务开发技术》这本书看完了,今天用一下午时间重新翻了一遍,把其中的要点记了下来,权当复习和备忘。由于自己对数据压缩、全文检索等还算比较熟,所以笔记内容主要涉及前5章内容,后...
  • fbd2011
  • fbd2011
  • 2012年02月04日 14:19
  • 376

大规模Web服务开发技术

大规模Web服务开发技术  [日]伊藤直也, 田中慎司编著 李剑 译 ISBN 978-7-121-13884-3   2011年7月出版 定价:59.00元 16开 356页 内 容...

[大规模Web服务开发技术] 中文目录

web服务

大规模Web服务开发技术

  • 2017年06月14日 16:42
  • 132.09MB
  • 下载

大规模Web服务开发技术 中文版

  • 2016年08月16日 14:17
  • 15.34MB
  • 下载

《高效能程序员的修炼》读书笔记(三)——开发技术和从业习惯

开发: 1.代码是我们的敌人。如果你不得不写代码,你也必须从简洁开始(简单的东西才是最强大的) 2.代码已经告诉我们程序是怎样工作的,注释告诉我的是程序为什么这样工作(前提是代码够简洁) 3.不...
  • tan_bw
  • tan_bw
  • 2014年08月20日 21:01
  • 317

大规模Web服务开发技术.pdf

  • 2017年10月31日 10:46
  • 15.24MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读书笔记——《大规模Web服务开发技术》
举报原因:
原因补充:

(最多只允许输入30个字)