序 言
自从我在红帽系统上开始开发企业级Java微服务,我就知道这是一个非常重要的在开发者社区传播更广的话题。许多有用的信息会像流行语一样消逝,因而需要一本书来呈现这些信息以帮助开发者完成他们的工作。
我真诚地希望《企业级Java微服务实战》能成功地将目前的企业级Java开发者从传统应用开发转到开发微服务。这通常不是一条轻松的路线,因为从传统应用开发到开发微服务需要不同的编程习惯。本书的初衷是提供初步知识,帮助你了解微服务。
关 于 本 书
在过去的七八年里,“微服务”的使用有了爆发式的增长,但开发者总是不能更好地理解它的含义。在这段时间的后半部分,开发者已经开始寻求将现有的企业级Java知识带入微服务中,但不一定都能成功。《企业级Java微服务实战》的编写目标是帮助现有的企业级Java开发者弥补传统应用开发和微服务之间的差距。
由于我的部分工作在红帽(Red Hat),我亲眼目睹了微服务的爆发式增长。它的爆发是我和同事在2015年成立WildFly Swarm项目的一个促成因素。我们看到了具有现存企业级Java知识的开发者对创建微服务的需求,当时我们没有关注Java EE领域,而是创建了WildFly Swarm。从那时起,微服务发生了很大的变化,而当前的微服务环境恍如隔世。
自从我开始编写《企业级Java微服务实战》,企业级Java的变化一直在迅速发生。我已经尽我所能,随着这些变化的发生努力更新本书。
应该注意的是,受篇幅限制,本书并不打算深入研究微服务开发的所有方面。在适当的情况下,如果你选择更详细地研究某个特定主题,本书将提供附加阅读的链接。
本书读者对象
本书适用于具有至少四年经验的企业级Java开发者。这些开发者可能具有微服务的基本知识,甚至可能使用Node.js或其他非企业级Java技术尝试过微服务,但还没有学会开发企业级Java微服务。
本书的结构:路线图
本书包含两部分:第Ⅰ部分,从第1章到第5章,讨论了微服务和分布式系统的总体架构,以及精简应用服务器的概念、测试和云原生开发。第Ⅱ部分深入研究了微服务开发的一些细节,如服务注册、容错和安全性。
第1章介绍企业级Java微服务——什么是单体应用,以及它是如何出现的。然后介绍分布式架构和微服务:它们是什么,术语的含义,以及与切换到微服务密切相关的其他流程。最后,介绍从单体应用迁移到微服务的一些模式,以及应用它们的时机。
第2章通过开发RESTful端点介绍微服务,这些端点用来管理一个购物网站的类别。还介绍Cayambe单体,它将贯穿整本书,会被转换成一个混合体,并拥有额外的微服务。
第3章介绍恰如其分的微服务应用服务器(Just enough Application Server,JeAS)运行时的概念,并展示了支持此类运行时的框架之间的差异。
第4章介绍在开发微服务时,单元测试和集成测试的不同之处,以及使测试更容易的可用工具。该章还介绍消费者驱动的契约测试的新概念,这对于包含许多微服务进行协作和通信的架构的成功至关重要。
第5章讨论云以及不同云环境中使用的不同服务模型。我们还将讨论云原生开发,以及它如何适应微服务的世界。接着使用可用的工具进行本地云开发,你将看到如何使用这些工具进行测试。
第6章讨论可用于消费外部微服务的库,以及它们提供的抽象层次。在研究抽象层次更高的库(如JAX-RS和RESTEasy客户端)之前,我们将介绍底层库,如java.net和Apache HttpClient。
第7章扩展第6章,为微服务添加了必要的部分,使其能够发现它们希望消费什么。如果不能注册或发现微服务,就无法可靠地使用它。
第8章深入讨论分布式体系结构和微服务的一个关键主题——故障以及如何减轻故障。我们简要介绍微服务可能遇到的典型故障类型,然后介绍Hystrix框架的各个部分如何为微服务提供一种方法,来解决可能出现的故障。
第9章讨论微服务的安全性,以及如何通过Keycloak实现安全性。该章涵盖的内容包含从保护微服务所需的内容,到在微服务中检索令牌以调用受保护的微服务,最后,在UI中验证用户已使用受保护的微服务。
第10章回顾Cayambe单体,展示如何以未修改的形式运行它。然后,通过一些步骤将Cayambe转换为一个混合体,该系统具有独立的部分,但也需要使用微服务来扩展和分发其功能。
第11章通过减少混合体和微服务之间的数据重复,介绍使用Apache Kafka实现数据流的主题。你将使用数据流来支持对不同数据的实时更新,从而简化分布式体系结构。
关于代码
本书中的所有代码都可以在附带的源代码文件中找到。源代码可以从Manning网站( www.manning.com/books/enterprise-java-microservices )免费下载,也可以从下面的GitHub存储库下载:https://github.com/kenfinnigan/ ejm-samples。所有示例代码都是由一系列Maven 模块构成的,这些模块分别对应于一章或一章的一部分。也可扫描封底二维码获取本书源代码。
图书论坛
购买的《企业级Java微服务实战》还有Manning Publications运行的一个私有Web论坛的访问权限。你可以在该论坛上对该书发表评论,询问技术问题,并从作者和其他用户那里获得帮助。论坛请访问https://forums.manning.com/forums/ java-microservices-in-action。你也可以通过https:/forums.manning.com/forums/about了解Manning的论坛和行为准则。
Manning 对读者的承诺是提供一个平台,让读者之间、读者和作者之间进行有意义的对话。作者对论坛的贡献仍然是自愿的(而且是无偿的),因此这并不是对其参与多少的承诺。我们建议你试着问作者一些有挑战性的问题,以免他失去兴趣。只要该书出版,论坛和以前讨论的归档就可以从出版商的网站上访问。
