编辑推荐

  √SpringCloud是集微服务框架之大成的“全家桶”

√深入剖析核心组件,透过实例|源码剖析运行原理

√简明上手,指导以极低开发成本实现搭建微服务架构

√作者亲历大量生产实践,为该技术社区繁荣主要推动者

内容简介

  《SpringCloud微服务实战》从时下流行的微服务架构概念出发,详细介绍了SpringCloud针对微服务架构中几大核心要素的解决方案和基础组件。对于各个组件的介绍,《SpringCloud微服务实战》主要以示例与源码结合的方式来帮助读者更好地理解这些组件的使用方法以及运行原理。同时,在介绍的过程中,还包含了作者在实践中所遇到的一些问题和解决思路,可供读者在实践中作为参考。

《SpringCloud微服务实战》适合所有Java开发人员,尤其适合正在做微服务架构技术选型或正在实施微服务架构的团队查阅和参考。

作者简介

Spring Cloud微服务实战》作者文字水平较高,行文流畅,且工作在编程第一线,拥有扎实的理论基础和实践经验,相信会为读者奉上一本质量上乘的图书。

精彩书评

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

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

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

随着微服务架构的兴起,企业IT架构开始变革,国内出现首批微服务实战布道者。《Spring Cloud微服务实战》作者翟永超,作为SpringCloud中国社区联合发起人和国内首批SpringCloud实践与布道者,发表的博文超过数百万次访问量。他的《SpringCloud微服务实战》一书,累积了大量生产实战经验,把SpringCloud常用组件通过案例剖析,可帮助企业和开发者快速实施微服务架构。
许进(xujin.org)
SpringCloud中国社区创始人
中间件高级研发工程师

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

目录

第1章 基础知识1

什么是微服务架构1

--与单体系统的区别1

--如何实施微服务2

为什么选择SpringCloud6

SpringCloud简介7

版本说明8

第2章 微服务构建:SpringBoot11

框架简介12

快速入门13

--项目构建与解析13

--实现RESTfulAPI17

配置详解20

--配置文件20

--自定义参数22

--参数引用22

--使用随机数23

--命令行参数23

--多环境配置24

--加载顺序25

监控与管理26

--初识actuator27

--原生端点28

小结38

第3章 服务治理:SpringCloudEureka39

服务治理39

--NetflixEureka40

--搭建服务注册中心41

--注册服务提供者43

--高可用注册中心46

--服务发现与消费48

Eureka详解51

--基础架构52

--服务治理机制52

--源码分析56

配置详解65

--服务注册类配置65

--服务实例类配置67

跨平台支持71

第4章 客户端负载均衡:SpringCloudRibbon73

客户端负载均衡73

RestTemplate详解75

--GET请求75

--POST请求77

--PUT请求79

--DELETE请求79

源码分析80

--负载均衡器91

--负载均衡策略109

配置详解123

--自动化配置124

--Camden版本对RibbonClient配置的优化125

--参数配置127

--与Eureka结合127

重试机制128

第5章 服务容错保护:SpringCloudHystrix130

快速入门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章 声明式服务调用:SpringCloudFeign199

快速入门200

参数绑定202

继承特性205

Ribbon配置209

全局配置209

指定服务配置209

重试机制210

Hystrix配置211

全局配置211

禁用Hystrix211

指定命令配置212

服务降级配置212

其他配置214

第7章 API网关服务:SpringCloudZuul217

快速入门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章 分布式配置中心:SpringCloudConfig267

快速入门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章 消息总线:SpringCloudBus295

消息代理295

RabbitMQ实现消息总线296

--基本概念297

--安装与使用298

--快速入门302

--整合SpringCloudBus306

--原理分析307

--指定刷新范围308

--架构优化309

--RabbitMQ配置310

Kafka实现消息总线312

--Kafka简介312

--快速入门313

--整合SpringCloudBus315

--Kafka配置318

深入理解318

--源码分析320

--其他消息代理的支持342

第10章 消息驱动的微服务:SpringCloudStream344

快速入门344

核心概念349

--绑定器350

