Spring微服务实战(第2版)

0
(0)

Spring微服务实战(第2版)

作者:[美]约翰·卡内尔(JohnCarnell)

出版社:人民邮电出版社

出品方:异步图书

译者:陈文辉

出版年:2022-1

页数:376

定价:89.90

装帧:平装

ISBN:9787115587480

内容简介
······

本书以一个名为O-stock的项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将O-stock项目一步一步地从单体架构重构成微服务架构,进而将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并最终自动部署到云环境(AWS)的 Kubernetes集群中。针对在重构过程中遇到的各种微服务开发会面临的典型问题(包括开发、测试和运维等问题),本书介绍了解决这些问题的核心模式,以及在实战中如何选择特定Spring Cloud子项目或其他工具(如 KeyCloak、Zipkin、ELK技术栈)解决这些问题。本书适合拥有构建分布式应用程序的经验、拥有Spring的知识背景以及对学习构建基于微服务的应用程序感兴趣的Java开发人员阅读。对于希望使用微服务构建基于云的应用程序,以及希望了解如何将基于微服务的应用部署到云上的开发人员,本书也具有很好的学习参考价值。

作者简介
······

约翰·卡内尔(John Carnell)是一位资深云工程师,拥有二十多年的Java开发经验。他大部分时间都在使用AWS平台构建基于电话的微服务。他的日常工作主要是设计和构建跨Java、Clojure和Go等多种技术平台的微服务。伊拉里·华卢波·桑切斯(Illary Huaylupo Sánchez)是一名软件工程师,拥有十多年的Oracle认证开发经验,目前,Illary 在哥斯达黎加圣何塞的微软公司担任高级软件工程师,在那里她将大部分时间花在研究和开发各种流行的最新项目上。

目录
······

第1章 欢迎迈入云世界,Spring 1

1.1 微服务架构的演进 1

1.1.1 n 层架构 2

1.1.2 什么是单体架构 2

1.1.3 什么是微服务 3

1.1.4 为什么要改变构建应用的方式 5

1.2 使用Spring 开发微服务 6

1.3 我们在构建什么 7

1.4 本书涵盖什么内容 8

1.4.1 在本书中你会学到什么 8

1.4.2 为什么本书与你有关 9

1.5 云和基于微服务的应用程序 9

1.5.1 使用Spring Boot 来构建微服务 10

1.5.2 云计算到底是什么 14

1.5.3 为什么是云和微服务 16

1.6 微服务不只是编写代码 17

1.7 核心开发模式 18

1.8 路由模式 19

1.9 客户端弹性模式 21

1.10 安全模式 22

1.11 日志记录和跟踪模式 23

1.12 应用程序度量模式 24

1.13 构建/部署模式 25

1.14 小结 26

第2章 使用Spring Cloud 探索微服务世界 27

2.1 什么是Spring Cloud 27

2.1.1 Spring Cloud Config 28

2.1.2 Spring Cloud 服务发现 29

2.1.3 Spring Cloud LoadBalancer和Resilience4j 29

2.1.4 Spring Cloud API Gateway 29

2.1.5 Spring Cloud Stream 29

2.1.6 Spring Cloud Sleuth 30

2.1.7 Spring Cloud Security 30

2.2 通过示例来介绍Spring Cloud 30

2.3 如何构建云原生微服务 32

2.3.1 代码库 34

2.3.2 依赖 35

2.3.3 配置 35

2.3.4 后端服务 36

2.3.5 构建、发布和运行 37

2.3.6 进程 37

2.3.7 端口绑定 38

2.3.8 并发 38

2.3.9 可任意处置 38

2.3.10 开发环境/生产环境等同 38

2.3.11 日志 39

2.3.12 管理进程 39

2.4 确保本书的示例是有意义的 40

2.5 使用Spring Boot和Java来构建微服务 40

2.5.1 设置环境 41

2.5.2 从骨架项目开始 41

2.5.3 引导Spring Boot 应用程序:编写引导类 45

2.6 小结 46

第3章 使用Spring Boot 构建微服务 48

3.1 架构师的故事:设计微服务架构 49

3.1.1 分解业务问题 49

3.1.2 建立服务粒度 51

3.1.3 定义服务接口 53

3.2 何时不要使用微服务 53

3.2.1 构建分布式系统时的复杂性 54

3.2.2 服务器或容器散乱 54

3.2.3 应用程序的类型 54

3.2.4 数据事务和一致性 54

3.3 开发人员的故事:用Spring Boot和Java构建微服务 55

3.3.1 构建微服务的入口:Spring Boot 控制器 55

3.3.2 将国际化添加到许可证服务 64

3.3.3 实现Spring HATEOAS 来显示相关的链接 68

3.4 DevOps 故事:构建运行时的严谨性 71

3.4.1 服务装配:打包和部署微服务 72

3.4.2 服务引导:管理微服务的配置 73

3.4.3 服务注册和发现:客户端如何与微服务通信 74

3.4.4 传达微服务的健康状况 75

3.5 将视角综合起来 77

3.6 小结 77

第4章 欢迎来到Docker 79

4.1 容器还是虚拟机 80

