书籍详情

云原生Java:Spring Boot、Spring Cloud与Cloud Foundry弹性系统设计

云原生Java:Spring Boot、Spring Cloud与Cloud Foundry弹性系统设计

作者:(美)Josh Long(乔西-朗), Kenny Bastani(肯尼-巴斯塔尼)

出版社:电子工业出版社

出版时间:2018-07-01

ISBN:9787121342516

定价:¥128.00

购买这本书可以去
内容简介
  无论是传统IT行业,还是互联网行业,都正处于行业历史上最剧烈的变革中 :大量的系统正在从传统的IT架构转向基于云的架构, 开发模式也正在从开发和运维分工的传统模式,逐渐转向统一的“DevOps”模式。Java技术已经进入了新的生命周期,大量被用于构建现代的、基于云的应用程序。 本书详细阐述了开发云原生应用程序的机遇和挑战,明确指出了成功实现的方向,并且重点介绍了微服务框架Spring Boot。Spring Boot可以轻松创建任何粒度的 Spring服务,并部署到现代的容器环境中。本书主要面向正在使用 Spring Boot、SpringCloud和Cloud Foundry, 以便更快、更好地构建软件的Java/JVM 开发人员。本书一共分为4个部分共15章。第1章和第2章介绍了云原生思想产生的背景,然后介绍了Spring Foundry。第3章介绍了如何配置Spring Boot应用程序。第4章介绍了如何测试Spring应用程序,从如何测试最简单的组件到测试分布式系统。第5章介绍了可以将应用程序迁移到Cloud Foundry等云平台的轻量级重构方式。第6章介绍了如何使用Spring构建HTTP和RESTful服务。第7章介绍了在分布式系统中控制请求进出的常用方法。第8章介绍了如何构建一个响应外部请求的服务。第9章介绍了如何使用Spring Data在Spring中管理数据。这为领域驱动的思想奠定了基础。第10章介绍了如何使用Spring中事件驱动、消息中心化的能力,来集成分布式服务和数据。第11章介绍了如何利用云平台(如Cloud Foundry)的能力来处理长期运行的工作。第12章介绍了在分布式系统中管理状态的一些方法。第13章介绍了如何构建具备可观测性和可操作性的系统。第14章介绍了如何构建类似于Cloud Foundry平台的服务代理。第15章介绍了持续交付背后的思想。
作者简介
  Josh Long是一名Spring developer advocate,是InfoQ.com Java团队的编辑。他也是多部著作的主要作者,如Spring Recipes,2nd Edition(Apress)。Kenny Bastani是Pivotal的一名Spring developer advocate。作为一名开源贡献者和软件架构博主(WWW.kennybastani.com),他为软件开发者提供关于构建事件驱动的微服务和无服务器架构方面的教程。他也在一些行业会议上做演讲,如OSCON、SpringOne Platform和GOTO大会。宋净超,曾就职于科大讯飞,在大数据平台架构、云平台的开发运维、容器平台构建方面有丰富经验,目前在TalkingData从事Kubernetes和云原生应用的研究和推广工作。《Cloud Native Go》《Pyhon云原生》译者,QCon讲师,个人博客 https://jimmysong.io。
目录

"目录

前言(James Watters).......................................................xv

前言(Rod Johnson)........................................................ xvii

前言................................................................................ xix

第Ⅰ部分 基础知识

第1 章 云原生应用程序.......................................................... 3

亚马逊的故事 ............................................................................................................... 3

平台的承诺 ................................................................................................................... 5

模式 .............................................................................................................................. 7

可扩展性 ....................................................................................................................... 7

可靠性 ........................................................................................................................... 8

敏捷性 ........................................................................................................................... 8

Netflix 的故事 ............................................................................................................... 9

微服务 ................................................................................................................. 11

拆分单体系统 ...................................................................................................... 12

Netflix OSS ......................................................................................................... 13

云原生Java ......................................................................................................... 14

十二要素原则 ............................................................................................................. 14

代码库 ................................................................................................................. 15

依赖 ..................................................................................................................... 15

配置 ..................................................................................................................... 16

x | 目录

后端服务 ............................................................................................................. 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

目录 | xi

可刷新的配置 ............................................................................................................. 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 服务

第6 章 REST API........................................................... 137

伦纳德· 理查森的成熟模型 ...................................................................................... 137

使用Spring MVC 实现简单的REST API ................................................................. 139

内容协商 ................................................................................................................... 142

xii | 目录

读写二进制数据 ................................................................................................ 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

目录 | xiii

第Ⅲ部分 数据整合

第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

xiv | 目录

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

第IV 部分 生产

第13 章 可观测的系统....................................................... 411

你构建,你运行 ........................................................................................................ 412

目录 | xv

谋杀神秘微服务 ........................................................................................................ 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

Ordina 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

xvi | 目录

部署 .......................................................................................................................... 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

第V 部分 附录

附录A 在Java EE 中使用Spring Boot................................527

索引............................................................................... 552"


猜您喜欢

读书导航