| 作者 |
| 张云鹏 |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121393808 |
| 简要 |
| 简介 |
| 内容简介 本书主要讲解如何能够做好互联网架构设计,书中会详尽介绍架构的一些心得心法,不局限于具体的技术。大都是通用的技术意识和思维方法。书中会介绍作者在工作中遇到的实际案例和总结方法,阐述架构设计中的一些方法论。如何能够设计出稳定、高可用的互联网服务。希望通过本书的介绍,让互联网后台的从业者,能够受到些启发,早日成为架构师,设计出更多更稳定更高效的系统架构。 |
| 目录 |
| 第一部分 架构简介 第1章 架构简介 2 1.1 架构的定义 2 1.2 对架构师的要求 4 1.3 互联网架构的挑战 7 1.4 一切尽在控制 8 1.5 小结 10 第二部分 架构设计的技术方法 第2章 切分与扩展 16 2.1 切分 16 2.1.1 数据维度切分 16 2.1.2 逻辑维度切分 23 2.1.3 切分的优点 24 2.2 扩展 25 2.2.1 部署扩展 25 2.2.2 升级扩展 27 2.2.3 set模型 29 2.3 小结 31 第3章 主动发现 33 3.1 日志 34 3.1.1 为什么要记日志 34 3.1.2 日志级别 35 3.1.3 日志类型 36 3.1.4 注意事项 38 3.2 监控 40 3.3 主动发现的监控标准 43 3.3.1 系统层监控 43 3.3.2 用户侧监控 44 3.3.3 应用层监控 45 3.4 其他形式的监控 47 3.5 小结 49 第4章 自动化 52 4.1 自动部署 54 4.1.1 准备 54 4.1.2 实现 55 4.1.3 验证 57 4.2 自动恢复 58 4.2.1 服务恢复 58 4.2.2 流量迁移 60 4.3 提升自动化意识 63 4.4 其他场景 64 4.5 小结 66 第5章 灰度升级 67 5.1 策略 68 5.1.1 按照用户身份执行灰度策略 68 5.1.2 按照号段执行灰度策略 69 5.1.3 按照命令号执行灰度策略 70 5.1.4 按照时间执行灰度策略 71 5.2 灰度部署方式 73 5.2.1 蓝绿部署/发布 73 5.2.2 金丝雀发布 74 5.3 注意事项 75 5.3.1 数据采样 75 5.3.2 及时回滚 76 5.3.3 周期完全 76 5.3.4 测试完全 77 5.3.5 充分验证 78 5.4 案例—系统迁移下线操作 79 5.4.1 验证和比对 79 5.4.2 回滚 80 5.5 小结 81 第6章 过载保护 82 6.1 过载的现象及原因 82 6.1.1 什么是过载 82 6.1.2 过载现象及原因分析 85 6.2 处理方式 86 6.2.1 隔离 87 6.2.2 限流 88 6.2.3 节流和防抖 94 6.2.4 动态调节 95 6.2.5 尽早拒绝 96 6.2.6 调整缓冲区大小 97 6.2.7 减少重试 98 6.2.8 做好容量评估 98 6.3 小结 99 第7章 负载均衡 100 7.1 理论算法 100 7.1.1 基本轮询 100 7.1.2 加权轮询 102 7.1.3 随机访问 103 7.1.4 源地址Hash 104 7.1.5 最小连接数 105 7.1.6 映射分配 106 7.1.7 一致性Hash 107 7.2 动态负载均衡 110 7.3 常用组件 111 7.3.1 DNS 111 7.3.2 Nginx 111 7.3.3 LVS 113 7.3.4 NAT模式 113 7.3.5 DR模式 114 7.3.6 IP Tunneling模式 115 7.3.7 SDK组件 117 7.4 实际案例—Web类业务负载均衡实现 117 7.5 小结 119 第8章 柔性 120 8.1 理论基础 122 8.1.1 CAP定理 122 8.1.2 BASE理论 124 8.2 柔性的实现方法 126 8.2.1 产品角度 127 8.2.2 技术角度 128 8.3 验证方式 131 8.4 小结 132 第三部分 架构思维意识 第9章 稳定为王 137 9.1 控制因素 137 9.1.1 安全 137 9.1.2 变更 141 9.2 保障方法 144 9.2.1 合理拒绝 145 9.2.2 厘清主次关系 145 9.2.3 容量量化 147 9.2.4 预先准备 148 9.2.5 注重监控 149 9.2.6 敬畏之心 150 9.3 应对异常 152 9.3.1 处理事故 152 9.3.2 管理预期 153 9.3.3 复盘总结 153 9.3.4 有效预防 153 9.3.5 谨慎变更 154 9.4 小结 155 第10章 完成比完美重要 156 10.1 先扛住再优化 156 10.1.1 快速抢占市场 157 10.1.2 实现先于性能 157 10.1.3 需求可能修改 158 10.1.4 验证用户行为 158 10.1.5 突发问题案例 158 10.2 最小可用,快速迭代 160 10.3 不要等待 160 10.4 接受不完美 161 10.4.1 分清主次 161 10.4.2 自动化降级 162 10.4.3 代价最低 162 10.5 及时偿还技术债务 163 10.5.1 定期重构 164 10.5.2 及时清理 165 10.5.3 对技术有追求 167 10.6 小结 167 第11章 聚沙成塔 168 11.1 小而简洁 168 11.2 扩展能力 172 11.3 小结 173 第12章 自动化思维 175 12.1 拒绝重复 175 12.1.1 时间成本 175 12.1.2 解决重复 176 12.2 工具系统化 178 12.3 小结 180 第13章 产品思维 181 13.1 体验业务 181 13.2 体验竞品 182 13.3 扬长避短 183 13.4 控制欲望 184 13.5 献计献策 185 13.6 反哺方案 185 13.7 小结 186 第四部分 善用工具 第14章 算法 189 14.1 树状数组 190 14.1.1 问题场景 190 14.1.2 排行榜实现及优化方案 191 14.1.3 树状数组实现排行榜 191 14.1.4 树状数组优化排行榜 195 14.2 多阶Hash算法 196 14.2.1 原理 196 14.2.2 优点 197 14.2.3 缺点 198 14.3 利用线性同余的一致性Hash算法 199 14.3.1 算法内容 199 14.3.2 适用场景 199 14.3.3 实现原理 200 14.4 随机数在互联网业务中的应用 203 14.4.1 随机数的生成方法 203 14.4.2 误用随机数的场景 205 14.4.3 项目中用到随机数的场景 207 14.5 小结 212 第15章 流程和文化 213 15.1 流程 213 15.1.1 需求阶段 214 15.1.2 开发阶段 215 15.1.3 测试阶段 217 15.1.4 发布阶段 219 15.1.5 运营阶段 220 15.1.6 管理机制 221 15.2 文化 222 15.3 小结 223 第五部分 案例剖析 第16章 架构案例剖析 226 16.1 小型案例—统计用户在线时长 226 16.1.1 需求描述 226 16.1.2 项目背景 227 16.1.3 需求分析 228 16.1.4 实现方案 228 16.1.5 案例总结 230 16.2 中型案例—抽奖活动 231 16.2.1 需求描述 231 16.2.2 需求分析 231 16.2.3 实现方案 232 16.2.4 整体架构设计 238 16.2.5 案例总结 240 16.3 大型案例—短网址服务 241 16.3.1 需求描述 241 16.3.2 需求分析 241 16.3.3 需求一:内部使用 243 16.3.4 需求二:大型互联网服务方案 246 16.4 小结 256 |