分布式服务架构:原理、设计与实战
  • 推荐0
  • 收藏1
  • 浏览200

分布式服务架构:原理、设计与实战

李艳鹏 (作者) 

  • 书  号:978-7-121-31578-7
  • 出版日期:2017-08-01
  • 页  数:440
  • 开  本:16(185*235)
  • 出版状态:图书立项
  • 维护人:张国霞

相关图书

Kotlin实战

Dmitry Jemerov Svetlana Isakova (作者) 覃宇 罗丽 李思阳 蒋扬海 (译者)

本书将从语言的基本特性开始,逐渐覆盖其更多的高级特性,尤其注重讲解如何将 Koltin 集成到已有 Java 工程实践及其背后的原理。本书分为两个部分。第一部分...

¥89.00

快学Scala(第2版)

Cay S. Horstmann (作者) 高宇翔 (译者)

Scala是一门主要以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序...

¥108.00

Java EE互联网轻量级框架整合开发— —SSM框架(Spring MVC+Spring+MyBatis)和Redis实现

杨开振 周吉文 梁华辉 谭茂华 (作者)

随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的主导地位,而在Java互联网后台开发中,SSM框架(Spring+Spring MVC+MyB...

¥119.00

揭秘Java虚拟机:JVM设计原理与实现

封亚飞 (作者)

《揭秘Java虚拟机:JVM设计原理与实现》从源码角度解读HotSpot的内部实现机制,本书主要包含三大部分——JVM数据结构设计与实现、执行引擎机制及内存分配...

¥129.00

R 语言数据分析项目精解:理论、方法、实战

罗荣锦 (作者)

本书以互联网电商企业为背景,抽象出工作中常见的数据分析问题,利用 R 语言和统计学列出了详细的解决方案和过程。本书共 9 章,前两章分别为总论和 R 语言入门知...

¥69.00

大型IT系统智能一体化测试

陈绍英 (作者)

本书是一本来自软件自动化测试领域资深专家的作品,主要用于推广智能一体化测试理论及应用。作者在书中深入浅出地讲解了自己在银行领域悟出的智能一体化测试这一全新的理论...

¥69.00
本书全面介绍了分布式服务架构的原理与设计,并结合作者在实施微服务架构过程中的实践经验,总结了保障线上服务健康、可靠的最佳方案,是一本架构级、实战型的重量级著作。
全书以分布式服务架构的设计与实现为主线,由浅入深地介绍了分布式服务架构的方方面面,主要包括理论和实践两部分。理论上,首先介绍了服务架构的背景,以及从服务化架构到微服务架构的演化;然后提出了保证分布式服务系统架构一致性的方案和模式,并介绍了互联网架构评审的方法论;最后给出了一个简要的非功能质量的技术评审提纲。实践上,首先提供了一个互联网项目的性能和容量评估的真实案例,介绍了压测的方案设计和最佳实践,这些技术能够全面保证大规模、高并发项目的一致性、可用性和高并发性;然后讲解了大规模服务的日志系统的原理、设计与实践,包括ELK等框架的特点和使用方式等,并介绍了当前流行的APM系统的设计与实现,主要包括调用链和业务链的跟踪与恢复,涵盖了线上应急和技术攻关的流程及重点,也结合服务化系统线上应急过程进行分析并总结了其中需要用到的Java虚拟机、Linux和定制化脚本等命令,这些命令都是每个开发人员都会用到的解决线上问题的利器;最后,阐述了系统服务的容器化过程,并详细介绍了敏捷开发流程和实现自动化的常用工具等,让读者既能学到架构设计的基础理论,也能结合书中的原理、设计与方法论来解决大规模、高并发互联网项目中的现实问题。
无论是对于软件工程师、测试工程师、运维工程师、软件架构师、技术经理、技术总监,还是对于资深IT人士来说,本书都有很强的借鉴性和参考价值。
分布式、架构、一致性、高性能、高可用、高并发、微服务、容器化、敏捷开发和敏捷上线、Java。
李艳鹏
现任易宝支付产品中心首席架构师,曾在花旗银行、甲骨文、路透社、新浪微博等大型IT互联网公司担任技术负责人和架构师,现专注于大规模、高并发的线上和线下支付平台的应用架构和技术架构的规划与落地,负责交易、支付、渠道、出款、风控、对账等核心支付系统的设计与实现,对移动支付、聚合支付、合规账户、扫码支付、标记化支付等业务场景有产品应用架构规划与落地的实践经验。
杨 彪
现任某创业公司技术总监及合伙人,在互联网和游戏行业有近10年工作经验,曾在酷我音乐盒、人人游戏和掌趣科技等上市公司担任核心研发职位,在互联网公司做过日活跃用户量达千万的项目,也在游戏公司做过多款月流水千万以上的游戏。喜欢研究问题,追求前沿技术,学无止境。
自互联网诞生以来,其简单、敏捷的微服务架构开发理念和实践逐渐成为主流,在逐渐发展的环境下和技术演化的过程中,迅速突破互联网行业并波及软件行业的各个领域。然而,这种突飞猛进的表面下却是龙鱼混杂、泥沙俱下。一方面,很多人在这个信息爆炸的时代应对海量信息的处理能力比较有限;另一方面,也有人致力于将优秀的理论和实践相结合,希望运用所学的高效解决方案应对越来越复杂的问题。不论对与错,人类对技术进步的追求从未停歇。
毋庸置疑,IT行业的发展进入了一个加速分化的时代,将优秀的解决方案推向大众的成本和速度将成为决定企业生存与否的关键因素之一。优秀的互联网企业已装备精良并持续优化,而那些还需不断进步的企业也在互相竞争。尽管在这个信息量巨大的媒体时代,部分优秀的企业在应对分布式服务架构时已经有了更多的认识且技术越来越完善,但也有很多快速发展的企业在变得更优秀这条道路上任重而道远。
很多非常优秀的开发人员和架构师能成为给公司带来长远利益的人,在变革的节点上推波助澜。本书将带你走进分布式服务架构的世界,在这个世界里不停探索和汲取经验。领先于别人是一种要求,这也是很多公司赢得先机的关键所在,无论服务于IT的哪个领域,每个IT人都有理由重视架构这门艺术。希望本书对于软件工程师、测试工程师、软件架构师及深耕于IT行业的老兵来说,都能带给其所期望的内容,并帮助其解决和发现问题,也能帮助其不断探索。
本书以当前流行的分布式服务架构为主线,讲解了分布式服务架构的原理、设计与实践。本书首先介绍了分布式服务架构的背景和演化,然后深入阐述了保证分布式服务的一致性、高性能、高可用性等的设计思想和可实施的方案;然后介绍了大规模、高并发线上服务的应急流程和技术攻关过程,并给出了发现和定位问题的有效、常用工具集;最后详细介绍了分布式服务架构中容器化过程分析、敏捷开发和上线的工具,为从事高并发服务架构的开发人员提供了保障系统健康运行的方法论和最佳实践。
感谢电子工业出版社张国霞编辑的认真态度和辛勤工作,使得本书能够最终顺利完成。
感谢笔者的技术小伙伴贾博岩提供了日志相关的资料和示例,让笔者能够快速完成第4章大数据日志系统方面的内容。
感谢张晓辉、周伟、霍勇同学在编辑阶段参与阅稿,并提出专业的意见。
感谢英语专业的高材生曹燕琴小同学在文字上提供的帮助。
最后,感谢笔者的家人和朋友在本书写作过程中提供的支持和帮助。
李艳鹏


读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
• 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
• 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31578

目录

第1章 分布式微服务架构设计原理 1
1.1 从传统单体架构到服务化架构 2
1.1.1 JEE架构 2
1.1.2 SSH架构 5
1.1.3 服务化架构 8
1.2 从服务化到微服务 11
1.2.1 微服务架构的产生 12
1.2.2 微服务架构与传统单体架构的对比 13
1.2.3 微服务架构与SOA服务化的对比 15
1.3 微服务架构的核心要点和实现原理 16
1.3.1 微服务架构中职能团队的划分 16
1.3.2 微服务的去中心化治理 18
1.3.3 微服务的交互模式 18
1.3.4 微服务的分解和组合模式 22
1.3.5 微服务的容错模式 35
1.3.6 微服务的粒度 41
1.4 Java平台微服务架构的项目组织形式 42
1.4.1 微服务项目的依赖关系 42

1.4.2 微服务项目的层级结构 43
1.4.3 微服务项目的持续发布 45
1.5 服务化管理和治理框架的技术选型 45
1.5.1 RPC 46
1.5.2 服务化 47
1.5.3 微服务 49
1.6 本章小结 52
第2章 彻底解决分布式系统一致性的问题 54
2.1 什么是一致性 55
2.2 一致性问题 56
2.3 解决一致性问题的模式和思路 57
2.3.1 酸碱平衡理论 58
2.3.2 分布式一致性协议 61
2.3.3 保证最终一致性的模式 67
2.4 超时处理模式 75
2.4.1 微服务的交互模式 76
2.4.2 同步与异步的抉择 77
2.4.3 交互模式下超时问题的解决方案 78
2.4.4 超时补偿的原则 85
2.5 迁移开关的设计 87
2.6 本章小结 88
第3章 服务化系统容量评估和性能保障 89
3.1 架构设计与非功能质量 90
3.2 全面的非功能质量需求 91
3.2.1 非功能质量需求的概述 91
3.2.2 非功能质量需求的具体指标 92
3.3 典型的技术评审提纲 97
3.3.1 现状 97
3.3.2 需求 98
3.3.3 方案描述 98
3.3.4 方案对比 99
3.3.5 风险评估 100
3.3.6 工作量评估 100
3.4 性能和容量评估经典案例 100
3.4.1 背景 100
3.4.2 目标数据量级 101
3.4.3 量级评估标准 101
3.4.4 方案 102
3.4.5 小结 107
3.5 性能评估参考标准 108
3.5.1 常用的应用层性能指标参考标准 108
3.5.2 常用的系统层性能指标参考标准 109
3.6 性能测试方案的设计和最佳实践 112
3.6.1 明确压测目标 112
3.6.2 压测场景设计和压测方案制定 114
3.6.3 准备压测环境 121
3.6.4 压测的执行 122
3.6.5 问题修复和系统优化 123
3.7 有用的压测工具 123
3.7.1 ab 123
3.7.2 jmeter 125
3.7.3 mysqlslap 125
3.7.4 sysbench 129
3.7.5 dd 134

3.7.6 LoadRunner 135
3.7.7 hprof 136
3.8 本章小结 138
第4章 大数据日志系统的构建 140
4.1 开源日志框架的原理分析与应用实践 142
4.1.1 JDK Logger 142
4.1.2 Apache Commons Logging 143
4.1.3 Apache Log4j 147
4.1.4 Slf4j 156
4.1.5 Logback 160
4.1.6 Apache Log4j 2 164
4.2 日志系统的优化和最佳实践 168
4.2.1 开发人员的日志意识 168
4.2.2 日志级别的设置 168
4.2.3 日志的数量和大小 169
4.2.4 切割方式 170
4.2.5 日志格式的配置 170
4.2.6 一行日志导致的线上事故 177
4.3 大数据日志系统的原理与设计 178
4.3.1 通用架构和设计 179
4.3.2 日志采集器 180
4.3.3 日志缓冲队列 186
4.3.4 日志解析器 187
4.3.5 日志存储和搜索 187
4.3.6 日志展示系统 188
4.3.7 监控和报警 188
4.3.8 日志系统的容量和性能评估 188
4.4 ELK系统的构建与使用 190
4.4.1 Elasticsearch 191
4.4.2 Logstash 193
4.4.3 Kibana 196
4.5 本章小结 198
第5章 基于调用链的服务治理系统的设计与实现 199
5.1 APM系统简介 200
5.1.1 优秀的开源APM系统 200
5.1.2 国内商业APM产品的介绍 202
5.2 调用链跟踪的原理 203
5.2.1 分布式系统的远程调用过程 204
5.2.2 TraceID 207
5.2.3 SpanID 208
5.2.4 业务链 210
5.3 调用链跟踪系统的设计与实现 211
5.3.1 整体架构 211
5.3.2 TraceID和SpanID在服务间的传递 213
5.3.3 采集器的设计与实现 217
5.3.4 处理器的设计与实现 222
5.3.5 调用链系统的展示 225
5.4 本章小结 226
第6章 Java服务的线上应急和技术攻关 227
6.1 海恩法则和墨菲定律 227
6.2 线上应急的目标、原则和方法 229
6.2.1 应急目标 229
6.2.2 应急原则 229
6.2.3 线上应急的方法和流程 230
6.3 技术攻关的方法论 233
6.4 环境搭建和示例服务启动 236
6.5 高效的服务化治理脚本 240
6.5.1 show-busiest-java-threads 240
6.5.2 find-in-jar 243
6.5.3 grep-in-jar 244
6.5.4 jar-conflict-detect 245
6.5.5 http-spy 247
6.5.6 show-mysql-qps 248
6.5.7 小结 249
6.6 JVM提供的监控命令 249
6.6.1 jad 249
6.6.2 btrace 250
6.6.3 jmap 252
6.6.4 jstat 255
6.6.5 jstack 256
6.6.6 jinfo 258
6.6.7 其他命令 258
6.6.8 小结 259
6.7 重要的Linux基础命令 260
6.7.1 必不可少的基础命令和工具 260
6.7.2 查看活动进程的命令 268
6.7.3 窥探内存的命令 270
6.7.4 针对CPU使用情况的监控命令 272
6.7.5 监控磁盘I/O的命令 273
6.7.6 查看网络信息和网络监控命令 275
6.7.7 Linux系统的高级工具 287
6.7.8 /proc文件系统 288
6.7.9 摘要命令 288
6.7.10 小结 290
6.8 现实中的应急和攻关案例 291
6.8.1 一次OOM事故的分析和定位 291
6.8.2 一次CPU 100%的线上事故排查 301
6.9 本章小结 304
第7章 服务的容器化过程 306
7.1 容器vs虚拟机 306
7.1.1 什么是虚拟机 306
7.1.2 什么是容器 306
7.1.3 容器和虚拟机的区别 307
7.1.4 容器主要解决的问题 307
7.1.5 Docker的优势 310
7.2 Docker实战 311
7.2.1 Docker的架构 311
7.2.2 Docker的安装 315
7.2.3 Docker初体验 319
7.2.4 Docker后台服务的管理 322
7.2.5 Docker的客户端命令 328
7.2.6 Docker Compose编排工具的使用 372
7.3 容器化项目 379
7.3.1 传统的应用部署 380
7.3.2 将应用程序部署在虚拟机上 380
7.3.3 容器化部署应用 381
7.3.4 Docker实现的应用容器化示例 382
7.4 本章小结 384
第8章 敏捷开发2.0的自动化工具 385
8.1 什么是敏捷开发2.0 385
8.1.1 常用的4种开发模式 385
8.1.2 什么是DevOps 390
8.1.3 敏捷开发2.0解决的问题 392
8.2 敏捷开发的自动化流程 393
8.2.1 持续集成 393
8.2.2 持续交付和持续部署 397
8.3 敏捷开发的常用自动化工具 400
8.3.1 分布式版本控制工具Git 400
8.3.2 持续集成和持续交付工具Jenkins 410
8.3.3 基础平台管理工具SaltStack 418
8.3.4 Docker容器化工具 421
8.4 本章小结 422

读者评论