Spring Cloud与Docker微服务架构实战(第2版)
  • 推荐0
  • 收藏5
  • 浏览1.4K

Spring Cloud与Docker微服务架构实战(第2版)

周立 (作者) 

  • 书  号:978-7-121-34015-4
  • 出版日期:2018-07-11
  • 页  数:328
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
纸质版 ¥79.00

相关图书

从零开始学架构:照着做,你也能成为架构师

李运华 (作者)

本书的内容主要包含以下几部分:<br>1) 架构设计基础,包括架构设计相关概念、历史、原则、基本方法,让架构设计不再神秘;<br>2) 架构设计流程,通过一个虚...

¥99.00

Clean Architecture:软件架构与设计匠艺

Robert C. Martin (作者) 孙宇聪 (译者)

《架构整洁之道》是创造“Clean神话”的Bob大叔在架构领域的登峰之作,围绕“架构整洁”这一重要导向,系统地剖析其缘起、内涵及应用场景,涵盖软件研发完整过程及...

¥99.00

大型网站技术架构演进与性能优化

许令波 (作者)

本书从一名亲历者的角度,阐述了一个网站在业务量飞速发展的过程中所遇到的技术转型等各种问题及解决思路。从技术发展上看,网站经历了Web应用系统从分布式、无线多端、...

¥79.00

深入浅出 HTTPS:从原理到实战

虞卫东 (作者)

本书是一本专业的HTTPS书籍,全面讲解了HTTPS领域的相关知识,内容包括密码学、OpenSSL命令行、证书、TLS协议、HTTPS网站性能优化、HTTPS网...

¥89.00

PWA实战:面向下一代的Progressive Web APP

Dean Alan Hume (作者) 郑丰彧 (译者)

Progressive Web App(PWA)是由谷歌提出的一整套技术解决方案,它致力于为 Web 提供出色的用户体验,并完美体现了渐进增强原则。作为为数不多...

¥69.00

MyBatis技术内幕

徐郡明 (作者)

本书以MyBatis 3.4为基础,针对MyBatis的架构设计和实现细节进行了详细分析,其中穿插介绍了MyBatis源码中涉及的基础知识、设计模式以及笔者自己...

