书海网短评:
适读人群:Java开发工程师、SpringCloud用户和爱好者、微服务爱好者(1)作者是的Java技术专家和微服务技术专家,网站“猿天地”创始人(2)从技术原理、工程实践、进阶提升3个维度详解SpringC
(1)作者是的Java技术专家和微服务技术专家,网站“猿天地”创始人
(2)从技术原理、工程实践、进阶提升3个维度详解SpringCloud微服务的架构与开发。
(3)指导零基础读者快速入门并掌握工程实践能力,进阶为SpringCloud微服务技术达人。
内容简介
这是一部从技术原理、工程实践和进阶提升3个维度讲解SpringCloud微服务架构与开发的著作。
作者在SpringCloud微服务领域有丰富的工程实践经验,它将带领读者零基础入门SpringCloud微服务,并快速掌握动手实践能力,*终进阶为SpringCloud微服务领域的技术达人。
《Spring Cloud微服务:入门、实战与进阶》共21章,分为4个部分:
第壹部分准备篇(第1~2章)
首先对微服务和SpringCloud的概念、优劣势、功能模块等做了整体性的介,然后演示了如何搭建SpringCloud的开发环境,*后对SpringBoot做了详细的介绍。
第二部分基础篇(第3~7章)
对Eureka注册中心、客户端负载均衡Ribbon、声明式REST客户端Feign、Hystrix服务容错处理、API网关等SpringCloud的重要模块的技术原理、配置、使用等做了详尽的讲解。
第三部分实战篇(第8~14章)
对微服务架构中的普遍问题给出了实战解决方案,包括选择配置中心、自研发配置中心、分布式跟踪、微服务安全认证、SpringBootAdmin管理微服务、快速生成API文档等实用性内容。
第四部分高级篇(15-21)
重点讲解了SpringCloud的扩展性的使用,比如API网关、微服务的缓存和存储、分布式事务解决方案、任务调度、分库分表,以及大量的生产实践经验等。
尹吉欢(YinJiHuan)
资深Java技术专家和微服务技术专家,在SpringCloud和微服务方面有丰富的经验。喜欢写代码,研究技术,主要关注分布式、高并发、后端服务,座右铭是“简单的技术爱好者”。
一直在上海从事Java服务端开发工作,前端也略有涉及。曾就职于鲁班软件,一起唱等互联网公司,目前就职于房产大数据公司房价网,担任技术经理,负责公司产品的开发和管理工作。
2016年创办了自己的技术网站‘猿天地’,主要提供Java相关技术的分享和视频课程。
SpringCloud是开发分布式系统的“全家桶”,它实现了很多分布式应用中的“套路”。目前SpringCloud正被越来越多的企业用于生产。《Spring Cloud微服务:入门、实战与进阶》知识体系非常全面,涵盖了微服务、SpringCloud、分布式事务、缓存、存储等话题,让读者能够快速上手构建自己的分布式系统,值得一读。
——《SpringCloud与Docker微服务架构实战》作者 周立
SpringCloud对于中小型互联网公司来说是一种福音,因为这类公司往往没有实力或者足够的资金投入去开发自己的分布式系统基础设施,使用SpringCloud一站式解决方案能在企业从容应对业务发展的同时大大减少开发成本。《Spring Cloud微服务:入门、实战与进阶》详细介绍了SpringCloud各模块的使用,并且对SpringCloud没有涉及的安全认证、服务限流、一致性事务等解决方案进行了详细讲解,我相信开发者在读完《Spring Cloud微服务:入门、实战与进阶》后会快速掌握SpringCloud的相关知识。
——海科融通研发中心副总监 张强(纯洁的微笑)
架构的演进永无止境。2000年WebService出现后,SOA被誉为下一代Web服务的基础架构,已经成为计算机信息领域的一个新的发展方向。SOA经过十几年的发展,逐渐趋于成熟。微服务架构这一术语在2012年横空出世,用于描述一种特定的软件设计方法,即以若干组可独立部署的服务的方式进行软件应用系统的设计。每个小型服务都运行在自己的进程中。这些服务围绕业务、功能进行构建,并通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。
容器及其相关技术的快速发展加速了微服务架构的成熟和普及,同时也涌现出一批新的微服务落地实施的解决方案,SpringCloud便是其中的佼佼者。《Spring Cloud微服务:入门、实战与进阶》内容全面详尽,文字浅显易懂。如果你想快速学习和实战SpringCloud,《Spring Cloud微服务:入门、实战与进阶》是一个不错的选择。
——红瓦科技CTO 刘夕波
《Spring Cloud微服务:入门、实战与进阶》行文流畅,由浅入深。不仅介绍了分布式开发的市场布局,更是对SpringCloud进行了一次全方位的实践与对话。《Spring Cloud微服务:入门、实战与进阶》结合作者多年的开发和项目管理经验,为读者徐徐展开了一幅优雅的技术画卷。
——中科韬睿技术总监、《轻松搞定Extjs》《Android自定义组件开发详解》作者 李赞红
《Spring Cloud微服务:入门、实战与进阶》很好地将微服务中的重要话题SpringCloud与其他开源组件融合起来,这其中也包括了Elastic-Job和Sharding-JDBC。作为这两款开源产品的作者之一,我很高兴地看到它们已逐渐走进技术人员的视野中。希望读者阅读《Spring Cloud微服务:入门、实战与进阶》后,可以快速熟悉当今微服务技术栈的整体结构,并提升技术选型的能力。
——京东金融数据研发负责人 张亮
微服务日趋流行,随着部署数量的不断增长,如何管理如此众多的微服务就成为一个亟待解决的问题。《Spring Cloud微服务:入门、实战与进阶》根植于项目中的实践经验,很多代码都是作者在实际项目中的提炼,并且以通俗易懂的方式描述了SpringCloud管理微服务的方法。读者阅读《Spring Cloud微服务:入门、实战与进阶》后亲自实践,定能获得累累的收获。
——房价网CTO 虞继恩
《Spring Cloud微服务:入门、实战与进阶》以作者真正的线上实战示例为基础,详细介绍了其对SpringCloud的理解和应用。SpringCloud虽然被称为微服务的“全家桶”方案,但在实际使用时,我们依然会面临各种问题需要去解决。《Spring Cloud微服务:入门、实战与进阶》的可贵之处在于,作者在讲解SpringCloud自身内容的同时也深入分享了一些实战中的问题、解决思路以及扩展内容,这些都是非常珍贵的实战经验,所以我推荐正在使用SpringCloud的朋友们阅读《Spring Cloud微服务:入门、实战与进阶》。
——spring4all社区发起人、《SpringCloud微服务实战》作者 翟永超
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 Mongodb288
17.2.1 集成SpringDataMongodb288
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 Mysql304
17.3.1 集成SpringJdbc-Template304
17.3.2 JdbcTemplate代码示例305
17.3.3 封装JdbcTemplate操作Mysql更简单305
17.3.4 扩展JdbcTemplate使用方式306
17.3.5 常见问题310
17.4 Elasticsearch312
17.4.1 集成SpringDataElasticsearch312
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-Job336
19.1.1 Elastic-Job介绍336
19.1.2 任务调度目前存在的问题336
19.1.3 为什么选择Elastic-Job337
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-JDBC358
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 开发环境和测试环境共用Eureka378
21.2 Swagger和Actuator访问进行权限控制379
21.3 SpringBootAdmin监控被保护的服务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整合Archaius393
21.11 Elastic-Job的Spring-Boot-Starter封装394
21.12 SpringBoot中Mongodb多数据源封装396
21.13 Zuul中对API进行加解密398
21.14 本章小结400
为什么要写这《Spring Cloud微服务:入门、实战与进阶》
在互联网时代,互联网产品的最大特点就是需要快速发布新功能,支持高并发和大数据。传统的架构已经慢慢不能支撑互联网业务的发展,这时微服务架构便顺势而出。
最开始,国内很多公司都是基于阿里开源的Dubbo框架来构建微服务的,由于阿里内部的原因,Dubbo已经几年没进行维护了,不过在2018年,阿里宣布重新开始维护。反观SpringCloud,其在国外发展得很好,但在国内,由于Dubbo的存在导致SpringCloud鲜为人知。不过从2017年开始,SpringCloud在国内的普及度逐渐变高,很多中小型互联网公司都开始拥抱SpringCloud。
SpringCloud提供一整套微服务的解决方案,基于SpringBoot可实现快速集成,且开发效率很高,堪称中小型互联网公司微服务开发的福音。而且SpringCloud发布新功能的频率非常高,目前仅大版本就有很多个,同时还有庞大的社区支持,照这样的发展势头,我相信未来几年国内互联网公司的公布式系统开发一定是SpringCloud的天下。
我一直在使用SpringBoot、SpringData等一系列框架来进行开发,作为一名SpringCloud的忠实粉丝,自然希望能够有更多开发者参与进来,于是自己坚持写SpringCloud相关的文章,并且将文章涉及的代码整理好放在GitHub上面进行分享。在这个过程中我得到了很多开发者的关注,他们向我咨询一些微服务方面的问题,我也会在研究和解决了一些问题后,通过文章分享给各位开发者。在有幸结识了华章的杨老师后,我决定将这些文章整理成书,目的是想推广SpringCloud在国内的使用和发展,并分享自己在微服务领域的一些小经验。
读者对象
Java开发工程师
SpringCloud用户和爱好者
微服务爱好者
《Spring Cloud微服务:入门、实战与进阶》的读者对象主要是Java开发人员,特别是工作1~3年的开发人员,这个阶段的开发人员资历尚浅,需要一些实用的技术和经验来提升自己,SpringCloud正是一门符合提升要求的技术。因为它现在正处于快速发展的阶段,越来越多的企业也开始使用SpringCloud。相信在不久的将来,熟练掌握SpringCloud将会成为Java开发人员面试的门槛。
《Spring Cloud微服务:入门、实战与进阶》内容
《Spring Cloud微服务:入门、实战与进阶》主打的是与微服务相关的实战体系。第一部分是准备篇,可以帮助各位读者了解微服务以及SpringCloud的概念。第二部分是基础篇,会对SpringCloud中常用的模块进行详细讲解。第三部分是实战篇,开始实战性质的内容讲解,包括选择配置中心、自研发配置中心、分布式跟踪、微服务安全认证、SpringBootAdmin管理微服务、快速生成API文档等实用内容。
最后一部分是高级篇,也是难度比较大的一部分,主要内容如下:
对Zuul进行扩展,即对认证、限流、降级、灰度发布等内容进行讲解。
讲解缓存框架的使用,解决缓存穿透、缓存雪崩等问题。
数据存储的选型,比如对MySQL、MongoDB、ElasticSearch的使用进行讲解。
分布式事务的解决方案,重点是利用消息队列开发可靠性消息服务来实现数据的最终一致性。
讲解分布式任务调度框架Elastic-Job。
讲解分库分表的解决方案Sharding-JDBC。
勘误和支持
由于水平有限,书中难免会出现一些不准确的地方,恳请读者批评指正。为此,特贴出《Spring Cloud微服务:入门、实战与进阶》源码地址https://github.com/yinjihuan/spring-cloud。如果你遇到任何问题或者有其他宝贵意见,欢迎发送邮件至邮箱jihuan900@126.com,期待能够得到你们的真挚反馈。
致谢
首先要感谢SpringCloud的各位开发人员,感谢你们开发出这样一个好用的框架。
感谢机械工业出版社华章公司的杨福川老师,是你在这半年多的时间中始终支持我的写作,正因为有你的鼓励和帮助,我才能顺利完成全部书稿。
感谢机械工业出版社华章公司的张锡鹏老师,是你在《Spring Cloud微服务:入门、实战与进阶》的审稿过程中给了我很多实用的建议,让我学习到了很多写作方面的技巧。
最后感谢家人的支持和理解,让我能够把全部精力投入到《Spring Cloud微服务:入门、实战与进阶》的写作中。谨以此书献给我最亲爱的家人,以及众多热爱SpringCloud的朋友们!









