Spring Cloud微服务实战
  • 推荐20
  • 收藏64
  • 浏览25.7K

Spring Cloud微服务实战

翟永超 (作者) 

  • 书  号:978-7-121-31301-1
  • 出版日期:2017-04-26
  • 页  数:440
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张春雨
电子书 ¥59.00
购买电子书
纸质版 ¥89.00
本书从时下流行的微服务架构概念出发,详细介绍了Spring Cloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,本书主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。
本书适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。

面向生产的一站式解决方案
领航微服务低成本转型实践

推荐序一



我和Java很有缘,2003年在富士通南大实习的时候,就开始用Struts/JSP/Hibernate/ MySQL做第一个Java项目——SPIF(http://www.fujitsu.com/cn/products/software/applications/ spif/)。
工作之后,主要做J2EE的开发,并开始慢慢接触和使用Spring。加入EMC之后,很有幸和Spring成为一个大家庭(EMC收购了VMware,VMware收购了Spring)。2012年,我和Spring Data/XD的负责人Mark Pollack在中国开过一次小会,和他探讨了一些关于Data Pipeline的想法。后来我也看了很多Josh Long(龙应春)的演讲视频,并在2016年终于有幸能够与他在一个技术大会上同场演讲,并在会议之后做了很多深入沟通。
2015年上半年,我读了两本书:The Phoenix Project和Migrating to Cloud-Native Application Architectures,让我对DevOps、微服务和云原生架构有了初步的认识,也让我对Netflix的那套OSS套件有了一个初步印象。
我是在2015年9月加入麻袋理财之后开始接触Spring Boot的,试用之后感觉它很神奇,再也没有被Spring之前那些烦琐配置所束缚。当时正好和一个架构师讨论要做一个项目的升级改造,决定采用Spring Boot和微服务架构。开始的时候,服务治理还是用了Dubbo。之后因为对Spring Cloud有了比较深刻的认识,在之后一个全新项目上,我们完全按照微服务架构,使用Spring Boot和Cloud进行开发,并采用CI/CD自动化流程和容器化部署。
因为使用了Spring Cloud,让我对Spring Cloud的相关信息特别关注。一个偶然的机会,我认识了Spring Cloud中国社区的负责人许进、翟永超(本书作者)和周立,探讨了很多使用Spring Cloud的经验,感觉与他们和Spring Cloud相见恨晚。
翟永超本人写了很多关于Spring Cloud使用的博客,不同于一般作者,他写的内容更加贴近实际,是自己工作经验的深刻总结,可以拿来直接用于生产。
有一次我们聊到关于配置中心(Spring Cloud Config)如何在生产中使用,他解答了我很多问题,并告诉我他写了一本书,书中就会包含这些内容。这让我对这本书充满期待。后面也有幸见到了本人,一个瘦瘦高高的书生,一看就是一个很有内涵的技术人。畅聊之后,翟永超就把书发给了我,让我先睹为快。
我把翟永超的书仔细拜读了一遍,最大的收获就是让我对Spring Cloud的认识又上升了一个层次。我之前对Spring Cloud的理解更多的是知其然,但是却不知道其所以然,对Spring Cloud里面的逻辑知之甚少。而读了翟永超的《Spring Cloud微服务实战》一书后,让我对Spring Cloud各个组件的认识提升了一个层次,同时也让我对Spring Cloud各个组件的实现原理有了初步的认识,因此我建议所有打算将Spring Cloud用于生产的朋友一定要好好读一下这本书。

王天青
DaoCloud 首席架构师
2017年3月


推荐序二



2016年10月开始,我在冰鉴科技负责微服务架构迁移相关的调研和筹建工作。我比较了Dubbo、Dubbox、Motan、Spring Cloud等框架后,最终锁定在Spring Cloud上。这是一个非常年轻的框架,关于它的中文文档少之又少,更不用说有深度的技术干货了。
当我的团队在利用搜索引擎进行相关检索时,永超的技术博客十分显眼地排在了前列,我非常感激他贡献的这个系列的文章,这在我们团队做微服务架构迁移的工作中,起到了关键作用。后来有一天,我俩在一个架构群中相识,一番讨论后发现是博主本人并且他有写书计划时,我告诉了我的团队,我们不谋而合地决定要在该书出版时迅速收入囊中,做到人手一本。而今天对于我来说更是非常荣幸,能够给永超的新书写推荐序。
Spring Cloud是一个微服务架构实施的综合性解决框架,而在如何构建微服务的选择上,由于我们团队是从SSM(Spring + Spring MVC + MyBatis)框架开始演进的,基于让演进中改动最小的初衷,我们决定使用Spring Boot做微服务构建。我们从对Spring Boot的调研开始就一直关注着永超的技术博客,在第一次接触 Spring Boot 的时候就被它“习惯优于配置”的设计概念深深吸引,这无疑简化了做业务逻辑开发同事的工作量,也使得他们可以不用关注配置细节。本书中也有关于Spring Boot基础知识的详细讲解以及一个案例工程带你快速构建属于你的第一个微服务。
如开头所述,为了将系统微服务化,我们也一直在对 Spring Cloud 进行相关调研。这本书也是国内市场上为数不多的、全面讲解 Spring Cloud 微服务的中文图书。本书详细讲解了 Spring Cloud 生态的各类组件,涵盖了服务治理组件 Eureka、客户端负载均衡组件 Ribbon、服务容错保护组件Hystrix、声明式服务调用组件 Feign、API 网关治理组件Zuul、分布式配置中心组件 Config、消息总线组件 Bus、消息驱动组件 Stream、分布式服务跟踪组件 Sleuth。这包含了我们在实施微服务中需要深入了解的各个轮子,是一本需要仔细研读、反复阅读的精品之作。
最后,预祝永超在Spring Cloud的学习和工作中再创佳绩,也希望读者朋友能够在阅读完本书后快速地搭建好实施微服务过程中的基础脚手架,并在未来工作中能够将团队的一些实践通过Spring Cloud中国社区进行交流,为开源贡献自己的一份力量。

朱清
冰鉴科技信息技术部总监
Spring Cloud中国社区联合创始人
2017.03.27


推荐序三



收到本书作者翟永超的邀请为这本书写推荐序,其实我是很谨慎的。抱着对读者负责、对技术严谨的态度,不能在完全不懂Spring Cloud的基础上妄加评论。就像2009年的云计算和现在的大数据,“Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.”。所以我概读了书中的内容,的确是一本好书,特别是在基于技术实践的阐述中又不失对“微服务化”理论层面的讲解以及发展演进过程的说明。
结合在云计算行业中为大量企业级客户做的服务案例,“集中化”的系统架构确实在企业级客户业务中受到越来越多的挑战,随着业务变化对IT需求的不断增加,处于逐渐失控的状态。CIO们受到越来越大的挑战,希望做到数据驱动业务,那第一个阶段就要做去中心化的改造。如书中所阐述,“微服务化”其实并不是简单的技术革新,而是对团队组织,系统架构,系统研发,自动化测试、发布、运维都提出了一系列的变革要求。所以我觉得,不管是架构师、运维经理、研发主管还是CIO都可以从本书中有所收获。
同样,阿里云的企业级中间件EDAS(基于阿里系的Dubbo开源项目)配合强大的飞天云平台与Docker服务的支持,在大中型企业客户业务中得到更多的验证,如森马服饰、来伊份、正佳广场、中石化的易派客电商平台等。与这些商业化的中间件产品相比,Spring Cloud得到了更多热衷开源项目的人的支持,相信在有足够团队技术能力的保障下,也会取得越来越多的成功案例。书如其人,值得认真拜读,我会推荐给更多的人,为翟永超点赞。

李俊涛
上海驻云科技执行总监


推荐语



本书从时下流行的微服务架构概念出发,结合Spring Cloud的解决方案,深入浅出地剖析了其在构建微服务架构中所需的各个基础设施和技术要点,包括服务治理、容错保护、API网关、配置管理、消息总线等。作者不仅对如何使用各个组件做了详细介绍,还从原理上做了很多分析,可以帮助读者更好地理解Spring Cloud的运行原理,这有助于我们在实战中有效地排错和做进一步扩展。本书是微服务架构方面非常不错的实战书籍,强烈推荐正在做微服务实践或打算实施微服务的团队作为参考资料。
南志文
百联全渠道研发总监

Spring Cloud的诞生对于没有足够资金投入或者技术储备实力的技术团队是一种福音。利用Spring Cloud的一站式解决方案,可以很轻松地搭建起微服务架构的软件系统,大大减少了开发成本,从容应对业务的快速发展。本书是国内第一本Spring Cloud的实战书籍,给我带来了无限惊喜。作者由浅入深地讲解了基于Spring Cloud构建微服务所需要的各个核心组件,并配有大量实战代码,理论和实践兼备,读后收获颇丰。强烈推荐给每一位对Spring Cloud感兴趣或是打算使用Spring Cloud的技术人员阅读。

覃罗春
德比软件产品开发负责人

当下最火的词无外乎就是“微服务”了,但是很多创业公司想要实现微服务架构体系还需要做很多方面的工作才可以逐步实现,所需花费的成本还是较大的。而近年来Spring Boot/Cloud生态架构体系的出现为行业提供了一站式解决方案,解决了不少公司的架构选型和维护方面的难题。本书是国内第一本以Spring Cloud为技术蓝本的微服务类实战书籍,不仅结合实际案例介绍了Spring Cloud的使用,还从源码的角度深入分析了原理实现,强烈推荐每一位开发者和架构师收藏和学习。

程超
合众支付资深技术专家

随着微服务架构的兴起,企业IT架构开始变革,国内出现首批微服务实战布道者。本书作者翟永超,作为Spring Cloud中国社区联合发起人和国内首批Spring Cloud实践与布道者,发表的博文超过数百万次访问量。他的《Spring Cloud微服务实战》一书,包含大量生产实战经验,把Spring Cloud常用组件通过案例剖析,可帮助企业和开发者快速实施微服务架构。

许进(xujin.org)
Spring Cloud中国社区创始人
中间件高级研发工程师

近几年,微服务概念逐渐深入人心,国内各家互联网公司都引入了相应的实践。而被应用最多的就是Spring Cloud这套被戏称为“全家桶”的微服务框架。它几乎实现了微服务的所有功能,而且又完美符合微服务的基础理论,可帮助大家提高工作效率。但是,国内关于Spring Cloud的中文资料相对比较匮乏,很多学习者遍寻入门而不得。在此大背景下,有一些有识之士无私贡献了自己的绵薄之力,本书作者翟永超就是其中一位。这本书对于广大需要在公司中实践微服务的人们来说绝对是一本可以快速上手实现微服务的工作手册。我希望这本书犹如一颗种子,能在国内互联网环境的土壤中生根发芽,最后变成一棵参天大树。

吴峻申
上海青客机器人有限公司架构师





前言



“微服务”架构在这几年被广泛传播,变得非常火热,以至于关于微服务架构相关的开源框架和工具都变得越来越活跃,比如:Netflix OSS、Dubbo、Apache Thrift等。Spring Cloud也因为Spring社区在企业应用领域的广泛知名度和强大影响力,受到了广大架构师与开发者的高度关注。
从接触Spring Cloud开始,我除了被其庞大的项目结构震撼之外,还被其所要完成的远大目标所吸引。该项目不同于其他Spring的优秀项目,它不再是一个基础框架类,而是一个更高层次的、架构视角的综合性大型项目,其目标旨在构建一套标准化的微服务解决方案,让架构师、开发者在使用微服务理念构建应用系统的时候,面对各个环节的问题都可以找到相应的组件来处理。引用网友戏称的一个比喻:Spring Cloud可以说是Spring社区为微服务架构提供的一个“全家桶”套餐。由于“套餐”中的组件通过一个社区进行包装与整合,使得“套餐”中各个组件之间的配合变得更加和谐,这可以有效减少我们在组件的选型和整合上花费的精力,所以它可以帮助我们快速构建起基础的微服务架构系统。
虽然,Spring Cloud提供了很多我们期待的内容,但是因其涵盖的内容非常广泛,并且知识跨度较大,因此对于很多初学者来说就像被专业名词轰炸了一样,入门的难度也就大大提高了。同时,中文文档与资料的匮乏,以及官方文档的内容对于使用描述并不够细致等问题,也直接提升了使用者的学习门槛。这些看似都不是什么大问题,但是却在一定程度上阻碍了Spring Cloud在国内的推广与发展,毕竟任何一项优秀技术都需要有大批的实践者才能得到不断优化、完善和发扬光大。作为一名Spring社区的忠实粉丝和长期实践者,自然希望可以有更多的开发者可以参与到Spring Cloud的使用和贡献中来,笔者也就萌生了想要编写一些入门文章的念头,一方面对自身知识的掌握做一些整理,另一方面也希望这些内容可以成为后来者的学习资料。于是就开始坚持着写了一些基础的入门文章和示例,没有想到会受到不少Spring爱好者的持续关注,在创建了相关的QQ交流群之后,短短一个月的时间,交流群的人数就突破了1000人。由于在交流过程中发现很多问题重复出现,而这些问题并没有得到很好的整理,也没有办法被搜索引擎收录,于是就创建了Spring Cloud中文社区论坛,以帮助收集交流过程中提出和解决的各种问题,方便将来学习者可以搜索到这些前人踩过的坑。
之后,有幸在电子工业出版社计算机出版分社的张春雨先生的邀请下,开始编写这本关于Spring Cloud的入门书籍。在这本书的编写期间,由于工作、家庭等因素,使得与大家交流的时间变得越来越少,但好在有诸多网友和热心爱好者帮忙一起维护着交流群与论坛,为大家提供了很多宝贵的学习资源,我也从中得到了不少启发和收获。同时,感谢后来建议并牵头整合目前国内Spring Cloud学习资源的许进,他在此期间承担了很多沟通和网站维护工作,为Spring Cloud中国社区付出了不少精力,后续我也会重新加入进来,继续编写在线免费入门教程,以帮助更多的爱好者快速入门Spring Cloud。我们也欢迎更多的爱好者参与进来,一起为社区贡献力量,以帮助Spring Cloud在国内被更好地应用与成长。





轻松注册成为博文视点社区用户(www.broadview.com.cn),即可享受以下服务:
下载资源:本书所提供的示例代码及资源文件均可在“下载资源”处下载。
提交勘误:您对书中内容的修改意见可在“提交勘误”处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
与作者交流:在页面下方“读者评论”处留下您的疑问或观点,与作者和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31301




目录

目录



第1章 基础知识 1
什么是微服务架构 1
与单体系统的区别 1
如何实施微服务 2
为什么选择Spring Cloud 6
Spring Cloud简介 7
版本说明 8
第2章 微服务构建:Spring Boot 11
框架简介 12
快速入门 13
项目构建与解析 13
实现RESTful API 17
配置详解 20
配置文件 20
自定义参数 22
参数引用 22
使用随机数 23
命令行参数 23
多环境配置 24
加载顺序 25
监控与管理 26
初识actuator 27
原生端点 28
小结 38
第3章 服务治理:Spring Cloud Eureka 39
服务治理 39
Netflix Eureka 40
搭建服务注册中心 41
注册服务提供者 43
高可用注册中心 46
服务发现与消费 48
Eureka详解 51
基础架构 52
服务治理机制 52
源码分析 56
配置详解 65
服务注册类配置 65
服务实例类配置 67
跨平台支持 71
第4章 客户端负载均衡:Spring Cloud Ribbon 73
客户端负载均衡 73
RestTemplate详解 75
GET请求 75
POST请求 77
PUT请求 79
DELETE请求 79
源码分析 80
负载均衡器 91
负载均衡策略 109
配置详解 123
自动化配置 124
Camden版本对RibbonClient配置的优化 125
参数配置 127
与Eureka结合 127
重试机制 128
第5章 服务容错保护:Spring Cloud Hystrix 130
快速入门 131
原理分析 135
工作流程 135
断路器原理 144
依赖隔离 148
使用详解 151
创建请求命令 151
定义服务降级 154
异常处理 157
命令名称、分组以及线程池划分 158
请求缓存 159
请求合并 166
属性详解 172
Command属性 174
collapser属性 184
threadPool属性 185
Hystrix仪表盘 187
Turbine集群监控 192
构建监控聚合服务 192
与消息代理结合 196
第6章 声明式服务调用:Spring Cloud Feign 199
快速入门 200
参数绑定 202
继承特性 205
Ribbon配置 209
全局配置 209
指定服务配置 209
重试机制 210
Hystrix配置 211
全局配置 211
禁用Hystrix 211
指定命令配置 212
服务降级配置 212
其他配置 214
请求压缩 214
日志配置 215
第7章 API网关服务:Spring Cloud Zuul 217
快速入门 219
构建网关 220
请求路由 221
请求过滤 223
路由详解 226
传统路由配置 226
服务路由配置 228
服务路由的默认规则 229
自定义路由映射规则 229
路径匹配 230
路由前缀 233
本地跳转 234
Cookie与头信息 235
Hystrix和Ribbon支持 236
过滤器详解 238
过滤器 238
请求生命周期 239
核心过滤器 240
异常处理 244
禁用过滤器 256
动态加载 257
动态路由 257
动态过滤器 261
第8章 分布式配置中心:Spring Cloud Config 267
快速入门 267
构建配置中心 268
配置规则详解 269
客户端配置映射 272
服务端详解 274
基础架构 274
Git配置仓库 276
SVN配置仓库 279
本地仓库 279
本地文件系统 279
健康监测 280
属性覆盖 281
安全保护 281
加密解密 282
高可用配置 286
客户端详解 286
URI指定配置中心 287
服务化配置中心 287
失败快速响应与重试 290
获取远程配置 292
动态刷新配置 293
第9章 消息总线:Spring Cloud Bus 295
消息代理 295
RabbitMQ实现消息总线 296
基本概念 297
安装与使用 298
快速入门 302
整合Spring Cloud Bus 306
原理分析 307
指定刷新范围 308
架构优化 309
RabbitMQ配置 310
Kafka实现消息总线 312
Kafka简介 312
快速入门 313
整合Spring Cloud Bus 315
Kafka配置 318
深入理解 318
源码分析 320
其他消息代理的支持 342
第10章 消息驱动的微服务:Spring Cloud Stream 344
快速入门 344
核心概念 349
绑定器 350
发布-订阅模式 351
消费组 353
消息分区 354
使用详解 355
开启绑定功能 355
绑定消息通道 356
消息生产与消费 360
响应式编程 366
消费组与消息分区 368
消息类型 370
绑定器详解 373
绑定器SPI 373
自动化配置 374
多绑定器配置 374
RabbitMQ与Kafka绑定器 376
配置详解 376
基础配置 377
绑定通道配置 377
绑定器配置 379
第11章 分布式服务跟踪:Spring Cloud Sleuth 386
快速入门 386
准备工作 386
实现跟踪 389
跟踪原理 390
抽样收集 392
与Logstash整合 394
与Zipkin整合 397
HTTP收集 398
消息中间件收集 402
收集原理 404
数据存储 414
API接口 417
附录A Starter POMs 419
后记 421

本书勘误

印次
  • 页码:5  •  行数:29  •  印次: 1

    原文:最后导致服务A也不能正常服务
    应为:最后导致服务C也不能正常服务

    anyshell 提交于 2017/7/5 0:08:04
    张春雨 确认于 2017/7/10 10:17:12
  • 页码:6  •  行数:19  •  印次: 1

    原文:Apache的Consul等
    应为:HashiCorp的Consul等

    anyshell 提交于 2017/7/5 0:12:24
    张春雨 确认于 2017/7/10 10:16:39
  • 页码:27  •  行数:4  •  印次: 3

    原文:
    并且根据不同的组件还提供了更多有空的端点
    应该是:
    并且根据不同的组件还提供了更多有用的端点

    曹赫洋 提交于 2017/6/20 15:20:35
    张春雨 确认于 2017/6/22 16:00:10
  • 页码:46  •  行数:7  •  印次: 18

    “所有节点即是服务提供方,也是服务消费方”应为““所有节点既是服务提供方,也是服务消费方”

    xiaoxialuo 提交于 2022/4/16 15:52:23
    张春雨 确认于 2024/2/5 13:25:09
  • 页码:48  •  行数:1  •  印次: 1  •  修订印次: 4

    compute-service 应为 hello-service

    江风海浪 提交于 2017/9/30 17:55:35
    张春雨 确认于 2017/10/16 10:27:21

读者评论

  • 现在2023年了,买的时候没看出版时间,居然是2019年的,感觉有些过时了

    发表于 2023/6/6 16:25:00
  • 我大概看了随书代码,感觉这本书太坑了。做为一个技术高手,写这样的书?还要89块钱?买后悔了。。。。。

    itfrank发表于 2020/3/15 11:07:19
  • 44页HelloController类编译出错

    private final Logger logger=Logger.getLogger(getClass());

    client.getLocalServiceInstance()没这个方法。

    作者贴的代码是正确的?

    itfrank发表于 2020/3/14 12:48:13
  • 第五章 服务容错保护 152页
    User u = new UserCommand(restTemplate, 1L).execute();
    在UserCommand里面构造函数是
    public UserCommand(Setter setter, RestTemplate restTemplate, Long id) {
    super(setter);
    this. = ;
    this. = ;
    }

    确定在new UserCommand只传两个参数没有问题吗???

    影子先森发表于 2019/9/23 15:14:40
  • spring.application.name来表示{application}的内容不太合适,用spring.cloud.config.name会更合适些!

    ffxnl发表于 2019/7/31 17:48:39

下载资源

电子书版本

  • Epub
  • Mobi

图书类别

相关博文

相关图书

架构解密:从分布式到微服务(第2版)

吴治辉 (作者)

微服务、云原生、Kubernetes、Service Mesh是分布式领域的热点技术,它们并不是凭空出现的,一定继承了某些“前辈”的优点。我们不仅要了解这些技术...

 

高可用可伸缩微服务架构:基于Dubbo、Spring Cloud和Service Mesh

程超 (作者)

近年来微服务架构已经成为大规模分布式架构的主流技术,越来越多的公司已经或开始转型为微服务架构。本书不以某一种微服务框架的使用为主题,而是对整个微服务生态进行系统...

¥54.00

微服务架构实战

张锋 (作者)

本书从大型网站的架构设计模式以及技术造型着手,以Spring Cloud和Docker为构建框架,实现横向可扩展的高可用架构。项目分层清晰,包括完备的质量和监控...

¥89.00

架构探险:轻量级微服务架构(下册)

黄勇 (作者)

本书将重点关注微服务基础设施方面,其中大部分内容涉及微服务运维相关技术。全书以实践的角度进行编写,读者首先将学习到轻量级微服务架构的全景视图,随后的各个章节将围...

¥79.00

Node.js微服务

David Gonzalez (作者) 赵震一 (译者)

本书对如何采用Node.js及其生态工具进行微服务开发的最佳实践做了全面的介绍,内容包括对微服务架构基本概念及设计原则的讲解,以及如何采用Node.js搭配Se...

¥69.00

Java微服务

卢涛 (作者) 卢涛 卢涛 (译者)

微服务是利用云平台开发企业应用程序的最新技术,它是小型、轻量和过程驱动的组件。微服务适合设计可扩展、易于维护的应用程序。它可以使开发更容易,还能使资源得到最佳利...

¥69.00