4.2 Docker 是什么 81

4.3 Dockerfile 83

4.4 Docker Compose 84

4.5 集成Docker 与微服务 86

4.5.1 构建Docker 镜像 86

4.5.2 使用Spring Boot 创建Docker镜像 91

4.5.3 使用Docker Compose 启动服务 93

4.6 小结 94

第5章 使用Spring Cloud Config服务器端控制配置 96

5.1 关于管理配置(和复杂性) 97

5.1.1 配置管理架构 97

5.1.2 实施选择 99

5.2 构建Spring Cloud Config服务器端 100

5.2.1 创建Spring Cloud Config引导类 104

5.2.2 使用带有文件系统的Spring Cloud Config 服务器端 105

5.2.3 创建服务的配置文件 106

5.3 将Spring Cloud Config与Spring Boot客户端集成 110

5.3.1 建立许可证服务的Spring Cloud Config 服务依赖项 111

5.3.2 配置许可证服务以使用Spring Cloud Config 112

5.3.3 使用Spring Cloud Config服务器端连接数据源 115

5.3.4 使用@ConfigurationProperties直接读取属性 118

5.3.5 使用Spring Cloud Config服务器端刷新属性 119

5.3.6 使用Spring Cloud Config服务器端和Git 120

5.3.7 使用Spring Cloud Config服务集成Vault 122

5.3.8 Vault UI 122

5.4 保护敏感配置信息 125

5.4.1 创建对称加密密钥 125

5.4.2 加密和解密属性 126

5.5 最后的想法 128

5.6 小结 128

第6章 关于服务发现 129

6.1 我的服务在哪里 130

6.2 云中的服务发现 132

6.2.1 服务发现架构 132

6.2.2 使用Spring 和Netflix Eureka进行服务发现实战 135

6.3 构建Spring Eureka服务 136

6.4 通过Spring Eureka注册服务 141

6.4.1 Eureka 的REST API 144

6.4.2 Eureka 仪表板 145

6.5 使用服务发现来查找服务 146

6.5.1 使用Spring Discovery Client查找服务实例 148

6.5.2 使用带有Load Balancer功能的Spring Rest模板调用服务 150

6.5.3 使用Netflix Feign 客户端调用服务 152

6.6 小结 153

第7章 当糟糕的事情发生时:使用Spring Cloud和Resilience4j的弹性模式 154

7.1 什么是客户端弹性模式 155

7.1.1 客户端负载均衡模式 156

7.1.2 断路器模式 156

7.1.3 后备模式 156

7.1.4 舱壁模式 156

7.2 为什么客户端弹性很重要 157

7.3 实现Resilience4j 160

7.4 设置许可证服务以使用Spring Cloud和Resilience4j 160

7.5 实现断路器 162

7.5.1 向组织服务添加断路器 166

7.5.2 定制断路器 166

7.6 后备处理 168

7.7 实现舱壁模式 169

7.8 实现重试模式 172

7.9 实现限流器模式 174

7.10 ThreadLocal和Resilience4j 176

7.11 小结 180

第8章 使用Spring Cloud Gateway进行服务路由 182

8.1 什么是服务网关 183

8.2 Spring Cloud Gateway简介 184

8.2.1 建立Spring Cloud Gateway项目 185

8.2.2 配置Spring Cloud Gateway与Eureka 进行通信 188

8.3 在Spring Cloud Gateway 中配置路由 189

8.3.1 通过服务发现自动映射路由 189

8.3.2 使用服务发现手动映射路由 191

8.3.3 动态重新加载路由配置 194

8.4 Spring Cloud Gateway 的真正威力:断言和过滤器工厂 194

8.4.1 内置的断言工厂 195

8.4.2 内置的过滤器工厂 196

8.4.3 自定义过滤器 197

8.5 构建前置过滤器 200

8.6 在服务中使用关联ID 203

8.6.1 UserContextFilter:拦截传入的HTTP请求 205

8.6.2 UserContext:使服务易于访问HTTP首部 206

8.6.3 自定义RestTemplate和UserContextInteceptor:确保关联ID被传播 207

8.7 构建接收关联ID的后置过滤器 208

8.8 小结 210

第9章 保护微服务 211

9.1 OAuth2是什么 212

9.2 Keycloak简介 213

9.3 从小事做起:使用Spring和Keycloak来保护单个端点 214

9.3.1 将Keycloak服务添加到Docker 214

9.3.2 设置Keycloak 215

9.3.3 注册客户端应用程序 218

9.3.4 配置O-stock用户 222

9.3.5 对O-stock用户进行身份认证 224

9.4 使用Keycloak保护组织服务 227

9.4.1 将Spring Security和Keycloak JAR添加到各个服务 228

9.4.2 配置服务以指向Keycloak服务 228

9.4.3 定义什么和谁可以访问服务 229

9.4.4 传播访问令牌 233

9.4.5 从JWT 中解析自定义字段 239

9.5 关于微服务安全的一些总结 240

9.5.1 对所有业务通信使用HTTPS/安全套接字层(SSL) 241

9.5.2 使用服务网关访问微服务 241

