微服务那些事儿 9787121311420

配送至
$ $ USD 美元

编辑推荐

本书以幽默风趣的语言生动地讲述了微服务,将微服务相关的理论知识、技术实现和项目实践一网打尽。解密微服务Spring BootSpring Cloud 技术实践。

作者简介

纪晓峰,现任某公司架构师,曾经在AC担任微服务领域的咨询师,长期供职于HP,具有丰富的架构设计和开发经验,先后参与多个微服务项目。
网名“叫我哲学家”,喜欢看书,钻研技术,领悟其中原理,习惯于独立思考,形成独到的见解。

目录

第一部分微服务解惑篇
第1章微服务架构
1.1不微你就OUT了
1.2产生背景
1.2.1时代的召唤
1.2.2容器神助攻
1.2.3微服务的进击
1.3微服务的标签
1.3.1单一职责
1.3.2微
1.3.3面向服务
1.3.4自治
1.3.5易扩展
1.3.6流程化
1.4实力碾压
1.4.1组件化
1.4.2快速
1.4.3可复用
1.4.4机动灵活
1.5不要奶我
1.5.1不足
1.5.2挑战
1.5.3小结
1.6本章小结
第2章为何选择微服务
2.1传统架构的病
2.1.1中年危机
2.1.2宝宝心里苦
2.2微服务有药
2.2.1讳疾忌医
2.2.2朋友听说过安利么
2.2.3沙盘演练看效果
2.3微服务的价值
2.3.1资源价值
2.3.2业务价值
2.3.3技术价值
2.3.4用户价值
2.3.5未来价值
2.3.6小结
2.4定个小目标
2.4.1持续交付
2.4.2业务敏捷
2.4.3独立演进
2.4.4高可用
2.4.5高性能
2.4.6站在云端
2.5别人家的公司
2.6来不及解释快上车
第3章我拆我拆我拆拆拆
3.1拆还是不拆
3.2如何拆
3.2.1庖丁解牛
3.2.2数据模型和业务模型
3.2.3金字塔结构图
3.2.4关键指标
3.3粒度
3.3.1五笔字根
3.3.2被遗忘的字典师傅
3.3.3小结
3.4边界
3.5本章小结
第4章如何使用微服务
4.1如何规划
4.2微服务重构
4.2.1影响因素
4.2.2重构原则
4.2.3重构方法
4.3本章小结
第5章微服务的朋友圈
5.1好朋友容器
5.1.1容器的来历
5.1.2容器的好处
5.1.3小结
5.2天生一对DevOps
5.2.1DevOps是什么
5.2.2为什么采用DevOps
5.2.3小结
5.3SOA是谁
5.3.1接着忽悠
5.3.2SOA是个什么鬼
5.3.3小结
第二部分技术实现篇
第6章Spring Boot
6.1介绍
6.2特点
6.3SpringBoot和微服务之间的关系
6.4如何使用
6.5可定制化
6.6本章小结
第7章Spring Cloud
7.1Spring Cloud优势
7.2Spring Cloud特点
7.3Spring Cloud之服务管理
7.4注册中心Eureka
7.4.1什么是注册中心
7.4.2为什么要有注册中心
7.4.3Eureka来历
7.4.4Eureka机制
7.4.5如何使用
7.5网关Zuul
7.5.1Zuul
7.5.2反向代理
7.5.3如何使用
7.6客户端负载均衡Ribbon
7.6.1负载均衡
7.6.2如何使用
7.6.3补充说明
7.7断路器Hystrix
7.7.1如何隔离
7.7.2电路熔断器模式
7.7.3回滚降级
7.7.4如何使用
7.7.5交通疏导
7.7.6小结
7.8分布式配置中心Spring Cloud Config
7.8.1为什么要有配置
7.8.2集中配置的好处
7.8.3配置方式的演进
7.8.4如何使用
7.9服务之间调用Feign
7.9.1Feign如何使用
7.9.2补充说明
7.10服务追踪
7.10.1Spring Cloud Sleuth介绍
7.10.2Sleuth如何使用
7.10.3日志聚合Zipkin
7.10.4小结
7.11Spring Cloud和Dubbo的比较
7.11.1生的伟大
7.11.2死的憋屈
7.11.3没比较没伤害
7.11.4现状
7.12Spring Cloud与Spring Boot的关系
7.13本章小结
第8章其他相关技术和工具
8.1数据库开发持续集成工具Liquibase
8.1.1特性
8.1.2使用
8.2Swagger
8.2.1为什么使用Swagger
8.2.2如何使用
8.2.3小结
8.3权限spring security
8.4微服务架构的通信方式
8.4.1同步
8.4.2异步
8.5服务编排
8.6管理工具JIRA
第9章测试相关
9.1单元测试
9.1.1Mockito如何使用
9.1.2Mock与InjectMocks的区别
9.2接口测试
9.3代码质量管理工具Sonar
9.3.1特点
9.3.2使用175
第三部分项目实战篇
第10章三个典型系统案例
10.1企业运营支撑系统
10.1.1背景
10.1.2现状
10.1.3原因调查
10.1.4解决方案
10.2车队管理系统
10.2.1背景
10.2.2技术架构
10.2.3服务如何拆分
10.3财务管理系统
10.3.1背景
10.3.2现状
10.3.3原因调查
10.3.4解决方案
10.4本章小结
第11章开发管理
11.1管理原则
11.2日常管理
11.3代码质量管理
11.4工作方式
11.5BA的职责
11.6SA的职责
11.7DEV的工作原则
11.8本章小结
后记

