Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!
当前位置: 主页 > Java文档 > Java基础相关 >

微服务与事件驱动架构 PDF 下载


分享到:
时间:2023-10-15 09:13来源:http://www.java1234.com 作者:转载  侵权举报
微服务既有同步实现,亦有异步实现。异步微服务架构以事件驱动,不受特定的API限制,系统的耦合度低,可扩展性强。本书教你从头开始构建完整的事件驱动型微服务架构,根据实际
失效链接处理
微服务与事件驱动架构 PDF 下载


下载地址:
版权归出版社和原作者所有,链接已删除,请购买正版

用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
https://product.dangdang.com/29311962.html
 

相关截图:





资料简介:

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

资料目录:


前言 xv

第 1 章 为什么用事件驱动型微服务 1

1.1 什么是事件驱动型微服务 2

1.2 领域驱动设计和界限上下文 3

1.2.1 运用领域模型和界限上下文 4

1.2.2 保持界限上下文与业务需求一致 4

1.3 沟通结构 5

1.3.1 业务沟通结构 5

1.3.2 实现沟通结构 6

1.3.3 数据沟通结构 7

1.3.4 康威定律和沟通结构 7

1.4 传统计算中的沟通结构 8

1.4.1 选项1:创建一个新服务 8

1.4.2 选项2:将它加入现有服务中 9

1.4.3 两种选项的利弊 9

1.4.4 团队场景(续) 10

1.4.5 冲突的压力 10

1.5 事件驱动的沟通结构 11

1.5.1 事件是通信的基础 11

1.5.2 事件流提供了单一事实来源 11

1.5.3 消费者执行自己的建模和查询 11

1.5.4 整个组织的数据沟通得到改善 12

1.5.5 高可访问的数据利于业务变更 12

1.6 异步的事件驱动型微服务 12

1.7 同步式微服务 14

1.7.1 同步式微服务的缺点 14

1.7.2 同步式微服务的优点 15

1.8 小结 16

第 2 章 事件驱动型微服务基础 17

2.1 构建拓扑 17

2.1.1 微服务拓扑 17

2.1.2 业务拓扑 18

2.2 事件内容 19

2.3 事件的结构 19

2.3.1 无键事件 19

2.3.2 实体事件 20

2.3.3 键控事件 20

2.4 物化来自实体事件的状态 20

2.5 事件数据的定义和schema 22

2.6 微服务单一写原则 22

2.7 用事件代理赋能微服务 23

2.7.1 事件存储和服务 23

2.7.2 需要考虑的其他因素 24

2.8 事件代理与消息代理 25

2.8.1 从不可变日志中消费 26

2.8.2 提供单一事实来源 27

2.9 大规模管理微服务 28

2.9.1 将微服务放到容器内 28

2.9.2 将微服务放到虚拟机内 28

2.9.3 管理容器和虚拟机 28

2.10 缴纳微服务税 29

2.11 小结 30

第 3 章 通信和数据契约 31

3.1 事件驱动数据契约 31

3.1.1 使用显式schema作为契约 32

3.1.2 schema定义的注释 32

3.1.3 全能的schema演化 33

3.1.4 有代码生成器支持 33

3.1.5 破坏性的schema变更 34

3.2 选择事件格式 36

3.3 设计事件 36

3.3.1 只讲述事实 36

3.3.2 每个流都使用单一事件定义 37

3.3.3 使用窄的数据类型 37

3.3.4 保持事件的单一用途 37

3.3.5 小化事件 40

3.3.6 让潜在的消费者参与事件设计 40

3.3.7 避免将事件作为信号量或信号 41

3.4 小结 41

第 4 章 将事件驱动架构与现有系统集成 42

4.1 什么是数据解放 43

4.1.1 数据解放的折中方案 43

4.1.2 将被解放的数据转化成事件 45

4.2 数据解放模式 45

4.3 数据解放框架 46

4.4 通过查询实施数据解放 46

4.4.1 批量加载 47

4.4.2 增量时间戳加载 47

4.4.3 自增ID 加载 47

4.4.4 自定义查询 47

4.4.5 增量更新 47

4.4.6 基于查询更新的优点 48

4.4.7 基于查询更新的缺点 48

4.5 使用变更数据捕获日志解放数据 49

4.5.1 使用数据存储日志的优点 50

4.5.2 使用数据库日志的缺点 50

4.6 使用发件箱表解放数据 51

4.6.1 性能考虑 52

4.6.2 隔离内部数据模型 52

4.6.3 确保schema兼容性 53

4.6.4 使用触发器捕获变更数据 56

4.7 对处于捕获的数据集做数据定义变更 59

4.7.1 为查询和CDC日志模式处理事后数据定义变更 60

4.7.2 为变更数据表捕获模式处理数据定义变更 60

