书籍详情
企业级Java微服务实战
作者:(美)肯·芬尼根
出版社:清华大学出版社
出版时间:2020-01-01
ISBN:9787302542681
定价:¥79.80
购买这本书可以去
内容简介
对于大型应用,如果能从小而简单的组件起步,开发和维护就会变得更容易。现在的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 什么是企业级Java 4
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 什么是JeAS 34
3.1.2 JeAS的优点 37
3.1.3 Eclipse MicroProfile 39
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 开始使用Minishift 82
5.6 微服务的云部署 83
5.7 在云中测试 87
5.8 额外练习 90
5.9 本章小结 91
第Ⅱ部分 实现企业级Java微服务
第6章 消费微服务 95
6.1 使用Java客户端库消费微服务 99
6.1.1 java.net 99
6.1.2 Apache HttpClient 102
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 Ribbon 116
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 使用Keycloak 159
9.2.1 理解Keycloak的特性 159
9.2.2 设置Keycloak 159
9.3 保护Stripe微服务 163
9.3.1 配置Keycloak 163
9.3.2 保护Stripe资源 165
9.3.3 在Payment资源中进行身份验证 167
9.3.4 测试受保护的微服务 168
9.4 捕获用户身份验证 170
9.4.1 配置Keycloak 171
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 配置WildFly 182
10.2.3 运行Cayambe 184
10.3 Cayambe混合体 185
10.3.1 与Payment微服务集成 187
10.3.2 集成Admin微服务 192
10.3.3 新的管理UI 193
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 EAR 199
10.4.6 管理UI 199
10.5 本章小结 199
第11章 使用Apache Kafka 201
11.1 Apache Kafka能做什么 201
11.1.1 数据流 201
11.1.2 Apache Kafka 202
11.2 用数据流简化单体架构 206
11.3 部署并使用Kafka来实现数据流 208
11.3.1 Openshift中的Kafka 208
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 启动Spring 218
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
第1章 企业级Java微服务 3
1.1 企业级Java 简史 3
1.1.1 什么是企业级Java 4
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 什么是JeAS 34
3.1.2 JeAS的优点 37
3.1.3 Eclipse MicroProfile 39
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 开始使用Minishift 82
5.6 微服务的云部署 83
5.7 在云中测试 87
5.8 额外练习 90
5.9 本章小结 91
第Ⅱ部分 实现企业级Java微服务
第6章 消费微服务 95
6.1 使用Java客户端库消费微服务 99
6.1.1 java.net 99
6.1.2 Apache HttpClient 102
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 Ribbon 116
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 使用Keycloak 159
9.2.1 理解Keycloak的特性 159
9.2.2 设置Keycloak 159
9.3 保护Stripe微服务 163
9.3.1 配置Keycloak 163
9.3.2 保护Stripe资源 165
9.3.3 在Payment资源中进行身份验证 167
9.3.4 测试受保护的微服务 168
9.4 捕获用户身份验证 170
9.4.1 配置Keycloak 171
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 配置WildFly 182
10.2.3 运行Cayambe 184
10.3 Cayambe混合体 185
10.3.1 与Payment微服务集成 187
10.3.2 集成Admin微服务 192
10.3.3 新的管理UI 193
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 EAR 199
10.4.6 管理UI 199
10.5 本章小结 199
第11章 使用Apache Kafka 201
11.1 Apache Kafka能做什么 201
11.1.1 数据流 201
11.1.2 Apache Kafka 202
11.2 用数据流简化单体架构 206
11.3 部署并使用Kafka来实现数据流 208
11.3.1 Openshift中的Kafka 208
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 启动Spring 218
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
猜您喜欢