高性能服务系统构建与实战

高性能服务系统构建与实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 电子工业出版社
2017-07
版次: 1
ISBN: 9787121315091
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 440页
分类: 工程技术
  •   影响业务系统性能的因素很多,计算机系统的各个层面都有涉及:从硬件、网络、操作系统、中间件、存储,直到自身代码质量。所有技术团队都曾为解决性能问题、提高性能峰值绞尽脑汁,从千头万绪到生不如死。《高性能服务系统构建与实战》基于作者10余年工作经历中踩过的技术神坑,总结整理而成。虽然不能将计算机系统各个层面中影响性能的因素全部介绍完,但还是希望通过讨论业务系统负载层、网络通信层解决性能问题的过程,启发读者,为读者在工作中解决性能问题提供借鉴思路。 
      《高性能服务系统构建与实战》适合计算机软件领域中立志在架构师职业路线上长期发展的技术人员阅读,无论读者是有一定工作经验的软件工程师、运维工程师还是在校大学生,都适合阅读《高性能服务系统构建与实战》。《高性能服务系统构建与实战》知识点横跨系统架构领域和软件架构领域,所以为了更好地阅读《高性能服务系统构建与实战》,读者至好曾经使用过Linux操作系统,也至好有Java编程语言的使用能力。 
      银文杰,笔名“说好不能打脸”,博客地址blog.csdn.net/yinwenjie。资深IT屌丝一枚,爱好就是敲敲代码,写写博客,研究研究创业热点。CSDN博客作家,CSDN Java EE知识库特约编辑。曾参与电信行业、物流行业多个核心系统建设,对系统顶层设计、技术线路规划、业务系统性能调整有较丰富的经验;也曾有几年头脑发热拍案创业,兼职市场销售、电话客服、公司保安以及清洁大叔。 第一部分 前序 
    第1 章 那些年一起踩的坑  2 
    1.1 性能问题  2 
    1.2 可用性问题  3 
    1.3 异常处理问题 4 
    1.4 系统间依赖问题  4 
    1.5 系统雪崩问题 7 
    第2 章 业务系统分解  9 
    2.1 负载层技术  10 
    2.2 业务层技术  12 
    2.3 存储层技术  13 
    第二部分 负载层技术与设计 
    第3 章 Nginx 技术  16 
    3.1 Nginx 中的基本技术理论  16 
    3.1.1 一致性Hash 算法 16 
    3.1.2 轮询与加权轮询18 
    3.2 Nginx 的安装和使用 20 
    3.3 Nginx 的重要配置讲解  22 
    3.4 Nginx 的重要设置  25 
    3.4.1 use [ kqueue | rtsig | epoll | select | poll ] 25 
    3.4.2 worker_processes 和worker_connections 26 
    3.4.3 max client 的计算方式29 
    3.5 Nginx 的常用模块  30 
    3.5.1 gzip 压缩模块30 
    3.5.2 rewrite 模块 32 
    3.5.3 健康检查模块 34 
    3.5.4 图片动态缩略模块 37 
    第4 章 LVS 技术  41 
    4.1 网络协议基础知识  41 
    4.1.1 链路层报文 42 
    4.1.2 网络层IP 报文42 
    4.1.3 传输层TCP 报文 44 
    4.2 LVS 的三种工作方式  45 
    4.2.1 LVS-NAT 工作方式45 
    4.2.2 LVS-DR 工作方式47 
    4.2.3 LVS-TUN 工作方式49 
    4.2.4 LVS 调度方式 52 
    4.3 LVS 设置实战  53 
    4.3.1 LVS-NAT 方式设置53 
    4.3.2 LVS-DR 模式设置57 
    4.3.3 ipvsadm 参数汇总 60 
    第5 章 其他负载层技术 63 
    5.1 DNS 和智能DNS  63 
    5.2 CDN 网络  65 
    5.3 Keepalived  67 
    5.4 不得不提的Tengine 68 
    第6 章 负载层性能实战 69 
    6.1 负载层技术实战场景  69 
    6.1.1 负载场景一 69 
    6.1.2 负载场景二 70 
    6.1.3 负载场景三 71 
    6.1.4 负载场景四 72 
    6.2 方案一:使用Nginx 初步解决性能瓶颈问题  72 
    6.3 方案二:使用LVS + Keepalived + Nginx 增加吞吐量和稳定性  74 
    6.4 方案三:使用DNS 和CDN 网络优化整体性能 75 
    第三部分 系统间通信 
    第7 章 系统间通信:网络I/O 模型 78 
    7.1 模型  78 
    7.1.1 信息格式79 
    7.1.2 网络协议80 
    7.1.3 通信方式/框架82 
    7.2 网络I/O 模型:阻塞模式 82 
    7.2.1 通信模型概要 82 
    7.2.2 阻塞模式深入分析 87 
    7.2.3 问题的根源 91 
    7.3 网络I/O 模型:同步非阻塞模式——对阻塞模式的改进 93 
    7.3.1 首次改进97 
    7.3.2 再次改进99 
    7.3.3 依然存在问题  101 
    7.4 网络I/O 模型:多路复用(I/O Multiplex) 101 
    7.4.1 典型的多路复用I/O 实现  102 
    7.4.2 Java 对多路复用I/O 技术的支持  103 
    7.4.3 Java NIO 框架简要设计分析  112 
    7.4.4 Java 实例改进  114 
    7.4.5 多路复用I/O 的优缺点  118 
    7.5 网络I/O 模型:异步I/O 119 
    7.5.1 Java 对AIO 的支持. 120 
    7.5.2 Java 提供的 AIO 支持示例  122 
    7.5.3 还有改进可能  128 
    7.6 第三方组件:Netty 128 
    7.6.1 为什么需要Netty  129 
    7.6.2 Netty 快速上手  130 
    7.6.3 Netty 中的重要概念  135 
    7.7 再次审视Netty 的作用 141 
    7.7.1 对网络I/O 模型的封装  142 
    7.7.2 对数据信息格式的封装  143 
    7.7.3 解决了“技术层”框架中的技术问题  146 
    7.7.4 解决半包问题和粘包问题 148 
    7.8 不得不提的线程池 152 
    7.8.1 为什么要使用线程池  152 
    7.8.2 线程池基本使用  155 
    7.8.3 ThreadPoolExecutor 逻辑结构和工作方式  156 
    7.8.4 线程池的等待队列 159 
    7.8.5 拒绝任务  165 
    7.8.6 ThreadPoolExecutor 中常用属性总结  168 
    第8 章 RPC 与系统间调用  170 
    8.1 RPC 技术原理  170 
    8.1.1 什么是RPC 170 
    8.1.2 RPC 要素  171 
    8.1.3 更泛化的RPC 定义  173 
    8.1.4 典型的RPC 框架介绍  174 
    8.1.5 RPC 框架的性能依据  175 
    8.2 RPC 实践:Apache Thrift 基本使用 176 
    8.2.1 IDL 格式概要 177 
    8.2.2 简单的Apache Thrift 代码 181 
    8.3 RPC 实践:Apache Thrift 深入分析 185 
    8.3.1 Apache Thrift 与消息格式  185 
    8.3.2 Apache Thrift 与通信模型  190 
    8.3.3 Apache Thrift 与线程池  193 
    8.4 RPC 实践:解决异常问题 193 
    8.4.1 分布式业务的异常解决思路. 195 
    8.4.2 事务补偿的简单实现  201 
    8.5 SOA 和服务治理  224 
    8.5.1 SOA 概述 225 
    8.5.2 ESB 概述  227 
    8.5.3 常见的ESB 产品 229 
    8.5.4 服务治理框架  231 
    第9 章 系统间通信:消息队列技术 237 
    9.1 消息队列原理  237 
    9.1.1 消息  237 
    9.1.2 服务结构  238 
    9.2 消息协议  238 
    9.2.1 XMPP 协议 239 
    9.2.2 Stomp 协议  241 
    9.2.3 MQTT 协议 244 
    9.2.4 AMQP 协议 248 
    9.2.5 不得不提的JMS 规范  251 
    9.3 MQ 实践:ActiveMQ 基本概念和使用  253 
    9.3.1 ActiveMQ 的简易安装过程  253 
    9.3.2 ActiveMQ 的其他命令参数  255 
    9.3.3 在ActiveMQ 中传递Stomp 消息  256 
    9.3.4 ActiveMQ 中的Queue 和Topics 258 
    9.3.5 JMS 和协议间转换 260 
    9.3.6 持久化消息和非持久化消息. 266 
    9.3.7 持续订阅和非持续订阅  267 
    9.4 MQ 实践:ActiveMQ 性能优化 267 
    9.4.1 ActiveMQ 性能优化思路 267 
    9.4.2 ActiveMQ 中的网络配置 268 
    9.4.3 ActiveMQ 处理规则和优化  273 
    9.4.4 ActiveMQ 的持久消息存储方案 285 
    9.5 MQ 实践:ActiveMQ 集群方案 299 
    9.5.1 ActiveMQ 高性能方案 300 
    9.5.2 ActiveMQ 高可用方案 311 
    9.6 其他MQ技术:Apache Kafka  321 
    9.6.1 Kafka 设计概要 321 
    9.6.2 Kafka 集群安装:配置过程  333 
    9.6.3 Kafka 常用命令 336 
    第四部分 场景实战 
    第10 章 场景实战:其他储备知识  340 
    10.1 数据存储  340 
    10.1.1 块存储 341 
    10.1.2 共享存储/共享文件存储  343 
    10.1.3 对象存储系统 344 
    10.2 磁盘阵列系统 345 
    10.2.1 RAID 0 346 
    10.2.2 RAID 1 347 
    10.2.3 RAID 10 和RAID 01  348 
    10.2.4 RAID 5 349 
    10.3 NoSQL 技术 351 
    第11 章 场景实战:Kafka 与日志采集  355 
    11.1 Kafka 应用场景:场景说明  355 
    11.2 Kafka 应用场景一:侵入式方案 357 
    11.2.1 设计重点  358 
    11.2.2 编码过程:生产者和业务系统集成  361 
    11.2.3 是否使用Spring Integration-Kafka  366 
    11.2.4 编码过程:消费者端  367 
    11.3 Kafka 应用场景二:调整侵入式方案  371 
    11.3.1 方案一的问题所在  371 
    11.3.2 方案二的解决思路  371 
    11.3.3 方案二的主要代码示例 377 
    11.3.4 其他设计思考 380 
    11.3.5 百度站长统计工具  382 
    11.4 Kafka 应用场景三:非侵入式方案  383 
    11.4.1 Apache Flume 介绍  383 
    11.4.2 设计方案  384 
    11.4.3 配置过程概要 386 
    11.4.4 方案三细节说明. 388 
    第12 章 场景实战:图片服务 392 
    12.1 需求场景  392 
    12.2 概要设计阶段 393 
    12.2.1 分布式文件系统选型  394 
    12.2.2 缓存系统选型 395 
    12.2.3 路由层选型  397 
    12.2.4 架构设计细化 400 
    12.2.5 其他技术选型 401 
    12.3 关键技术点考量  403 
    12.3.1 责任链模式  403 
    12.3.2 Redis 中的数据结构选择  404 
    12.3.3 使用Spring Boot  406 
    12.3.4 其他技术特性 408 
    12.4 详细设计阶段 412 
    12.4.1 位图基本知识 412 
    12.4.2 Nginx 中的Proxy Cache 配置 418 
    12.4.3 责任链进行图片处理  420 
    12.4.4 Redis 缓存操作  423
  • 内容简介:
      影响业务系统性能的因素很多,计算机系统的各个层面都有涉及:从硬件、网络、操作系统、中间件、存储,直到自身代码质量。所有技术团队都曾为解决性能问题、提高性能峰值绞尽脑汁,从千头万绪到生不如死。《高性能服务系统构建与实战》基于作者10余年工作经历中踩过的技术神坑,总结整理而成。虽然不能将计算机系统各个层面中影响性能的因素全部介绍完,但还是希望通过讨论业务系统负载层、网络通信层解决性能问题的过程,启发读者,为读者在工作中解决性能问题提供借鉴思路。 
      《高性能服务系统构建与实战》适合计算机软件领域中立志在架构师职业路线上长期发展的技术人员阅读,无论读者是有一定工作经验的软件工程师、运维工程师还是在校大学生,都适合阅读《高性能服务系统构建与实战》。《高性能服务系统构建与实战》知识点横跨系统架构领域和软件架构领域,所以为了更好地阅读《高性能服务系统构建与实战》,读者至好曾经使用过Linux操作系统,也至好有Java编程语言的使用能力。 
  • 作者简介:
      银文杰,笔名“说好不能打脸”,博客地址blog.csdn.net/yinwenjie。资深IT屌丝一枚,爱好就是敲敲代码,写写博客,研究研究创业热点。CSDN博客作家,CSDN Java EE知识库特约编辑。曾参与电信行业、物流行业多个核心系统建设,对系统顶层设计、技术线路规划、业务系统性能调整有较丰富的经验;也曾有几年头脑发热拍案创业,兼职市场销售、电话客服、公司保安以及清洁大叔。
  • 目录:
    第一部分 前序 
    第1 章 那些年一起踩的坑  2 
    1.1 性能问题  2 
    1.2 可用性问题  3 
    1.3 异常处理问题 4 
    1.4 系统间依赖问题  4 
    1.5 系统雪崩问题 7 
    第2 章 业务系统分解  9 
    2.1 负载层技术  10 
    2.2 业务层技术  12 
    2.3 存储层技术  13 
    第二部分 负载层技术与设计 
    第3 章 Nginx 技术  16 
    3.1 Nginx 中的基本技术理论  16 
    3.1.1 一致性Hash 算法 16 
    3.1.2 轮询与加权轮询18 
    3.2 Nginx 的安装和使用 20 
    3.3 Nginx 的重要配置讲解  22 
    3.4 Nginx 的重要设置  25 
    3.4.1 use [ kqueue | rtsig | epoll | select | poll ] 25 
    3.4.2 worker_processes 和worker_connections 26 
    3.4.3 max client 的计算方式29 
    3.5 Nginx 的常用模块  30 
    3.5.1 gzip 压缩模块30 
    3.5.2 rewrite 模块 32 
    3.5.3 健康检查模块 34 
    3.5.4 图片动态缩略模块 37 
    第4 章 LVS 技术  41 
    4.1 网络协议基础知识  41 
    4.1.1 链路层报文 42 
    4.1.2 网络层IP 报文42 
    4.1.3 传输层TCP 报文 44 
    4.2 LVS 的三种工作方式  45 
    4.2.1 LVS-NAT 工作方式45 
    4.2.2 LVS-DR 工作方式47 
    4.2.3 LVS-TUN 工作方式49 
    4.2.4 LVS 调度方式 52 
    4.3 LVS 设置实战  53 
    4.3.1 LVS-NAT 方式设置53 
    4.3.2 LVS-DR 模式设置57 
    4.3.3 ipvsadm 参数汇总 60 
    第5 章 其他负载层技术 63 
    5.1 DNS 和智能DNS  63 
    5.2 CDN 网络  65 
    5.3 Keepalived  67 
    5.4 不得不提的Tengine 68 
    第6 章 负载层性能实战 69 
    6.1 负载层技术实战场景  69 
    6.1.1 负载场景一 69 
    6.1.2 负载场景二 70 
    6.1.3 负载场景三 71 
    6.1.4 负载场景四 72 
    6.2 方案一:使用Nginx 初步解决性能瓶颈问题  72 
    6.3 方案二:使用LVS + Keepalived + Nginx 增加吞吐量和稳定性  74 
    6.4 方案三:使用DNS 和CDN 网络优化整体性能 75 
    第三部分 系统间通信 
    第7 章 系统间通信:网络I/O 模型 78 
    7.1 模型  78 
    7.1.1 信息格式79 
    7.1.2 网络协议80 
    7.1.3 通信方式/框架82 
    7.2 网络I/O 模型:阻塞模式 82 
    7.2.1 通信模型概要 82 
    7.2.2 阻塞模式深入分析 87 
    7.2.3 问题的根源 91 
    7.3 网络I/O 模型:同步非阻塞模式——对阻塞模式的改进 93 
    7.3.1 首次改进97 
    7.3.2 再次改进99 
    7.3.3 依然存在问题  101 
    7.4 网络I/O 模型:多路复用(I/O Multiplex) 101 
    7.4.1 典型的多路复用I/O 实现  102 
    7.4.2 Java 对多路复用I/O 技术的支持  103 
    7.4.3 Java NIO 框架简要设计分析  112 
    7.4.4 Java 实例改进  114 
    7.4.5 多路复用I/O 的优缺点  118 
    7.5 网络I/O 模型:异步I/O 119 
    7.5.1 Java 对AIO 的支持. 120 
    7.5.2 Java 提供的 AIO 支持示例  122 
    7.5.3 还有改进可能  128 
    7.6 第三方组件:Netty 128 
    7.6.1 为什么需要Netty  129 
    7.6.2 Netty 快速上手  130 
    7.6.3 Netty 中的重要概念  135 
    7.7 再次审视Netty 的作用 141 
    7.7.1 对网络I/O 模型的封装  142 
    7.7.2 对数据信息格式的封装  143 
    7.7.3 解决了“技术层”框架中的技术问题  146 
    7.7.4 解决半包问题和粘包问题 148 
    7.8 不得不提的线程池 152 
    7.8.1 为什么要使用线程池  152 
    7.8.2 线程池基本使用  155 
    7.8.3 ThreadPoolExecutor 逻辑结构和工作方式  156 
    7.8.4 线程池的等待队列 159 
    7.8.5 拒绝任务  165 
    7.8.6 ThreadPoolExecutor 中常用属性总结  168 
    第8 章 RPC 与系统间调用  170 
    8.1 RPC 技术原理  170 
    8.1.1 什么是RPC 170 
    8.1.2 RPC 要素  171 
    8.1.3 更泛化的RPC 定义  173 
    8.1.4 典型的RPC 框架介绍  174 
    8.1.5 RPC 框架的性能依据  175 
    8.2 RPC 实践:Apache Thrift 基本使用 176 
    8.2.1 IDL 格式概要 177 
    8.2.2 简单的Apache Thrift 代码 181 
    8.3 RPC 实践:Apache Thrift 深入分析 185 
    8.3.1 Apache Thrift 与消息格式  185 
    8.3.2 Apache Thrift 与通信模型  190 
    8.3.3 Apache Thrift 与线程池  193 
    8.4 RPC 实践:解决异常问题 193 
    8.4.1 分布式业务的异常解决思路. 195 
    8.4.2 事务补偿的简单实现  201 
    8.5 SOA 和服务治理  224 
    8.5.1 SOA 概述 225 
    8.5.2 ESB 概述  227 
    8.5.3 常见的ESB 产品 229 
    8.5.4 服务治理框架  231 
    第9 章 系统间通信:消息队列技术 237 
    9.1 消息队列原理  237 
    9.1.1 消息  237 
    9.1.2 服务结构  238 
    9.2 消息协议  238 
    9.2.1 XMPP 协议 239 
    9.2.2 Stomp 协议  241 
    9.2.3 MQTT 协议 244 
    9.2.4 AMQP 协议 248 
    9.2.5 不得不提的JMS 规范  251 
    9.3 MQ 实践:ActiveMQ 基本概念和使用  253 
    9.3.1 ActiveMQ 的简易安装过程  253 
    9.3.2 ActiveMQ 的其他命令参数  255 
    9.3.3 在ActiveMQ 中传递Stomp 消息  256 
    9.3.4 ActiveMQ 中的Queue 和Topics 258 
    9.3.5 JMS 和协议间转换 260 
    9.3.6 持久化消息和非持久化消息. 266 
    9.3.7 持续订阅和非持续订阅  267 
    9.4 MQ 实践:ActiveMQ 性能优化 267 
    9.4.1 ActiveMQ 性能优化思路 267 
    9.4.2 ActiveMQ 中的网络配置 268 
    9.4.3 ActiveMQ 处理规则和优化  273 
    9.4.4 ActiveMQ 的持久消息存储方案 285 
    9.5 MQ 实践:ActiveMQ 集群方案 299 
    9.5.1 ActiveMQ 高性能方案 300 
    9.5.2 ActiveMQ 高可用方案 311 
    9.6 其他MQ技术:Apache Kafka  321 
    9.6.1 Kafka 设计概要 321 
    9.6.2 Kafka 集群安装:配置过程  333 
    9.6.3 Kafka 常用命令 336 
    第四部分 场景实战 
    第10 章 场景实战:其他储备知识  340 
    10.1 数据存储  340 
    10.1.1 块存储 341 
    10.1.2 共享存储/共享文件存储  343 
    10.1.3 对象存储系统 344 
    10.2 磁盘阵列系统 345 
    10.2.1 RAID 0 346 
    10.2.2 RAID 1 347 
    10.2.3 RAID 10 和RAID 01  348 
    10.2.4 RAID 5 349 
    10.3 NoSQL 技术 351 
    第11 章 场景实战:Kafka 与日志采集  355 
    11.1 Kafka 应用场景:场景说明  355 
    11.2 Kafka 应用场景一:侵入式方案 357 
    11.2.1 设计重点  358 
    11.2.2 编码过程:生产者和业务系统集成  361 
    11.2.3 是否使用Spring Integration-Kafka  366 
    11.2.4 编码过程:消费者端  367 
    11.3 Kafka 应用场景二:调整侵入式方案  371 
    11.3.1 方案一的问题所在  371 
    11.3.2 方案二的解决思路  371 
    11.3.3 方案二的主要代码示例 377 
    11.3.4 其他设计思考 380 
    11.3.5 百度站长统计工具  382 
    11.4 Kafka 应用场景三:非侵入式方案  383 
    11.4.1 Apache Flume 介绍  383 
    11.4.2 设计方案  384 
    11.4.3 配置过程概要 386 
    11.4.4 方案三细节说明. 388 
    第12 章 场景实战:图片服务 392 
    12.1 需求场景  392 
    12.2 概要设计阶段 393 
    12.2.1 分布式文件系统选型  394 
    12.2.2 缓存系统选型 395 
    12.2.3 路由层选型  397 
    12.2.4 架构设计细化 400 
    12.2.5 其他技术选型 401 
    12.3 关键技术点考量  403 
    12.3.1 责任链模式  403 
    12.3.2 Redis 中的数据结构选择  404 
    12.3.3 使用Spring Boot  406 
    12.3.4 其他技术特性 408 
    12.4 详细设计阶段 412 
    12.4.1 位图基本知识 412 
    12.4.2 Nginx 中的Proxy Cache 配置 418 
    12.4.3 责任链进行图片处理  420 
    12.4.4 Redis 缓存操作  423