4.8 将事件数据落地到数据存储 60

4.9 数据落地和获取对业务的影响 60

4.10 小结 62

第 5 章 事件驱动处理基础 63

5.1 构建无状态拓扑 64

5.1.1 转换 64

5.1.2 分流与合流 65

5.2 对事件流再分区 65

5.3 对事件流协同分区 66

5.4 给消费者实例分配分区 67

5.4.1 使用分区分配器分配分区 68

5.4.2 分配协同分区 68

5.4.3 分区分配策略 68

5.5 从无状态处理实例故障中恢复 70

5.6 小结 70

第 6 章 具有确定性的流处理 71

6.1 事件驱动工作流的确定性 72

6.2 时间戳 72

6.2.1 同步分布式时间戳 73

6.2.2 处理带时间戳的事件 74

6.3 事件调度和确定性处理 75

6.3.1 自定义事件调度器 75

6.3.2 基于事件时间、处理时间和摄取时间进行处理 75

6.3.3 消费者提取时间戳 76

6.3.4 对外部系统的“请求?C响应”调用 76

6.4 水位 76

6.5 流时间 78

6.6 乱序事件和迟到事件 80

6.6.1 使用水位和流时间的迟到事件 81

6.6.2 乱序事件的原因和影响 81

6.6.3 时间敏感的函数和窗口化 83

6.7 处理迟到事件 85

6.8 再处理与近实时处理 86

6.9 间歇性故障和迟到事件 86

6.10 生产者/事件代理的连接性问题 87

6.11 小结与延展阅读 88

第 7 章 有状态的流 89

7.1 状态存储与从事件流中物化状态 89

7.2 记录状态到变更日志事件流 90

7.3 将状态物化至内部状态存储 91

7.3.1 物化全局状态 92

7.3.2 使用内部状态的优点 92

7.3.3 使用内部状态的缺点 93

7.3.4 内部状态的伸缩和恢复 93

7.4 将状态物化至外部状态存储 96

7.4.1 外部状态的优点 97

7.4.2 外部状态的缺点 97

7.4.3 外部状态存储的伸缩和恢复 98

7.5 重建与迁移状态存储 99

7.5.1 重建 99

7.5.2 迁移 100

7.6 事务与有效一次处理 100

7.6.1 示例:库存计算服务 101

7.6.2 使用“客户端?C代理”事务的有效一次处理 102

7.6.3 没有“客户端?C代理”事务的有效一次处理 103

7.7 小结 107

第 8 章 用微服务构建工作流 108

8.1 编排模式 109

8.1.1 一个简单的事件驱动编排示例 109

8.1.2 创建和修改编排的工作流 110

8.1.3 监控编排的工作流 110

8.2 编制模式 111

8.2.1 一个简单的事件驱动编制模式例子 112

8.2.2 一个简单的直接调用的编制模式例子 113

8.2.3 对比事件驱动编制模式和直接调用的编制模式 114

8.2.4 创建和修改编制工作流 114

8.2.5 监控编制工作流 115

8.3 分布式事务 115

8.3.1 编排型事务:saga模式 115

8.3.2 编制型事务 117

8.4 补偿工作流 119

8.5 小结 119

第 9 章 使用“函数即服务”的微服务 120

9.1 设计基于函数的微服务解决方案 120

9.1.1 确保界限上下文的严格的成员关系 120

9.1.2 只在完成处理之后提交偏移量 121

9.1.3 少即是多 121

9.2 选择FaaS供应商 122

9.3 在函数之外构建微服务 122

9.4 冷启动和热启动 123

9.5 用触发器启动函数 124

9.5.1 基于新事件触发:事件流监听器 124

9.5.2 基于消费者组的滞后度触发 125

9.5.3 按调度表触发 126

9.5.4 使用网络钩子触发 126

9.5.5 触发资源事件 127

9.6 用函数执行业务工作 127

9.7 维持状态 127

9.8 调用其他函数的函数 128

9.8.1 事件驱动通信模式 128

9.8.2 直接调用模式 129

9.9 终止和关闭 131

9.10 调整函数 132

9.10.1 分配足够的资源 132

9.10.2 批量事件处理的参数 132

9.11 FaaS的伸缩方案 132

9.12 小结 133

第 10 章 基础的生产者和消费者微服务 134

10.1 BPC的适用场合 134

10.1.1 集成现有遗留系统 135

10.1.2 不依赖于事件顺序的有状态的业务逻辑 136

10.1.3 当数据层完成大部分工作时 137

10.1.4 处理层和数据层独立伸缩 137

10.2 具有外部流处理的混合BPC应用程序 138

10.3 小结 140

第 11 章 使用重量级框架的微服务 141

11.1 重量级框架的简单历史 142

11.2 重量级框架的内部运作 142

11.3 优点和局限性 144

