搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
网站运维技术与实践
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787121224331
  • 作      者:
    饶琛琳编著
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2014
收藏
编辑推荐
  

  资深一线运维专家诚意之作,总结多年实践经验,深入浅出,内容涵盖运维工作各方各面。
  百度、新浪、人人、音悦台等多名技术经理、高级工程师联名力荐。
  《网站运维技术与实践》深入阐述了运维工作所涉及的监测调优、日志分析、集群规划、自动化部署、存数和数据库等各方面的技术要点,引入了对新开源产品的实践经验,包含了对自动化运维和DevOps等技术形态的大量思考,旨在帮助运维人员"懒惰、急躁和傲慢"(程序员的三大美德)地完成网站运维工作。

展开
作者简介

  饶琛琳,“资深运维”,先后在世纪互联云快线和中华网负责运维工作,热爱CDN并乐于尝试一切可以给互联网用户带来便利和优质体验的技术。
  “DevOps”,现任人人公司网络运营部高级研发工程师。专注自动化运维平台的构建,活跃于Puppet和Logstash开源社区。
  “死理性摩羯座”,比特币大潮中依然坚持要写程序实践证券投资分析原理和时间序列数据预警原理。
  “Larry Wall教徒”,推崇“懒惰、急躁和傲慢”三大程序员美德,并时时运用于运维工作中。同时热衷于推广以perltidy、Moo、AnyEvent和Plack为代表的新一代Perl编程,参与组织了Perl中国用户2013年度大会。

展开
内容介绍

  网站运维工作,一向以内容繁杂、覆盖面广著称。《网站运维技术与实践》选取日常工作涉及的监测调优、日志分析、集群规划、自动化部署、存储和数据库等方面,力图深入阐述各项工作的技术要点及协议原理,并介绍相关开源产品的实践经验。在技术之外,作者也分享了一些关于高效工作及个人成长方面的心得。
  《网站运维技术与实践》适合Linux 系统管理员、中大型网站运维工程师及技术负责人、DevOps 爱好者阅读。同时也适于刚踏上或有兴趣踏上运维岗位的年轻朋友,了解运维职业的工作和发展。

展开
精彩书评

  ★早跟年年(饶琛琳)的认识和沟通一直都是在微博和他的博客上,他是我很尊重的技术思考者和实践者。运维工作有时会被认为是乏味且缺少技术含量的,因缺乏对必要知识的提纲挈领般的引导,很多运维同学难以快速地掌握运维的门道,而只能在忙碌和无奈中徘徊。感谢年年同学辛苦力作,将他广博的运维知识和对技术的深度思考、实践总结出来,深入浅出地带我们走进运维的世界。
  ——王春生 (@平凡的香草) 新浪研发中心技术保障部高级技术经理


  ★中大型网站的运维工作牵扯较多且细节繁杂,需从一定高度来解决应对。弄清问题本质、根据相关技术原理探寻适合的方案、设计开发对应的平台系统和自动化工具,是资深运维人员的必备技能和目标追求。边喝着咖啡边把问题解决了或者由系统工具自动发现问题并修复,是理想的并且努力可以达到的场景。琛琳在自动化运维相关领域实战经验丰富,成绩斐然,本书是他多年工作的心血结晶,其中大量的代码、配置片段和软件方案给想进一步提高的运维工程师提出了一些思想思考或者说指引了前进方向。推荐有志青年仔细学习研究本书,共同把自动化运维推向一个新高度。
  ——张秀岭 (windtear) 人人公司高级技术专家


  ★读完这本书,惊叹于作者陈子(饶琛琳)渊博的知识和无私的分享精神。这本书是浩瀚的互联网技术知识海洋里的一张地图,每一章都像是一块大陆,虽不能从地图上看尽大陆的美丽风光,却能在一张纸上教会我们往哪里走可以到达目的地。更加难能可贵的是,这本书介绍的思想、软件和产品都是全新的,有着非常强的时效性和实用性。
  ——斯文(@小斯chinatopsquid) 百度系统部CDN资深研发工程师


  ★作者在CDN和大中型网站运维方面有着非常丰富的经验。本书成体系地讲解了运维工作中能使用到的方方面面,其中很多技术细节和方案是其他运维类技术书籍中很少提到的,看得出来都是作者多年实际经验的总结,非常值得相关的用户仔细研读。书中CDN 方面的一些应用,更是目前市面上的技术书籍中难能可贵的资料,值得研究和深入了解。从全书整体也可以看出作者出身于专业的 CDN 公司,因为像网站性能测试、日志收集处理、存储系统之类都是专业性非常强的。全书涉及知识点非常丰富,任何一个方面拿出来都可以单独出版成书。
  ——扶凯 音悦台系统运营总监