查看详情
好书推荐 / 更多
高性能服务系统构建与实战
无尽绿(增订本)
宋乐天
高性能服务系统构建与实战
乌托邦年代:1968-1969,纽约—巴黎—布拉格—纽约
[法]让-克劳德·卡里耶尔 著;胡纾 译
高性能服务系统构建与实战
纸上金石:小品善拓过眼录(套装上下册)
仲威 著
高性能服务系统构建与实战
德国:一个国家的记忆
[英]尼尔·麦格雷戈 著;博望 译
高性能服务系统构建与实战
索恩丛书·日本人的画像
李长声 著
高性能服务系统构建与实战
敢问路在何方:我的30年西游路
杨洁 著
高性能服务系统构建与实战
现实不似你所见:量子引力之旅
[意]卡洛·罗韦利 著
高性能服务系统构建与实战
新民说·帕哈萨帕之歌:与印第安长者的旅行
[美]肯特·纳尔本 著;潘敏 译
高性能服务系统构建与实战
历史三调:作为事件、经历和神话的义和团(典藏版)
柯文 著
高性能服务系统构建与实战
王后的秘密日记:玛丽·安托瓦内特
[法]邦雅曼·拉孔布 著;安康、陈沁 译
高性能服务系统构建与实战
不识字的人
[匈]雅歌塔·克里斯多夫(Agota Kristof) 著;张荪婧 译
高性能服务系统构建与实战
本店招牌菜(新版)
[美]斯坦利˙艾林 著;邢泊静 译;孙蓓雯