全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 计算机技术 > 操作系统

发布设计与部署稳定的分布式系统(第2版)/图灵程序设计丛书

  • 定价: ¥89
  • ISBN:9787115529862
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:人民邮电
  • 页数:271页
  • 作者:(美)迈克尔·尼加...
  • 立即节省:
  • 2020-01-01 第1版
  • 2020-01-01 第1次印刷
我要买:
点击放图片

导语

  

内容提要

  

    作者根据自己的亲身经历和某些大型企业的案例,讲述了如何创建高稳定性的软件系统,分析了设计和实现中导致系统出现问题的原因。全书分为四个部分,每部分内容都由一个研究案例引出。第一部分介绍了如何保证系统的生存,即维护系统正常运行。第二部分介绍了为生产环境而设计,从基础层、实例层、互连层和控制层等方面构建系统安全性。第三部分讲述了交付系统,列出系统在部署过程中有可能出现的问题。第四部分引入适用性和混沌工程的概念,讨论了如何解决系统性问题。
    本书适合企业级软件的架构师、设计师和开发人员阅读参考。

目录

第1章  生产环境的生存法则
  1.1  瞄准正确的目标
  1.2  应对不断扩大的挑战范围
  1.3  多花5万美元来节省100万美元
  1.4  让“原力”与决策同在
  1.5  设计务实的架构
  1.6  小结
第一部分  创造稳定性
  第2章  案例研究:让航空公司停飞的代码异常
    2.1  进行变更
    2.2  遭遇停机
    2.3  严重后果
    2.4  事后分析
    2.5  寻找线索
    2.6  证据确凿
    2.7  预防管用吗
  第3章  让系统稳定运行
    3.1  定义稳定性
    3.2  延长系统寿命
    3.3  系统失效方式
    3.4  阻止裂纹蔓延
    3.5  系统失效链
    3.6  小结
  第4章  稳定性的反模式
    4.1  集成点
      4.1.1  套接字协议
      4.1.2  凌晨5点的紧急电话
      4.1.3  HTTP协议
      4.1.4  供应商的API程序库
      4.1.5  应对集成点的问题
      4.1.6  要点回顾
    4.2  同层连累反应
    4.3  层叠失效
    4.4  用户
      4.4.1  网络流量
      4.4.2  难伺候的用户
      4.4.3  不受欢迎的用户
      4.4.4  恶意用户
      4.4.5  要点回顾
    4.5  线程阻塞
      4.5.1  发现阻塞
      4.5.2  程序库
      4.5.3  要点回顾
    4.6  自黑式攻击
      4.6.1  避免自黑式攻击
      4.6.2  要点回顾
    4.7  放大效应
      4.7.1  点对点通信
      4.7.2  共享资源
      4.7.3  要点回顾
    4.8  失衡的系统容量
      4.8.1  通过测试发现系统容量失衡
      4.8.2  要点回顾
    4.9  一窝蜂
    4.10  做出误判的机器
      4.10.1  被放大的停机事故
      4.10.2  控制和防护措施
      4.10.3  要点回顾
    4.11  缓慢的响应
    4.12  无限长的结果集
      4.12.1  黑色星期一
      4.12.2  要点回顾
    4.13  小结
  第5章  稳定性的模式
    5.1  超时
    5.2  断路器
    5.3  舱壁
    5.4  稳态
      5.4.1  数据清除
      5.4.2  日志文件
      5.4.3  内存中的缓存
      5.4.4  要点回顾
    5.5  快速失败
    5.6  任其崩溃并替换
      5.6.1  有限的粒度
      5.6.2  快速替换
      5.6.3  监管
      5.6.4  重新归队
      5.6.5  要点回顾
    5.7  握手
    5.8  考验机
    5.9  中间件解耦
    5.10  卸下负载
    5.11  背压机制
    5.12  调速器
    5.13  小结
