服务端开发:技术、方法与实用解决方案 pdf下载pdf下载

服务端开发:技术、方法与实用解决方案百度网盘pdf下载

作者:
简介:本篇提供书籍《服务端开发:技术、方法与实用解决方案》百度网盘pdf下载
出版社:博库网旗舰店
出版时间:2023-08
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

基本信息(以实物为准)

  • 商品名称:服务端开发:技术、方法与实用解决方案
  • 作者:郭进
  • 定价:109
  • 出版社:机械工业
  • 书号:9787111732891

其他参考信息(以实物为准)

  • 出版时间:2023-08-01
  • 印刷时间:2023-07-29
  • 版次:1
  • 印次:1
  • 开本:16开
  • 包装:平装
  • 页数:373
  • 字数:527千字

编辑推荐语

(1)作者背景 :作者任职于 互联网科技公司,是服务端开发方面的 专家。曾就职于华为,获得华为“总裁嘉奖令”,杭州市高层次人才。(2)作者经验丰富:作者在服务端开发方面有近10年开发经验,长期致力于构建高效、可靠、可扩展的服务端系统,积累了大量 实践。(3)大厂服务端工作法:本书衍生自作者在大厂内部讲授的系列技术培训课程,曾获得阿里技术讲师课程大赛 ,口碑炸裂。(4)理论与实践结合:既讲解了服务端开发的流程、规范、技术栈等理论内容,又讲解了典型难题的解决方案。(5)解决生产实践难题:50 余个案例、200余幅图,系统阐述高并发、高可用、高性能、缓存、幂等、数据一致性等服务端典型难题的解决方案(6)13位专家力荐:来自蚂蚁、阿里、微软等知名企业和浙大、北大、斯坦福、剑桥等 大学的13位专家强烈 。

内容提要

这是一本从开发流程、技术栈、典型问题解决方案和开发规范等维度全面讲解服务端开发的著作。它衍生自作者在某 互联网科技公司内部讲授的高口碑课程,是作者近10年服务端开发经验的总结,同时融合了业界在服务端开发方面的宝贵项目经验和实践智慧。本书理论与实践结合,摆脱编程语言、框架、中间件及传 程思想的束缚,全景式、体系化地阐述了服务端开发,核心内容包括以下两个部分。 部分:服务端开发的技术和方法首先,介绍了服务端开发的职责、技术栈、核心流程和进阶路径;然后,从需求分析、抽象建模、系统设计、数据设计和非功能性设计5个方面展开,结合案例深入讲解了服务端开发的实操方法和重难点,为读者呈现出服务端开发的全景图,帮助读者快速、体系化地掌握服务端开发的相关知识和方法。第二部分:服务端典型问题的解决方案针对高并发、高性能、高可用、缓存、数据一致性、幂等、 等服务端开发实践中的典型问题,给出了对应的解决方案和开发规范,同时还结合案例深入分析了不同方案的优缺点。此外,还总结了接口设计、日志打印、异常处理、代码编写、代码注释等落地层面的行业案例和规范。

目录

