更多书籍点击进入>> CiCi岛
电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍
本书以幽默风趣的语言生动地讲述了微服务,将微服务相关的理论知识、技术实现和项目实践一网打尽。 解密微服务Spring Boot Spring Cloud 技术实践。
本书以幽默风趣的语言生动地讲述了微服务,将微服务相关的理论知识、技术实现和项目实践一网打尽。全书共分为三大部分:部分为“微服务解惑篇”,让读者对微服务有一个清晰的认识,消除对微服务的种种疑惑,同时对用户十分关注的如何拆分、如何使用等问题做了很全面的讲解;第二部分为“技术实现篇”,通过对当前世界为流行的微服务框架Spring Boot Spring Cloud的常用组件的详细解读以及其他相关技术、工具的介绍,来帮助读者了解整体架构及其中各个组件的原理,结合代码帮助读者快速构建项目,搭建一个比较完整的微服务框架;第三部分为“项目实战篇”,通过案例来展示不同业务系统在微服务使用过程中如何梳理业务、如何拆分、如何使用微服务重构等。
纪晓峰,现任某公司架构师,曾经在AC担任微服务领域的咨询师,长期供职于HP,具有丰富的架构设计和开发经验,先后参与多个微服务项目。网名“叫我哲学家”,喜欢看书,钻研技术,领悟其中原理,习惯于独立思考,形成独到的见解。
目 录
第一部分 微服务解惑篇
第1章 微服务架构 2
1.1 不微你就OUT了 2
1.2 产生背景 3
1.2.1 时代的召唤 3
1.2.2 容器神助攻 4
1.2.3 微服务的进击 4
1.3 微服务的标签 5
1.3.1 单一职责 6
1.3.2 微 6
1.3.3 面向服务 7
1.3.4 自治 8
1.3.5 易扩展 9
1.3.6 流程化 10
1.4 实力碾压 11
1.4.1 组件化 11
1.4.2 快速 13
1.4.3 可复用 13
1.4.4 机动灵活 13
1.5 不要奶我 14
1.5.1 不足 14
1.5.2 挑战 15
1.5.3 小结 16
1.6 本章小结 17
第2章 为何选择微服务 18
2.1 传统架构的病 18
2.1.1 中年危机 18
2.1.2 宝宝心里苦 19
2.2 微服务有药 21
2.2.1 讳疾忌医 21
2.2.2 朋友听说过安利么 22
2.2.3 沙盘演练看效果 22
2.3 微服务的价值 23
2.3.1 资源价值 24
2.3.2 业务价值 24
2.3.3 技术价值 24
2.3.4 用户价值 25
2.3.5 未来价值 25
2.3.6 小结 26
2.4 定个小目标 26
2.4.1 持续交付 26
2.4.2 业务敏捷 26
2.4.3 独立演进 27
2.4.4 高可用 27
2.4.5 高性能 27
2.4.6 站在云端 28
2.5 别人家的公司 28
2.6 来不及解释快上车 29
第3章 我拆我拆我拆拆拆 30
3.1 拆还是不拆 30
3.2 如何拆 32
3.2.1 庖丁解牛 32
3.2.2 数据模型和业务模型 33
3.2.3 金字塔结构图 33
3.2.4 关键指标 33
3.3 粒度 35
3.3.1 五笔字根 36
3.3.2 被遗忘的字典师傅 37
3.3.3 小结 37
3.4 边界 37
3.5 本章小结 38
第4章 如何使用微服务 39
4.1 如何规划 39
4.2 微服务重构 42
4.2.1 影响因素 42
4.2.2 重构原则 43
4.2.3 重构方法 44
4.3 本章小结 45
第5章 微服务的朋友圈 46
5.1 好朋友容器 46
5.1.1 容器的来历 46
5.1.2 容器的好处 47
5.1.3 小结 49
5.2 天生一对DevOps 49
5.2.1 DevOps是什么 49
5.2.2 为什么采用DevOps 50
5.2.3 小结 51
5.3 SOA是谁 51
5.3.1 接着忽悠 52
5.3.2 SOA是个什么鬼 52
5.3.3 小结 53
第二部分 技术实现篇
第6章 Spring Boot 56
6.1 介绍 56
6.2 特点 57
6.3 Spring Boot和微服务之间的关系 57
6.4 如何使用 58
6.5 可定制化 61
6.6 本章小结 64
第7章 Spring Cloud 65
7.1 Spring Cloud优势 66
7.2 Spring Cloud特点 67
7.3 Spring Cloud之服务管理 68
7.4 注册中心Eureka 69
7.4.1 什么是注册中心 69
7.4.2 为什么要有注册中心 69
7.4.3 Eureka来历 70
7.4.4 Eureka机制 71
7.4.5 如何使用 72
7.5 网关Zuul 77
7.5.1 Zuul 78
7.5.2 反向代理 78
7.5.3 如何使用 79
7.6 客户端负载均衡Ribbon 84
7.6.1 负载均衡 85
7.6.2 如何使用 85
7.6.3 补充说明 91
7.7 断路器Hystrix 92
7.7.1 如何隔离 93
7.7.2 电路熔断器模式 93
7.7.3 回滚降级 94
7.7.4 如何使用 95
7.7.5 交通疏导 101
7.7.6 小结 101
7.8 分布式配置中心Spring Cloud Config 101
7.8.1 为什么要有配置 102
7.8.2 集中配置的好处 103
7.8.3 配置方式的演进 103
7.8.4 如何使用 104
7.9 服务之间调用Feign 114
7.9.1 Feign如何使用 114
7.9.2 补充说明 118
7.10 服务追踪 119
7.10.1 Spring Cloud Sleuth介绍 119
7.10.2 Sleuth如何使用 120
7.10.3 日志聚合Zipkin 122
7.10.4 小结 127
7.11 Spring Cloud和Dubbo的比较 127
7.11.1 生的伟大 127
7.11.2 死的憋屈 127
7.11.3 没比较没伤害 128
7.11.4 现状 128
7.12 Spring Cloud与Spring Boot的关系 129
7.13 本章小结 130
第8章 其他相关技术和工具 131
8.1 数据库开发持续集成工具Liquibase 131
8.1.1 特性 132
8.1.2 使用 136
8.2 Swagger 144
8.2.1 为什么使用Swagger 144
8.2.2 如何使用 145
8.2.3 小结 149
8.3 权限spring security 150
8.4 微服务架构的通信方式 152
8.4.1 同步 153
8.4.2 异步 156
8.5 服务编排 160
8.6 管理工具JIRA 162
第9章 测试相关 166
9.1 单元测试 166
9.1.1 Mockito如何使用 168
9.1.2 Mock 与InjectMocks的区别 171
9.2 接口测试 173
9.3 代码质量管理工具Sonar 174
9.3.1 特点 174
9.3.2 使用 175
第三部分 项目实战篇
第10章 三个典型系统案例 188
10.1 企业运营支撑系统 188
10.1.1 背景 188
10.1.2 现状 188
10.1.3 原因调查 189
10.1.4 解决方案 190
10.2 车队管理系统 193
10.2.1 背景 193
10.2.2 技术架构 193
10.2.3 服务如何拆分 194
10.3 财务管理系统 195
10.3.1 背景 195
10.3.2 现状 195
10.3.3 原因调查 196
10.3.4 解决方案 196
10.4 本章小结 197
第11章 开发管理 198
11.1 管理原则 198
11.2 日常管理 198
11.3 代码质量管理 199
11.4 工作方式 199
11.5 BA的职责 199
11.6 SA的职责 200
11.7 DEV的工作原则 201
11.8 本章小结 201
后记 202
前 言
当莱斯特城获得15/16赛季英超冠军的时刻,我毫不犹豫地亮出了自己隐藏了30年的狐狸城球迷身份。
随着微服务在国内的炙手可热,很多人亮出了隐藏多年的微服务专家身份。
然而有一种专家就是那种告诉你1000种谈恋爱的办法,但自己从来没有谈过恋爱的人。
他们讲讲亚马逊的订单,谈谈Uber的服务,然而就是没有自己做的。
不同于这些专家,笔者曾是AC微服务方面的咨询,曾长期供职于HP,具有丰富的架构设计和实战经验,先后参与过多个微服务项目,对微服务有着较为深刻的理解。
微服务的概念提出已经有几年了,相对于传统技术架构来说微服务不仅仅是新一代架构,更是具有划时代意义的架构。目前国外一些大型互联网公司如亚马逊、Netflix、Spotify和一些传统公司如沃尔玛都已经采用微服务架构并且实际效果非常好。
与此同时,微服务架构在国内一直不温不火,大多呈观望态势,直到容器技术的出现,为微服务架构的落地完成了最后一块拼图,国内IT公司对微服务架构的热情才大增,从各种微服务培训大会一票难求可见一斑。
国内很多公司已经开始或正在着手准备使用微服务架构,与市场需求暴增对应的是巨大的人才缺口,市面上相关材料、书籍的信息量很小,且大多偏技术实现,既缺少理论的指导又缺少项目实践,无法满足最终用户的需求。最重要的是还没有介绍Spring Boot Spring Cloud的书问世,它可是当前世界上最主流的微服务技术实现,这多少影响了微服务在国内的发展。
技术类书籍大多有一个普遍的问题,就是枯燥乏味、晦涩难懂。不要说非技术人员看不懂,连技术出身的人看着也吃力,更别提那些翻译过来的技术书籍。
究其原因是因为描述技术时用的语言是技术语言,而不是生活语言,自然难以理解。
技术不是玄学,技术应该是面向生活的。
所以本书会通过大量生活中的例子对微服务架构及原理进行解释,有趣易懂,可以说是接地气的一本技术书籍。
本书内容都是从实际出发,均来自本人常年在前方发回的“报道”,这里有客户最关心的话题,如何拆分服务、如何使用微服务等。本书有针对性地对这些问题进行了解答,同时提供了一套完整的理论体系,让读者知其然知其所以然。
一本书是一个作者智慧的结晶、知识的沉淀、思维体系的形成。
做人呢,开心最重要。
写书呢,态度最重要。
本人能力一般、水平有限,如有不足之处,欢迎“拍砖”。如果通过这本书能让更多人了解和更好地使用微服务,那么我的目的就达到了。
本书的最大特点是贴近生活,简单易懂,同时又与实践紧密联系。这本书的读者不仅限于技术人员,同时也适用于非技术人员。技术人员看完可以轻松地搭建一套完整的微服务环境,开始微服务之旅;架构师看完可以规划设计出更好的架构,业务人员看完也可以从中了解微服务。
只要是对微服务有兴趣的同道中人,都可以从这本书中有所收获。就像Spring Cloud的工具包,内容丰富,如果要使用微服务总有一款适合你。
本书分为三大部分。
第一部分微服务解惑篇包含了前5章
微服务会给很多人带来疑惑,它是什么,可能一说就懂,但是该不该使用它,以及如何使用等问题就不是三言两语能讲得清楚、说得明白的。这部分内容可以让读者对微服务有个清晰的认识,消除对微服务的种种疑惑,同时对用户十分关注的如何拆分、如何使用等问题做了很全面的讲解。可以让之前的迷惑与误解消失不见。
第1章:微服务架构
本章介绍了微服务架构的产生背景、特点、优势及不足,还有在使用过程中会遇到的一些挑战,让读者对微服务有一个整体的了解。
第2章:为何选择微服务
本章主要讲选择微服务的理由,介绍传统架构的缺陷,而微服务就是它的“解药”,随后介绍了微服务带来的价值及通过它最终要达成的目标,最后介绍了成功人士的选择,让你用着放心。
第3章:我拆我拆我拆拆拆
本章介绍了微服务的拆分原则,以及拆分过程中需要注意的地方。它是微服务使用过程中非常重要的一环。
第4章:如何使用微服务
本章介绍了微服务在使用时应该如何规划,并以秦国都城举例说明规划的重要性及规划的方法。随后介绍微服务的使用方法,让读者在使用过程中有一个理论上的指导。
第5章:微服务的朋友圈
本章介绍了微服务架构的圈子,它不是一个独立的存在,有一系列热门词围绕着它,如容器、DevOps等。
第二部分技术实现篇包含了第6~9章
通过对当前世界最为流行的微服务框架Spring Boot Spring Cloud的常用组件的详细解读以及其他相关技术、工具的介绍,来帮助读者了解整体架构及其中各个组件的原理,结合代码帮助读者快速构建项目,搭建一个比较完整的微服务框架。另外,对一些误读进行了澄清,如Spring Boot究竟是不是微服务框架。
第6章:Spring Boot
本章介绍了基础框架Spring Boot的一些情况,包括特点、如何使用等。
第7章:Spring Cloud
本章介绍了Spring Cloud中比较常用和重要的一些组件的原理和使用,如Eureka、Config、Zuul、Hystrix、Ribbon等。
第8章:其他相关技术和工具
本章介绍了微服务的使用过程中需要用到的一些工具和技术,如Liquibase、Swagger、Kafka、Spring Security等,这些工具、技术可以辅助微服务被更好地使用。
第9章:测试相关
本章介绍了微服务在使用过程中测试的重要性,以及需要用到的一些测试方法和工具,如Mockito等。
第三部分项目实战篇包含了第10~11章
第10章:三个典型系统案例
本章通过三个案例来展示不同业务系统在微服务使用过程中如何梳理业务、如何拆分、如何使用微服务重构,等等。
第11章:开发管理
讲了开发管理中的管理原则、日常管理、代码质量管理、工作方式及相关人员的工作职责等内容。
首先感谢我的妻子,妻贤夫安,谢谢妻子对我的理解和包容,给我创造了愉悦的写作环境。谢谢妻子对家的付出,让我无须操心家中事,将更多的精力投入到写作中。谢谢妻子在我写作遇到瓶颈时给予的支持和鼓励,感恩有你的陪伴。
我还要感谢我曾经效力多年的中国惠普,一家非常伟大的公司,惠普之道让我有家一般的归属感,我在这里受益良多,结识了许多正能量的朋友,这些对我来说都是非常宝贵的财富。每当我回想起曾经在惠普的那段岁月,心中总是充满了感恩和美好的记忆。
鸟随鸾凤飞腾远,人伴贤良品自高。要感谢的人太多太多,是你们这些良师益友让我一直在荆棘中不断前行,采拾鲜花。
最后还要感谢电子工业出版社王二华编辑,在我写作期间给予了很大的帮助和指导。近几年,微服务的兴起对从事资讯科技的各级别、各功能、各种技术的人员来说是一重大挑战,也是一个突破的机会。本书深入浅出,让读者很容易就了解到什么是微服务。另外,本书也让已经对微服务有一定认知的读者了解到微服务如何可以应用,在什么环境、什么情况下,会面对什么困难和问题,如何通过不同方法加以解决,让微服务可以顺利地应用,让微服务所带来的好处可以大大地体现出来。对微服务感兴趣的读者和对微服务的应用感到困惑的读者,以及对微服务的场景应用需要更深入了解的读者,可以阅读这本书,不可错过。
电讯盈科解决方案中国区总经理 潘家驰(William Poon)
软件架构模式的衍变往往有其深刻的历史和业务背景,而在互联网 、云计算、大数据、区块链等新的商业模式及相关技术体系大行其道的今天,微服务模式很好地适应了时代的发展,其辅以相应的管理流程、体系,实践了DevOps理念,为IT产业的蓬勃发展奠定了技术基础。
市面上关于微服务的书浩若烟海、不胜枚举,本书的作者从实际工作的丰富积累出发,清晰地描述了微服务的“微”、“独”、“轻”、“松”等特点的具体实践。针对企业应用微服务模式中遇到的选型、服务拆分、开发技术及相关工具等重点、难点做了阐述,配合实际生产案例,便于读者快速理解。
作者是我在惠普时的老友、多年的同事,一直在一线从事软件研发和项目实施相关工作,具有丰富的软件架构设计经验。本书将给有志于规划、设计微服务模式的架构师、软件设计和开发者们提供一条可行的路。
云星数据(深圳)有限公司 副总裁兼研发中心总监 楼炜
随着技术的不断发展,企业使用的软件功能变得越来越强大,开发维护的难度也呈指数级上升。如何高效率地开发一个庞大系统,同时做到后期维护成本低,是每一个架构人员考虑的问题。Dubbo的分布式服务架构,让大家更多地关注了微服务。在大型的互联网电商平台,需要应对极高的并发场景,分布式服务贯穿其中,有成百上千的应用实例在对外提供着微服务。
在传统的企业,由于没有这样的高性能要求,对于微服务的意识并不强。公司前段时间招聘一批技术人员,应聘者很多,但懂微服务的人却很少。只有一些有电商背景和喜欢钻研技术的人,才对Dubbo Zookeeper有比较深入的了解。我很是感慨,公司很重视微服务技术,但外面用的又不多,希望借此书也能将微服务做一些推广。这是一种潮流,需要我们去引领。不过还好,技术的领导者已经嗅到了微服务未来的蓬勃发展,在Spring MVC的基础上又推出了Spring Boot,简化了REST服务开发。后期又推出了微服务架构Spring Cloud,打通了微服务的全流程。这对于想了解微服务架构,或者想步入互联网公司的人员来讲,无疑是一个福音。
有了技术领导者的带路,还必须有大量的推广者,才能使一项新技术发扬光大。本书作者纪晓峰就是微服务技术的发烧友,一个坚定的推广者。为了普及微服务知识,特意撰写了这本书。他是我HP的同事,工作认真,性格开朗,项目经验丰富,对Spring Cloud的微服务框架有很深的研究,能够用通俗易懂的语言让读者在短时间内熟悉微服务。
相信读者看了此书之后,一定能被作者的行文风格所吸引,在潜移默化中加深对微服务的认识。读此书,就如同读小说,又如同读人生。你会同时收获到微服务以外的很多其他知识。
*商城架构师 孙海波