互联网
类型
8.0
豆瓣评分
可以朗读
语音朗读
320千字
字数
2022-05-01
发行日期
展开全部
主编推荐语
一本为Java/Spring开发人员编写的微服务实战指南。
内容简介
本书以一个名为O-stock的项目为主线,介绍云、微服务等概念以及Spring Boot和Spring Cloud等诸多Spring项目,并介绍如何将O-stock项目一步一步地从单体架构重构成微服务架构,进而将这个项目拆分成众多微服务,让它们运行在各自的Docker容器中,实现持续集成/持续部署,并最终自动部署到云环境(AWS)的Kubernetes集群中。针对在重构过程中遇到的各种微服务开发会面临的问题(包括开发、测试和运维等问题),本书介绍了解决这些问题的核心模式,以及在实战中如何选择特定Spring Cloud子项目或其他工具(如KeyCloak、Zipkin、ELK技术栈)解决这些问题。
本书适合拥有构建分布式应用程序的经验、拥有Spring的知识背景以及对学习构建基于微服务的应用程序感兴趣的Java开发人员阅读。对于希望使用微服务构建基于云的应用程序,以及希望了解如何将基于微服务的应用部署到云上的开发人员,本书也具有很好的学习参考价值。
目录
- 版权信息
- 内容提要
- 译者序
- 前言
- 致谢
- 关于本书
- 关于作者
- 封面插图
- 资源与支持
- 第1章 欢迎迈入云世界,Spring
- 1.1 微服务架构的演进
- 1.1.1 n层架构
- 1.1.2 什么是单体架构
- 1.1.3 什么是微服务
- 1.1.4 为什么要改变构建应用的方式
- 1.2 使用Spring开发微服务
- 1.3 我们在构建什么
- 1.4 本书涵盖什么内容
- 1.4.1 在本书中你会学到什么
- 1.4.2 为什么本书与你有关
- 1.5 云和基于微服务的应用程序
- 1.5.1 使用Spring Boot来构建微服务
- 1.5.2 云计算到底是什么
- 1.5.3 为什么是云和微服务
- 1.6 微服务不只是编写代码
- 1.7 核心开发模式
- 1.8 路由模式
- 1.9 客户端弹性模式
- 1.10 安全模式
- 1.11 日志记录和跟踪模式
- 1.12 应用程序度量模式
- 1.13 构建/部署模式
- 1.14 小结
- 读者服务:
- 第2章 使用Spring Cloud探索微服务世界
- 2.1 什么是Spring Cloud
- 2.1.1 Spring Cloud Config
- 2.1.2 Spring Cloud服务发现
- 2.1.3 Spring Cloud LoadBalancer和Resilience4j
- 2.1.4 Spring Cloud API Gateway
- 2.1.5 Spring Cloud Stream
- 2.1.6 Spring Cloud Sleuth
- 2.1.7 Spring Cloud Security
- 2.2 通过示例来介绍Spring Cloud
- 2.3 如何构建云原生微服务
- 2.3.1 代码库
- 2.3.2 依赖
- 2.3.3 配置
- 2.3.4 后端服务
- 2.3.5 构建、发布和运行
- 2.3.6 进程
- 2.3.7 端口绑定
- 2.3.8 并发
- 2.3.9 可任意处置
- 2.3.10 开发环境/生产环境等同
- 2.3.11 日志
- 2.3.12 管理进程
- 2.4 确保本书的示例是有意义的
- 2.5 使用Spring Boot和Java来构建微服务
- 2.5.1 设置环境
- 2.5.2 从骨架项目开始
- 2.5.3 引导Spring Boot应用程序:编写引导类
- 2.6 小结
- 读者服务:
- 第3章 使用Spring Boot构建微服务
- 3.1 架构师的故事:设计微服务架构
- 3.1.1 分解业务问题
- 3.1.2 建立服务粒度
- 3.1.3 定义服务接口
- 3.2 何时不要使用微服务
- 3.2.1 构建分布式系统时的复杂性
- 3.2.2 服务器或容器散乱
- 3.2.3 应用程序的类型
- 3.2.4 数据事务和一致性
- 3.3 开发人员的故事:用Spring Boot和Java构建微服务
- 3.3.1 构建微服务的入口:Spring Boot控制器
- 3.3.2 将国际化添加到许可证服务
- 3.3.3 实现Spring HATEOAS来显示相关的链接
- 3.4 DevOps故事:构建运行时的严谨性
- 3.4.1 服务装配:打包和部署微服务
- 3.4.2 服务引导:管理微服务的配置
- 3.4.3 服务注册和发现:客户端如何与微服务通信
- 3.4.4 传达微服务的健康状况
- 3.5 将视角综合起来
- 3.6 小结
- 读者服务:
- 第4章 欢迎来到Docker
- 4.1 容器还是虚拟机
- 4.2 Docker是什么
- 4.3 Dockerfile
- 4.4 Docker Compose
- 4.5 集成Docker与微服务
- 4.5.1 构建Docker镜像
- 4.5.2 使用Spring Boot创建Docker镜像
- 4.5.3 使用Docker Compose启动服务
- 4.6 小结
- 读者服务:
- 第5章 使用Spring Cloud Config服务器端控制配置
- 5.1 关于管理配置(和复杂性)
- 5.1.1 配置管理架构
- 5.1.2 实施选择
- 5.2 构建Spring Cloud Config服务器端
- 5.2.1 创建Spring Cloud Config引导类
- 5.2.2 使用带有文件系统的Spring Cloud Config服务器端
- 5.2.3 创建服务的配置文件
- 5.3 将Spring Cloud Config与Spring Boot客户端集成
- 5.3.1 建立许可证服务的Spring Cloud Config服务依赖项
- 5.3.2 配置许可证服务以使用Spring Cloud Config
- 5.3.3 使用Spring Cloud Config服务器端连接数据源
- 5.3.4 使用@ConfigurationProperties直接读取属性
- 5.3.5 使用Spring Cloud Config服务器端刷新属性
- 5.3.6 使用Spring Cloud Config服务器端和Git
- 5.3.7 使用Spring Cloud Config服务集成Vault
- 5.3.8 Vault UI
- 5.4 保护敏感配置信息
- 5.4.1 创建对称加密密钥
- 5.4.2 加密和解密属性
- 5.5 最后的想法
- 5.6 小结
- 读者服务:
- 第6章 关于服务发现
- 6.1 我的服务在哪里
- 6.2 云中的服务发现
- 6.2.1 服务发现架构
- 6.2.2 使用Spring和Netflix Eureka进行服务发现实战
- 6.3 构建Spring Eureka服务
- 6.4 通过Spring Eureka注册服务
- 6.4.1 Eureka的REST API
- 6.4.2 Eureka仪表板
- 6.5 使用服务发现来查找服务
- 6.5.1 使用Spring Discovery Client查找服务实例
- 6.5.2 使用带有Load Balancer功能的Spring Rest模板调用服务
- 6.5.3 使用Netflix Feign客户端调用服务
- 6.6 小结
- 读者服务:
- 第7章 当糟糕的事情发生时:使用Spring Cloud和Resilience4j的弹性模式
- 7.1 什么是客户端弹性模式
- 7.1.1 客户端负载均衡模式
- 7.1.2 断路器模式
- 7.1.3 后备模式
- 7.1.4 舱壁模式
- 7.2 为什么客户端弹性很重要
- 7.3 实现Resilience4j
- 7.4 设置许可证服务以使用Spring Cloud和Resilience4j
- 7.5 实现断路器
- 7.5.1 向组织服务添加断路器
- 7.5.2 定制断路器
- 7.6 后备处理
- 7.7 实现舱壁模式
- 7.8 实现重试模式
- 7.9 实现限流器模式
- 7.10 ThreadLocal和Resilience4j
- 7.11 小结
- 读者服务:
- 第8章 使用Spring Cloud Gateway进行服务路由
- 8.1 什么是服务网关
- 8.2 Spring Cloud Gateway简介
- 8.2.1 建立Spring Cloud Gateway项目
- 8.2.2 配置Spring Cloud Gateway与Eureka进行通信
- 8.3 在Spring Cloud Gateway中配置路由
- 8.3.1 通过服务发现自动映射路由
- 8.3.2 使用服务发现手动映射路由
- 8.3.3 动态重新加载路由配置
- 8.4 Spring Cloud Gateway的真正威力:断言和过滤器工厂
- 8.4.1 内置的断言工厂
- 8.4.2 内置的过滤器工厂
- 8.4.3 自定义过滤器
- 8.5 构建前置过滤器
- 8.6 在服务中使用关联ID
- 8.6.1 UserContextFilter:拦截传入的HTTP请求
- 8.6.2 UserContext:使服务易于访问HTTP首部
- 8.6.3 自定义RestTemplate和UserContextInteceptor:确保关联ID被传播
- 8.7 构建接收关联ID的后置过滤器
- 8.8 小结
- 读者服务:
- 第9章 保护微服务
- 9.1 OAuth2是什么
- 9.2 Keycloak简介
- 9.3 从小事做起:使用Spring和Keycloak来保护单个端点
- 9.3.1 将Keycloak服务添加到Docker
- 9.3.2 设置Keycloak
- 9.3.3 注册客户端应用程序
- 9.3.4 配置O-stock用户
- 9.3.5 对O-stock用户进行身份认证
- 9.4 使用Keycloak保护组织服务
- 9.4.1 将Spring Security和Keycloak JAR添加到各个服务
- 9.4.2 配置服务以指向Keycloak服务
- 9.4.3 定义什么和谁可以访问服务
- 9.4.4 传播访问令牌
- 9.4.5 从JWT中解析自定义字段
- 9.5 关于微服务安全的一些总结
- 9.5.1 对所有业务通信使用HTTPS/安全套接字层(SSL)
- 9.5.2 使用服务网关访问微服务
- 9.5.3 将服务划分到公共API和私有API
- 9.5.4 通过封锁不需要的网络端口来限制微服务的攻击面
- 9.6 小结
- 读者服务:
- 第10章 使用Spring Cloud Stream的事件驱动架构
- 10.1 消息传递、EDA和微服务的案例
- 10.1.1 使用同步请求-响应方式来传达状态变化
- 10.1.2 使用消息传递在服务之间传达状态更改
- 10.1.3 消息传递架构的缺点
- 10.2 Spring Cloud Stream简介
- 10.3 编写简单的消息生产者和消费者
- 10.3.1 在Docker中配置Apache Kafka和Redis
- 10.3.2 在组织服务中编写消息生产者
- 10.3.3 在许可证服务中编写消息消费者
- 10.3.4 在实际操作中查看消息服务
- 10.4 Spring Cloud Stream用例:分布式缓存
- 10.4.1 使用Redis来缓存查找
- 10.4.2 定义自定义通道
- 10.5 小结
- 读者服务:
- 第11章 使用Spring Cloud Sleuth和Zipkin进行分布式跟踪
- 11.1 Spring Cloud Sleuth与关联ID
- 11.1.1 将Spring Cloud Sleuth添加到许可证服务和组织服务中
- 11.1.2 剖析Spring Cloud Sleuth跟踪
- 11.2 日志聚合与Spring Cloud Sleuth
- 11.2.1 Spring Cloud Sleuth/ELK技术栈实现实战
- 11.2.2 在服务中配置Logback
- 11.2.3 在Docker中定义和运行ELK技术栈应用程序
- 11.2.4 配置Kibana
- 11.2.5 在Kibana中搜索Spring Cloud Sleuth的跟踪ID
- 11.2.6 使用Spring Cloud Gateway将关联ID添加到HTTP响应
- 11.3 使用Zipkin进行分布式跟踪
- 11.3.1 设置Spring Cloud Sleuth和Zipkin依赖项
- 11.3.2 配置服务以指向Zipkin
- 11.3.3 配置Zipkin服务器端
- 11.3.4 设置跟踪级别
- 11.3.5 使用Zipkin跟踪事务
- 11.3.6 可视化更复杂的事务
- 11.3.7 捕获消息传递踪迹
- 11.3.8 添加自定义跨度
- 11.4 小结
- 读者服务:
- 第12章 部署微服务
- 12.1 构建/部署管道的架构
- 12.2 在云中设置O-stock的核心基础设施
- 12.2.1 使用亚马逊的RDS创建PostgreSQL数据库
- 12.2.2 在AWS中创建Redis集群
- 12.3 超越基础设施:部署O-stock和ELK
- 12.3.1 创建运行EKL的EC2实例
- 12.3.2 在EC2实例中部署ELK技术栈
- 12.3.3 创建一个EKS集群
- 12.4 构建/部署管道实战
- 12.5 创建构建/部署管道
- 12.5.1 设置GitHub
- 12.5.2 使服务能够在Jenkins中构建
- 12.5.3 理解并生成管道脚本
- 12.5.4 创建Kubernetes管道脚本
- 12.6 关于构建/部署管道的总结
- 12.7 小结
- 读者服务:
- 附录A 微服务架构最佳实践
- A.1 Richardson成熟度模型
- A.2 Spring HATEOAS
- A.3 外部化配置
- A.4 持续集成和持续交付
- A.5 监控
- A.6 日志记录
- A.7 API网关
- 读者服务:
- 附录B OAuth2授权类型
- B.1 密码授权类型
- B.2 客户端凭据授权类型
- B.3 授权码授权类型
- B.4 隐式授权类型
- B.5 如何刷新令牌
- 读者服务:
- 附录C 监控微服务
- C.1 引入Spring Boot Actuator进行监控
- C.1.1 添加Spring Boot Actuator
- C.1.2 启用Actuator端点
- C.2 设置Micrometer和Prometheus
- C.2.1 了解Micrometer和Prometheus
- C.2.2 实现Micrometer和Prometheus
- C.3 配置Grafana
- C.4 小结
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。