¥79.00
作为一部帮助大家实现微服务架构落地的作品,《Spring Cloud与Docker微服务架构实战(第2版)》覆盖了微服务理论、微服务开发框架(Spring Cloud)以及运行平台(Docker)三大主题。全书可分为三部分,第1章对微服务架构进行了系统的介绍;第2-11章使用Spring Cloud开发框架编写了一个"电影售票系统”;第12-14章则讲解了如何将微服务应用运行在Docker之上。全书Demo驱动学习,以连贯的场景、具体的代码示例来引导读者学习相关知识,最终使用特定的技术栈实现微服务架构的落地。
完整解决方案 全流程分布式系统搭建
序1
===
16年国庆假期之后,我所在的公司因为业务需要,想搭建一个API网关来综合治理已有业务调用服务(我司之前采用的是当当的Dubbo扩展框架Dubbox)。前期,我和同事们在技术选型环节,讨论了诸多目前比较红火的技术框架和工具。最后达成一致,采用微服务,来重构和调整原先这些Dubbox服务,并决定使用Spring Cloud(以下简称sc)来实现API网关,争取在17年能顺利平滑地从Dubbox过度到sc。而具体的API网关demo研发工作就落实到我这里。
在开始研发工作之前,我参阅了包括官网在内很多sc研发资料,也去全球最大的同性技术交友网站GitHub上找了很多代码来仔细研读。但感觉老外的这些Guide(指南)总是讲的不是很通透。也许是有些概念他们觉得太基础了,就直接略过不表。因此我也感到很迷茫,老是问自己,到底应该如何去实现这个API网关,完成公司指派给我的研发任务呢?
幸好,某一天我看到《Spring Cloud与Docker实战微服务》这本开源书。根据书中例子,我几乎没有费什么大工夫就搭建了一个API网关的demo。甚至其中某些讲解点,看了之后能让我一下子恍然大悟,回头再看那些老外的Guide,我终于明白了其中的“奥秘”。我真的非常感激这位开源书作者,他深入浅出地将sc所涉及的各种知识点和工具的使用做了完整和详细的叙述。从此,我也记住了此书作者的网名itmuch。
几天后,我将demo做了细化和扩展,并在oschina的码云网站上开源分享了出去(具体网址见)。而无巧不巧,itmuch居然在我项目下的评论区留言了。经过加QQ,加微信一系列同性技术交友过程(你们懂的)取得了联系,也终于知道了这位itmuch的真名,那就是此书作者周立同学。在闲聊过程中,他透露了自己正在以那本《Spring Cloud与Docker实战微服务》开源书为基础,继续扩展和具体深入sc这套微服务开发体系所包含的所有技术点,准备出版成册,让更多的朋友和企业能学习和借鉴sc这套东西开发符合自己业务场景的微服务框架。并邀请我为新书做校对和修正工作。正巧,我也越来越喜欢钻研sc,也希望对自己碰到的一些问题向他指教,所以就答应了下来。这其中的过程真的一言难叙,总算最后我也不辱使命地完成了这本书的校对工作。
我可以很负责的说,本书是周立同学本人在工作和学习sc后总结出的精华,书中每段代码,每个字都是他自己写的,绝无任何抄袭之举。完全可以说是一个努力勤奋、能独立思考、认真做事的同学的良心之作。这样的“业界良心”在如今这个充满浮躁的社会中已不多见。希望有更多的读者能珍惜此书,感谢周立同学给我们的帮助。除此之外,我也希望读者能在阅读完此书后,可以自己写点代码,亲身去实践一把,感受sc的精妙之处。
最后,在草促完成本文之前,值此新春佳节之际,我也祝大家新年快乐,家庭安康,财源滚滚,爱情事业双丰收。
2017年1月25日
农历丙申年腊月二十八
吴峻申 青客机器人有限公司架构师

序2
===
2013年,我在EMC听了一个关于Docker与测试的分享,才第一次近距离认识Docker。在2014年底时,在项目上开始接触Docker。2015年上半年,我读了两本书:*The Phoenix Project*和*Migrating to Cloud-Native Application Architectures*。这两本书让我对DevOps、微服务和云原生架构有了初步的认识。
2015年9月,我以首席架构师的身份加入麻袋理财,当时第一件事情就是就借助DaoCloud在公司内部推行基于Docker的基础落地的方案。花了三个月,一个简易的方案就已经可以正常运作。但是在这个过程中,却发现和应用的契合度不是太高,需要对应用的架构做改造。
2016年年初,当时正好有一个项目要做2.0,之前是一个典型的单体应用(使用Spring MVC),这次准备做微服务改造,以满足业务对技术快速迭代、横向扩展的要求。我当时对Spring Boot和Spring Cloud已经有所耳闻,但是还停留于Demo的地步。正好借着这个机会,准备推广Spring Boot。之后有个全新的项目,我们完全按照微服务架构,使用Spring Boot和Cloud进行开发,并采用CI/CD自动化流程和容器化部署。
2016年10月份时,一次偶然的计划,Spring Cloud中国社区的许进找到了我,让我把团队在实践过程中的经验总结在社区做了分享,从而认识了本书的作者周立。当时周立正好在写一本书,他希望我能够帮他进行review,我就欣然答应了。
看到了书的标题《Spring Cloud与Docker微服务实战》,这不就是我一直在做的工作吗?于是我连夜把这本书读了一遍,感觉相见恨晚,如果一年前有这本书,那我就可以少走很多弯路了。
本书用一个例子贯穿始终,讲解了Spring Cloud的经典组件、微服务架构,以及与Docker的集成。书中提供了详细的代码,可以让读者在了解基础概念的同时,可以马上脚踏实地的撸起袖子写代码。
王天青 DaoCloud 首席架构师
2017年3月

