可伸缩架构:云环境下的高可用与风险管理(第2版)

Book description

每一天,企业都面对着如何让关键应用程序可伸缩的问题。当流量和数据需求不断增加时,这些应用程序会变得更加复杂和脆弱,暴露出大量的风险并降低了可用性。随着“软件即服务”概念的流行,可伸缩性变得十分重要。

本书更新了重要的现代化架构范式,例如,微服务和云计算,通过实际案例的指导,让你了解如何在不降低客户期望的条件下,构建可以处理海量请求、数据和需求的系统。工程和运维领域的架构师、经理和总监将学习到如何构建可以更加平稳和可靠地伸缩应用程序的知识,从而满足客户的不同需求。

  • 你会了解可伸缩性如何影响服务的可用性,为什么它很重要,以及如何改进它。
  • 你会深入了解如何保证一个现代化的基于服务的应用程序架构的高可用性,以及降低服务故障的影响。
  • 你会了解什么是“由独立团队负责的服务架构”,它是一种可以让你的开发团队随应用程序一起伸缩的模型。
  • 你会学习到如何理解、测量和降低系统的风险。
  • 你会学习到如何使用云计算来构建高可伸缩的应用程序。

Table of contents

  1. 封面
  2. 扉页
  3. 版权页
  4. O’Reilly Media, Inc.介绍
  5. 推荐语
  6. 献词
  7. 译者序
  8. 目录 (1/2)
  9. 目录 (2/2)
  10. 前言
    1. 本书的读者对象
    2. 编写本书的原因
    3. 如今我们所说的规模
    4. 第 2 版中的新内容
    5. 使用云计算服务
    6. 服务和微服务
    7. 现代化的数字客户体验
    8. 本书导读
    9. 在线资源
    10. 本书使用的约定
    11. O’Reilly 在线学习
    12. 如何联系我们
    13. 致谢
    14. 读者服务
  11. 第Ⅰ部分 原则1. 可用性:维护现代化应用程序的可用性
    1. 第1章 理解、测量和提高可用性
      1. 可用性与可靠性
      2. 什么导致了低可用性
      3. 测量可用性
        1. N个9
        2. 计划中的故障也依然是故障
        3. 通过数字来体现可用性
      4. 提高下降的可用性
        1. 测试并跟踪当前的可用性
        2. 将手动流程自动化
        3. 改进你的系统
        4. 时刻关注不断变化和发展中的应用程序的可用性
      5. 提高应用程序可用性的5个要点 (1/2)
      6. 提高应用程序可用性的5个要点 (2/2)
        1. 要点1:时刻考虑应对故障
        2. 要点2:时刻考虑如何伸缩
        3. 要点3:缓和风险
        4. 要点4:监控可用性
        5. 要点5:以可预期及明确的方式来处理可用性问题
      7. 做好准备
    2. 第2章 两次失误的高度——预留从错误中恢复的空间
      1. 两次失误的高度 (1/2)
      2. 两次失误的高度 (2/2)
        1. 场景1:丢失一个节点
        2. 场景2:升级过程中出现的问题
        3. 场景3:数据中心恢复
        4. 场景4:隐蔽的共享故障类型
        5. 场景5:故障循环
      3. 管理你的应用程序
      4. 航天飞机
  12. 第Ⅱ部分 原则2. 现代化应用程序架构:使用服务
    1. 第3章 使用服务
      1. 单体应用程序与面向服务的应用程序
        1. 所有权收益
        2. 规模收益
      2. 拆分服务
        1. 如何定义服务
      3. 深入了解服务
        1. 指导原则1:特定的业务需求
        2. 指导原则2:清晰和独立的团队所有权
        3. 指导原则3:天然隔离的数据
        4. 指导原则4:共享的能力/数据
        5. 多种原因
      4. 过犹不及
      5. 找到适当的平衡
    2. 第4章 服务和数据
      1. 无状态服务—没有数据的服务
      2. 有状态服务—有数据的服务
      3. 数据分区
      4. 及时处理增长的烦恼
    3. 第5章 处理服务故障
      1. 级联式的服务故障
      2. 如何响应服务故障
        1. 可预测的响应
        2. 可理解的响应
        3. 合理的响应
      3. 如何确定故障
      4. 适当的行为
        1. 优雅降级
        2. 优雅补偿
        3. 尽早失败
        4. 用户导致的问题
      5. 小结
  13. 第Ⅲ部分 原则3. 组织:为现代化应用程序建立可伸缩性的组织
    1. 第6章 服务所有权——STOSA
      1. 由独立团队负责的服务架构
      2. STOSA应用程序和组织的好处
      3. “拥有”一个服务意味着什么
      4. 使用核心团队和服务
      5. 小结
    2. 第7章 服务分级
      1. 应用程序的复杂性
      2. 什么是服务分级
        1. 为服务分配服务级别标签
      3. 示例:在线商店
      4. 使用服务分级
        1. 期望
        2. 响应性
        3. 依赖
      5. 小结
    3. 第8章 服务等级协议
      1. 什么是服务等级协议
      2. 外部SLA与内部SLA的对比
        1. 内部SLA很重要
      3. SLA可以用于问题诊断
      4. SLA的性能检测方法
        1. 限定SLA
        2. 排名SLA
        3. SLA的条件
      5. 究竟应当定义多少内部SLA,以及定义哪些内部SLA
      6. 为什么内部SLA很重要
  14. 第Ⅳ部分 原则4. 风险:现代化应用程序的风险管理
    1. 第9章 如何在设计可伸缩架构时使用风险管理
      1. 识别风险
        1. 消除最严重的风险
        2. 风险缓和
        3. 定期检查
        4. 对风险管理的总结
      2. 可能性与严重性
        1. 十佳列表:低可能性,低严重性
        2. 订单数据库:低可能性,高严重性
        3. 自定义字体:高可能性,低严重性
        4. T恤图片:高可能性,高严重性
      3. 风险模型 (1/2)
      4. 风险模型 (2/2)
        1. 风险模型的作用域
        2. 创建风险模型
        3. 使用风险模型来制订计划
        4. 维护风险模型
      5. 风险缓和
      6. 恢复计划
      7. 容灾计划
      8. 改进我们的风险状况
    2. 第10章 比赛日
      1. 预发布环境和生产环境
        1. 预发布/测试环境
        2. 生产环境
      2. 在生产环境中举行比赛日的担心
      3. 小结
    3. 第11章 构建低风险系统
      1. 技巧1:介绍冗余
        1. 幂等接口
        2. 增加了复杂性的冗余改进
      2. 技巧2:理解独立性
      3. 技巧3:管理安全性
      4. 技巧4:鼓励简单性
      5. 技巧5:自我修复
      6. 技巧6:标准化运维流程
      7. 小结
  15. 第Ⅴ部分 原则5. 云计算:利用云计算
    1. 第12章 使用云计算来设计可伸缩架构
      1. 云计算成熟度的6个级别
        1. 级别1:体验云计算
        2. 级别2:确认云计算
        3. 级别3:使用云计算中的服务器和应用程序
        4. 级别4:使用增值的托管服务
        5. 级别5:使用云特有的服务
        6. 级别6:全面拥抱云计算
        7. 组织与应用程序的成熟度级别对比
      2. 使用云计算时可能犯的错误
        1. 陷阱1:不相信云安全
        2. 陷阱2:直接迁移到云计算
        3. 陷阱3:无服务器的诱惑—太过于依赖炒作
      3. 何时以及如何使用多个云计算平台
        1. 如何定义我们所说的多个云平台
        2. 选择哪个模型?哪种云?
      4. 云计算小结
    2. 第13章 云计算改变的5个行业趋势
      1. 云计算有哪些变化
        1. 变化1:对基于微服务架构的认可
        2. 变化2:更小、更专业的服务
        3. 变化3:更专注于应用程序
        4. 变化4:微型初创公司
        5. 变化5:安全和合规已经成熟
      2. 变化还在继续
    3. 第14章 SaaS和租赁类型
      1. 比较托管主机和不同类型的SaaS
        1. 托管主机
        2. 多租户SaaS
        3. 单租户SaaS
      2. 混合不同类型的SaaS
      3. 常见的SaaS的特点
      4. SaaS与托管主机
      5. 小结
    4. 第15章 在AWS云上分发你的应用程序
      1. AWS的架构
        1. AWS区域
        2. AWS可用区
        3. 数据中心
      2. 总体架构概述
      3. 可用区不是数据中心
      4. 如何通过地理多样性真正做到高可用
        1. 映射多个账户中的可用区
      5. 分发应用程序
    5. 第16章 托管的基础设施
      1. 基于云的服务架构
        1. 原生资源
        2. 基于服务器的托管资源
        3. 无服务器托管资源
      2. 使用托管资源和非托管资源的影响
      3. 小结
    6. 第17章 云资源分配
      1. 基于使用量的资源分配
      2. 固定额度的资源分配
        1. 调整分配
        2. 资源容量的自动分配
        3. 自动分配的问题
        4. 动态分配,动态成本
      3. 资源分配技术的利与弊
    7. 第18章 无服务器计算和函数即服务
      1. 示例1:事件处理
      2. 示例2:手机应用后端
      3. 示例3:物联网数据采集
      4. FaaS的优缺点
      5. 无服务器炒作和FaaS的未来
    8. 第19章 边缘计算
      1. 如今的边缘计算
      2. 为什么我们要关心边缘计算
      3. 与云计算相比,边缘计算应该是什么
        1. 如何决定把什么放在边缘?以无人驾驶汽车为例
      4. 边缘计算的可伸缩与云计算的可伸缩不同
        1. 使用边缘计算和云计算的标准
      5. 边缘计算成功的8个关键点
        1. #1:知道什么时候应该使用边缘计算
        2. #2:不要忽略边缘计算中的DevOps原则
        3. #3:制定一个高度分布式的部署策略
        4. #4:尽可能减少版本控制
        5. #5:减少每个节点的配置项
        6. #6:伸缩也是边缘计算要面对的一个问题,不仅仅是云计算
        7. #7:重视监测和分析
        8. #8:边缘计算不是魔法
      6. 边缘计算小结
    9. 第20章 地理位置对云计算的影响
      1. 云无处不在,只不过影响的层次不同
      2. 替换心态影响你如何接受云计算
      3. 哪个云服务提供商最重要
      4. 重要的技术区别
      5. 数据主权是普遍的
      6. 我的看法
  16. 第Ⅵ部分 总结
    1. 第21章 综述
      1. 原则#1—可用性
      2. 原则#2—架构
      3. 原则#3—组织
      4. 原则#4—风险
      5. 原则#5—云计算
      6. 面向可伸缩架构
      7. 关于作者
      8. 关于封面
  17. 关于作者
  18. 关于封面

