描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121399732
1.Spring Cloud Alibba创始人倾力打造
2.阿里云智能资深技术专家司徒放(姬风)、 阿里云智能高级技术专家张乎兴、 Spring Cloud Alibba项目架构师小马哥(mercyblitz)、 阿里云智能高级技术专家彭文杰、云集架构师冷冷、Nepxion开源社区创始人任浩军联合力荐
3.理论与实践相结合,核心知识点辅以案例讲解
本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibaba和 Netflix组件,并且剖析Spring Cloud对流处理、批处理,以及目前业界流行的Serverless的支持。在介绍各部分内容时,本书将理论与实践相结合,对每个核心知识点给出了具体的案例应用,以帮助读者掌握核心组件的设计理念。
第1章 Spring Cloud生态 1
1.1 Spring Cloud 基础:Spring Boot概述 1
1.2 Spring Boot核心特性 3
1.2.1 Web服务器:WebServer 3
1.2.2 条件注解:@ConditionalOnXX 7
1.2.3 工厂加载机制 10
1.2.4 配置加载机制 12
1.2.5 Spring Boot Actuator 15
1.3 Spring Cloud 概述 17
1.3.1 Spring Cloud诞生背景 17
1.3.2 Netflix OSS 19
1.3.3 Spring Cloud项目 20
1.3.4 Spring Cloud 版本 21
1.3.5 Spring Cloud 最新动态 23
第2章 服务注册与服务发现 26
2.1 微服务架构演进 26
2.2 使用Alibaba Nacos体验第一个Spring Cloud微服务应用 29
2.2.1 下载并启动Nacos Server 30
2.2.2 启动 Nacos Discovery Provider 进行服务注册 32
2.2.3 启动 Nacos Discovery Consumer 进行服务发现 33
2.3 使用Netflix Eureka替换Alibaba Nacos注册中心 36
2.3.1 启动Eureka Server 37
2.3.2 启动 Eureka Discovery Provider 进行服务注册 38
2.3.3 启动 Nacos Discovery Consumer 进行服务发现 39
2.4 Spring Cloud 统一服务注册/发现编程模型 40
2.4.1 DiscoveryClient和ReactiveDiscoveryClient 40
2.4.2 ServiceInstance和Registration 44
2.4.3 ServiceRegistry 48
2.4.4 ServiceRegistryEndpoint 50
2.5 双注册双订阅模式 51
2.5.1 双注册双订阅模式分析 51
2.5.2 案例:使用双注册双订阅模式迁移Eureka注册中心到Nacos注册中心 54
第3章 负载均衡与服务调用 57
3.1 负载均衡原理 57
3.2 Spring Cloud LoadBalancer负载均衡组件 59
3.3 Netflix Ribbon负载均衡 74
3.3.1 RibbonLoadBalancerClient 74
3.3.2 RibbonServer和Server 79
3.3.3 ServerIntrospector 82
3.3.4 ILoadBalancer 84
3.3.5 ServerList 87
3.3.6 ServerListUpdater 90
3.3.7 ServerStats 92
3.3.8 Netflix Ribbon配置项总结 94
3.3.9 Ribbon缓存时间 97
3.4 Dubbo LoadBalance 负载均衡 98
3.5 OpenFeign:声明式Rest客户端 100
3.5.1 OpenFeign概述 100
3.5.2 OpenFeign 对 JAX-RS 的支持 102
3.5.3 OpenFeign 底层执行原理 103
3.6 Dubbo Spring Cloud :服务调用的新选择 105
3.7 再谈路由和负载均衡 111
3.8 案例:应用流量控制 112
3.8.1 流量控制可以解决的业务场景 113
3.8.2 使用 Netflix Ribbon 完成应用灰度发布 115
第4章 配置管理 119
4.1 配置中心背景概述 119
4.2 Spring/Spring Boot 与配置 120
4.3 Spring Cloud与配置 122
4.3.1 使用Alibaba Nacos体验配置的获取以及动态刷新 123
4.3.2 从Spring Cloud 配置中心获取配置原理 125
4.3.3 Spring Cloud配置动态刷新 135
4.4 Spring Cloud Config Server/Client 151
4.4.1 Spring Cloud Config Server 151
4.4.2 Spring Cloud Config Client 165
4.4.3 Spring Cloud Config Client 与 Service Discovery 整合 171
4.4.4 Spring Cloud Config 配置动态更新 174
4.5 再谈配置动态刷新 175
4.6 案例:Spring Cloud应用流量控制策略动态生效 179
第5章 熔断器 184
5.1 熔断器模式概述 184
5.2 手动实现一个断路器 186
5.2.1 定义 State 枚举和 Counter 计数器类 186
5.2.2 定义 CircuitBreaker 类 188
5.2.3 使用 CircuitBreaker 进行场景测试 191
5.3 Spring Cloud Circuit Breaker 技术演进 193
5.4 Alibaba Sentinel 199
5.4.1 Sentinel的核心概述 199
5.4.2 Spring Cloud Alibaba Sentinel 204
5.4.3 Sentinel 与 OpenFeign和RestTemplate 207
5.4.4 Sentinel限流与Dashboard 211
5.4.5 Sentinel 高级特性 215
5.5 Netflix Hystrix 219
5.5.1 Hystrix核心概述 219
5.5.2 Spring Cloud Netflix Hystrix 225
5.5.3 Hystrix限流与Dashboard 227
5.5.4 Hystrix 高级特性 231
5.6 Resilience4j 235
5.6.1 Resilience4j 体验 236
5.6.2 Spring Cloud Resilience4j 241
5.6.3 Resilience4j 高级特性 244
5.7 案例:使用 Sentinel 保护应用,防止服务雪崩 248
第6章 Spring生态消息驱动 253
6.1 消息中间件概述 254
6.2 Spring与消息 257
6.2.1 消息编程模型的统一 257
6.2.2 消息发送和订阅 258
6.2.3 WebSocket 265
6.2.4 案例:使用spring-messaging处理WebSocket 268
6.3 Spring Integration 271
6.3.1 Spring Integration 核心组件概述 272
6.3.2 Spring Integration核心组件使用 275
6.4 Spring Cloud Stream 277
6.4.1 使用Spring Cloud Stream发送和接收消息 277
6.4.2 理解 Binder 和 Binding 280
6.4.3 深入理解Spring Cloud Stream 282
6.4.4 高级特性 284
第7章 消息总线 295
7.1 消息总线概述 295
7.2 深入理解Spring Cloud Bus 296
7.2.1 Spring Cloud Bus的使用 297
7.2.2 Spring Cloud Bus的原理 300
7.2.3 Spring Cloud Bus 事件 302
7.2.4 Spring Cloud Bus 源码分析 305
7.3 案例:使用Spring Cloud Bus完成多节点配置动态刷新 309
第8章 Spring Cloud Data Flow 311
8.1 批处理/流处理概述 312
8.2 流处理案例:信用卡反欺诈系统 315
8.3 批处理案例:统计GitHub仓库的各项指标数据 323
8.4 Spring Cloud Data Flow批处理任务组合 331
8.5 Spring Cloud Data Flow Shell 335
8.6 Spring Cloud Skipper 337
8.7 Spring Cloud Deployer 341
8.7.1 TaskLauncher 接口 342
8.7.2 AppDeployer 接口 344
8.7.3 LocalAppDeployer 348
8.8 Spring Cloud Task 349
8.8.1 体验Spring Cloud Task 349
8.8.2 深入理解Spring Cloud Task 351
8.8.3 Spring Cloud Task Batch 354
8.9 Spring Batch 358
8.9.1 Spring Batch 核心组件 358
8.9.2 案例:使用 Spring Batch 完成便利店每日账单统计 361
第9章 网关 366
9.1 API网关概述 366
9.2 Netflix Zuul 368
9.3 非阻塞式的Spring Cloud Gateway 371
9.4 Route路由信息 376
9.5 Predicate机制 377
9.5.1 PredicateDefinition和AsyncPredicate 377
9.5.2 RoutePredicateFactory 378
9.5.3 内置RoutePredicateFactory 381
9.6 Filter机制 382
9.6.1 FilterDefinition和GatewayFilter 382
9.6.2 GlobalFilter 386
9.6.3 内置 GatewayFilterFactory 387
9.6.4 网关内置的GlobalFilter 390
9.7 整合注册中心和配置中心 391
9.8 GatewayControllerEndpoint 397
9.9 案例:使用Spring Cloud Gateway进行路由转发 398
第10章 Spring Cloud与Serverless 401
10.1 Serverless 401
10.2 Java Function 403
10.3 Spring Cloud Function 405
10.4 Spring Cloud Function与Spring生态的整合 411
10.4.1 Spring Cloud Function与Spring Web/WebFlux 412
10.4.2 Spring Cloud Function 与 Spring Cloud Stream 420
10.4.3 Spring Cloud Function 与 Spring Cloud Task 427
10.5 案例:使用GCP Cloud Functions体验Spring Cloud Function 430
前 言
据O’Reilly在2020年7月15日公布的企业微服务市场现状的调研数据来看,有77%的组织采用了微服务,其中,92%的组织成功地使用了微服务。Spring Cloud和Apache Dubbo作为非常流行的两款微服务开发框架,深受开发者们关注。笔者编写本书的目的是让读者透彻理解Spring Cloud 这套开发框架。
2018年7月,笔者有幸参与了Spring Cloud Alibaba开源项目的建设,并成为该项目的创始人之一。在随后的日子里,笔者经历了Spring Cloud Alibaba进入Spring Cloud孵化器、毕业、Spring Cloud 官网上线 Spring Cloud Alibaba、Spring Initializr 上线 Spring Cloud Alibaba 组件、GitHub Star 数超过15000个、Used By 数超过7000个、企业使用数超过1000个等诸多具有里程碑意义的事件。在整个过程中,笔者有幸与Spring Cloud的创始人Spencer Gibb交流过Spring Cloud的一些设计理念,还通过与Spring首席布道师Josh Long一起制作Bootiful Podcast视频来介绍Spring Cloud Alibaba。这些都是非常难忘的经历。
在建设 Spring Cloud Alibaba 的过程中,笔者对Spring Cloud整个生态的知识点进行了深入学习,发现Spring Cloud 生态体系其实非常庞大,大家平时可能更多地关注于服务注册/发现、配置管理、熔断器和网关这4大方面,但实际上Spring Cloud还包括消息、消息总线、任务调度、应用部署、Serverless、CI/CD 等诸多领域的知识。
本书共分10章,主要介绍Spring Cloud各个核心组件的设计原理,以及目前流行的Spring Cloud Alibaba和 Netflix组件,并且剖析Spring Cloud对流处理、批处理,以及目前业界流行的 Serverless 的支持。在介绍各部分内容时,本书将理论与实践相结合,对每个核心知识点都给出了具体的案例应用,以帮助读者掌握核心组件的设计理念。
笔者一开始是不打算写这本书的,因为市面上已经有不少与Spring Cloud 相关的书籍,再编写一本可能也没有太大意义。有了 Spring Cloud Alibaba 的这段经历后,笔者发现市面上的那些 Spring Cloud 书籍对 Spring Cloud生态的介绍还不够详细,而且涉及的Spring Cloud 版本也比较老(本书所用的版本是Spring Cloud Hoxton.RELEASE),所以想把对Spring Cloud的理解写出来与大家分享。
由于笔者平时工作非常忙,又遇到新房装修的事情,只能每天早起、晚睡挤出时间来编写,所以导致本书历时近一年时间才完成。
因笔者能力有限,书中难免有错漏之处,恳请读者批评、指正。对本书的意见和建议,读者可以通过电子邮件发送给笔者,或者在本书对应的GitHub代码仓库上提交issue。本书所有的示例代码均已发布到GitHub官网的“fangjian0423/ deep-in-spring-cloud-samples”页面下,每个项目的说明文档(README)都注明了对应的章节。
本书能顺利出版,首先要感谢笔者的老板和同事,是他们让笔者有机会参与 Spring Cloud Alibaba 开源项目的建设。其次要感谢笔者的妻子,是她的鼓励让笔者有动力编写这本书,而且她在笔者写作期间分担了不少家庭事务,让笔者有更多的时间投入写作。最后要感谢电子工业出版社的编辑李利健和她的同事们对本书提出的修改建议。
作 者
推荐序1
在读完本书后,我觉得尤其值得向 Spring Cloud 的开发者和技术爱好者推荐,书中技术点分析翔实,层次清晰,完全可用于Spring Cloud 微服务实战指导。建议所有打算将 Spring Cloud 用于开发的朋友仔细阅读本书。
司徒放(姬风)
阿里云智能资深技术专家
阿里云智能云原生应用PaaS与Serverless产品线负责人
推荐序2
本书内容紧跟技术前沿,深入浅出,每一章都配有相应的实操案列,基于Spring Boot 2.x,结合 Spring Cloud Alibba 所有的核心组件,将 Spring Cloud 的实现原理抽丝剥茧地为大家一一梳理。书中包括的Spring Cloud Data Flow和Spring Cloud Function相关内容是市面上其他同类书较少涉及的,这两部分内容展示了 Spring 社区未来对大数据和Serverless 两个重要领域的布局,也表明了作者对 Spring 技术发展趋势的判断。建议想了解 Spring Cloud,以及对其内部实现感兴趣的人阅读本书。
张乎兴
阿里云智能高级技术专家,Apache Member,Apache Dubbo/Tomcat PMC Member
推荐序3
本书从宏观和微观的视角深入讨论Spring Cloud 架构的发展,以及各个组件之间的特性和联系。所以,本书不仅适合 Spring Cloud 初探者,也可以为资深从业人员提供参考。
小马哥(mercyblitz)
Apache Dubbo PMC、Spring Cloud Alibba项目架构师
推荐序4
洛夜作为一个纯粹的技术男,导致他只能输出干货。对于他的演讲,我也反馈过很多次,因为干货太多、信息量太大很容易让人犯困。我非常希望他演讲时能讲几个笑话,但是他一直没有做到。这本《深入理解Spring Cloud与实战》凝结了他所有的心血,还是一如既往地全是干货。可以说这是你学习Spring Cloud Alibba的必备良书,有此一本足矣。
彭文杰
阿里云智能高级技术专家,微课网前CTO,卫生部考试系统前总架构师
推荐序5
从《深入理解Spring Cloud与实战》的内容可以看出,作为 Spring Cloud Alibba 项目负责人,方剑对Spring Cloud整套技术体系具有深刻的认知,对上下游生态组件的使用具有很强的把控能力。本书内容既包含基础的入门实践,也有对服务注册发现、熔断限流等原
理的剖析和开发实践。无论你是新手,还是有经验的工程师,本书都是值得一读的。
——冷冷 云集架构师,pig负责人
推荐序6
《深入理解Spring Cloud与实战》一书从Spring Boot和Spring Cloud的基本概念和特性展开,紧密结合企业级落地实践,并围绕时下非常火爆的Spring Cloud Alibba框架进行详细阐述,然后佐以翔实的示例。全书内容丰富、有趣而不枯燥。一言以蔽之,此书将给读者呈现下一代Spring Cloud框架的演进面貌。
——任浩军 Nepxion开源社区创始人
评论
还没有评论。