序 3
====
最近几年,微服务的概念非常火爆,由于它确实能解决传统单体应用所带来的种种问题(比如代码可维护性低、部署不灵活、不够稳定、不易扩展,等等),所以大家对“如何成功实施微服务架构”越来越感兴趣。在Java技术栈中,SpringCloud独树一帜,提供了一整套微服务解决方案,它基于SpringBoot而构建,延续了Spring体系一贯的“简单可依赖”,但是由于微服务本身涉及到的技术或概念比较广,所以在正式“入坑”之前,最好能有一本实战性强的书籍作为参考。但是很遗憾,SpringCloud太新了,国内几乎没有一本完整讲解其用法的新书。
今年年初,我偶然得知周立兄在编写SpringCloud相关的书籍,感到非常惊喜,在和他交流的过程中,我能感觉到他对技术的把控力以及对知识分享的热情! 阅读这本书的过程是非常愉悦的,不仅仅是因为它结构之清晰,文风之流畅,更重要的是实战型极强,相信大家能在本书的指导下,顺利地基于SpringCloud&Docker打造出自己的微服务应用。
杜云飞 上海小虫数据技术合伙人,风控大数据负责人

序4
===
在Spring尚未出现的“蛮荒”时代,Java程序员们还在迷茫地创造着各种“语法糖”来试图提高生产效率。然而无论怎么努力,Java语言仍被许多人冠以“裹脚布”的名号——毕竟你一不小心就会把它写的又臭又长。
随着Spring体系的出现与逐步完善,似乎有一种经历着Java工业革命的感觉。的确,任何事物都各有利弊,但我仍然想说,Spring团队给Java程序员们带来了春天(就像它的名字一样),它神奇地把“裹脚布”变成了“丝绸”,因为它最大的特质可以用两个字来形容——优雅。相信你如果使用过Spring Framework、Spring MVC、Spring Data、Spring Boot或Spring Cloud等一系列框架,并研读过它们的源代码,就一定能够体会到“优雅”二字的含义。
尽管Spring家族拥有如此多而美好的大块“语法糖”,但它们过去在国内的传播似乎都不怎么顺利。我经常说,国内对新技术的广泛应用一般比国外要晚三到五年,无论后端、前端还是架构理念。这是许多因素导致的,比如信息闭塞、语言不通、甚至固步自封。我相信随着国内互联网人才越来越多,新技术应用的延时一定会越来越短。或许很多人为了旧系统的稳定而不愿升级,这可以理解,但我希望人们可以拥抱新的事物,而不是排斥。现如今微服务架构理念兴起,人们急需一个快捷、稳定、一站式的分布式微服务解决方案,Spring Cloud正是为此而诞生。可国内熟知Spring Cloud的人目前仍寥寥无几,大部分人从未听说过,想要学习的人不知从何开始,对官方的英文文档也一知半解。人们需要一本能把他们领进Spring Cloud这扇门的“红宝书”,这便是本书的目的,也是本书作者周立的初衷——希望能够为减少国内新技术的延时而出一份力。
我与周立在2016年相识,在短暂的交流后我们都产生了相见恨晚的感觉。遇见志同道合的人并不容易,我们的技术理念很相似。他有着对技术的热忱、灵活的头脑、以及开源分享技术的无私精神,正是这股精神促使他做了许多分享技术的事情,并且编写了这本书(相信我,写书并不赚钱)。我十分欣赏周立身上的这些特质,因此当他跟我提到想出书并找我帮忙时,我毫不犹豫地答应了他。我相信他未来一定能够成为某一技术领域的专家,这是他的目标,他也具备这样的潜质。
本书的切入点非常好,它并不纠结于冗长的源码解读或原理解释,而是更多地注重实战,这在如今互联网爆炸式发展的时代相当重要。现在人们更倾向于使用敏捷开发尽快做出产品来进行试错,并在后续版本中快速迭代。因此本书的实战经验在软件工程层面上会给予阅读者很大提升,它可以让你更快地搭建分布式微服务架构,然后把精力留在编写业务逻辑上,提高你的生产力,并最终做出更好的产品——这也是Spring团队一直希望达到的效果。
现在,让我们随本书进入Spring Cloud的世界,一起感受它的优雅吧!