9.5.3 将服务划分到公共API和私有API 241

9.5.4 通过封锁不需要的网络端口来限制微服务的攻击面 241

9.6 小结 242

第10章 使用Spring Cloud Stream的事件驱动架构 243

10.1 消息传递、EDA和微服务的案例 244

10.1.1 使用同步请求-响应方式来传达状态变化 244

10.1.2 使用消息传递在服务之间传达状态更改 246

10.1.3 消息传递架构的缺点 248

10.2 Spring Cloud Stream简介 249

10.3 编写简单的消息生产者和消费者 251

10.3.1 在Docker中配置Apache Kafka和Redis 252

10.3.2 在组织服务中编写消息生产者 252

10.3.3 在许可证服务中编写消息消费者 258

10.3.4 在实际操作中查看消息服务 261

10.4 Spring Cloud Stream用例:分布式缓存 262

10.4.1 使用Redis来缓存查找 263

10.4.2 定义自定义通道 269

10.5 小结 271

第11 章 使用Spring Cloud Sleuth和Zipkin进行分布式跟踪 272

11.1 Spring Cloud Sleuth与关联ID 273

11.1.1 将Spring Cloud Sleuth添加到许可证服务和组织服务中 274

11.1.2 剖析Spring Cloud Sleuth跟踪 274

11.2 日志聚合与Spring Cloud Sleuth 275

11.2.1 Spring Cloud Sleuth/ELK技术栈实现实战 277

11.2.2 在服务中配置Logback 278

11.2.3 在Docker中定义和运行ELK技术栈应用程序 281

11.2.4 配置Kibana 284

11.2.5 在Kibana 中搜索Spring Cloud Sleuth的跟踪ID 287

11.2.6 使用Spring Cloud Gateway将关联ID添加到HTTP响应 288

11.3 使用Zipkin 进行分布式跟踪 290

11.3.1 设置Spring Cloud Sleuth和Zipkin依赖项 291

11.3.2 配置服务以指向Zipkin 291

11.3.3 配置Zipkin服务器端 292

11.3.4 设置跟踪级别 293

11.3.5 使用Zipkin跟踪事务 293

11.3.6 可视化更复杂的事务 296

11.3.7 捕获消息传递踪迹 297

11.3.8 添加自定义跨度 299

11.4 小结 301

第12章 部署微服务 303

12.1 构建/部署管道的架构 304

12.2 在云中设置O-stock的核心基础设施 307

12.2.1 使用亚马逊的RDS创建PostgreSQL数据库 309

12.2.2 在AWS中创建Redis集群 312

12.3 超越基础设施:部署O-stock和ELK 313

12.3.1 创建运行EKL的EC2实例 313

12.3.2 在EC2实例中部署ELK技术栈 316

12.3.3 创建一个EKS集群 317

12.4 构建/部署管道实战 323

12.5 创建构建/部署管道 324

12.5.1 设置GitHub 325

12.5.2 使服务能够在Jenkins中构建 326

12.5.3 理解并生成管道脚本 330

12.5.4 创建Kubernetes管道脚本 332

12.6 关于构建/部署管道的总结 333

12.7 小结 334

附录A 微服务架构最佳实践 335

A.1 Richardson成熟度模型 335

A.2 Spring HATEOAS 337

A.3 外部化配置 337

A.4 持续集成和持续交付 338

A.5 监控 339

A.6 日志记录 339

A.7 API网关 340

附录B OAuth2授权类型 341

B.1 密码授权类型 341

B.2 客户端凭据授权类型 343

B.3 授权码授权类型 344

B.4 隐式授权类型 345

B.5 如何刷新令牌 347

附录C 监控微服务 349

C.1 引入Spring Boot Actuator进行监控 349

C.1.1 添加Spring Boot Actuator 349

C.1.2 启用Actuator端点 350

C.2 设置Micrometer和Prometheus 351

C.2.1 了解Micrometer和Prometheus 351

C.2.2 实现Micrometer和Prometheus 352

C.3 配置Grafana 354

C.4 小结 358

评论 ······

是一本spring编程开发入门书,java从入门到精通,微服务开发领域作品,对有Java和Spring基础,适合想要了解云微服务的,具有较高的学习参考价值!

注重实战的一本书,对于原理也做了必要的讲解.把微服务的各个方面都讲解的很清楚,也跟上最新的spring clould把各个组件的作用做了demo,特别最后还有一个实战的例子,跟着复习一下,还是有所感悟.

之前买了第一版的纸质书,因为 Spring Cloud 版本变动太大几乎没法正常用。当时中文第二版还没出版,就看了英文原版,更新幅度挺大,但是即便在如此大幅度的更新下书中仍有大量配置项被废弃或是修改。
从书的层面上来说还是相当不错的,适合当作框架搭建的入门书籍,能够对 Spring Cloud 有一个全貌的认知,具体到一些细节的点还是需要不断的配合官方文档。

现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯JavaSpring Boot这些东西,扯一扯微服务,如果啃不下来,很可能就与大厂失之交臂。这本书确实帮我精通Spring一系列的原理,绕过未来可能遇到的很多坑。推荐

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册