展开
精彩书摘

  6.2.3.5 属性观察器
  毋庸置疑,这是Chris大牛为Swift语言提供的利器,我们先看个例子。
  1. class People {
  2. var name: String = """"
  3. var lover: People? {
  4. willSet(newLover) { // lover属性值改变前被触发
  5. if(self.lover != nil) {
  6. if(newLover != nil) {
  7. println( ""\(self.name) 移情别恋了 \(newLover!.name)"" )
  8. }
  9. } else {
  10. if(newLover != nil) {
  11. println( ""\(self.name) 找到了糟糠之妻 \(newLover!.name)"" )
  12. }
  13. }
  14. }
  15. didSet( oldLover ) { // lover属性改变后被触发
  16. if (oldLover != nil) {
  17. println( ""\(self.name) 狠心地离开了 \(oldLover!.name)"" )
  18. }
  19. }
  20. }
  21. }
  22. var man = People()
  23. man.name = ""陈世美""
  24.
  25. let lover1 = People()
  26. lover1.name = ""秦香莲""
  27.
  28. let lover2 = People()
  29. lover2.name = ""大宋公主""
  30.
  31. man.lover = lover1
  32. man.lover = lover2
  结果如下:
  1. 陈世美 找到了糟糠之妻 秦香莲
  2. 陈世美 移情别恋了 大宋公主
  3. 陈世美 狠心地离开了 秦香莲
  以上我们用大宋年间凄美的爱情剧《铡美案》中的桥段说明了如何在类中使用属性观察器,注意以下解释。
  属性观察器分为两种:willSet(属性值改变前触发)和didSet(属性值改变后触发),其格式如下。
  willSet( willSetValue){//willSetValue可以用户自己定义 },简化格式为:willSet{ //必须使用newValue作为参数},其中,willSetValue/newValue代表将要被使用的新值。
  didSet(oldSetValue){//oldSetValue可以用户自己定义 },简化格式为:didSet{ //必须使用oldValue作为参数},其中,oldSetValue/oldValue代表已被替换的旧值。
  属性观察器不能用在惰性存储属性上,道理很简单,因为惰性存储属性是根据需要产生的,所以无法确定观察有效期,从Swift语义严谨的角度,是不应被支持的。
  对于可以重写的属性,可以在其子类中增加观察器,但是对于非重写属性则没有必要,因为可以在其赋值访问器中触发观察的行为。
  小伙伴们,务必认真理解这两个观察器,它们的意义非凡,如果你学过Objective-C,则对KVO模式不陌生,所谓KVO,就是Key-Value-Observing的简称。简单地讲,就是你可以为一个值绑定一个回调函数,如果这个值变化,这个回调函数就会被触发。这完全就是上面讲的属性观察器的功能,这也是所谓的“观察者”模式的体现。在我们未来做iOS开发的日子里,经常希望通过一个值的改变,触发某种行为。例如,如果老码的书销量超过10万本,老码就请小伙伴吃碗蛋炒饭,那么我们就可以使用属性观察器来实现。
  属性观察器同样可用于全局变量和本地变量。何为全局变量,指不包含在任何自定义的作用域里的变量,比如不包含在函数、类、枚举、结构体中的变量,反之则是本地变量。切记全局变量永远是省略lazy的惰性计算变量,而本地变量不是。小伙伴很迷糊,怎么又多了个“惰性计算”概念呢?切记这是为全局变量独有的,其意思:既是惰性,又是可计算的。惰性是为了提高全局变量使用的效率,用的时候再初始化,而不是一开始就初始化;可计算是因为全局变量没有初始化函数来赋值,所以必须是可计算的。为了说明后面两条的含义的,老码来实现一下“老码与蛋炒饭”的例子。
  1. import UIKit
  2. var salary: Int = 200 {
  3. willSet{ // 属性观察器,在salary值改变前触发
  4. println( ""老码,发工资了哦!"")
  5. }
  6. didSet{ // 属性观察器,在salary值改变后触发
  7. if ( salary >= (oldValue + 50)){
  8. println( ""老码工资多发了50,小伙伴们,请你们吃蛋炒饭哦!"")
  9. }
  10. }
  11. }
  12.
  13. func showResult(){
  14. salary = 250 // 全局变量的调用必须在自定义作用域,而不能在代码最顶层
  15. }
  16. showResult()
  输出结果如下:
  1. 老码,发工资了哦!
  2. 老码工资多发了50,小伙伴们,请你们吃蛋炒饭哦!
  ……

展开
目录

第1 章 服务器监测
1.1 理解监测的意义.
1.2 通过命令了解系统的性能概况
1.2.1 ifconfig
1.2.2 w
1.2.3 df
1.2.4 ps
1.2.5 vmstat
1.2.6 netstat
1.2.7 iostat
1.3 其他常用工具
1.3.1 sar
1.3.2 dstat
1.3.3 mtr
1.3.4 IPtraf
1.3.5 TcpDump
1.3.6 Wireshark
1.3.7 strace
1.3.8 stap
1.4 SmokePing 网络质量监测
1.4.1 原理
1.4.2 配置说明
1.4.3 报警
1.4.4 WebUI.
1.5 Nagios 分布式监测
1.5.1 架构原理
1.5.2 Plugin 编写
1.5.3 SNMP 网络监控.
1.5.4 Gearman 分布式
1.5.5 OMD 介绍

第2 章 产品访问监测
2.1 关注产品比服务器更重要
2.2 网站监测的明星指标
2.2.1 可用性
2.2.2 响应时间
2.2.3 首屏响应时间
2.3 网页浏览过程简介
2.3.1 解析域名
2.3.2 连接服务器
2.3.3 发送请求
2.3.4 等待响应
2.3.5 传输响应内容
2.3.6 浏览器渲染处理
2.3.7 并发请求
2.4 浏览器网络监测与分析
2.4.1 Firebug .
2.4.2 Chrome 开发人员工具
2.4.3 HttpWatch
2.4.4 rvictl 接口监控IOS 设备
2.4.5 HAR 格式
2.5 第三方监测
2.5.1 基调网络
2.5.2 监控宝
2.6 简单定制JS 监测
2.6.1 页面内嵌JS
2.6.2 Nginx 日志记录和存储
2.6.3 数据展示
2.7 Boomerang

第3 章 数据采集、传输与过滤
3.1 采集点的取舍
3.1.1 服务器数据
3.1.2 访问日志
3.1.3 系统日志Syslog
3.2 收集传输
3.2.1 Rsyslog
3.2.2 message queue
3.2.3 RPC
3.2.4 Gearman
3.3 日志收集系统框架
3.3.1 Flume-ng
3.3.2 logstash

第4 章 数据分析与报警
4.1 时间序列存储
4.1.1 RRDtool(Round-Robin
Database Tool)
4.1.2 Graphite
4.1.3 OpenTSDB
4.2 全文搜索引擎ElasticSearch
4.2.1 简介
4.2.2 安装
4.2.3 集群
4.2.4 基础查询
4.2.5 优化
4.2.6 时间序列统计示例
4.3 数据可视化
4.3.1 RRDtool
4.3.2 Gnuplot
4.3.3 AmCharts
4.3.4 其他绘图库
4.4 报警
4.4.1 SendEmail
4.4.2 WebSocket
4.4.3 手机推送
4.4.4 分级和归并

第5 章 测试评估
5.1 服务器性能测试
5.1.1 IOzone
5.1.2 Netperf
5.1.3 pktgen
5.1.4 sysbench
5.2 应用性能测试
5.2.1 http_load
5.2.2 AB
5.2.3 weighttp
5.3 分布式测试环境
5.3.1 AutoBench
5.3.2 TCPCopy

第6 章 集群架构规划
6.1 IDC 的规划和选择
6.1.1 网站性质决定基础面
6.1.2 IDC 厂商服务质量
6.1.3 BGP 真伪的验证
6.2 CDN 规划
6.2.1 CDN 原理
6.2.2 DNS 原理
6.2.3 DNS 查询结构实现
6.2.4 DNS 调度
6.2.5 其他调度方法概述
6.2.6 动态加速概述
6.3 缓存设计
6.3.1 HTTP Header 对缓存的影响
6.3.2 Squid 的LM-factor 过期算法
6.3.3 squid 的ACL 控制
6.3.4 Squid 的aufs/coss缓存引擎
6.3.5 squidclient 的运用
6.3.6 使用SSD 提高性能
6.4 本地负载均衡
6.4.1 LVS 负载均衡原理
6.4.2 keepalived 与VRRP 高可用原理
6.4.3 Nginx 的upstream
6.4.4 squid 的cache_peer

第7 章 弹性控制和部署
7.1 配置集成的思想
7.1.1 抽象的集群管理
7.1.2 通用模式设计
7.2 操作系统部署KickStart
7.2.1 基本原理
7.2.2 配置安装
7.3 应用部署与配置管理
7.3.1 SSH::Batch
7.3.2 Puppet
7.4 搭建私有软件仓库
7.4.1 使用spec 文件构建RPM 包
7.4.2 命令行打包工具FPM
7.4.3 yum 私有仓库
7.5 随时控制成本
7.5.1 CGroup 配置简介
7.5.2 内存限制
7.5.3 CPU 共享限制
7.5.4 CPU 绑定限制
7.5.5 块设备读写限制
7.5.6 配合TC 完成网络限速
7.6 关于云计算

第8 章 分布式文件系统
8.1 NFS
8.1.1 原理
8.1.2 服务器端配置和优缺点
8.1.3 客户端参数优化
8.1.4 丢包与网络参数优化
8.2 简单易用的FUSE 协议
8.3 MogileFS
8.3.1 GFS 介绍
8.3.2 MogileFS 介绍
8.3.3 MogileFS 内部原理
8.3.4 安装和配置
8.3.5 客户端配置和使用

第9 章 数据库
9.1 MySQL 必知必会
9.1.1 常见SQL
9.1.2 导入导出
9.1.3 简单配置调优
9.2 慢查询分析工具mysqlsla
9.2.1 使用
9.2.2 结果分析
9.3 Percona 工具集
9.3.1 备份恢复工具XtraBackup
9.3.2 在线运维工具箱Toolkit
9.3.3 监控插件集
9.4 监控工具
9.4.1 mytop 和innotop
9.4.2 orzdba
9.5 MySQL 集群
9.5.1 MySQL 复制原理
9.5.2 MHA 原理
9.5.3 MHA 安装使用

第10 章 备份与同步技术
10.1 rsync
10.1.1 原理
10.1.2 常见运用
10.2 inotify 和sersync 工具
10.2.1 inotify 概述和示例
10.2.2 sersync 介绍
10.2.3 sersync 配置用例
10.3 Netcat
10.3.1 文件传输
10.3.2 端口扫描
10.3.3 远程控制
10.4 P2P 传输网络
10.4.1 P2P 协议概述
10.4.2 BitTorrent 概述
10.4.3 murder 部署和运用

第11 章 运维制度化与自管理
11.1 运维制度化
11.1.1 运维为什么要制度化
11.1.2 运维如何制度化
11.1.3 SLA(Service Level Agreement)协议
11.1.4 故障处理的五问法
11.1.5 知识库
11.1.6 流程跟踪的Tracker系统
11.2 自管理
11.2.1 时间管理
11.2.2 思维导图
11.2.3 Git 管理和应用
11.2.4 交流与活动

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证