11.4 集群搭建方案和执行模式 145

11.4.1 使用托管服务 146

11.4.2 构建自己的完整集群 146

11.4.3 使用CMS集成来创建集群 146

11.5 应用程序提交模式 148

11.5.1 驱动器模式 148

11.5.2 集群模式 148

11.6 处理状态和使用检查点 148

11.7 伸缩应用程序和处理事件流分区 149

11.7.1 伸缩运行中的应用程序 150

11.7.2 通过重启伸缩应用程序 153

11.7.3 自动伸缩应用程序 153

11.8 从故障中恢复 153

11.9 考虑多租户问题 153

11.10 语言和语法 154

11.11 选择一个框架 154

11.12 示例:点击和观看的会话窗口 155

11.13 小结 157

第 12 章 使用轻量级框架的微服务 158

12.1 优点和局限性 158

12.2 轻量级处理 159

12.3 处理状态和使用变更日志 159

12.4 伸缩和故障恢复 160

12.4.1 事件洗牌 160

12.4.2 状态分配 161

12.4.3 状态复制和热副本 161

12.5 选择一个轻量级框架 161

12.5.1 Apache Kafka Streams 162

12.5.2 Apache Samza:嵌入模式 162

12.6 语言和语法 162

12.7 流?C表?C表联结:增强模式 163

12.8 小结 166

第 13 章 集成事件驱动型和“请求?C响应”型微服务 167

13.1 处理外部事件 167

13.1.1 自动生成的事件 168

13.1.2 由响应生成的事件 168

13.2 处理自动生成的分析事件 168

13.3 集成第三方“请求?C响应”API 170

13.4 处理并提供有状态的数据 171

13.4.1 实时请求内部状态存储 172

13.4.2 实时请求外部状态存储 175

13.5 在事件驱动的工作流中处理请求 177

13.6 “请求?C响应”应用程序中的微前端 183

13.7 微前端的优点 184

13.7.1 基于组合的微服务 184

13.7.2 容易与业务需求对齐 185

13.8 微前端的缺点 185

13.8.1 可能不一致的UI元素和样式 185

13.8.2 不同的微前端性能 185

13.8.3 示例:体验搜索与评论应用程序 186

13.9 小结 188

第 14 章 支持性工具 190

14.1 微服务?C团队分配系统 190

14.2 事件流的创建和修改 191

14.3 事件流元数据标记 191

14.4 限额 192

14.5 schema注册表 192

14.6 schema创建和修改通知 193

14.7 偏移量管理 193

14.8 事件流的权限和访问控制列表 194

14.9 状态管理和应用程序重置 195

14.10 消费者偏移量滞后度监控 196

14.11 流水线型的微服务创建流程 196

14.12 容器管理控制 197

14.13 集群创建和管理 197

14.13.1 事件代理的程序化创建 197

14.13.2 计算资源的程序化创建 198

14.13.3 跨集群事件数据复制 198

14.13.4 工具的程序化创建 198

14.14 依赖跟踪和拓扑可视化 199

14.15 小结 202

第 15 章 测试事件驱动型微服务 203

15.1 通用测试原则 203

15.2 单元测试拓扑函数 203

15.2.1 无状态的函数 204

15.2.2 有状态的函数 204

15.3 测试拓扑 205

15.4 测试schema演化和兼容性 205

15.5 事件驱动型微服务的集成测试 206

15.6 本地集成测试 206

15.6.1 在测试代码的运行时内创建临时环境 208

15.6.2 在测试代码外部创建临时环境 209

15.6.3 使用mocking和模拟器方法集成托管服务 209

15.6.4 集成没有本地支持的远程服务 210

15.7 完全远程集成测试 211

15.7.1 程序化创建临时集成测试环境 211

15.7.2 使用共享环境进行测试 213

15.7.3 使用生产环境进行测试 214

15.8 选择你的完全远程集成测试策略 214

15.9 小结 215

第 16 章 部署事件驱动型微服务 216

16.1 微服务部署的原则 216

16.2 微服务部署的架构组件 217

16.2.1 持续集成系统、持续交付系统和持续部署系统 217

16.2.2 CMS和商业硬件 218

16.3 基本的全站式部署模式 218

16.4 滚动更新模式 220

16.5 破坏性的schema变更模式 220

16.5.1 通过两个事件流达到终迁移 222

16.5.2 同步迁移到新事件流 222

16.6 蓝绿部署模式 223

16.7 小结 224

第 17 章 结论 225

17.1 通信层 225

17.2 业务领域和界限上下文 226

17.3 可共享的工具和基础设施 226

17.4 结构化事件 226

17.5 数据解放和单一事实来源 227

17.6 微服务 227

17.7 微服务实现方案 228

17.8 测试 228

17.9 部署 229

17.10 结语 229
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