发表于2024-11-05
√ 微服务旨在化大而复杂为小而简单,用快速交付支撑持续创新
√ 被谷歌等一线IT企业采用,与容器|云计算|持续交付等热点实践密不可分
√ 从架构演进到原理剖析,覆盖开发、测试、部署、运维、组织变化等微服务各方面
√ 代码静态检查、云基础设施构建、 Docker映像构建及部署、持续交付流水线、服务日志全程实战
随着RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务架构逐渐成为系统架构的一个代名词。本书首先从理论出发,介绍了微服务架构的概念、诞生背景、本质特征以及优缺点;然后基于实践,探讨了如何从零开始构建微服务,包括Hello World API、Docker 映像构建与部署、日志聚合、监控告警、持续交付流水线等;最后,在进阶部分讨论了微服务的轻量级通信、消费者驱动的契约测试,并通过一个真实的案例描述了如何使用微服务架构改造遗留系统。全书内容丰富,条理清晰,通俗易懂,是一本理论结合实践的微服务架构的实用书籍。
本书不仅适合架构师、开发人员、测试人员以及运维人员阅读,也适合正在尝试使用微服务架构解耦历史遗留系统的团队或者个人参考,希望本书能在实际工作中对读者有所帮助。
ThoughtWorks的首席咨询师王磊是国内较早倡导和实践微服务的先行者。王磊是开源软件的爱好者和贡献者,社区活动的参与者,《Ruby Gems开发实战》(Practical RubyGems)一书的译者,GDCR西安的组织者。他于2012年加入ThoughtWorks,为国内外诸多客户提供项目交付和咨询服务;在加入ThoughtWorks之前,曾就职过多家知名外企,具有丰富的敏捷项目实战经验。目前致力于微服务架构、高可用的Web应用以及DevOps的研究与实践。
★微服务的出现,为运维又打开了一扇窗。微服务将整个业务系统拆分为相对独立的业务模块,并强调各个微服务都可以独立测试、独立部署、独立运行;微服务之间是一种真正的低耦合,就像汽车的各个零部件,哪个坏了,拆掉换个新的就能组装上;微服务面向产品而不是项目,这样,开发、测试、运维(系统、 DBA等)可形成更稳定的“小”团队,而不是项目周期一到,各个职能解散,各回各家;微服务配以 Docker,更可谓珠联璧合。这些都对运维提出了新的机遇和挑战,熟悉 DevOps、懂 Docker、沟通能力强的综合型运维人员,市场需求和价值更加突显。
纵览全书,说理清楚,用清晰明了的文字,帮助大家理清了很多似是而非的概念;图文并茂,图片既清晰又贴切,语言朴实、平易近人,没有从国外翻译过来的书籍那种生硬、别扭的感觉;理论结合实际,更多融合了作者实施微服务的一线经验。是一本非常用心、又可以实际落地的好书。
——萧田国 开放运维联盟联合主席,高效运维社区创始人
★微服务架构作为 SOA在众多互联网公司中的成功新实践,是广大企业在互联网化进程中必须理解的概念。本书不仅讲述了微服务的基础理论,而且通过实例,深入浅出地涵盖了微服务构建过程中持续集成、构建、部署、持续交付以及日志聚合和运维的过程,体现了作者深厚的理论功底与扎实的实践经验,推荐阅读。
——徐唤春 上海商派软件有限公司技术副总裁
★微服务的概念初看简单清晰、容易理解,但在企业中的实际实施其实是一件很困难的事情。尤其很多计划实施微服务的公司在服务划分、 DevOps和相应的组织结构变化方面毫无经验,付出了实施的代价,却很难真正享受到微服务带来的好处。这本书总结了作者两年多在真实大型软件系统上实施微服务的经验和心得,具体指导了微服务实施在技术方面的实践,非常值得参考。
——杨云 ThoughtWorks首席咨询师,前支付宝资深架构师
★随着应用系统的不断发展演进,单体应用变得越来越大,越来越复杂,导致扩展性差,资源优化难,维护成本高等问题。为了应对这一挑战,一种更加灵活、轻便、松耦合的设计架构——微服务架构,正受到越来越多应用系统开发者的青睐,它的敏捷开发、灵活部署、易扩展等特性,使它成为解决复杂应用的一把利器。微服务架构在具体实践中是怎样实施的?它在实施过程中存在怎样的困难和挑战?作者在本书中通过理论结合实践的方式,深入浅出地阐述了微服务的本质以及如何有效地、持续地交付微服务,并给出了许多有价值的实践指导,全书内容丰富,理论结合实际,推荐阅读。
——薛正华博士 中国计算机学会高级会员,大数据专委会委员
第 1部分 基础篇
第 1章 单块架构及其面临的挑战 . 3
1.1三层应用架构 . 4
1.1.1三层应用架构的发展 4
1.1.2什么是三层架构 . 5
1.1.3三层架构的优势 . 6
1.2单块架构 . 6
1.2.1什么是单块架构 . 6
1.2.2单块架构的优势 . 7
1.2.3单块架构面临的挑战 8
1.3 小结 . 12
第 2章 微服务架构综述 13
2.1什么是微服务架构 . 13
2.1.1多微才够微 . 14
2.1.2 单一职责 . 17
2.1.3 轻量级通信 . 17
2.1.4 独立性 . 19
2.1.5 进程隔离 . 20
2.2 微服务的诞生背景 . 22
2.2.1 互联网行业的快速发展 23
2.2.2 敏捷、精益方法论的深入人心 23
2.2.3 单块架构系统面临的挑战 23
2.2.4 容器虚拟化技术 . 23
2.3 微服务架构与 SOA 24
2.3.1 SOA概述 24
2.3.2 微服务与 SOA 25
2.4 微服务的本质 . 26
2.4.1服务作为组件 . 27
2.4.2 围绕业务组织团队 . 28
2.4.3 关注产品而非项目 . 29
2.4.4 技术多样性 . 31
2.4.5 业务数据独立 . 32
2.4.6 基础设施自动化 . 33
2.4.7 演进式架构 . 33
2.5 微服务不是银弹 . 34
2.5.1 分布式系统的复杂度 35
2.5.2 运维成本 . 36
2.5.3 部署自动化 . 36
2.5.4 DevOps与组织架构 . 37
2.5.5 服务间的依赖测试 . 37
2.5.6 服务间的依赖管理 . 37
2.6 小结 . 38
第 2部分 实践篇
第 3章 构建第一个服务 41
3.1场景分析 . 41
3.2任务拆分 . 43
第 4章 Hello World API 45
4.1 API实现 45
4.1.1 开发语言 ――Ruby . 45
4.1.2 Web框架――Grape . 46
4.1.3 API的具体实现 47
4.2代码测试与静态检查 . 50
4.2.1代码测试 . 50
4.2.2测试覆盖率统计 . 53
4.2.3静态检查 . 54
4.2.4代码复杂度检查 . 57
第 5章 构建 Docker映像 . 61
5.1 定义 Dockerfile . 61
5.2 配置 Docker主机 63
5.3 构建 Docker映像 64
5.4 运行 Docker容器 64
5.5 发布 Docker映像 65
5.6 小结 . 69
第 6章 部署 Docker映像 . 71
6.1基础设施 AWS 71
6.2基础设施自动化 . 73
6.3 部署 Docker映像 80
6.4自动化部署 . 81
6.5 小结 . 84
第 7章 持续交付流水线 85
7.1持续集成环境 . 85
7.2提交阶段 . 87
7.3验证阶段 . 91
7.4构建阶段 . 91
7.5发布阶段 . 94
7.6 小结 . 96
第 8章 日志聚合 97
8.1 日志聚合工具简介 . 97
8.2 Splunk的核心 . 99
8.3 安装 Splunk索引器 100
8.4 安装 Splunk转发器 101
8.5日志查找 . 102
8.6告警设置 . 103
8.7 小结 . 104
第 9章 监控与告警 . 105
9.1 Nagios简介. 105
9.2 Nagios的工作原理 . 107
9.3 Nagios安装. 108
9.4 Nagios的配置 . 109
9.5 监控 products-service 111
9.6 告警 . 113
9.7 小结 . 114
第 10章 功能迭代 115
10.1定义模型 . 116
10.2持久化模型 . 117
10.3定义表现形式 . 119
10.4 实现 API 122
10.5服务描述文件 . 125
10.6 小结 . 127
第 3部分 进阶篇
第 11章 微服务与持续交付 131
11.1持续交付的核心 132
11.2微服务架构与持续交付 133
11.2.1 开发 . 133
11.2.2 测试 . 137
11.2.3持续集成 139
11.2.4 构建 . 139
11.2.5 部署 . 140
11.2.6 运维 . 143
11.3 小结 . 144
第 12章 微服务与轻量级通信机制 . 145
12.1同步通信与异步通信 . 145
12.1.1 概述 . 145
12.1.2同步通信与异步通信的选择 146
12.2远程调用 RPC . 147
12.2.1远程过程调用的核心 147
12.2.2远程方法调用 . 148
12.2.3远程过程调用的弊端 148
12.3 REST . 149
12.3.1 概述 . 149
12.3.2 REST的核心 . 150
12.3.3 REST的优势 . 152
12.3.4 REST的不足 . 152
12.3.5 本节小结 . 155
12.4 HAL . 155
12.4.1 概述 . 155
12.4.2 HAL的核心 156
12.4.3 HAL浏览器 160
12.5消息队列 . 161
12.5.1 核心部分 . 162
12.5.2 访问方式 . 163
12.5.3消息队列的优缺点 . 164
12.6后台任务处理系统 . 165
12.6.1 核心部分 . 165
12.6.2 服务回调 . 166
12.6.3 一个例子 . 167
12.6.4后台任务与微服务 . 169
12.7 小结 . 170
第 13章 微服务与测试 . 171
13.1微服务的结构 . 171
13.2微服务的测试策略 . 173
13.3微服务的单元测试 . 175
13.3.1单元测试综述 . 175
13.3.2单元测试的内容 . 176
13.4微服务的集成测试 . 179
13.4.1集成测试综述 . 179
13.4.2集成测试的实施方法 179
13.4.3集成测试的内容 . 180
13.5基于消费者驱动的契约测试 181
13.5.1集成测试存在的弊端 181
13.5.2什么是契约 . 183
13.5.3什么是契约测试 . 184
13.5.4契约测试的方法 . 185
13.5.5 Pact实现契约测试 187
13.5.6 一个例子 . 192
13.5.7 本节小结 . 205
13.6微服务的组件测试 . 205
13.6.1组件测试概述 . 205
13.6.2组件测试的方法 . 206
13.6.3 本节小结 . 207
13.7微服务的端到端测试 . 208
13.7.1端到端测试概述 . 208
13.7.2端到端测试的内容 . 208
13.7.3 本节小结 . 209
13.8 小结 . 210
第 14章 使用微服务架构改造遗留系统 211
14.1背景与挑战 . 211
14.2改造策略 . 212
14.2.1 昀小修改 . 212
14.2.2 功能剥离 . 212
14.2.3 数据解耦 . 213
14.2.4 数据同步 . 213
14.2.5 迭代替换 . 214
14.3快速开发实践 . 215
14.3.1快速开发模板 . 215
14.3.2代码生成工具 . 217
14.3.3持续集成模板 . 217
14.3.4一键部署工具 . 217
14.4微服务架构下的新系统 . 218
14.5 小结 . 220
前言
一直以来,系统的架构设计就是 IT领域经久不衰的话题之一,是每个系统构建过程中极其关键的一部分,它决定了系统是否能够被正确、有效地构建。系统架构设计描述了在应用系统内部,如何根据业务、技术、组织、灵活性、可扩展性以及可维护性等多种因素,将应用系统划分成不同的部分,并使这些部分之间相互分工、相互协作,从而为用户提供某种特定的价值。多年来,我们一直在技术的浪潮中乘风破浪,扬帆奋进,寻找更优秀的系统架构设计方式来构建系统。
由来
随着 RESTful、云计算、DevOps、持续交付等概念的深入人心,微服务架构逐渐成为系统架构的一个代名词。那么微服务是否是业界期待已久的企业架构解决方案呢?在微服务架构的实施过程中存在着怎样的困难和挑战呢?
在过去两年多的时间里,笔者一直在探索和实践,并助力国外某房地产互联网门户,将其复杂的业务支撑系统逐渐演进为基于微服务架构的系统。
这期间也经历了从微服务的理论认识,到小范围实践、迭代,再到多个基于微服务构建的项目已经成功上线的过程。在感受微服务为开发实践、测试策略、部署、运维等带来改变的同时,也切身体会到使用微服务架构,对系统灵活性、可伸缩性方面的提升,以及对团队应对变化能力的提升。
结构
鉴于此,本书从笔者实践的角度出发,首先阐述了单块架构存在的弊端以及微服务的理论基础。接着通过实践部分,让读者能够体验从零开始搭建第一个微服务的过程,包括代码静态检查、AWS基础设施构建、 Docker映像构建及部署、持续交付流水线、服务的日志聚合以及监控和告警。随后,探讨了笔者在微服务的实践过程中所积累的经验,包括基于 HAL的通信机制、消费者驱动的测试,并通过一个真实的案例,帮助读者更好地理解微服务架构所带来的灵活性、易扩展性和独立性。
全书分成 3部分,共 14章。
第 1部分为基础部分。包括第 1章和第 2章,概述了三层应用架构以及微服务架构。
第 2部分为实践部分。包括第 3章至第 10章,通过一个具体的实例,从头到尾介绍了一个服务从需求到实现,再到构建、部署以及运维的整个过程。
第 3部分为进阶部分。包括第 11章至第 14章,讨论了微服务的持续交付、测试策略、通信机制,并描述了一个使用微服务改造遗留系统的真实案例。
部分和部分之间几乎是相互独立的,没有必然的前后依赖关系,因此,读者可以从任何一个感兴趣的部分开始阅读。但是,每部分中的各章节之间的内容是相互关联的,建议按照章节的顺序阅读。
结合作者本人的工作经验和使用习惯,书中的大部分案例代码均采用 Ruby编写,并且运行在 Mac OS环境上。因此,读者最好对 Ruby语言有一定了解,并且熟悉 Mac OS或者 Linux环境下的基本操作,以便能够更加顺利地阅读本书。
感悟
2014年 10月,我在 InfoQ上发表了一篇题为《使用微服务架构改造遗留系统》的文章,收到了很多朋友的反馈与建议,并有一些朋友和我积极探讨微服务架构的实践与心得。2015年初,基于在项目中积累的经验,我开始在博客上连载《解析微服务架构》系列的文章。机缘巧合,认识了电子工业出版社计算机出版分社的张春雨编辑,并在他的建议下,开始构思如何将自己在微服务实践中积累的经验以书的方式展现出来。但由于工作项目进度一直很紧,直到 2015年 4月,参加完北京 QCon会议后,才开始真正动笔。
当时,自己曾信心满满地认为,应该能够比较顺利地完成这本书,因为大部分内容都比较熟悉,而且平时工作中也有笔记和积累。但当真正动笔之后才发现,理解领悟和用文字表述清楚是截然不同的两件事。有时候看似很容易的知识点,用文字解释清楚却并非易事。有时候工作中天天遵循的实践,总结清楚却需要花些工夫。当然,整个写作的过程,也是自己将微服务的相关知识点以及积累的经验从头到尾梳理的过程。通过编写本书,使得自己对这些知识的认识和理解更加深入和全面,受益匪浅。每次重新回过头来审阅书稿时,总会觉得某些知识点讲述得不够透彻,需要进行补充,或者应该用更好的方式将其展示出来。
微服务作为当下热门的话题之一,其涉及的部分已经不仅仅局限在技术层面,而是关注整个产品或者组织的价值。因此,它不仅涉及技术选择、服务划分、服务注册、服务安全、服务测试、服务运维,也包括微服务下团队组织架构的变化,全功能团队的构建,可靠的持续交付流水线,DevOps文化等。作为一本微服务架构的书,很难做到面面俱到。另外,由于时间仓促以及作者自身水平有限,书中难免有疏漏之处,在此敬请广大读者批评指正。在阅读本书的过程中,如有任何问题,可通过微信号:5109343或邮箱:wldandan@gmail.com与我联系。
微服务架构与实践 下载 mobi pdf epub txt 电子书 格式 2024
微服务架构与实践 下载 mobi epub pdf 电子书此用户未填写评价内容
评分学无止境。
评分啦啦啦啦啦啦啦啦
评分还没读,看上去挺好
评分一闪一闪亮晶晶,满天都是小星星
评分超级棒超级棒超级棒超级棒超级棒超级棒超级棒超级棒超级棒超级棒超级棒超级棒
评分书不错,大家都说好,推荐哦。
评分运维经典指导数据
评分京东自营商品速度就是不一般。。。
微服务架构与实践 mobi epub pdf txt 电子书 格式下载 2024