猜你喜欢
Spring Cloud微服务实战

Spring Cloud微服务实战

书籍作者:翟永超 ISBN:9787121313011
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7161
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

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

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

编辑推荐

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

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

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

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

前言

  推荐序一

  我和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得到了更多热衷开源项目的人的支持,相信在有足够团队技术能力的保障下,也会取得越来越多成功案例。书如其人,值得认真拜读,我会推荐给更多的人,为翟永超点赞。

  李俊涛

  上海驻云科技执行总监

目录

第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

第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