
关注我们丨文末赠书
Java作为多年来常驻编程语言排行榜前三的老牌强劲语言,在后端领域占有重要地位。而Java中最受程序员们欢迎并且最常用的框架,非Spring莫属了,作为一个Java程序员,会用Spring进行开发工作是一个极大的加分项。
而在Java圈广为流传的“ java基础学完直接学springSpring开发三剑客”:《Spring实战》《Spring Boot 实战》和《Spring微服务实战》,是许多Java程序员在工作中的制胜法宝。同时它们也是Manning出版社的经典“in action”系列,标志性的着传统服饰人物成为大多数Java程序员书架上常见形象。
随着Spring的升级,“三剑客”也进行了再版更新,以适配新的Spring特性与工具。
今天小异带来的《Spring微服务实战(第2版)》就是在第1版基础上进行了更新,专为Java程序员编写的一本Spring微服务实战宝典。

▲ 点击获得Spring微服务新宝典,购书每买100减50
01
在回答“为什么是微服务”的问题之前,需要先了解什么是微服务。
单体架构的替代方案:微服务架构
微服务的定义有很多,作者在《Spring微服务实战(第2版)》中认为微服务是一种小型的、松耦合的分布式服务。它允许程序员将一个大型的应用分解为具有狭义职责定义的便于管理的组件。而微服务的目的,是通过将一个大型代码库分解为多个精确定义的小型代码库,帮助解决大型代码库中传统的复杂问题。
单体架构是指所有用户界面、业务和数据库访问逻辑都打包到一个唯一的应用程序中,并部署到应用服务器中。通常来说这种形式是一种很不错的选择,但是当应用程序的规模和复杂性开始增加,它就变得难以管理。
所以能够提供更大的灵活性和可维护性的微服务架构,成为了更好的选择。
全球化趋势下的企业选择:微服务
选择微服务架构的前提,是有需求。
单体架构并不是不好和贬义,而是说当企业业务扩大到单体架构不能满足它们的需求了,在这种背景下才需要一个更优的解决方案。
而且,微服务架构作为一种分布式架构,同时也会带来分布式架构固有的难题,比如分布式事务——不同参与者、服务器、资源与管理器等都分布在不同节点。还有,当系统中存在很多微服务架构,就需要企业有强大的DevOps(保障开发与运维合作,大部分企业这两个部门是分离的)能力作为支撑,不然在开发和运维过程会遇到更多难题。
也就是说,一个企业使用微服务是经过多方考虑,它需要并且有能力提供各方面保障的情况下做的选择。
合适的工具,才是最好的工具。
合适作为微服务开发的工具:Spring
当企业确定要进行微服务开发后,要先选择一个合适的工具,作为众多微服务开发工具中的明星选手Spring就成为了首选。
Spring Boot提供了一个基于Java的、面向REST(Representational State Transfer,表征状态转移)的微服务框架。只需要简单的注解,Java程序员就能够快速构建一个可打包和部署的REST服务。
Spring Cloud的出现,让实施和部署云服务到私有云或公有云上变得更加简单。因为它在一个公共框架中封装了多个流行的云管理微服务框架,并且让这些技术的使用和部署变得与添加代码注解一样轻松简单。
作为一个简单高效的工具,Spring成为了大多数企业与Java程序员在进行微服务开发的选择。
而学习使用Spring进行微服务的开发,这本《Spring微服务实战(第2版)》是一个不会有错的选择。
02
小异之所以向大家介绍这本书,是因为它有着很多个我们无法拒绝的优点。
首先是两位作者,是拥有丰富实践经验的程序员,热爱学习与分享知识。
二十多年开发经验的Java工程师
作者约翰·卡内尔(John Carnell)是一位资深的云开发工程师,有着二十多年的Java开发经验。
2015年,他进入Genesys公司工作至今。在那边,他带领着团队进行Genesys Cloud SDK、CLI和客户DevOps工具的开发。
早在他20多年前踏入软件开发领域以来,他就目睹了软件业与构建分布式应用程序的“正确”方式做斗争。同时他目睹了大量的分布式标准的陨落,在微服务出现之初,他是抱着怀疑的态度。但在深入了解那些概念之后,他意识到微服务的简单性可以改变整个游戏规则。
Spring Cloud的出现让他有点兴奋,这个框架给大多数开发人员提供了一个针对常见开发和运维问题的解决方案。为了有这么一本能够提供简单代码示例、书中的资源单独章节使用也能在整体中发挥作用,并且可以在日常工作中随时使用的书,他着手写了《Spring微服务实战》。
十多年软件开发经验的微软工程师
第2版的另一位作者伊拉里·华卢波·桑切斯(Illary Huaylupo Sánchez)是一名优秀的女性软件工程师,目前她在哥斯达黎加圣何塞的微软公司担任高级软件工程师。
她的梦想是为自己最热衷的领域——计算机科学,尤其是软件开发的发展做出贡献,这本书就是她梦想的一部分。任何一位软件开发人员都知道,不断研究和学习新知识并应用到实际开发中是一件多么重要的事情,她对此更是深有感触。
在几年前她步入微服务领域后,伊拉里·华卢波·桑切斯被微服务伸缩性、速度和可维护性等优势深深吸引,微服务架构便成了她使用最多的架构。这次成功的使用体验,促使她想要向更多的人分享自己所学知识。
在写书之前,她先在自己公司博客上发表微服务相关文章,从这个过程中获得了新的激情与目标。文章引起广泛关注之后,Manning出版社向她递出了橄榄枝,给她提供一个机会编写《Spring微服务实战》的第2版。
之后,《Spring微服务实战(第2版)》完成上线。
技术更新迭代的再版
Spring的发展极其迅速,这么多年来已经发展成为一棵枝繁叶茂的巨树,为计算机领域提供无数支持与荫蔽。Spring Boot、Spring Cloud等在应用开发与云部署等方向具备着无法撼动的重要地位。
伊拉里·华卢波·桑切斯是在《Spring微服务实战》的基础上编写的第2版内容,她使用了一个全新的实战项目O-stock作为整体的支撑,包含新的设计模式和更新的工具,支持最新的Spring特性。
在这本书中,作者解释了Spring Cloud的发布序列和它与Spring Boot之间的关系。并且在后面的内容中介绍了如何使用Kafka和Redis,这两个是当前常用的分布式流处理平台和跨平台的非关系型数据库,分布式开发中它们发挥的作用无疑是巨大的。
对于Spring的支持,这本书扩展了Spring Cloud Gateway的API路由、ELK堆栈的日志记录、Prometheus和Grafana的指标、Hashicorp Vault的安全性以及Kubernetes的现代部署实践。