--发布-订阅模式351

--消费组353

--消息分区354

使用详解355

--开启绑定功能355

--绑定消息通道356

--消息生产与消费360

--响应式编程366

--消费组与消息分区368

--消息类型370

绑定器详解373

--绑定器SPI373

--自动化配置374

--多绑定器配置374

--RabbitMQ与Kafka绑定器376

配置详解376

--基础配置377

--绑定通道配置377

--绑定器配置379

第11章 分布式服务跟踪:SpringCloudSleuth386

快速入门386

--准备工作386

--实现跟踪389

跟踪原理390

抽样收集392

与Logstash整合394

与Zipkin整合397

--HTTP收集398

--消息中间件收集402

--收集原理404

--数据存储414

--API接口417

附录A StarterPOMs419

后记421

前言/序言

  推荐序一

  我和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年,我和SpringData/XD的负责人MarkPollack在中国开过一次小会,和他探讨了一些关于DataPipeline的想法。后来我也看了很多JoshLong(龙应春)的演讲视频,并在2016年终于有幸能够与他在一个技术大会上同场演讲,并在会议之后做了很多深入沟通。

  2015年上半年,我读了两《Spring Cloud微服务实战》:ThePhoenixProject和MigratingtoCloud-NativeApplicationArchitectures,让我对DevOps、微服务和云原生架构有了初步的认识,也让我对Netflix的那套OSS套件有了一个初步印象。

  我是在2015年9月加入麻袋理财之后开始接触SpringBoot的,试用之后感觉它很神奇,再也没有被Spring之前那些烦琐配置所束缚。当时正好和一个架构师讨论要做一个项目的升级改造,决定采用SpringBoot和微服务架构。开始的时候,服务治理还是用了Dubbo。之后因为对SpringCloud有了比较深刻的认识,在之后一个全新项目上,我们完全按照微服务架构,使用SpringBoot和Cloud进行开发,并采用CI/CD自动化流程和容器化部署。

  因为使用了SpringCloud,让我对SpringCloud的相关信息特别关注。一个偶然的机会,我认识了SpringCloud中国社区的负责人许进、翟永超(《Spring Cloud微服务实战》作者)和周立,探讨了很多使用SpringCloud的经验,感觉与他们和SpringCloud相见恨晚。

  翟永超本人写了很多关于SpringCloud使用的博客,不同于一般作者,他写的内容更加贴近实际,是自己工作经验的深刻总结,可以拿来直接用于生产。

  有一次我们聊到关于配置中心(SpringCloudConfig)如何在生产中使用,他解答了我很多问题,并告诉我他写了一《Spring Cloud微服务实战》,书中就会包含这些内容。这让我对这《Spring Cloud微服务实战》充满期待。后面也有幸见到了本人,一个瘦瘦高高的书生,一看就是一个很有内涵的技术人。畅聊之后,翟永超就把书发给了我,让我先睹为快。

  我把翟永超的书仔细拜读了一遍,最大的收获就是让我对SpringCloud的认识又上升了一个层次。我之前对SpringCloud的理解更多的是知其然,但是却不知道其所以然,对SpringCloud里面的逻辑知之甚少。而读了翟永超的《SpringCloud微服务实战》一书后,让我对SpringCloud各个组件的认识提升了一个层次,同时也让我对SpringCloud各个组件的实现原理有了初步的认识,因此我建议所有打算将SpringCloud用于生产的朋友一定要好好读一下这《Spring Cloud微服务实战》。

  王天青

  DaoCloud首席架构师

  2017年3月

  

  推荐序二

  2016年10月开始,我在冰鉴科技负责微服务架构迁移相关的调研和筹建工作。我比较了Dubbo、Dubbox、Motan、SpringCloud等框架后,最终锁定在SpringCloud上。这是一个非常年轻的框架,关于它的中文文档少之又少,更不用说有深度的技术干货了。

  当我的团队在利用搜索引擎进行相关检索时,永超的技术博客十分显眼地排在了前列,我非常感激他贡献的这个系列的文章,这在我们团队做微服务架构迁移的工作中,起到了关键作用。后来有一天,我俩在一个架构群中相识,一番讨论后发现是博主本人并且他有写书计划时,我告诉了我的团队,我们不谋而合地决定要在该书出版时迅速收入囊中,做到人手一本。而今天对于我来说更是非常荣幸,能够给永超的新书写推荐序。

  SpringCloud是一个微服务架构实施的综合性解决框架,而在如何构建微服务的选择上,由于我们团队是从SSM(Spring+SpringMVC+MyBatis)框架开始演进的,基于让演进中改动最小的初衷,我们决定使用SpringBoot做微服务构建。我们从对SpringBoot的调研开始就一直关注着永超的技术博客,在第一次接触SpringBoot的时候就被它“习惯优于配置”的设计概念深深吸引,这无疑简化了做业务逻辑开发同事的工作量,也使得他们可以不用关注配置细节。《Spring Cloud微服务实战》中也有关于SpringBoot基础知识的详细讲解以及一个案例工程带你快速构建属于你的第一个微服务。

  如开头所述,为了将系统微服务化,我们也一直在对SpringCloud进行相关调研。这《Spring Cloud微服务实战》也是国内市场上为数不多的、全面讲解SpringCloud微服务的中文图书。详细讲解了SpringCloud生态的各类组件,涵盖了服务治理组件Eureka、客户端负载均衡组件Ribbon、服务容错保护组件Hystrix、声明式服务调用组件Feign、API网关治理组件Zuul、分布式配置中心组件Config、消息总线组件Bus、消息驱动组件Stream、分布式服务跟踪组件Sleuth。这包含了我们在实施微服务中需要深入了解的各个轮子,是一本需要仔细研读,反复阅读的精品之作。

  最后,预祝永超在SpringCloud的学习和工作中再创佳绩,也希望读者朋友能够在阅读完《Spring Cloud微服务实战》后快速地搭建好实施微服务过程中的基础脚手架,并在未来工作中能够将团队的一些实践通过SpringCloud中国社区进行交流,为开源贡献自己的一份力量。

  朱清

  冰鉴科技信息技术部总监

  SpringCloud中国社区联合创始人

  2017.03.27

  

  推荐序三

  收到《Spring Cloud微服务实战》作者翟永超的邀请为这《Spring Cloud微服务实战》写推荐序,其实我是很谨慎的。抱着对读者负责、对技术严谨的态度,不能在完全不懂SpringCloud的基础上妄加评论。就像2009年的云计算和现在的大数据,“Bigdataisliketeenagesex:everyonetalksaboutit,nobodyreallyknowshowtodoit,everyonethinkseveryoneelseisdoingit,soeveryoneclaimstheyaredoingit.”所以概读了书中的内容,的确是一本好书,特别是在基于技术实践的阐述中又不失对“微服务化”理论层面的讲解以及发展演进过程的说明。

  结合在云计算行业中为大量企业级客户做的服务案例,“集中化”的系统架构确实在企业级客户中受到越来越多的挑战,随着业务变化对IT需求的不断增加,处于逐渐失控的状态。CIO们受到越来越大的挑战,希望做到数据驱动业务,那第一个阶段就要做去中心化的改造。如书中所阐述,“微服务化”其实并不是简单的技术革新,而是对团队组织,系统架构,系统研发,自动化测试、发布、运维都提出了一系列的变革要求。所以我觉得,不管是架构师、运维经理、研发主管还是CIO都可以从《Spring Cloud微服务实战》中有所收获。

  同样,阿里云的企业级中间件EDAS(基于阿里系的Dubbo开源项目)配合强大的飞天云平台与Docker服务的支持,在大中型企业客户中得到更多的验证,如森马服饰、来伊份、正佳广场、中石化的易派客电商平台等。与这些商业化的中间件产品相比,SpringCloud得到了更多热衷开源项目的人的支持,相信在有足够团队技术能力的保障下,也会取得越来越多成功案例。书如其人,值得认真拜读,我会推荐给更多的人,为翟永超点赞。

  李俊涛

  上海驻云科技执行总监


其他推荐