影响业务系统性能的因素很多,计算机系统的各个层面都有涉及:从硬件、网络、操作系统、中间件、存储,直到自身代码质量。所有技术团队都曾为解决性能问题、提高性能峰值绞尽脑汁,从千头万绪到生不如死。本书基于作者10 余年工作经历中踩过的技术神坑,总结整理而成。虽然不能将计算机系统各个层面中影响性能的因素全部介绍完,但还是希望通过讨论业务系统负载层、网络通信层解决性能问题的过程,启发读者,为读者在工作中解决性能问题提供借鉴思路。
本书基于作者十多年经验总结,全面系统地介绍构建高性能服务系统的设计理念和实战经验,覆盖面广、逻辑性强,是每一个追求卓越的互联网系统架构师案头必备的宝典。
银文杰,笔名“说好不能打脸”,博客地址blog.csdn.net/yinwenjie。资深IT屌丝一枚,最大爱好就是敲敲代码,写写博客,研究研究创业热点。CSDN博客作家,CSDN Java EE知识库特约编辑。曾参与电信行业、物流行业多个核心系统建设,对系统顶层设计、技术线路规划、业务系统性能调整有较丰富的经验;也曾有几年头脑发热拍案创业,兼职市场销售、电话客服、公司保安以及清洁大叔。
本书主要的代码示例采用Java 写成,对于一些相对独立章节中的代码,笔者将其整理后形成示例工程。例如实战章节中的日志采集工程、图片服务工程,笔者已经上传到了CSDN的线上资源管理中,可供读者自行下载。本书一共分为四个部分,第一部分对日常开发任务中经常遇到的问题进行了总结,并将这些问题分类,分解出这些问题在整个软件架构中的位置。第二部分、第三部分和读者一起讨论软件架构中的负载层性能设计、业务层性能设计并穿插讲解了一些存储层的设计关注点,其中将详细讨论一些具体的软件/组件应用以及它们的工作原理。第四部分为实践章节,这一部分将基于已经介绍过的知识点和读者一起将它们用于工程实战,对于之前没有涉及的新知识点,也会在其中进行简要说明。
本书大量使用操作系统、Java 知识体系、软件设计中的基础知识,包括但不限于:操作系统线程原理、悲观锁/乐观锁、软件设计模式等。例如本书中至少使用的设计模式包括:命令模式、构建者模式、观察者模式、责任链模式;本书中至少涉及的Java 基础知识包括:有限/无限队列、悲观锁/乐观锁、SPI 规则、concurrent 工具包、状态机;本书还关联至少如下第三方组件:分布式文件系统、Redis、关系型数据库、Keepalived、ZooKeeper。因为篇幅所限,本书并不可能用太多的文字对这些基础知识、第三方组件进行详细介绍,甚至不会专门说明某些技术点。所以本书更适合有一定一线业务系统开发经验的软件工程师阅读,并且在工作过程中使用过Linux 系列操作系统(最好是CentOS),因为本书讲解的知识点、介绍的安装运行方法、讨论的工作原理、描述的操作过程、给出的示例代码环境全部都是基于Linux 操作系统的。如果你想从一名开发人员成长为一名软件架构师,那么本书绝对是你合适的一块“垫脚石”;本书还适合有一定系统运维工作经验的IT 工程师阅读,如果你想完成从传统的IOE系统运维到移动互联网系统领域运维的蜕变,那么本书所介绍的知识也会给你一定的启发。
由于本书内容较丰富,文字讲解部分就占用了相当的篇幅,所以为了尽可能节约篇幅,本书在列举代码段落时往往只保留了主要的代码片段,并以“……”表示代码段落中有省略的片段。另外,如果在代码片段中使用Java 标准注释规范,则将占据多余的空间,所以本书大部分使用了Java 中的单行注释方式对代码目的进行说明。类似成体系的工程示例,如日志采集案例、图片处理案例等,都在相关章节中注明了完整的工程示例下载地址,以便读者查看更详尽的实现方法。最后,本书中多数图片由笔者自行绘制(90%以上),有一部分图片来源于互联网资源,凡是后者笔者都在图片下方进行了明确的说明。
本书成书于笔者对自己博客文章的整理,其中有30%的内容为成书整理时新增。在这个过程中有很多朋友给予笔者帮助,帮助笔者校正博客文章中的错误。特此感谢以下网友(CSDN账号,排名不分先后):amadis_chen、自然的发呆、thisisgpy、ithub_33423142、shadabing、fyc198610、zkq1989、sinat_25444367、Tony_tec、周创、gongfengying、z3133464733、qq_32159081、weixin_33750642、engyong7723131、白糖、a35946729、zzpapzzp、qq_16387501、LX_871225、littlebugu 。
笔者还要感谢家人,他们都以自己的方式在笔者写作期间默默地给予支持。笔者最后还要特别感谢电子工业出版社博文视点编辑付睿老师和参与本书校对整理工作的各位编辑,没有他们的勤劳付出就不会有本书的出版发行。
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
• 下载资源:本书如提供示例代码及资源文件,均可在 下载资源 处下载。
• 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视
点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
• 交流互动:在页面下方 读者评论 处留下您的疑问或观点,与我们和其他读者一同学习
交流。
页面入口:http://www.broadview.com.cn/31509
QPS
worker_processes 最大工作线程 —-》此处应该是 最大工作进程