Contents?目  录本书赞誉前 言 部分 技术与方法第1章 走进服务端开发  21.1 服务端开发概述  21.1.1 服务端开发的定义  21.1.2 服务端开发的职责  41.2 服务端开发技术栈  51.2.1 编程语言  51.2.2 开发工具  61.2.3 开发框架  81.2.4 数据库与数据存储  101.2.5 中间件  141.2.6 操作系统  161.2.7 应用部署  191.2.8 运维监控  221.3 服务端开发核心流程  241.3.1 需求分析  241.3.2 抽象建模  261.3.3 系统设计  271.3.4 数据设计  301.3.5 非功能性设计  311.4 服务端开发进阶路径  331.4.1 构建能力模型  331.4.2 专业知识体系化  341.4.3 掌握学习方法  351.4.4 技术与业务同行  361.4.5 树立正确的观念  37第2章 需求分析  392.1 需求分类  392.1.1 产品需求  402.1.2 技术需求  402.2 需求分析的流程  402.2.1 学习领域知识  412.2.2 明确业务目标  422.2.3 明确业务用例  432.2.4 梳理用例场景  442.2.5 构建业务模型  452.2.6 确认业务规则  472.2.7 确认需求  472.3 需求分析的常用方法  482.3.1 功能分析法  482.3.2 数据流分析法  512.3.3 面向对象分析法  552.4 需求分析的重点和难点  562.4.1 统一语言  562.4.2 识别问题  572.4.3 数据分析  582.4.4 细节陷阱  59第3章 抽象建模  613.1 抽象思维  613.1.1 软件世界中的抽象  613.1.2 提升抽象思维的方法  633.2 建模方法  653.2.1 问题空间和解决方案空间  653.2.2 什么是领域模型  663.2.3 为什么要建立领域模型  683.2.4 典型的建模方法  693.2.5 建模应遵循的3个原则  713.3 用例建模法知识储备  733.3.1 建模基础  733.3.2 什么是用例  743.3.3 挖掘用例的5个步骤  753.3.4 绘制用例图的6个要素  783.4 用例建模法的4个实施步骤  803.4.1 提取模型  803.4.2 补充属性  813.4.3 关系抽象  823.4.4 模型验证  843.5 建模小结  85第4章 系统设计  874.1 大话系统设计  874.1.1 战术编程腐蚀系统  874.1.2 系统复杂化的3个特征  884.1.3 系统复杂化的3个诱因  894.1.4 复杂化应对之道  904.2 总体架构  914.2.1 什么是架构  914.2.2 架构推演  924.2.3 设计功能域  944.2.4 设计功能域协作  954.2.5 明确数据边界  964.2.6 架构约束考量  974.2.7 逻辑架构粒度  984.2.8 小结  984.3 内部分层  994.3.1 什么是分层  994.3.2 功能域内部分层  1014.3.3 分层原则  1034.3.4 小结  1054.4 详细设计  1064.4.1 设计内容  1064.4.2 设计原则  1074.4.3 设计模式  1094.4.4 小结  1104.5 一图胜千言  1114.5.1 绘图工具  1114.5.2 “4+1”模型  1124.5.3 C4模型  112第5章 数据设计  1175.1 数据设计概述  1175.1.1 数据设计的步骤  1175.1.2 概念数据模型  1185.1.3 逻辑数据模型  1195.1.4 物理数据模型  1205.2 数据库的分类  1205.2.1 关系型数据库  1215.2.2 NoSQL数据库  1225.2.3 NewSQL数据库  1235.3 常用数据库及其适用场景  1245.3.1 常用的关系型数据库  1245.3.2 常用的NoSQL数据库  1275.3.3 存储选型  1305.4 存储架构演进  1315.4.1 单机模式  1315.4.2 独立主机  1315.4.3 读写分离  1325.4.4 垂直拆分  1325.4.5 水平拆分  1345.4.6 复合存储方案  1365.5 物理数据表设计  1375.5.1 表设计  1375.5.2 字段设计  1395.5.3 索引设计  1405.5.4 语句设计  142第6章 非功能性设计  1456.1 稳定性设计  1456.1.1 什么是稳定性  1456.1.2 容量评估  1476.1.3 压测摸底  1516.1.4 风险识别  1526.1.5 限流方案  1526.1.6 降级方案  1556.1.7 监控告警  1576.2 预案设计  1586.2.1 为什么要做预案  1586.2.2 如何做预案  1596.3 可测性设计  1606.3.1 可操作  1606.3.2 可灰度  1616.3.3 可压测  1626.4 资金安全设计  1626.4.1 资损风险分析  1626.4.2 资损防控三部曲  1636.4.3 一致性  1646.4.4 幂等  1666.4.5 数据核对  1676.4.6 数据监控  1696.4.7 应急止损  1706.5 其他非功能性设计  1706.5.1 兼容性  1716.5.2 异常/补偿  1726.5.3 扩展性  174第二部分 解决方案第7章 高并发问题及解决方案  1767.1 高并发概述  1767.1.1 并发  1767.1.2 CPU密集型与I/O密集型  1777.1.3 高并发  1787.2 资源扩展策略  1797.2.1 垂直扩展  1797.2.2 水平扩展  1807.2.3 负载均衡  1837.3 数据缓存策略  1877.3.1 本地缓存  1877.3.2 分布式缓存  1947.3.3 CDN  1977.3.4 多级缓存  1997.3.5 案例解析  2007.4 流量削峰策略  2027.4.1 消息队列削峰  2027.4.2 客户端削峰  2057.5 服务降级策略  2067.5.1 降级范围  2077.5.2 降级的分类  2077.6 限流策略  2087.7 基本原则  208第8章 缓存的典型问题及解决方案  2108.1 缓存预热  2108.1.1 应用启动预热策略  2108.1.2 任务调度预热策略  2118.1.3 模拟请求预热策略  2158.1.4 小结  2158.2 缓存淘汰  2168.2.1 LRU  2168.2.2 LFU  2178.2.3 ARC  2178.2.4 FIFO  2198.3 缓存 新  2198.3.1 Cache Aside模式  2208.3.2 Read/Write Through模式  2228.3.3 Write Behind Caching模式  2238.3.4 小结  2248.4 缓存雪崩  2248.4.1 缓存常驻策略  2248.4.2 多级缓存策略  2248.4.3 过期时间优化策略  2258.4.4 加锁重建策略  2268.5 缓存穿透  2278.5.1 缓存空值策略  2278.5.2 布隆过滤器策略  2278.5.3 布谷鸟过滤器策略  2318.6 缓存热点  2328.6.1 前置缓存策略  2328.6.2 热点散列策略  233第9章 缓存数据与数据库数据一致性问题及解决方案  2359.1 CAP 理论简介  2359.1.1 CAP定义解读  2359.1.2 三个核心需求不可兼得  2369.2 缓存数据与数据库数据不一致的原因  2389.2.1 操作时序导致数据不一致  2389.2.2 操作失败导致数据不一致  2399.2.3 不可实现的 一致性  2419.3 延时双删  2429.3.1 原理及实施步骤  2429.3.2 如何确定延时  2439.3.3 优点与不足  2449.4 基于binlog异步删除缓存  2449.4.1 MySQL主从同步原理  2449.4.2 感知数据库变   2469.4.3 客户端订阅变   2469.4.4 消息队列订阅变   2479.4.5 删除缓存  2499.5 自动过期加失败补偿  250 0章 分布式系统幂等问题及解决方案  25110.1 幂等概述  25110.1.1 幂等场景举例  25110.1.2 什么是幂等  25210.1.3 为什么需要幂等  25310.1.4 并发与幂等  25410.2 幂等实现四部曲  25510.2.1 副作用分析  25510.2.2 幂等号设计  25510.2.3 幂等数据持久化设计  25810.2.4 幂等处理流程设计  25910.3 典型幂等策略  26110.3.1  索引策略  26110.3.2 悲观锁策略  26310.3.3 分布式锁策略  26410.3.4 其他策略  26610.4 幂等号生成  26610.4.1 客户端与服务端幂等  26610.4.2 服务端系统间幂等  26810.5 幂等注意事项  268 1章  系统关键问题及解决方案  27111.1 主要技术难点  27111.1.1 高并发  27111.1.2 高可用  27311.1.3 一致性  27311.1.4 反作弊  27411.2 电商平台的库存运作全景图  27511.2.1 库存模型  27511.2.2 扣减模式  27611.2.3 扣减执行流程  27611.2.4 库存查询  27711.2.5 核心链路  27711.3 库存架构演进  27911.3.1 独立主机  27911.3.2 分库分表  28011.3.3 热点处理  28011.4 库存单元化  28211.4.1 中心化乌云  28211.4.2 优化困境  28511.4.3 单元封闭  28511.4.4 全局库存与局部库存  28711.4.5 库存回收难点  29011.4.6 全局库存可见性  292 2章 常见性能瓶颈及解决方案  29412.1 软件性能概述  29412.1.1 如何理解软件性能  29412.1.2 软件性能评价指标  29512.1.3 性能瓶颈与分析要素  29612.2 CPU  29612.2.1 线程与进程  29712.2.2 CPU使用率  30012.2.3 平均负载  30212.2.4 CPU使用率与平均负载的差异  30412.2.5 瓶颈表征及解决方案  30512.3 内存  30712.3.1 内存使用率  30812.3.2 特殊内存  3091.3.3 内存回收  31012.3.4 瓶颈表征及解决方案  31112.4 磁盘  31212.4.1 Linux I/O栈  31312.4.2 磁盘交互  31512.4.3 主要性能指标  31812.4.4 瓶颈表征及解决方案  319 3章 高可用问题及解决方案  32113.1 高可用概述  32113.1.1 什么是高可用  32113.1.2 为什么需要高可用  32213.1.3 稳定性与高可用  32313.2 高可用设计原则  32413.2.1 减少潜在风险的数量  32413.2.2 减小故障的影响范围  32413.2.3 缩短故障的影响时间  32513.3 接入层高可用  32613.3.1 负载均衡  32613.3.2 Keepalived  32713.3.3 ECMP  32813.4 业务层高可用  32913.4.1 无状态服务  32913.4.2 集群部署  33113.4.3 依赖处理  33213.4.4 重试机制  33313.4.5 幂等设计  33413.4.6 服务降级  33413.4.7 服务限流  33513.4.8 监控预警  33513.5 数据层高可用  33613.5.1 副本机制  33713.5.2 数据复制模式  33713.5.3 利用Raft算法实现数据复制  33813.5.4 利用Raft算法实现故障转移  34513.5.5 数据分片  34713.5.6 缓存高可用  348 4章 服务端开发实用规范  34914.1 实用API设计规范  34914.1.1 明确边界  34914.1.2 “命令,不要去询问”原则  35114.1.3 单一职责原则  35314.1.4 不要基于实现设计API  35514.1.5 异常模式或错误码模式  35514.1.6 避免使用带有标识的参数  35714.1.7 API如其名  35814.1.8 建立文档  35814.1.9 统一风格  35914.2 实用日志规范  35914.2.1 基本规范  35914.2.2 级别规范  36014.2.3 格式规范  36014.2.4 其他规范  36114.3 实用异常处理规范  36214.3.1 异常处理机制  36214.3.2 常用处理规范  36314.4 实用代码编写规范  36414.4.1 大道至简  36414.4.2 重复有度  36514.4.3 快速失败原则  36714.5 实用注释规范  36914.5.1 复杂的逻辑  37014.5.2 晦涩的算法  37014.5.3 特殊的常量  37114.5.4  规写法  37114.5.5 对外API  37214.5.6 法律文件  373