▲Spring Cloud Gateway 新特性

▲开源的监控和警报工具包 Prometheus

▲度量分析与可视化工具 Grafana

▲企业级私密信息管理工具 Vault

▲生产级别的容器编排系统Kubernetes
详尽的代码与完备的知识系统
为了更形象地解释书中涉及的概念,与清晰展示一个工具发挥作用的过程,作者采用了大量的图示辅助。
比如在讲利用微服务架构来开发CRM(客户关系管理)系统时,它的整体流程是这样的:

▲使用微服务架构下的CRM开发进程
相对于单体架构,它可以让每个团队拥有自己的服务器代码和服务基础设施。这种图示一目了然,读者能够很清晰地看到他们是彼此独立地在构建、部署和测试。
对于本书中使用的服务和技术概述,作者也是使用一张清晰的图示来说明:

▲整体架构
读者通过作者文字与图示的结合,可以轻松地理解这整个构建过程与其中技术的具体定位。
这种形式的内容在书中经常用到,对于概念知识与过程详解的展示非常有效。
而且书中有着非常多的代码清单,读者跟着其中内容输入就能得到有效的输出信息,真实体验代码发生作用的过程,理解某个功能是如何具体实现的。

▲Application类的代码
所有的代码都可以在本书附赠的资源地址进行下载使用,它们都有一个对应文件夹。并且所有的代码使用Maven作为主要的构建工具进行构建,并使用Docker作为容器工具运行在Java 11上。
新的章节内容分布
本书12个章节大多以这种形式编写,给予读者非常好的阅读体验。同时,在第1版的基础上做了稍小的内容分布变换,最终整体展示如下:
本书的前3章提供了关于**实践和在Java 11中使用Spring Boot实现微服务的基本信息,对于开发人员来说这三章是必须阅读的。
其中第1章介绍了什么是微服务和为什么选择微服务;第2章详细讲解如何使用Spring云技术构建云原生微服务和如何使用Spring Boot构建第一个基于REST的微服务;第3章介绍如何通过架构师、应用工程师和DevOps工程师的角度来审视微服务,并提供在第一个基于REST的微服务中实现某些微服务**实践的指南。
在第4章,作者重点介绍了容器和虚拟机之间的主要区别,并介绍了如何使用几个Maven插件和Docker命令来容器化微服务。对于那些不熟悉容器的读者,这部分是需要认真阅读的,容器化是分布式中必不可少的步骤。
在其余的部分,作者主要讨论了集中微服务模式,比如服务发现、分布式跟踪、API网关等。这部分的内容是针对一些关键性的技术,这些技术在最新的微服务开发中使用得越来越多,这些都是相对本书第1版有了内容扩展。
比如第9章讲如何使用Keycloak实现服务验证和授权,第10章的内容是讨论如何使用Spring Cloud Stream和Apache Kafka将异步消息传递引入微服务,并介绍如何使用Redis进行缓存查找。
第11章讲的是关于如何使用Spring Cloud Sleuth、Zipkin和ELK技术栈来实现日志关联、日志聚合和跟踪等常见的日志记录模式。
第12章是本书的基石项目,读者会跟着作者使用前面的知识构建服务,将它们部署到亚马逊弹性Kubernetes服务上。
最后的附录中,读者可以找到一些额外的微服务架构**实践,还有OAuth2的补充资料和使用Spring Boot Actuator、Micrometer、Prometheus和Grafana等几种技术来监控Spring Boot微服务的内容。
最重要的是,每个章节的示例代码都可以独立于其他任何一章运行,因为它们都有一个单独的Docker镜像,保证了每章都有一个可复制的运行环境。就是说读者完全可以根据自己的需求进行章节阅读,而不必担心因为没有前面的内容支撑导致代码运行不起来。
正是有了作者精心的编写与内容安排,最终这本书发行之后便收到普通读者与业内专家的一致好评。
牛企专家推荐
卢森堡第二移动电信运营商探戈电信(Tango Telecom)的伊恩·坎贝尔(Iain Campbell)对这本书给予了最高的评价,他认为:
A must-have for any professional Spring microservice developer’s bookshelf!
这是一本所有专业Spring微服务开发者书架上必备的书!
著名的科技巨头Honeywall公司的Satej Sahu在向他人推荐这本书的时候说:
A holistic and practical approach to building cloud native microservices using Spring. Loads of practice, advice, and fun.
这本书介绍了使用Spring构建云原生微服务的一套实用方法,包含大量的练习、建议和有趣的案例。
Alphabet 注资的资讯终端公司Sympthony的Philippe Vialatte觉得这本书的适用性非常广:
A perfect reference, whether you are a beginner or an experienced Java developer.
无论你是初学者还是一个有经验的Java开发者,这本书都是绝佳的参考资料。
澳大利亚数据公司Appen的Todd Cook也极力推荐此书:
A great guide on modern secure deployment practices for the cloud.
这是一本关于现在云安全部署实践的优异指南。
专业人士对于本书的认可极大地保障了其内容的专业有效,读者可以放心使用!
本书的适用人群
如最开始小异提及的那样,这本书是为实践Java/Spring的开发人员编写的,但是其中的内容又比较详尽,对基础概念讲解比较清楚,所以也适合那些只是有兴趣了解的人学习使用。
如果你是有构建分布式应用程序经验的Java开发人员,你可以在这本书中找到更多的技巧与工具,学会更多的实践案例。
如果你是拥有Spring的知识背景的读者,你可以学习最新的案例与技术,以运用到实际工作中。
如果你是想要学习或者对构建微服务感兴趣的读者,完全可以使用这本书来全面了解什么是微服务以及相关其他的概念。
当然,这本书详细介绍了Java和Spring是非常适用于构建基于微服务的应用程序的,所以也推荐对此有兴趣的读者阅读。
无论如何,不论你是想了解什么是微服务,或者想要知道如何构建微服务,这本书都是一个非常棒的选择。
03
在最后,使用第1版作者的话,他在描述如何写一本书的时候是这样回答的“那就是一次一词,一次一步。”
写书就像跑步,永远是一步一步向前跑的,最终跑过的距离是个人脚步的总和。
只有持续走下去,才能走得更远。
小异觉得,学习新知识与技能也是如此,一个点一个点地去学习、去掌握,最终汇总的就是我们所学到的东西。
只要去学,往前跑,不要停下,属于我们的就会越来越多。
文章编辑:沙鱼 审校:孙喆思
参考来源:
[1] 约翰·卡内尔.Spring微服务实战.[M].北京:人民邮电出版社,2018.
[2] 约翰·卡内尔,伊拉里·华卢波·桑切斯.Spring微服务实战(第2版).[M].北京:人民邮电出版社,2022.
—END—

你觉得微服务架构中最重要的是什么?
在留言区参与互动,并点击在看和转发活动到朋友圈,我们将选1名读者获得赠书1本,截止时间5月31日。

后台回复【异步图书】参加活动~

版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/20117.html