Product information

  • Title: 可伸缩架构:云环境下的高可用与风险管理(第2版)
  • Author(s): Lee Atchison
  • Release date: September 2020
  • Publisher(s): Publishing House of Electronics Industry
  • ISBN: 9787121393433

You might also like

book

管理Kubernetes

by Brendan Burns, Craig Tracey

虽然Kubernetes极大地简化了部署容器化应用程序的工作,但每天管理这种编排框架仍然是一项复杂的工作。站点管理人员以及 开发运营工程师可以通过本书学习如何构建、操作、管理及升级 Kubernetes集群,无论这些集群位于云基础架构之上还是在企业内部。 本书的作者Brendan Burns是Kubernetes的联合创始人,而Craig Tracey 是Heptio的现场工程师。本书详细讲解了Kubernetes的内部工作原理,并向读者展示了如何通过维护、调整和改善集群来满足特定需求。你可以通过本书学习如何从设计集群、管理访问控制、监视和报警,以及升级Kubernetes等方面来综合考虑架构的选择,还可以 通过本书深入了解如何充分利用这种编排框架的功能。 “学习如何操作集群,开发人员如何利用Kubernetes部署应用程序,以及如何利用Kubernetes减轻开发人员的负担。 通过掌握Kubernetes API以及配置选项来调整、保护,以及调节集群。 检测集群级别的问题,学习必要的响应步骤并快速恢复集群。 确定如何以及何时添加构建、扩展或以其他方式改进 Kubernetes集群的库、工具和平台。

