Spring Cloud微服务:入门、实战与进阶

《Spring Cloud微服务:入门、实战与进阶》

  • 出版社:机械工业出版社
  • ISBN:9787111627319
  • 版次:1
  • 商品编码:12635704
  • 品牌:机工出版
  • 包装:平装
  • 丛书名:云计算与虚拟化技术丛书
  • 开本:16开
  • 出版时间:2019-06-01
  • 用纸:胶版纸
  • 页数:400
基本介绍书籍目录点评信息
  • 书籍内容

    这是一部从技术原理、工程实践和进阶提升3个维度讲解Spring Cloud微服务架构与开发的著作。 作者在Spring Cloud微服务领域有丰富的工程实践经验,它将带领读者零基础入门Spring Cloud微服务,并快速掌握动手实践能力,*终进阶为Spring Cloud微服务领域的技术达人。 全书共21章,分为4个部分:
    第壹部分 准备篇(第1~2章) 首先对微服务和Spring Cloud的概念、优劣势、功能模块等做了整体性的介,然后演示了如何搭建Spring Cloud的开发环境,*后对Spring Boot做了详细的介绍。 第二部分 基础篇(第3~7章) 对Eureka 注册中心、客户端负载均衡 Ribbon、声明式 REST 客户端 Feign、Hystrix 服务容错处理、API 网关等Spring Cloud的重要模块的技术原理、配置、使用等做了详尽的讲解。
    第三部分 实战篇(第8~14章) 对微服务架构中的普遍问题给出了实战解决方案,包括选择配置中心、自研发配置中心、分布式跟踪、微服务安全认证、Spring Boot Admin 管理微服务、快速生成 API 文档等实用性内容。
    第四部分 高级篇(15-21) 重点讲解了Spring Cloud的扩展性的使用,比如API网关、微服务的缓存和存储、分布式事务解决方案、任务调度、分库分表,以及大量的生产实践经验等。

    编辑推荐

    适读人群 :Java开发工程师、 Spring Cloud用户和爱好者、微服务爱好者
    (1)作者是的Java技术专家和微服务技术专家,网站“猿天地”创始人 (2)从技术原理、工程实践、进阶提升3个维度详解Spring Cloud微服务的架构与开发。 (3)指导零基础读者快速入门并掌握工程实践能力,进阶为Spring Cloud微服务技术达人。

    作者简介

    尹吉欢(YinJiHuan)
    资深Java技术专家和微服务技术专家,在Spring Cloud和微服务方面有丰富的经验。喜欢写代码,研究技术,主要关注分布式、高并发、后端服务,座右铭是“简单的技术爱好者”。
    一直在上海从事Java服务端开发工作,前端也略有涉及。曾就职于鲁班软件,一起唱等互联网公司,目前就职于房产大数据公司房价网,担任技术经理,负责公司产品的开发和管理工作。
    2016年创办了自己的技术网站‘猿天地’,主要提供Java相关技术的分享和视频课程。
  • 赞誉
    前言
    第一部分 准备篇
    第1章 Spring Cloud 与微服务概述 2
    第2章 实战前的准备工作 8
    第二部分 基础篇
    第3章 Eureka 注册中心 32
    第4章 客户端负载均衡 Ribbon 52
    第5章 声明式REST客户端Feign 70
    第6章 Hystrix 服务容错处理 84
    第7章 API网关 103
    7.1 Zuul 简介 103
    7.2 使用 Zuul 构建微服务网关 104
    7.2.1 简单使用 104
    7.2.2 集成Eureka 105
    7.3 Zuul 路由配置 105
    7.4 Zuul过滤器讲解 106
    7.4.1 过滤器类型 106
    7.4.2 请求生命周期 107
    7.4.3 使用过滤器 108
    7.4.4 过滤器禁用 109
    7.4.5 过滤器中传递数据 110
    7.4.6 过滤器拦截请求 111
    7.4.7 过滤器中异常处理 113
    7.5 Zuul 容错和回退 115
    7.5.1 容错机制 115
    7.5.2 回退机制 116
    7.6 Zuul使用小经验 118
    7.6.1 /routes 端点 118
    7.6.2 /filters 端点 118
    7.6.3 文件上传 119
    7.6.4 请求响应信息输出 121
    7.6.5 Zuul自带的Debug功能 124
    7.7 Zuul 高可用 126
    7.8 本章小结 127
    第三部分 实战篇
    第8章 API 网关之Spring Cloud Gateway 130
    8.1 Spring Cloud Gateway介绍 130
    8.2 Spring Cloud Gateway工作原理 131
    8.3 Spring Cloud Gateway快速上手 131
    8.3.1 创建Gateway项目 131
    8.3.2 路由转发示例 132
    8.3.3 整合Eureka路由 133
    8.3.4 整合Eureka的默认路由 133
    8.4 Spring Cloud Gateway路由断言工厂 134
    8.4.1 路由断言工厂使用 134
    8.4.2 自定义路由断言工厂 136
    8.5 Spring Cloud Gateway过滤器工厂 137
    8.5.1 Spring Cloud Gateway过滤器工厂使用 137
    8.5.2 自定义Spring Cloud Gateway过滤器工厂 138
    8.6 全局过滤器 140
    8.7 实战案例 143
    8.7.1 限流实战 143
    8.7.2 熔断回退实战 145
    8.7.3 跨域实战 145
    8.7.4 统一异常处理 147
    8.7.5 重试机制 150
    8.8 本章小结 151
    第9章 自研分布式配置管理 152
    9.1 自研配置管理框架 Smconf 简介 152
    9.2 Smconf 工作原理 153
    9.3 Smconf 部署 154
    9.3.1 Mongodb 安装 154
    9.3.2 Zookeeper 安装 155
    9.3.3 Smconf Server 部署 156
    9.4 项目中集成 Smconf 157
    9.4.1 集成Smconf 157
    9.4.2 使用Smconf 158
    9.4.3 配置更新回调 159
    9.5 Smconf 详细使用 160
    9.5.1 源码编译问题 160
    9.5.2 后台账号管理 160
    9.5.3 REST API 161
    9.6 Smconf 源码解析 163
    9.6.1 Client启动 163
    9.6.2 启动加载配置 165
    9.6.3 配置修改推送原理 166
    9.7 本章小结 167
    第10章 分布式配置中心Apollo 168
    10.1 Apollo简介 168
    10.2 Apollo的核心功能点 168
    10.3 Apollo核心概念 170
    10.4 Apollo本地部署 171
    10.5 Apollo Portal管理后台使用 172
    10.6 Java中使用Apollo 174
    10.6.1 普通Java项目中使用 174
    10.6.2 Spring Boot中使用 177
    10.7 Apollo的架构设计 179
    10.7.1 Apollo架构设计介绍 179
    10.7.2 Apollo服务端设计 181
    10.7.3 Apollo客户端设计 188
    10.7.4 Apollo高可用设计 195
    10.8 本章小结 196
    第11章 Sleuth 服务跟踪 197
    11.1 Spring Cloud 集成 Sleuth 197
    11.2 整合 Logstash 198
    11.2.1 ELK 简介 198
    11.2.2 输出 JSON 格式日志 198
    11.3 整合 Zipkin 200
    11.3.1 Zipkin 数据收集服务 200
    11.3.2 项目集成 Zipkin 发送调用链数据 201
    11.3.3 抽样采集数据 203
    11.3.4 异步任务线程池定义 203
    11.3.5 TracingFilter 204
    11.3.6 监控本地方法 205
    11.3.7 过滤不想跟踪的请求 206
    11.3.8 用 RabbitMq 代替 Http 发送调用链数据 206
    11.3.9 用 Elasticsearch 存储调用链数据 207
    11.4 本章小结 208
    第12章 微服务之间调用的安全认证 209
    12.1 什么是 JWT 209
    12.2 创建统一的认证服务 210
    12.2.1 表结构 210
    12.2.2 JWT工具类封装 210
    12.2.3 认证接口 212
    12.3 服务提供方进行调用认证 212
    12.4 服务消费方申请 Token 214
    12.5 Feign 调用前统一申请 Token 传递到调用的服务中 216
    12.6 RestTemplate调用前统一申请 Token 传递到调用的服务中 217
    12.7 Zuul 中传递 Token 到路由的服务中 218
    12.8 本章小结 219
    第13章 Spring Boot Admin 220
    13.1 Spring Boot Admin 的使用方法 220
    13.1.1 创建 Spring Boot Admin项目 220
    13.1.2 将服务注册到 Spring Boot Admin 221
    13.1.3 监控内容介绍 223
    13.1.4 如何在 Admin 中查看各个服务的日志 225
    13.2 开启认证 226
    13.3 集成 Eureka 227
    13.4 监控服务 228
    13.4.1 邮件警报 228
    13.4.2 自定义钉钉警报 229
    13.5 本章小结 232
    第14章 服务的API文档管理 233
    14.1 Swagger 简介 233
    14.2 集成 Swagger 管理 API 文档 234
    14.2.1 项目中集成 Swagger 234
    14.2.2 使用 Swagger 生成文档 234
    14.2.3 在线测试接口 235
    14.3 Swagger 注解 236
    14.4 Eureka 控制台快速查看 Swagger 文档 240
    14.5 请求认证 240
    14.6 Zuul中聚合多个服务Swagger 241
    14.7 本章小结 242
    第四部分 高级篇
    第15章 API 网关扩展 244
    15.1 用户认证 244
    15.1.1 动态管理不需要拦截的 API 请求 244
    15.1.2 创建认证的用户服务 246
    15.1.3 路由之前的认证 247
    15.1.4 向下游微服务中传递认证之后的用户信息 248
    15.1.5 内部服务间的用户信息传递 248
    15.2 服务限流 250
    15.2.1 限流算法 250
    15.2.2 单节点限流 251
    15.2.3 集群限流 255
    15.2.4 具体服务限流 258
    15.2.5 具体接口限流 258
    15.3 服务降级 262
    15.4 灰度发布 264
    15.4.1 原理讲解 264
    15.4.2 根据用户做灰度发布 265
    15.4.3 根据 IP 做灰度发布 268
    15.5 本章小结 268
    第16章 微服务之缓存 269
    16.1 Guava Cache 本地缓存 269
    16.1.1 Guava Cache 简介 269
    16.1.2 代码示例 270
    16.1.3 回收策略 270
    16.2 Redis 缓存 271
    16.2.1 用 Redistemplate 操作 Redis 271
    16.2.2 用 Repository 操作 Redis 272
    16.2.3 Spring Cache 缓存数据 274
    16.2.4 缓存异常处理 278
    16.2.5 自定义缓存工具类 279
    16.3 防止缓存穿透方案 282
    16.3.1 什么是缓存穿透 282
    16.3.2 缓存穿透的危害 282
    16.3.3 解决方案 282
    16.3.4 布隆过滤器介绍 283
    16.3.5 代码示例 283
    16.4 防止缓存雪崩方案 284
    16.4.1 什么是缓存雪崩 284
    16.4.2 缓存雪崩的危害 284
    16.4.3 解决方案 284
    16.4.4 代码示例 285
    16.4.5 分布式锁方式 285
    16.5 本章小结 286
    第17章 微服务之存储 287
    17.1 存储选型 287
    17.2 Mongodb 288
    17.2.1 集成 Spring Data Mongodb 288
    17.2.2 添加数据操作 288
    17.2.3 索引使用 290
    17.2.4 修改数据操作 291
    17.2.5 删除数据操作 293
    17.2.6 查询数据操作 294
    17.2.7 GridFS 操作 295
    17.2.8 用 Repository方式操作数据 296
    17.2.9 自增 ID 实现 300
    17.2.10 批量更新扩展 303
    17.3 Mysql 304
    17.3.1 集成 Spring Jdbc-Template 304
    17.3.2 JdbcTemplate 代码示例 305
    17.3.3 封装 JdbcTemplate 操作 Mysql 更简单 305
    17.3.4 扩展 JdbcTemplate 使用方式 306
    17.3.5 常见问题 310
    17.4 Elasticsearch 312
    17.4.1 集成 Spring Data Elasticsearch 312
    17.4.2 Repository 示例 312
    17.4.3 ElasticsearchTemplate 示例 315
    17.4.4 索引构建方式 318
    17.5 本章小结 319
    第18章 微服务之分布式事务解决方案 320
    18.1 两阶段型 320
    18.2 TCC 补偿型 321
    18.3 最终一致性 321
    18.3.1 原理讲解 321
    18.3.2 创建可靠性消息服务 323
    18.3.3 消息存储表设计 324
    18.3.4 提供服务接口 325
    18.3.5 创建消息发送系统 329
    18.3.6 消费消息逻辑 332
    18.3.7 消息管理系统 335
    18.4 最大努力通知型事务 335
    18.5 本章小结 335
    第19章 分布式任务调度 336
    19.1 Elastic-Job 336
    19.1.1 Elastic-Job 介绍 336
    19.1.2 任务调度目前存在的问题 336
    19.1.3 为什么选择 Elastic-Job 337
    19.2 快速集成 338
    19.3 任务使用 339
    19.3.1 简单任务 339
    19.3.2 数据流任务 340
    19.3.3 脚本任务 340
    19.4 配置参数讲解 341
    19.4.1 注册中心配置 341
    19.4.2 作业配置 342
    19.4.3 dataflow 独有配置 343
    19.4.4 script独有配置 343
    19.5 多节点并行调度 344
    19.5.1 分片概念 344
    19.5.2 任务节点分片策略 344
    19.5.3 业务数据分片处理 345
    19.6 事件追踪 347
    19.7 扩展功能 349
    19.7.1 自定义监听器 349
    19.7.2 定义异常处理 349
    19.8 运维平台 350
    19.8.1 功能列表 350
    19.8.2 部署运维平台 351
    19.8.3 运维平台使用 351
    19.9 使用经验分享 355
    19.9.1 任务的划分和监控 355
    19.9.2 任务的扩展性和节点数量 355
    19.9.3 任务的重复执行 355
    19.9.4 overwrite 覆盖问题 356
    19.9.5 流水式任务 356
    19.10 本章小结 357
    第20章 分库分表解决方案 358
    20.1 Sharding-JDBC 358
    20.1.1 介绍 358
    20.1.2 功能列表 359
    20.1.3 相关概念 359
    20.2 快速集成 360
    20.3 读写分离实战 362
    20.3.1 准备数据 362
    20.3.2 配置读写分离 363
    20.3.3 验证读从库 363
    20.3.4 验证写主库 365
    20.3.5 Hint 强制路由主库 366
    20.4 分库分表实战 367
    20.4.1 常用分片算法 367
    20.4.2 使用分片算法 368
    20.4.3 不分库只分表实战 368
    20.4.4 既分库又分表实战 372
    20.5 分布式主键 375
    20.6 本章小结 377
    第21章 最佳生产实践经验 378
    21.1 开发环境和测试环境共用Eureka 378
    21.2 Swagger和Actuator访问进行权限控制 379
    21.3 Spring Boot Admin监控被保护的服务 380
    21.4 Apollo配置中心简化版搭建分享 380
    21.5 Apollo使用小经验 382
    21.5.1 公共配置 382
    21.5.2 账号权限 383
    21.5.3 环境配置和项目配置 385
    21.6 Apollo动态调整日志级别 385
    21.7 Apollo存储加密 387
    21.8 扩展Apollo支持存储加解密 390
    21.9 Apollo结合Zuul实现动态路由 391
    21.10 Apollo整合Archaius 393
    21.11 Elastic-Job的Spring-Boot-Starter封装 394
    21.12 Spring Boot中Mongodb多数据源封装 396
    21.13 Zuul中对API进行加解密 398
    21.14 本章小结 400
  • 精彩书评

    Spring Cloud是开发分布式系统的“全家桶”,它实现了很多分布式应用中的“套路”。目前Spring Cloud正被越来越多的企业用于生产。本书知识体系非常全面,涵盖了微服务、Spring Cloud、分布式事务、缓存、存储等话题,让读者能够快速上手构建自己的分布式系统,值得一读。
    ——《Spring Cloud与Docker微服务架构实战》作者 周立
    Spring Cloud 对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者足够的资金投入去开发自己的分布式系统基础设施,使用 Spring Cloud 一站式解决方案能在企业从容应对业务发展的同时大大减少开发成本。本书详细介绍了 Spring Cloud 各模块的使用,并且对 Spring Cloud 没有涉及的安全认证、 服务限流、一致性事务等解决方案进行了详细讲解,我相信开发者在读完本书后会快速掌握 Spring Cloud 的相关知识 。
    ——海科融通研发中心副总监 张强(纯洁的微笑)
    架构的演进永无止境。2000年WebService出现后,SOA被誉为下一代Web服务的基础架构,已经成为计算机信息领域的一个新的发展方向。SOA经过十几年的发展,逐渐趋于成熟。微服务架构这一术语在2012年横空出世,用于描述一种特定的软件设计方法,即以若干组可独立部署的服务的方式进行软件应用系统的设计。每个小型服务都运行在自己的进程中。这些服务围绕业务、功能进行构建,并通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。
    容器及其相关技术的快速发展加速了微服务架构的成熟和普及,同时也涌现出一批新的微服务落地实施的解决方案,Spring Cloud便是其中的佼佼者。本书内容全面详尽,文字浅显易懂。如果你想快速学习和实战Spring Cloud,本书是一个不错的选择。
    ——红瓦科技CTO 刘夕波
    本书行文流畅,由浅入深。不仅介绍了分布式开发的市场布局,更是对Spring Cloud进行了一次全方位的实践与对话。本书结合作者多年的开发和项目管理经验,为读者徐徐展开了一幅优雅的技术画卷。
    ——中科韬睿技术总监、《轻松搞定Extjs》《Android自定义组件开发详解》作者 李赞红
    本书很好地将微服务中的重要话题Spring Cloud与其他开源组件融合起来,这其中也包括了Elastic-Job和Sharding-JDBC。作为这两款开源产品的作者之一,我很高兴地看到它们已逐渐走进技术人员的视野中。希望读者阅读本书后,可以快速熟悉当今微服务技术栈的整体结构,并提升技术选型的能力。
    ——京东金融数据研发负责人 张亮
    微服务日趋流行,随着部署数量的不断增长,如何管理如此众多的微服务就成为一个亟待解决的问题。本书根植于项目中的实践经验,很多代码都是作者在实际项目中的提炼,并且以通俗易懂的方式描述了Spring Cloud管理微服务的方法。读者阅读本书后亲自实践,定能获得累累的收获。
    ——房价网CTO 虞继恩
    本书以作者真正的线上实战示例为基础,详细介绍了其对Spring Cloud的理解和应用。Spring Cloud虽然被称为微服务的“全家桶”方案,但在实际使用时,我们依然会面临各种问题需要去解决。本书的可贵之处在于,作者在讲解Spring Cloud自身内容的同时也深入分享了一些实战中的问题、解决思路以及扩展内容,这些都是非常珍贵的实战经验,所以我推荐正在使用Spring Cloud的朋友们阅读本书。
    ——spring4all社区发起人、《Spring Cloud微服务实战》作者 翟永超
微信公众号

热门文章

更多