展开全部

主编推荐语

一本为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 小结
展开全部

评分及书评

评分不足
1个评分
  • 用户头像
    给这本书评了
    5.0

    本书以一个名为 O-stock 的项目为主线,介绍云、微服务等概念以及 Spring Boot Spring Cloud 等诸多 Spring 项目,并介绍如何将 O-stock 项目一步一步地从单体架构重构成微服务架构,进而将这个项目拆分成众多微服务,让它们运行在各自的 Docker 容器中,实现持续集成 / 持续部署,并最终自动部署到云环境(AWS)的 Kubernetes 集群中。

      转发
      评论

    出版方

    人民邮电出版社

    人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。