新書推薦:
《
启蒙的辩证:哲学的片简(法兰克福学派哲学经典,批判理论重要文本)
》
售價:HK$
76.2
《
云中记
》
售價:HK$
76.2
《
中国古代妇女生活(中国古代生活丛书)
》
售價:HK$
47.0
《
你的认知正在阻碍你
》
售價:HK$
65.0
《
我们身边的小鸟朋友:手绘观鸟笔记
》
售價:HK$
78.2
《
拯救免疫失衡
》
售價:HK$
55.8
《
收尸人
》
售價:HK$
72.8
《
大模型应用开发:RAG入门与实战
》
售價:HK$
89.4
|
編輯推薦: |
对于大型应用,如果能从小而简单的组件起步,开发和维护就会变得更容易。现在的Java开发者享有广泛的支持微服务应用开发的工具,包括大小合适的应用服务,开源的框架,以及定义良好的模式。*重要的是,你可以使用已有的Java技能开发微服务应用。
《企业级Java微服务实战》讲授基于JVM的微服务应用的设计和构建。首先通过与传统的Java EE应用进行比较来学习微服务的设计。作者Ken Finnigan以实用的角度介绍了全景的概念,以及用于实现它们的工具和技术。你会探索微服务生态中的组件,比如用于容错的Netflix Hystrix,并且掌握恰如其分的应用服务器(JeAS)的使用方法。为了确保平稳的运维,还会研究监控、安全性、测试以及云上的部署。
|
內容簡介: |
● 微服务的心智模型
● 云原生开发
● 容错和监控的策略
● 保护已完成应用的安全
|
關於作者: |
Ken Finnigan曾担任全球各地企业的顾问和软件工程师,具有超过20年的从业经验。他领导着Thorntail项目,该项目旨在让使用Java和Java EE为云开发微服务变得尽可能容易。他曾担任LiveOak和其他JBoss项目的项目负责人。
|
目錄:
|
第Ⅰ部分 微服务基础
第1章 企业级Java微服务3
1.1 企业级Java 简史3
1.1.1 什么是企业级Java4
1.1.2 典型的企业级Java架构4
1.1.3 什么是单体7
1.1.4 与单体相关的问题有哪些8
1.2 微服务和分布式架构9
1.2.1 只做好一件事9
1.2.2 什么是分布式架构10
1.2.3 为什么要关心分布式11
1.2.4 可以做些什么帮助开发微服务13
1.2.5 项目产品13
1.2.6 持续集成和持续交付13
1.3 迁移至微服务的模式14
1.3.1 领域驱动模式14
1.3.2 大爆炸模式16
1.3.3 绞杀者模式16
1.3.4 混合模式17
1.4 什么是企业级Java微服务18
1.5 本章小结20
第2章 开发一个简单的RESTful微服务21
2.1 Cayambe单体21
2.2 新管理站点23
2.2.1 用例25
2.2.2 应用的架构25
2.2.3 使用JAX-RS创建RESTful端点27
2.2.4 运行30
2.3 本章小结32
第3章 恰如其分的微服务应用服务器33
3.1 恰如其分的应用服务器33
3.1.1 什么是JeAS34
3.1.2 JeAS的优点37
3.1.3 Eclipse MicroProfile39
3.2 选择恰如其分的应用服务器40
3.2.1 海滩度假示例应用40
3.2.2 Dropwizard原始的有主见的微服务运行时42
3.2.3 Payara Micro 精简到JAR中的Java EE应用服务器45
3.2.4 Spring Boot有主见的Spring微服务48
3.2.5 Thorntail最灵活的JeAS运行时51
3.2.6 如何比较它们53
3.3 本章小结54
第4章 微服务的测试55
4.1 需要哪些类型的测试55
4.2 单元测试56
4.3 什么是不可变性59
4.4 集成测试60
4.5 消费者驱动的契约测试68
4.6 额外的阅读75
4.7 额外的练习76
4.8 本章小结76
第5章 云原生开发77
5.1 云到底是什么77
5.2 服务模型78
5.3 云原生开发80
5.4 部署到云81
5.5 开始使用Minishift82
5.6 微服务的云部署83
5.7 在云中测试87
5.8 额外练习90
5.9 本章小结91
第Ⅱ部分 实现企业级Java微服务
第6章 消费微服务95
6.1 使用Java客户端库消费微服务99
6.1.1 java.net99
6.1.2 Apache HttpClient102
6.2 使用JAX-RS客户端库消费微服务103
6.2.1 JAX-RS客户端103
6.2.2 RESTEasy客户端106
6.3 本章小结109
第7章 服务发现111
7.1 为什么微服务需要被发现111
7.1.1 什么是服务发现112
7.1.2 服务发现和服务注册中心有什么好处114
7.1.3 无状态与有状态的微服务116
7.1.4 什么是Netflix Ribbon116
7.2 使用Thorntail注册微服务118
7.2.1 Thorntail的拓扑118
7.2.2 使用拓扑注册微服务120
7.3 使用Thorntail消费已注册的微服务123
7.3.1 使用Netflix Ribbon进行服务查找123
7.3.2 使用RESTEasy客户端进行服务查找127
7.4 本章小结130
第8章 容错和监控的策略131
8.1 分布式架构中的微服务故障131
8.2 网络故障134
8.3 缓解故障134
8.3.1 Hystrix是什么134
8.3.2 断路器137
8.3.3 隔舱140
8.3.4 回退142
8.3.5 请求缓存143
8.3.6 综合运用144
8.3.7 Hystrix仪表盘146
8.4 把Hystrix添加到Payment微服务148
8.4.1 使用Hystrix与RESTEasy客户端149
8.4.2 使用Hystrix与Ribbon客户端152
8.5 本章小结153
第9章 微服务的安全155
9.1 保护微服务的重要性155
9.1.1 为什么安全性很重要155
9.1.2 安全性需要解决哪些问题157
9.2 使用Keycloak159
9.2.1 理解Keycloak的特性159
9.2.2 设置Keycloak159
9.3 保护Stripe微服务163
9.3.1 配置Keycloak163
9.3.2 保护Stripe资源165
9.3.3 在Payment资源中进行身份验证167
9.3.4 测试受保护的微服务168
9.4 捕获用户身份验证170
9.4.1 配置Keycloak171
9.4.2 保护类别删除172
9.4.3 在UI中对用户进行身份验证173
9.4.4 测试新UI和服务176
9.5 本章小结177
第10章 构建微服务混合体179
10.1 Cayambe单体179
10.2 运行Cayambe单体181
10.2.1 配置数据库182
10.2.2 配置WildFly182
10.2.3 运行Cayambe184
10.3 Cayambe混合体185
10.3.1 与Payment微服务集成187
10.3.2 集成Admin微服务192
10.3.3 新的管理UI193
10.3.4 Cayambe混合体小结193
10.4 部署到混合云中193
10.4.1 数据库194
10.4.2 安全性196
10.4.3 微服务197
10.4.4 Cayambe混合体197
10.4.5 Cayambe EAR199
10.4.6 管理UI199
10.5 本章小结199
第11章 使用Apache Kafka201
11.1 Apache Kafka能做什么201
11.1.1 数据流201
11.1.2 Apache Kafka202
11.2 用数据流简化单体架构206
11.3 部署并使用Kafka来实现数据流208
11.3.1 Openshift中的Kafka208
11.3.2 Admin微服务210
11.3.3 Kafka消费者212
11.4 额外练习216
11.5 本章小结216
附录A Spring Boot微服务217
A.1 剖析Spring Boot项目217
A.1.1 查看一个新初始化的Spring Boot项目217
A.1.2 启动Spring218
A.1.3 测试Spring Boot应用219
A.1.4 配置应用的属性220
A.2 Spring Boot启动器依赖项221
A.2.1 使用启动器依赖项221
A.2.2 指定基于方面的依赖项222
A.2.3 重写启动器传递的依赖项223
A.3 开发Spring Boot应用225
A.3.1 专注于应用的功能225
A.3.2 定义领域225
A.3.3 定义资源库接口226
A.3.4 创建Web接口227
A.4 Spring Boot测试230
A.5 本附录小结233
|
內容試閱:
|
序言
自从我在红帽系统上开始开发企业级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.combooksenterprise-java-microservices 免费下载,也可以从下面的GitHub存储库下载:https:github.comkenfinnigan ejm-samples。所有示例代码都是由一系列Maven 模块构成的,这些模块分别对应于一章或一章的一部分。也可扫描封底二维码获取本书源代码。
图书论坛
购买的《企业级Java微服务实战》还有Manning Publications运行的一个私有Web论坛的访问权限。你可以在该论坛上对该书发表评论,询问技术问题,并从作者和其他用户那里获得帮助。论坛请访问https:forums.manning.comforums java-microservices-in-action。你也可以通过https:forums.manning.comforumsabout了解Manning的论坛和行为准则。
Manning 对读者的承诺是提供一个平台,让读者之间、读者和作者之间进行有意义的对话。作者对论坛的贡献仍然是自愿的而且是无偿的,因此这并不是对其参与多少的承诺。我们建议你试着问作者一些有挑战性的问题,以免他失去兴趣。只要该书出版,论坛和以前讨论的归档就可以从出版商的网站上访问。
|
|