book

Python机器学习基础教程

by Andreas C. Müller, Sarah Guido

机器学习已成为许多商业应用和研究项目不可或缺的一部分,海量数据使得机器学习的应用范围远超人们想象。本书将向所有对机器学习技术感兴趣的初学者展示,自己动手构建机器学习解决方案并非难事! 书中重点讨论机器学习算法的实践而不是背后的数学,全面涵盖在实践中实现机器学习算法的所有重要内容,帮助读者使用Python和scikit-learn库一步一步构建一个有效的机器学习应用。 机器学习的基本概念及其应用 常用机器学习算法的优缺点 机器学习所处理的数据的表示方法,包括重点关注数据的哪些方面 模型评估和调参的高级方法 管道的概念 处理文本数据的方法,包括文本特有的处理方法 进一步提高机器学习和数据科学技能的建议

book

精通模块化JavaScript

by Nicolás Bevacqua

如果你有使用JavaScript和ECMAScript 6(ES6)的经验,那么这本实用指南会帮助你应用模块化编程编写出易读、易维护并且易扩展的代码。你将会学习JavaScript基本的模块化结构,了解在每一个系统层级(包括客户端和服务器端)编写独立代码的好处。 Nicolás Bevacqua,Practical Modern JavaScript一书的作者,阐述了怎样通过把代码库分解成更小的模块来扩展JavaScript应用。遵循本书所介绍的设计实践,资深开发者、技术团队领导者和软件架构师都可以学会如何创建简单而灵活的模块,同时使内部的复杂性可控。 学习模块化设计的要素,包括你的应用是怎样被使用的以及哪些部分应该放在接口中。 设计模块内部结构来保证你的代码易读且意图清晰。 通过重构代码、控制和消除状态来降低代码复杂性。 利用现代JavaScript的特性编写整洁的代码并降低复杂性。 在前端和后端JavaScript应用开发中使用十二要素应用原则(Twelve-Factor App Principals)。

book

机器学习流水线实战

by Hannes Hapke, Catherine Nelson

正如自动化流水线给汽车制造业带来了质的改变,自动化机器学习流水线也能从根本上加速机器学习领域的发展。机器学习流水线实现了复用、管理和部署机器学习模型的标准化流程。数据科学家和机器学习工程师不仅能摆脱逐个手动构建和训练模型的“作坊式”工作流程,还能产出更可靠、更安全的模型。 本书带领你使用TensorFlow生态圈中的众多工具构建可复现的机器学习流水线,从而将模型部署时间从数天缩短为数分钟,有效地实现机器学习项目产品化。你将学习如下内容。 了解机器学习流水线的构建步骤 使用TensorFlow Extended(TFX)构建机器学习流水线 使用Beam、Airflow、Kubeflow Pipelines编排流水线 数据校验和数据预处理 使用TensorFlow的模型分析工具 检查模型的公平性 使用TensorFlow Serving和TensorFlow Lite部署模型 了解差分隐私、联邦学习和加密机器学习等隐私保护方法