张英磊 云账房CTO
2017年3月29日

前言

随着业务的发展,笔者当时所在公司的项目越来越臃肿。随着代码的堆砌,项目变得越来越复杂、开发效率越来越低、越来越难以维护,小伙伴们苦不堪言,毫无幸福感可言。
我们迫切需要能够解放生产力、放飞小伙伴的“良药”,于是,微服务进入视野。然而,微服务究竟是什么,众说纷纭,没有人能说清楚什么是微服务。不仅如此,大家对微服务的态度也是泾渭分明,吹捧者、贬低者比比皆是,在笔者的QQ群、微信群中硝烟四起。笔者参加了不少交流会,感觉许多分享常常停留在理论阶段。一场会下来,觉得似乎懂了,却苦于没有对应的技术栈去实现这些理论。
Docker、Jenkins等工具笔者均有涉猎,然而使用什么技术栈去实践微服务架构,在很长时间内都是笔者心中的疑问。
2015年中,笔者偶然在GitHub上看到一个名为Spring Cloud的框架,它基于Spring Boot,配置简单、设计优雅,并且大多组件经过了生产环境的考验。笔者花1个月左右的时间详细研究了Spring Cloud的相关组件后,体会更深。然而,技术选型必须要进行客观、多维度、全方位的分析,而不应由我个人的主观意见作为决定因素。**文档丰富程度、社区活跃度、技术栈生态、开发效率、运行效率、成功案例**等,都是我们选型的重要因素。经过调研,其他几点都很OK,只缺成功案例——在当时,国内几乎没什么成功案例,甚至连中文的博客、相关资料都没有。
这让笔者陷入两难,在这一过程中,公司一边继续使用阿里巴巴开源的Dubbo(Dubbo虽然在国内非常流行,但毕竟有段时间没有维护了,开源生态也不是很好),一边在笔者的组织下进行一些Spring Cloud相关的技术分享。一方面是希望借此开拓小伙伴们的视野,另一方面也希望能将两者相互印证,看能否在现有平台上借鉴Spring Cloud的设计或使用其部分组件。
2016年8月,笔者有幸代表公司参加了全球微服务架构高峰论坛。会上,Josh Long对Spring Cloud的讲解在现场引起了不小的轰动,也让笔者眼前一亮。会后笔者咨询Josh,Spring Cloud能否用于生产、是否大规模使用、国内是否已有成功案例,对方一一给出了肯定的回答。这一回答消除了笔者最后的一点疑虑,开始考虑从Dubbo逐步迁移至Spring Cloud的规划与方案。会后,笔者心想,不妨将Spring Cloud相关知识总结成一个“系列博客”,一来是加深自己的理解,二来也算是丰富Spring Cloud的中文资料。于是,笔者创建了自己的博客\<(http://www.itmuch.com\>),并开始了系列博客的编写。写了两篇后,笔者将博客链接分享到微信群中,没成想,恰好被Josh Long看到,并引用到Spring官方博客中去了。这让笔者感到无比荣幸的同时,也让自己贡献开源社区的欲望空前强烈,于是乎,一口气又写了两篇。
再后来,笔者成立了微服务/Spring Cloud/Docker相关的QQ群(157525002),在QQ群小伙伴的鼓励下,笔者决定写一本Spring Cloud开源书(,没想到竟然获得开源中国的推荐。再然后,笔者在许进的邀请下,联合创办了Spring Cloud中国社区。最后,在群管理员冯靖的引荐下,认识了网红级的大牛张开涛,开涛帮忙引荐了电子工业出版社编辑侠少。从此,笔者正式撰写实体书。
本以为,有了开源书的撰写经验,实体书应该是较为轻松的一件事。然而,样稿发出后,却被侠少鄙视……主要是语文是体育老师教的,病句满天飞,况且,理论不是我的专长。期间一度想要放弃,多亏了侠少的鼓励,总算坚持写了下去……
仓促完稿之际,感慨万千,激动与感激交织,于是,本段不可免俗,进入老生常谈的“鸣谢”环节——感谢我的家人,写书是个费时费力的活儿,在近半年的时间,我的父母和妻子给予了我极大的支持;感谢电子工业出版社小伙伴们的辛苦工作,没有刘佳禾、孙奇俏、侠少等可爱的朋友们,我的书不可能面世;衷心感谢丁露、冯靖、张英磊、王天青、吴峻申(N本书的作者)在百忙之中帮忙校对;衷心感谢QQ群、微信群的朋友们,你们给了笔者最大的帮助和支持!注:排名不分先后。
特别鸣谢:感谢吴峻申给笔者提出很多中肯实用的建议和意见;感谢张英磊帮忙重绘、美化书中绝大部分架构图。
谨以此书献给想要学习微服务、Spring Cloud、Docker又不知从何开始的读者朋友们。**希望本书能切切实实地帮助你使用特定技术栈实现微服务架构的落地**,也希望本书不会令你失望。本书很多理论性的内容并未展开,例如Cloud Native、12-factor App、DDD等,但笔者都在文中以TIPS、拓展阅读或WARNING的形式进行了标记,这部分内容希望读者能够自行拓展阅读。
周立

目录

1 微服务架构概述 1
1.1 单体应用架构存在的问题 1
1.2 如何解决单体应用架构存在的问题 3
1.3 什么是微服务. 3
1.4 微服务架构的优点与挑战 4
1.4.1 微服务架构的优点 5
1.4.2 微服务架构面临的挑战 5
1.5 微服务设计原则6
1.6 如何实现微服务架构 7
1.6.1 技术选型7
1.6.2 架构图及常用组件 8
2 微服务开发框架——Spring Cloud 9
2.1 Spring Cloud 简介 . 9
2.2 Spring Cloud 特点 . 10
2.3 Spring Cloud 版本 . 10
2.3.1 版本简介10
2.3.2 子项目一览 12
2.3.3 Spring Cloud/Spring Boot 版本兼容性 13
3 开始使用Spring Cloud 实战微服务.14
3.1 Spring Cloud 实战前提 14
3.1.1 技术储备14
3.1.2 工具及软件版本 15
3.2 服务提供者与服务消费者 16
3.3 编写服务提供者16
3.3.1 手动编写项目 . 17
3.3.2 使用Spring Initializr 快速创建Spring Boot 项目. 21
3.4 编写服务消费者23
3.5 为项目整合Spring Boot Actuator 25
3.6 硬编码有哪些问题 28
4 微服务注册与发现
4.1 服务发现简介. 30
4.2 Eureka 简介 . 32
4.3 Eureka 原理 . 32
4.4 编写Eureka Server 34
4.5 将微服务注册到Eureka Server 上 . 36
4.6 Eureka Server 的高可用 38
4.6.1 编写高可用Eureka Server . 38
4.6.2 将应用注册到Eureka Server 集群上 41
4.7 用户认证 . 41
4.7.1 为Eureka Server 添加用户认证 41
4.7.2 将微服务注册到需认证的Eureka Server 43
4.8 Eureka 的元数据43
4.8.1 改造用户微服务 43
4.8.2 改造电影微服务 44
4.9 Eureka Server 的REST 端点 46
4.9.1 示例 47
4.9.2 注销微服务实例 52
4.10 Eureka 的自我保护模式 53
4.11 多网卡环境下的IP 选择 54
4.12 Eureka 的健康检查 56
4.13 排除Jersey 依赖. 57
5 使用Ribbon 实现客户端侧负载均衡 59
5.1 Ribbon 简介 59
5.2 为服务消费者整合Ribbon 60
5.3 Ribbon 配置自定义 63
5.3.1 使用Java 代码自定义Ribbon 配置63
5.3.2 使用属性自定义Ribbon 配置 67
5.4 脱离Eureka 使用Ribbon . 68
5.5 饥饿加载 . 70
6 使用Feign 实现声明式REST 调用 72
6.1 Feign 简介 73
6.2 为服务消费者整合Feign . 73
6.3 自定义Feign 配置 . 75
6.3.1 使用Java 代码自定义Feign 配置75
6.3.2 使用属性自定义Feign 配置 79
6.4 手动创建Feign80
6.4.1 修改用户微服务 80
6.4.2 修改电影微服务 84
6.5 Feign 对继承的支持 86
6.6 Feign 对压缩的支持 87
6.7 Feign 的日志 87
6.7.1 编码方式设置日志级别 88
6.7.2 使用属性配置日志级别 89
6.8 使用Feign 构造多参数请求 90
6.8.1 GET 请求多参数的URL 90
6.8.2 POST 请求包含多个参数 .91
6.9 使用Feign 上传文件 92
7 使用Hystrix 实现微服务的容错处理 94
7.1 实现容错的手段 94
7.1.1 雪崩效应95
7.1.2 如何容错95
7.2 使用Hystrix 实现容错 . 97
7.2.1 Hystrix 简介 97
目录xv
7.2.2 通用方式整合Hystrix. 98
7.2.3 Hystrix 断路器的状态监控与深入理解 102
7.2.4 Hystrix 线程隔离策略与传播上下文 103
7.2.5 Feign 使用Hystrix . 106
7.3 Hystrix 的监控112
7.4 使用Hystrix Dashboard 可视化监控数据. 113
7.5 使用Turbine 聚合监控数据 116
7.5.1 Turbine 简介 116
7.5.2 使用Turbine 监控多个微服务. 117
7.5.3 使用消息中间件收集数据. 119
8 使用Zuul 构建微服务网关 124
8.1 为什么要使用微服务网关 124
8.2 Zuul 简介 . 126
8.3 编写Zuul 微服务网关 . 126
8.4 管理端点 . 129
8.4.1 routes 端点 129
8.4.2 filters 端点 131
8.5 路由配置详解. 132
8.6 Zuul 的安全与Header . 136
8.6.1 敏感Header 的设置 136
8.6.2 忽略Header 136
8.7 使用Zuul 上传文件 137
8.8 Zuul 的过滤器140
8.8.1 过滤器类型与请求生命周期 . 140
8.8.2 内置过滤器详解 141
8.8.3 编写Zuul 过滤器 . 144
8.8.4 禁用Zuul 过滤器 . 146
8.9 Zuul 的容错与回退 146
8.10 饥饿加载 . 149
8.11 Query String 编码 . 150
8.12 Hystrix 隔离策略与线程池 150
8.12.1 隔离策略150
8.12.2 线程池配置 151
8.13 Zuul 的高可用152
8.13.1 Zuul 客户端也注册到了Eureka Server 上 152
8.13.2 Zuul 客户端未注册到Eureka Server 上. 152
8.14 使用Sidecar 整合非JVM 微服务 154
8.14.1 编写Node.js 微服务 154
8.14.2 编写Sidecar 155
8.14.3 Sidecar 的端点 . 157
8.14.4 Sidecar 与Node.js 微服务分离部署. 158
8.14.5 Sidecar 原理分析 . 158
8.15 使用Zuul 聚合微服务 . 160
9 使用Spring Cloud Config 统一管理微服务配置. 166
9.1 为什么要统一管理微服务配置 166
9.2 Spring Cloud Config 简介 . 167
9.3 编写Config Server . 168
9.4 编写Config Client . 171
9.5 Config Server 的Git 仓库配置详解 173
9.5.1 占位符支持 173
9.5.2 模式匹配174
9.5.3 搜索目录174
9.5.4 启动时加载配置文件. 175
9.6 Config Server 的健康状况指示器 176
9.7 配置内容的加解密 177
9.7.1 安装JCE 177
9.7.2 Config Server 的加解密端点 177
9.7.3 对称加密177
9.7.4 存储加密的内容 178
9.7.5 非对称加密 179
目录xvii
9.8 使用/refresh 端点手动刷新配置 180
9.9 使用Spring Cloud Bus 自动刷新配置 . 181
9.9.1 Spring Cloud Bus 简介. 181
9.9.2 实现自动刷新 . 182
9.9.3 局部刷新183
9.9.4 架构改进184
9.9.5 跟踪总线事件 . 184
9.10 Spring Cloud Config 与Eureka 配合使用. 186
9.11 Spring Cloud Config 的用户认证 187
9.12 Config Server 的高可用 188
9.12.1 Git 仓库的高可用 . 188
9.12.2 RabbitMQ 的高可用 189
9.12.3 Config Server 自身的高可用 189
10 使用Spring Cloud Sleuth 实现微服务跟踪 191
10.1 为什么要实现微服务跟踪 191
10.2 Spring Cloud Sleuth 简介 192
10.3 整合Spring Cloud Sleuth 194
10.4 Spring Cloud Sleuth 与ELK 配合使用 . 196
10.5 Spring Cloud Sleuth 与Zipkin 配合使用 200
10.5.1 Zipkin 简介 200
10.5.2 编写Zipkin Server 200
10.5.3 微服务整合Zipkin 202
10.5.4 Zipkin 与Eureka 配合使用 205
10.5.5 使用消息中间件收集数据 . 206
10.5.6 使用Elasticsearch 存储跟踪数据. 209
10.5.7 依赖关系图 211
11 Spring Cloud 常见问题与总结 213
11.1 Eureka 常见问题213
11.1.1 Eureka 注册服务慢 213
11.1.2 已停止的微服务节点注销慢或不注销 . 214
xviii 目录
11.1.3 如何自定义微服务的Instance ID 215
11.1.4 Eureka 的UNKNOWN 问题总结与解决 217
11.2 整合Hystrix 后首次请求失败. 218
11.2.1 原因分析218
11.2.2 解决方案218
11.3 Turbine 聚合的数据不完整 219
11.4 Spring Cloud 各组件超时 . 220
11.4.1 RestTemplate 的超时 221
11.4.2 Ribbon 的超时 . 221
11.4.3 Feign 的超时 221
11.4.4 Hystrix 的超时 222
11.4.5 Zuul 的超时 222
11.5 Spring Cloud 各组件重试 . 223
11.5.1 重试步骤224
11.5.2 基于HTTP 响应码重试 224
11.5.3 关闭重试224
11.5.4 注意点224
11.6 Spring Cloud 各组件调优 . 225
11.6.1 Tomcat 参数 225
11.6.2 Hystrix 参数 225
11.6.3 Feign 参数 226
11.6.4 Zuul 参数 . 226
11.7 Spring Cloud 各组件配置属性. 228
11.7.1 Spring Boot 的配置 228
11.7.2 Spring Cloud 的配置 228
11.7.3 原生配置229
11.8 Spring Cloud 定位问题思路总结 229
12 Docker 入门232
12.1 Docker 简介 232
12.2 版本与迭代计划232
12.2.1 版本区别233
目录xix
12.2.2 迭代计划233
12.3 Docker 的架构234
12.4 安装Docker 236
12.4.1 CentOS 7 安装Docker 236
12.4.2 Ubuntu 安装Docker 239
12.4.3 Windows 安装Docker. 244
12.4.4 Mac OS 安装Docker 245
12.5 配置镜像加速器245
12.6 Docker 常用命令246
12.6.1 Docker 镜像常用命令. 246
12.6.2 Docker 容器常用命令. 252
13 将微服务运行在Docker上 260
13.1 使用Dockerfile 构建Docker 镜像 . 260
13.1.1 Dockerfile 常用指令 261
13.1.2 使用Dockerfile 构建镜像 . 266
13.2 使用Docker Registry 管理Docker 镜像 268
13.2.1 使用Docker Hub 管理镜像 268
13.2.2 使用私有仓库管理镜像 270
13.3 使用Maven 插件构建Docker 镜像 271
13.3.1 快速入门272
13.3.2 插件读取Dockerfile 进行构建 273
13.3.3 将插件绑定在某个phase 执行 274
13.3.4 推送镜像 275
13.4 常见问题与总结277
14 使用Docker Compose 编排微服务 278
14.1 Docker Compose 简介 . 278
14.2 安装Docker Compose . 279
14.2.1 安装Compose . 279
14.2.2 安装Compose 命令补全工具 . 279
14.3 Docker Compose 快速入门 280
14.3.1 基本步骤 280
14.3.2 入门示例 280
14.3.3 工程、服务、容器 281
14.4 docker-compose.yml 常用命令281
14.5 docker-compose 常用命令 285
14.6 Docker Compose 网络设置 286
14.6.1 基本概念 286
14.6.2 更新容器 287
14.6.3 links 287
14.6.4 指定自定义网络 288
14.6.5 配置默认网络 . 289
14.6.6 使用已存在的网络 289
14.7 综合实战:使用Docker Comose 编排Spring Cloud 微服务 289
14.7.1 编排Spring Cloud 微服务 . 289
14.7.2 编排高可用的Eureka Server 293
14.7.3 编排高可用Spring Cloud 微服务集群及动态伸缩 295
14.8 常见问题与总结 297
后记 298
附录A:本书配套代码 299
附录B:Spring Cloud YES——快速开发脚手架 300
附录C:使用Docker 快速安装本书中的组件 301

读者评论

  • p258页
    docker inspect —format “{{State.Pid}}”
    应该改成
    docker inspect —format “{{.State.Pid}}”
    少了一“.”
    哈哈,现在正在学习这块,周老师写的书很务实 ,比较注重实战

    zqmssbd发表于 2018/9/12 15:20:23
  • 您好,感谢您的提出!
    1 . 是个bug。
    2 . 是这样的,如果你的版本小于dalston,那么默认情况feign是开启hystrix的;但是如果你的版本是dalston或者更高版本,那么默认情况下feign是关闭hystrix的;
    如果你使用了hystrix(对于feign就是启用了hystrix),那么hystrix有个超时机制。是这个意思。
    3 . 两个是听你的或者听我的的关系。如果x < y & x< z,那么超时时间按hystrix的为准;如果x > y & x > z,那么以ribbon的为准。至于y和z,你可以百度一下。这边不展开了,这个配置各种http调用组件都会有类似的属性。

    周立发表于 2018/8/22 20:27:23
  • 周老师,你好,我是这本书的读者,发现了几个问题,与你分享一下
    1.书的前言,读者服务部分,页面入口:http://www.broadview.com.cn/34105无法正常访问

    2.书的第108页Tips部分和书的222页Hystrix的超时部分存在歧义,你在108页Tips部分说(在Spring Cloud Dalston之前的版本中,Feign默认已开启Hystrix支持…;从Spring Cloud Dalston开始,Feign的Hystrix的支持默认关闭…);你在222页Hystrix的超时部分说(默认情况下,Hystrix开启了超时机制,如需管理…),这里是不是先得开启Hystrix的支持?

    3.一直不能理解Hystrix的超时时间和Ribbon的超时时间之间的关系,例如:假设Hystrix的超时时间为x;Ribbon的超时时间(ribbon.ReadTimeout)是y;Ribbon的连接时间(ribbon.ConnectTimeout)是z,这三者是不是存在计算关系:x=y+z?你能讲解一下这块儿吗?

    心诚则灵发表于 2018/8/19 18:59:52
    • 第一个地址您输入错误,应该是http://www.broadview.com.cn/34015,要不就是书上写错了。。。

      陈晓猛发表于 2018/8/23 6:27:44