展开全部

主编推荐语

本书教你从头开始构建完整的事件驱动型微服务架构。

内容简介

微服务既有同步实现,亦有异步实现。异步微服务架构以事件驱动,不受特定的API限制,系统的耦合度低,可扩展性强。本书教你从头开始构建完整的事件驱动型微服务架构,根据实际的业务需求调整、扩展微服务,更好地实践持续交付,并以新的视角思考如何充分利用实时数据的价值。

目录

  • 版权信息
  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 前言
  • 第1章 为什么用事件驱动型微服务
  • 1.1 什么是事件驱动型微服务
  • 1.2 领域驱动设计和界限上下文
  • 1.2.1 运用领域模型和界限上下文
  • 1.2.2 保持界限上下文与业务需求一致
  • 1.3 沟通结构
  • 1.3.1 业务沟通结构
  • 1.3.2 实现沟通结构
  • 1.3.3 数据沟通结构
  • 1.3.4 康威定律和沟通结构
  • 1.4 传统计算中的沟通结构
  • 1.4.1 选项1:创建一个新服务
  • 1.4.2 选项2:将它加入现有服务中
  • 1.4.3 两种选项的利弊
  • 1.4.4 团队场景(续)
  • 1.4.5 冲突的压力
  • 1.5 事件驱动的沟通结构
  • 1.5.1 事件是通信的基础
  • 1.5.2 事件流提供了单一事实来源
  • 1.5.3 消费者执行自己的建模和查询
  • 1.5.4 整个组织的数据沟通得到改善
  • 1.5.5 高可访问的数据利于业务变更
  • 1.6 异步的事件驱动型微服务
  • 使用事件驱动型微服务的示例团队
  • 1.7 同步式微服务
  • 1.7.1 同步式微服务的缺点
  • 1.7.2 同步式微服务的优点
  • 1.8 小结
  • 第2章 事件驱动型微服务基础
  • 2.1 构建拓扑
  • 2.1.1 微服务拓扑
  • 2.1.2 业务拓扑
  • 2.2 事件内容
  • 2.3 事件的结构
  • 2.3.1 无键事件
  • 2.3.2 实体事件
  • 2.3.3 键控事件
  • 2.4 物化来自实体事件的状态
  • 2.5 事件数据的定义和schema
  • 2.6 微服务单一写原则
  • 2.7 用事件代理赋能微服务
  • 2.7.1 事件存储和服务
  • 2.7.2 需要考虑的其他因素
  • 2.8 事件代理与消息代理
  • 2.8.1 从不可变日志中消费
  • 2.8.2 提供单一事实来源
  • 2.9 大规模管理微服务
  • 2.9.1 将微服务放到容器内
  • 2.9.2 将微服务放到虚拟机内
  • 2.9.3 管理容器和虚拟机
  • 2.10 缴纳微服务税
  • 2.11 小结
  • 第3章 通信和数据契约
  • 3.1 事件驱动数据契约
  • 3.1.1 使用显式schema作为契约
  • 3.1.2 schema定义的注释
  • 3.1.3 全能的schema演化
  • 3.1.4 有代码生成器支持
  • 3.1.5 破坏性的schema变更
  • 3.2 选择事件格式
  • 3.3 设计事件
  • 3.3.1 只讲述事实
  • 3.3.2 每个流都使用单一事件定义
  • 3.3.3 使用最窄的数据类型
  • 3.3.4 保持事件的单一用途
  • 3.3.5 最小化事件
  • 3.3.6 让潜在的消费者参与事件设计
  • 3.3.7 避免将事件作为信号量或信号
  • 3.4 小结
  • 第4章 将事件驱动架构与现有系统集成
  • 4.1 什么是数据解放
  • 4.1.1 数据解放的折中方案
  • 4.1.2 将被解放的数据转化成事件
  • 4.2 数据解放模式
  • 4.3 数据解放框架
  • 4.4 通过查询实施数据解放
  • 4.4.1 批量加载
  • 4.4.2 增量时间戳加载
  • 4.4.3 自增ID加载
  • 4.4.4 自定义查询
  • 4.4.5 增量更新
  • 4.4.6 基于查询更新的优点
  • 4.4.7 基于查询更新的缺点
  • 4.5 使用变更数据捕获日志解放数据
  • 4.5.1 使用数据存储日志的优点
  • 4.5.2 使用数据库日志的缺点
  • 4.6 使用发件箱表解放数据
  • 4.6.1 性能考虑
  • 4.6.2 隔离内部数据模型
  • 4.6.3 确保schema兼容性
  • 4.6.4 使用触发器捕获变更数据
  • 4.7 对处于捕获的数据集做数据定义变更
  • 4.7.1 为查询和CDC日志模式处理事后数据定义变更
  • 4.7.2 为变更数据表捕获模式处理数据定义变更
  • 4.8 将事件数据落地到数据存储
  • 4.9 数据落地和获取对业务的影响
  • 4.10 小结
  • 第5章 事件驱动处理基础
  • 5.1 构建无状态拓扑
  • 5.1.1 转换
  • 5.1.2 分流与合流
  • 5.2 对事件流再分区
  • 示例:对一个事件流再分区
  • 5.3 对事件流协同分区
  • 示例:对一个事件流进行协同分区
  • 5.4 给消费者实例分配分区
  • 5.4.1 使用分区分配器分配分区
  • 5.4.2 分配协同分区
  • 5.4.3 分区分配策略
  • 5.5 从无状态处理实例故障中恢复
  • 5.6 小结
  • 第6章 具有确定性的流处理
  • 6.1 事件驱动工作流的确定性
  • 6.2 时间戳
  • 6.2.1 同步分布式时间戳
  • 6.2.2 处理带时间戳的事件
  • 6.3 事件调度和确定性处理
  • 6.3.1 自定义事件调度器
  • 6.3.2 基于事件时间、处理时间和摄取时间进行处理
  • 6.3.3 消费者提取时间戳
  • 6.3.4 对外部系统的“请求–响应”调用
  • 6.4 水位
  • 并行处理中的水位
  • 6.5 流时间
  • 并行处理中的流时间
  • 6.6 乱序事件和迟到事件
  • 6.6.1 使用水位和流时间的迟到事件
  • 6.6.2 乱序事件的原因和影响
  • 6.6.3 时间敏感的函数和窗口化
  • 6.7 处理迟到事件
  • 6.8 再处理与近实时处理
  • 6.9 间歇性故障和迟到事件
  • 6.10 生产者/事件代理的连接性问题
  • 6.11 小结与延展阅读
  • 第7章 有状态的流
  • 7.1 状态存储与从事件流中物化状态
  • 7.2 记录状态到变更日志事件流
  • 7.3 将状态物化至内部状态存储
  • 7.3.1 物化全局状态
  • 7.3.2 使用内部状态的优点
  • 7.3.3 使用内部状态的缺点
  • 7.3.4 内部状态的伸缩和恢复
  • 7.4 将状态物化至外部状态存储
  • 7.4.1 外部状态的优点
  • 7.4.2 外部状态的缺点
  • 7.4.3 外部状态存储的伸缩和恢复
  • 7.5 重建与迁移状态存储
  • 7.5.1 重建
  • 7.5.2 迁移
  • 7.6 事务与有效一次处理
  • 7.6.1 示例:库存计算服务
  • 7.6.2 使用“客户端–代理”事务的有效一次处理
  • 7.6.3 没有“客户端–代理”事务的有效一次处理
  • 7.7 小结
  • 第8章 用微服务构建工作流
  • 8.1 编排模式
  • 8.1.1 一个简单的事件驱动编排示例
  • 8.1.2 创建和修改编排的工作流
  • 8.1.3 监控编排的工作流
  • 8.2 编制模式
  • 8.2.1 一个简单的事件驱动编制模式例子
  • 8.2.2 一个简单的直接调用的编制模式例子
  • 8.2.3 对比事件驱动编制模式和直接调用的编制模式
  • 8.2.4 创建和修改编制工作流
  • 8.2.5 监控编制工作流
  • 8.3 分布式事务
  • 8.3.1 编排型事务:saga模式
  • 8.3.2 编制型事务
  • 8.4 补偿工作流
  • 8.5 小结
  • 第9章 使用“函数即服务”的微服务
  • 9.1 设计基于函数的微服务解决方案
  • 9.1.1 确保界限上下文的严格的成员关系
  • 9.1.2 只在完成处理之后提交偏移量
  • 9.1.3 少即是多
  • 9.2 选择FaaS供应商
  • 9.3 在函数之外构建微服务
  • 9.4 冷启动和热启动
  • 9.5 用触发器启动函数
  • 9.5.1 基于新事件触发:事件流监听器
  • 9.5.2 基于消费者组的滞后度触发
  • 9.5.3 按调度表触发
  • 9.5.4 使用网络钩子触发
  • 9.5.5 触发资源事件
  • 9.6 用函数执行业务工作
  • 9.7 维持状态
  • 9.8 调用其他函数的函数
  • 9.8.1 事件驱动通信模式
  • 9.8.2 直接调用模式
  • 9.9 终止和关闭
  • 9.10 调整函数
  • 9.10.1 分配足够的资源
  • 9.10.2 批量事件处理的参数
  • 9.11 FaaS的伸缩方案
  • 9.12 小结
  • 第10章 基础的生产者和消费者微服务
  • 10.1 BPC的适用场合
  • 10.1.1 集成现有遗留系统
  • 10.1.2 不依赖于事件顺序的有状态的业务逻辑
  • 10.1.3 当数据层完成大部分工作时
  • 10.1.4 处理层和数据层独立伸缩
  • 10.2 具有外部流处理的混合BPC应用程序
  • 示例:使用外部流处理框架来联结事件流
  • 10.3 小结
  • 第11章 使用重量级框架的微服务
  • 11.1 重量级框架的简单历史
  • 11.2 重量级框架的内部运作
  • 11.3 优点和局限性
  • 11.4 集群搭建方案和执行模式
  • 11.4.1 使用托管服务
  • 11.4.2 构建自己的完整集群
  • 11.4.3 使用CMS集成来创建集群
  • 11.5 应用程序提交模式
  • 11.5.1 驱动器模式
  • 11.5.2 集群模式
  • 11.6 处理状态和使用检查点
  • 11.7 伸缩应用程序和处理事件流分区
  • 11.7.1 伸缩运行中的应用程序
  • 11.7.2 通过重启伸缩应用程序
  • 11.7.3 自动伸缩应用程序
  • 11.8 从故障中恢复
  • 11.9 考虑多租户问题
  • 11.10 语言和语法
  • 11.11 选择一个框架
  • 11.12 示例:点击和观看的会话窗口
  • 11.13 小结
  • 第12章 使用轻量级框架的微服务
  • 12.1 优点和局限性
  • 12.2 轻量级处理
  • 12.3 处理状态和使用变更日志
  • 12.4 伸缩和故障恢复
  • 12.4.1 事件洗牌
  • 12.4.2 状态分配
  • 12.4.3 状态复制和热副本
  • 12.5 选择一个轻量级框架
  • 12.5.1 Apache Kafka Streams
  • 12.5.2 Apache Samza:嵌入模式
  • 12.6 语言和语法
  • 12.7 流–表–表联结:增强模式
  • 12.8 小结
  • 第13章 集成事件驱动型和“请求–响应”型微服务
  • 13.1 处理外部事件
  • 13.1.1 自动生成的事件
  • 13.1.2 由响应生成的事件
  • 13.2 处理自动生成的分析事件
  • 13.3 集成第三方“请求–响应”API
  • 13.4 处理并提供有状态的数据
  • 13.4.1 实时请求内部状态存储
  • 13.4.2 实时请求外部状态存储
  • 13.5 在事件驱动的工作流中处理请求
  • 处理用户界面事件
  • 13.6 “请求–响应”应用程序中的微前端
  • 13.7 微前端的优点
  • 13.7.1 基于组合的微服务
  • 13.7.2 容易与业务需求对齐
  • 13.8 微前端的缺点
  • 13.8.1 可能不一致的UI元素和样式
  • 13.8.2 不同的微前端性能
  • 13.8.3 示例:体验搜索与评论应用程序
  • 13.9 小结
  • 第14章 支持性工具
  • 14.1 微服务–团队分配系统
  • 14.2 事件流的创建和修改
  • 14.3 事件流元数据标记
  • 14.4 限额
  • 14.5 schema注册表
  • 14.6 schema创建和修改通知
  • 14.7 偏移量管理
  • 14.8 事件流的权限和访问控制列表
  • 14.9 状态管理和应用程序重置
  • 14.10 消费者偏移量滞后度监控
  • 14.11 流水线型的微服务创建流程
  • 14.12 容器管理控制
  • 14.13 集群创建和管理
  • 14.13.1 事件代理的程序化创建
  • 14.13.2 计算资源的程序化创建
  • 14.13.3 跨集群事件数据复制
  • 14.13.4 工具的程序化创建
  • 14.14 依赖跟踪和拓扑可视化
  • 拓扑示例
  • 14.15 小结
  • 第15章 测试事件驱动型微服务
  • 15.1 通用测试原则
  • 15.2 单元测试拓扑函数
  • 15.2.1 无状态的函数
  • 15.2.2 有状态的函数
  • 15.3 测试拓扑
  • 15.4 测试schema演化和兼容性
  • 15.5 事件驱动型微服务的集成测试
  • 15.6 本地集成测试
  • 15.6.1 在测试代码的运行时内创建临时环境
  • 15.6.2 在测试代码外部创建临时环境
  • 15.6.3 使用mocking和模拟器方法集成托管服务
  • 15.6.4 集成没有本地支持的远程服务
  • 15.7 完全远程集成测试
  • 15.7.1 程序化创建临时集成测试环境
  • 15.7.2 使用共享环境进行测试
  • 15.7.3 使用生产环境进行测试
  • 15.8 选择你的完全远程集成测试策略
  • 15.9 小结
  • 第16章 部署事件驱动型微服务
  • 16.1 微服务部署的原则
  • 16.2 微服务部署的架构组件
  • 16.2.1 持续集成系统、持续交付系统和持续部署系统
  • 16.2.2 CMS和商业硬件
  • 16.3 基本的全站式部署模式
  • 16.4 滚动更新模式
  • 16.5 破坏性的schema变更模式
  • 16.5.1 通过两个事件流达到最终迁移
  • 16.5.2 同步迁移到新事件流
  • 16.6 蓝绿部署模式
  • 16.7 小结
  • 第17章 结论
  • 17.1 通信层
  • 17.2 业务领域和界限上下文
  • 17.3 可共享的工具和基础设施
  • 17.4 结构化事件
  • 17.5 数据解放和单一事实来源
  • 17.6 微服务
  • 17.7 微服务实现方案
  • 17.8 测试
  • 17.9 部署
  • 17.10 结语
  • 关于作者
  • 关于封面
  • 看完了
展开全部

评分及书评

4.3
4个评分
  • 用户头像
    给这本书评了
    2.0

    胡乱拼凑

      转发
      评论
      用户头像
      给这本书评了
      5.0
      具有实操的事件驱动指南

      推荐

        转发
        评论

      出版方

      人民邮电出版社

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