第二部分  为生产环境而设计
  第6章  案例研究:屋漏偏逢连夜雨
    6.1  宝宝的第一个感恩节
    6.2  把脉
    6.3  感恩节
    6.4  黑色星期五
    6.5  生命体征
    6.6  进行诊断
    6.7  求助专家
    6.8  如何应对
    6.9  应对奏效吗
    6.10  尾声
  第7章  基础层
    7.1  数据中心和云端的联网
      7.1.1  网卡和名字
      7.1.2  多网络编程
    7.2  物理主机、虚拟机和容器
      7.2.1  物理主机
      7.2.2  数据中心的虚拟机
      7.2.3  数据中心的容器
      7.2.4  云上的虚拟机
      7.2.5  云上的容器
    7.3  小结
  第8章  实例层
    8.1  代码
      8.1.1  构建代码
      8.1.2  不可变、易处理的基础设施
    8.2  配置
      8.2.1  配置文件
      8.2.2  易处理基础设施的配置
    8.3  明晰性
      8.3.1  明晰性设计
      8.3.2  提升明晰性的实现技术
      8.3.3  记录日志
      8.3.4  实例的健康度量指标
      8.3.5  健康状况检查
    8.4  小结
  第9章  互连层
    9.1  不同规模的解决方案
    9.2  使用DNS
      9.2.1  基于DNS的服务发现
      9.2.2  基于DNS的负载均衡
      9.2.3  基于DNS的GSLB
      9.2.4  DNS的可用性
      9.2.5  要点回顾
    9.3  负载均衡
      9.3.1  软件负载均衡
      9.3.2  硬件负载均衡
      9.3.3  健康状况检查
      9.3.4  会话黏性
      9.3.5  按请求类型分隔流量
      9.3.6  要点回顾
    9.4  控制请求数量
      9.4.1  系统为何会失效
      9.4.2  防止灾难
      9.4.3  要点回顾
    9.5  网络路由
    9.6  发现服务
    9.7  迁移虚拟IP地址
    9.8  小结
  第10章  控制层
    10.1  适合的控制层工具
    10.2  机械效益
      10.2.1  属于系统失效,而非人为错误
      10.2.2  运行得太快也有问题
    10.3  平台和生态系统
    10.4  开发环境就是生产环境
    10.5  整个系统的明晰性
      10.5.1  真实用户监控
      10.5.2  经济价值高于技术价值
      10.5.3  碎片化的风险
      10.5.4  日志和统计信息
      10.5.5  要监控什么
    10.6  配置服务
    10.7  环境整备和部署服务
    10.8  命令与控制
      10.8.1  要控制什么
      10.8.2  发送命令
      10.8.3  可编写脚本的界面
      10.8.4  要点回顾
    10.9  平台厂商
    10.10  工具清单
    10.11  小结
  第11章  安全性
    11.1  OWASP十大安全漏洞
      11.1.1  注入
      11.1.2  失效的身份验证和会话管理
      11.1.3  跨站脚本攻击
      11.1.4  失效的访问控制
      11.1.5  安全配置出现失误
      11.1.6  敏感数据泄露
      11.1.7  防范攻击不足
      11.1.8  CSRF
      11.1.9  使用含有已知漏洞的组件
      11.1.10  API保护不足
    11.2  最小特权原则
    11.3  密码的配置
    11.4  安全即持续的过程
    11.5  小结
第三部分  将系统交付
  第12章  案例研究:等待戈多
  第13章  为部署而设计
    13.1  机器与服务
    13.2  计划停机时间的谬误
    13.3  自动化部署
    13.4  持续部署
    13.5  部署中的各个阶段
      13.5.1  关系数据库模式
      13.5.2  无模式数据库
      13.5.3  Web资源
      13.5.4  推出新代码
      13.5.5  清理
    13.6  像行家一样部署
    13.7  小结
  第14章  处理版本问题
    14.1  帮助他人处理版本问题
      14.1.1  不会破坏API的变更
      14.1.2  破坏API的变更
    14.2  处理其他系统的版本问题
    14.3  小结
第四部分  解决系统性问题
  第15章  案例研究:不能承受的巨大顾客流量
    15.1  倒计时后推出新系统
    15.2  以QA测试为目标
    15.3  负载测试
    15.4  被众多因素所害
    15.5  测试仍然有差距
    15.6  善后
  第16章  适应性
    16.1  努力与回报的关系
    16.2  过程和组织
      16.2.1  平台团队
      16.2.2  愉快地发布
      16.2.3  演化最重要的部分是灭绝
      16.2.4  在团队级别实现自治
      16.2.5  谨防高效率
      16.2.6  过程和组织小结
    16.3  系统架构
      16.3.1  演进式架构
      16.3.2  松散的集群
      16.3.3  显式上下文
      16.3.4  创造更多选项
      16.3.5  系统架构小结
    16.4  信息架构
      16.4.1  消息、事件和命令
      16.4.2  让服务自己控制其资源的标识符
      16.4.3  URL的两重性
      16.4.4  拥抱多义性
      16.4.5  避免概念泄露
      16.4.6  信息架构小结
    16.5  小结
  第17章  混沌工程
    17.1  不可能构建第二个Facebook去做测试
    17.2  混沌工程的先驱
    17.3  猴子军团
    17.4  使用自己的混沌猴
      17.4.1  先决条件
      17.4.2  设计实验
      17.4.3  3种混沌注入
      17.4.4  有针对性地注入混沌
      17.4.5  自动和重复
    17.5  从人的方面模拟灾难
    17.6  小结