第Ⅰ部分 基础知识 3
第1章 云原生应用程序 3
亚马逊的故事 3
平台的承诺 5
模式 7
可扩展性 7
可靠性 8
敏捷性 8
Netflix的故事 9
微服务 11
拆分单体系统 12
Netflix OSS 13
云原生Java 14
十二要素原则 14
代码库 15
依赖 15
配置 16
后端服务 17
构建、发布、运行 17
进程 17
端口绑定 18
并发 18
易处理 18
开发/生产环境一致 19
日志 19
管理进程 19
总结 20
第2章 训练营:Spring Boot和Cloud Foundry 21
什么是Spring Boot 21
Spring Initializr入门 21
Spring Tool Suite入门 30
安装Spring Tool Suite(STS) 30
使用Spring Initializr创建一个新项目 31
Spring指南大全 36
遵循STS中的指南 38
配置 40
Cloud Foundry平台 52
总结 66
第3章 符合十二要素程序风格的配置 67
令人迷惑的“配置”合并 67
Spring框架对配置的支持 67
PropertyPlaceholderConfigurer 68
Environment接口和@Value注解 69
Profile 71
启动配置 73
使用Spring Cloud Config Server进行中心化、日志型的配置 76
Spring Cloud Config Server 76
Spring Cloud Config客户端 78
安全 79
可刷新的配置 79
总结 83
第4章 测试 85
测试的构成 86
在Spring Boot中进行测试 86
集成测试 88
测试切片 89
测试中的Mock 89
使用@SpringBootTest中的Servlet容器 93
测试分片 94
端到端测试 102
测试分布式系统 102
消费者驱动的契约测试 104
Spring Cloud Contract 105
总结 113
第5章 迁移遗留的应用程序 115
契约 115
迁移应用程序环境 116
开箱即用的构建包(Buildpacks) 116
自定义的构建包 117
容器化的应用程序 118
将应用程序迁移到云上的微重构 119
连接后端服务 120
用Spring实现服务平等 121
总结 133
第Ⅱ部分 Web服务 137
第6章 RESTAPI 137
伦纳德·理查森的成熟模型 137
使用Spring MVC实现简单的REST API 139
内容协商 142
读写二进制数据 142
Google Protocol Buffers 145
错误处理 150
超媒体 152
媒体类型和模式 158
API版本 159
编写REST API文档 162
客户端 167
用于临时浏览和交互的REST客户端 167
RestTemplate 171
总结 177
第7章 路由 179
DiscoveryClient接口 180
Cloud Foundry Route服务 190
总结 195
第8章 边缘服务 197
Greetings服务 198
一个简单的边缘服务 200
Netflix Feign 202
使用Netflix Zuul进行过滤和代理 204
自定义Zuul过滤器 214
边缘服务的安全 218
OAuth 219
服务端应用程序 220
HTML5和JavaScript单页面应用程序 221
没有用户的应用 221
受信任的客户端 221
Spring Security 222
Spring Cloud Security 227
一个Spring Security OAuth授权服务器 227
保护Greetings资源服务器的安全 232
创建一个受 OAuth保护的单页面应用程序 238
总结 247
第Ⅲ部分 数据整合 251
第9章 数据管理 251
数据建模 251
关系数据库管理系统(RDBMS) 252
NoSQL 253
Spring Data 253
Spring Data应用程序的结构 254
域类 254
库 254
为领域数据组织Java包 255
使用JDBC访问RDBMS数据 258
Spring的JDBC支持 259
Spring Data示例 261
Spring Data JPA 264
Account Service 264
集成测试 274
Spring Data MongoDB 275
Order Service 275
集成测试 282
Spring Data Neo4j 284
Inventory Service 284
集成测试 294
Spring Data Redis 297
高速缓存 298
总结 302
第10章 消息系统 303
Spring Integration的事件驱动架构 304
消息端点 305
使用简单的组件构建复杂的系统 306
消息代理、桥接、竞争消费者模式和事件溯源 314
发布—订阅目的地 314
点对点目的地 315
Spring Cloud Stream 315
流生产者 316
流消费者 321
总结 323
第11章 批处理和任务 325
批处理工作 325
Spring Batch 326
我们的第一个批处理作业 327
调度 336
通过消息传递远程分区Spring批处理作业 337
任务管理 346
通过Workflow进行的以工作流为中心的整合 348
使用消息传递的分布式 362
总结 362
第12章 数据集成 363
分布式事务 364
故障隔离和优雅的降级 364
saga模式 369
CQRS(命令查询责任分离) 369
投诉API 371
投诉统计API 383
Spring Cloud Data Flow 385
Stream 387
任务 390
REST API 391
实现Data Flow客户端 392
总结 407
第Ⅳ部分 生产 411
第13章 可观测的系统 411
你构建,你运行 412
谋杀神秘微服务 413
十二要素运维 413
新方式 414
可观测性 416
推与拉的可观测性和解析率 416
使用Spring Boot Actuator捕获应用程序的当前状态 417
度量 418
通过/info端点识别服务 431
健康检查 432
审计事件 436
应用程序日志 439
指定日志输出 440
指定日志级别 441
分布式跟踪 445
用Spring Cloud Sleuth寻找线索 446
多少数据是足够的 447
OpenZipkin:一张图片胜过千丝万缕 448
跟踪其他平台和技术 454
仪表板 455
使用Hystrix仪表板监控下游服务 455
Codecentric的Spring Boot Admin 459
Ordma Microservices仪表板 462
Pivotal Cloud Foundry的AppsManager 463
修复 465
总结 467
第14章 服务代理 469
创建后台服务 470
平台视图 472
使用Spring Cloud Cloud Foundry Service Broker实现服务代理 473
简单的Amazon S3服务代理 473
服务目录 474
管理服务实例 476
服务绑定 482
保护服务代理 486
部署 487
使用BOSH发布 487
使用Cloud Foundry发布 488
注册Amazon S3 Service Broker 489
创建Amazon S3服务实例 490
消费服务实例 491
S3客户端应用程序 493
运行测试 496
总结 496
第15章 持续交付 497
持续集成之外 497
John Allspaw在Flickr以及后来的Etsy 498
Netflix的Adrian Cockroft 499
亚马逊的持续交付 500
流水线 500
测试 501
持续交付微服务 502
工具 503
Concourse 503
容器 504
持续交付微服务 504
安装Concourse 505
基本的管道设计 506
持续集成 518
消费者驱动的协约测试 518
User微服务流水线 519
数据 522
生产 523
第Ⅴ部分 附录 527
附录A 在Java EE中使用Spring Boot 527