序言

前言

当莱斯特城获得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章:开发管理
讲了开发管理中的管理原则、日常管理、代码质量管理、工作方式及相关人员的工作职责等内容。
我要致谢的人
首先感谢我的妻子,妻贤夫安,谢谢妻子对我的理解和包容,给我创造了愉悦的写作环境。谢谢妻子对家的付出,让我无须操心家中事,将更多的精力投入到写作中。谢谢妻子在我写作遇到瓶颈时给予的支持和鼓励,感恩有你的陪伴。
我还要感谢我曾经效力多年的中国惠普,一家非常伟大的公司,惠普之道让我有家一般的归属感,我在这里受益良多,结识了许多正能量的朋友,这些对我来说都是非常宝贵的财富。每当我回想起曾经在惠普的那段岁月,心中总是充满了感恩和美好的记忆。
鸟随鸾凤飞腾远,人伴贤良品自高。要感谢的人太多太多,是你们这些良师益友让我一直在荆棘中不断前行,采拾鲜花。
最后还要感谢电子工业出版社王二华编辑,在我写作期间给予了很大的帮助和指导。

文摘

版权页:

插图:

团队的船长拥有丰富的经验,在船长的英明领导之下,以及无所不知的“业务大牛”和勤勤恳恳的“技术大牛”的配合下,系统之船才始终在正确的航向上行驶,没有偏离,没有发生重大事故,虽然小问题比较多,但都在可控范围之内。
也正是因为大家的共同努力、兢兢业业才让所做的工作不断地得到客户方的认可。如果换作其他人,管理这么大的项目,这么多人的团队,问题远不止于此,后果无法想象,项目可能早就进行不下去了。此EJB之罪,非战之罪,这个锅必须要由EJB来背。
有人会问,为什么不早点换架构?
事实上团队成员也一直在寻找替代方案,但无奈在部署方面EJB还是有其优势的,如在集群部署方面。由于当时一直没有成熟的架构可以替代,同时新需求的开发量一直有增无减导致重构之路一直没有真正成行。
而现在微服务的出现彻底改变了情况,同时系统也到了不得不重构的时候,客观条件具备了,这时终于可以踏上重构之路了。
10.1.4 解决方案
首先架构层面,采用微服务架构,技术实现采用Spring Boot+Spring Cloud替换原有EJB。
其他改造点如下。
将原来接口之间调用的Soap方式替换成更轻量的Rest方式。
将原有的消息队列实现方式Jms替换成对分布式支持更好的Kafka。
将原来的数据库Oracle替换成HANA内存数据库,读写更快,突破传统数据库都会遇到的IO瓶颈。
因为系统十分庞大,业务十分复杂,光是介绍这个系统都可以写一本书了,所以这里只选择其中的订单业务功能来讲解,以达到举一反三的效果。下面来看具体的步骤。
第一步:梳理所有的业务功能环节。
通过将数据模型和业务模型结合起来使用,对业务进行梳理,在业务拆分方面,首先按照业务环节进行粗粒度的拆分,划分成几个大部分。
ISBN9787121311420
出版社电子工业出版社
作者纪晓峰
尺寸16