当前位置:当前位置:主页 > 计算机电子书 > 程序设计 > Spring pdf电子书
Spring微服务实战(第2版)

Spring微服务实战(第2版) PDF 完整超清版

  • 更新:2022-05-05
  • 大小:76.4 MB
  • 类别:Spring
  • 作者:约翰·卡内尔
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

Spring微服务实战(第2版)》是由人民邮电出版社出版的一本关于Spring方面的书籍,作者是约翰·卡内尔,主要介绍了关于Spring、微服务方面的知识内容,目前在Spring类书籍综合评分为:9.2分。

书籍介绍

内容简介

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

目录

  • 第1章欢迎迈入云世界,Spring1
  • 1.1微服务架构的演进1
  • 1.1.1n层架构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使用SpringBoot来构建微服务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章使用SpringCloud探索微服务世界27
  • 2.1什么是SpringCloud27
  • 2.1.1SpringCloudConfig28
  • 2.1.2SpringCloud服务发现29
  • 2.1.3SpringCloudLoadBalancer和Resilience4j29
  • 2.1.4SpringCloudAPIGateway29
  • 2.1.5SpringCloudStream29
  • 2.1.6SpringCloudSleuth30
  • 2.1.7SpringCloudSecurity30
  • 2.2通过示例来介绍SpringCloud30
  • 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使用SpringBoot和Java来构建微服务40
  • 2.5.1设置环境41
  • 2.5.2从骨架项目开始41
  • 2.5.3引导SpringBoot应用程序:编写引导类45
  • 2.6小结46
  • 第3章使用SpringBoot构建微服务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开发人员的故事:用SpringBoot和Java构建微服务55
  • 3.3.1构建微服务的入口:SpringBoot控制器55
  • 3.3.2将国际化添加到许可证服务64
  • 3.3.3实现SpringHATEOAS来显示相关的链接68
  • 3.4DevOps故事:构建运行时的严谨性71
  • 3.4.1服务装配:打包和部署微服务72
  • 3.4.2服务引导:管理微服务的配置73
  • 3.4.3服务注册和发现:客户端如何与微服务通信74
  • 3.4.4传达微服务的健康状况75
  • 3.5将视角综合起来77
  • 3.6小结77
  • 第4章欢迎来到Docker79
  • 4.1容器还是虚拟机80
  • 4.2Docker是什么81
  • 4.3Dockerfile83
  • 4.4DockerCompose84
  • 4.5集成Docker与微服务86
  • 4.5.1构建Docker镜像86
  • 4.5.2使用SpringBoot创建Docker镜像91
  • 4.5.3使用DockerCompose启动服务93
  • 4.6小结94
  • 第5章使用SpringCloudConfig服务器端控制配置96
  • 5.1关于管理配置(和复杂性)97
  • 5.1.1配置管理架构97
  • 5.1.2实施选择99
  • 5.2构建SpringCloudConfig服务器端100
  • 5.2.1创建SpringCloudConfig引导类104
  • 5.2.2使用带有文件系统的SpringCloudConfig服务器端105
  • 5.2.3创建服务的配置文件106
  • 5.3将SpringCloudConfig与SpringBoot客户端集成110
  • 5.3.1建立许可证服务的SpringCloudConfig服务依赖项111
  • 5.3.2配置许可证服务以使用SpringCloudConfig112
  • 5.3.3使用SpringCloudConfig服务器端连接数据源115
  • 5.3.4使用@ConfigurationProperties直接读取属性118
  • 5.3.5使用SpringCloudConfig服务器端刷新属性119
  • 5.3.6使用SpringCloudConfig服务器端和Git120
  • 5.3.7使用SpringCloudConfig服务集成Vault122
  • 5.3.8VaultUI122
  • 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和NetflixEureka进行服务发现实战135
  • 6.3构建SpringEureka服务136
  • 6.4通过SpringEureka注册服务141
  • 6.4.1Eureka的RESTAPI144
  • 6.4.2Eureka仪表板145
  • 6.5使用服务发现来查找服务146
  • 6.5.1使用SpringDiscoveryClient查找服务实例148
  • 6.5.2使用带有LoadBalancer功能的SpringRest模板调用服务150
  • 6.5.3使用NetflixFeign客户端调用服务152
  • 6.6小结153
  • 第7章当糟糕的事情发生时:使用SpringCloud和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实现Resilience4j160
  • 7.4设置许可证服务以使用SpringCloud和Resilience4j160
  • 7.5实现断路器162
  • 7.5.1向组织服务添加断路器166
  • 7.5.2定制断路器166
  • 7.6后备处理168
  • 7.7实现舱壁模式169
  • 7.8实现重试模式172
  • 7.9实现限流器模式174
  • 7.10ThreadLocal和Resilience4j176
  • 7.11小结180
  • 第8章使用SpringCloudGateway进行服务路由182
  • 8.1什么是服务网关183
  • 8.2SpringCloudGateway简介184
  • 8.2.1建立SpringCloudGateway项目185
  • 8.2.2配置SpringCloudGateway与Eureka进行通信188
  • 8.3在SpringCloudGateway中配置路由189
  • 8.3.1通过服务发现自动映射路由189
  • 8.3.2使用服务发现手动映射路由191
  • 8.3.3动态重新加载路由配置194
  • 8.4SpringCloudGateway的真正威力:断言和过滤器工厂194
  • 8.4.1内置的断言工厂195
  • 8.4.2内置的过滤器工厂196
  • 8.4.3自定义过滤器197
  • 8.5构建前置过滤器200
  • 8.6在服务中使用关联ID203
  • 8.6.1UserContextFilter:拦截传入的HTTP请求205
  • 8.6.2UserContext:使服务易于访问HTTP206
  • 8.6.3自定义RestTemplate和UserContextInteceptor:确保关联ID被传播207
  • 8.7构建接收关联ID的后置过滤器208
  • 8.8小结210
  • 第9章保护微服务211
  • 9.1OAuth2是什么212
  • 9.2Keycloak简介213
  • 9.3从小事做起:使用Spring和Keycloak来保护单个端点214
  • 9.3.1将Keycloak服务添加到Docker214
  • 9.3.2设置Keycloak215
  • 9.3.3注册客户端应用程序218
  • 9.3.4配置O-stock用户222
  • 9.3.5对O-stock用户进行身份认证224
  • 9.4使用Keycloak保护组织服务227
  • 9.4.1将SpringSecurity和KeycloakJAR添加到各个服务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和私有API241
  • 9.5.4通过封锁不需要的网络端口来限制微服务的攻击面241
  • 9.6小结242
  • 第10章使用SpringCloudStream的事件驱动架构243
  • 10.1消息传递、EDA和微服务的案例244
  • 10.1.1使用同步请求-响应方式来传达状态变化244
  • 10.1.2使用消息传递在服务之间传达状态更改246
  • 10.1.3消息传递架构的缺点248
  • 10.2SpringCloudStream简介249
  • 10.3编写简单的消息生产者和消费者251
  • 10.3.1在Docker中配置ApacheKafka和Redis252
  • 10.3.2在组织服务中编写消息生产者252
  • 10.3.3在许可证服务中编写消息消费者258
  • 10.3.4在实际操作中查看消息服务261
  • 10.4SpringCloudStream用例:分布式缓存262
  • 10.4.1使用Redis来缓存查找263
  • 10.4.2定义自定义通道269
  • 10.5小结271
  • 第11章使用SpringCloudSleuth和Zipkin进行分布式跟踪272
  • 11.1SpringCloudSleuth与关联ID273
  • 11.1.1将SpringCloudSleuth添加到许可证服务和组织服务中274
  • 11.1.2剖析SpringCloudSleuth跟踪274
  • 11.2日志聚合与SpringCloudSleuth275
  • 11.2.1SpringCloudSleuth/ELK技术栈实现实战277
  • 11.2.2在服务中配置Logback278
  • 11.2.3在Docker中定义和运行ELK技术栈应用程序281
  • 11.2.4配置Kibana284
  • 11.2.5在Kibana中搜索SpringCloudSleuth的跟踪ID287
  • 11.2.6使用SpringCloudGateway将关联ID添加到HTTP响应288
  • 11.3使用Zipkin进行分布式跟踪290
  • 11.3.1设置SpringCloudSleuth和Zipkin依赖项291
  • 11.3.2配置服务以指向Zipkin291
  • 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和ELK313
  • 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设置GitHub325
  • 12.5.2使服务能够在Jenkins中构建326
  • 12.5.3理解并生成管道脚本330
  • 12.5.4创建Kubernetes管道脚本332
  • 12.6关于构建/部署管道的总结333
  • 12.7小结334
  • 附录A微服务架构实践335
  • A.1Richardson成熟度模型335
  • A.2SpringHATEOAS337
  • A.3外部化配置337
  • A.4持续集成和持续交付338
  • A.5监控339
  • A.6日志记录339
  • A.7API网关340
  • 附录BOAuth2授权类型341
  • B.1密码授权类型341
  • B.2客户端凭据授权类型343
  • B.3授权码授权类型344
  • B.4隐式授权类型345
  • B.5如何刷新令牌347
  • 附录C监控微服务349
  • C.1引入SpringBootActuator进行监控349
  • C.1.1添加SpringBootActuator349
  • C.1.2启用Actuator端点350
  • C.2设置Micrometer和Prometheus351
  • C.2.1了解Micrometer和Prometheus351
  • C.2.2实现Micrometer和Prometheus352
  • C.3配置Grafana354
  • C.4小结358

资源获取

相关资源

网友留言