·了解云原生应用的新编程模型。
·编写高性能的分布式应用,而无需深入技术细节。
·使用Dapr轻松编写基于任何语言或框架的微服务。
·了解Dapr如何通过开放的API,以及可扩展、社区驱动的组件来提供的一致性和可移植性。
·探索Dapr如何处理状态、资源绑定、以及发布/订阅来实现可伸缩、可扩展、事件驱动的架构。
·将各种SaaS产品的能力集成进云应用,比如机器学习。
目录
前言 .1
第0 章 简介 .7
0.1 什么是 Dapr 7
0.1.1 异构环境的编程模型 9
0.1.2 更多的帮助,更少的倾向 . 10
0.1.3 不要重复造轮子! 11
0.1.4 统一的编程模型 12
0.2 Dapr 的架构 13
语言支持 15
0.3 开始使用 Dapr 16
0.3.1 Dapr 独立模式下的 Hello world ! 16
0.3.2 Dapr Kubernetes 模式下的 Hello world 25
0.4 使用 gRPC 32
0.4.1 从 gRPC 客户端调用应用程序 33
0.4.2 编写 gRPC 服务器 . 36
0.5 绑定 40
0.5.1 独立模式下的绑定 . 41
0.5.2 Kubernetes 模式下的绑定 44
0.6 小结 45
第1 章 服务 47
1.1 在云出现之前 47
1.2 云的承诺与挑战 48
1.2.1 可用性 . 48
1.2.2 弹性 49
1.2.3 云原生应用 50
1.2.4 基础设施是乏味的 . 51
1.3 服务调用 53
1.3.1 名称解析. 54
1.3.2 请求和应答 56
1.3.3 并发控制. 57
1.3.4 服务调用练习 57
1.3.5 通用命名空间 60
1.4 发布/ 订阅 61
1.4.1 基于消息的集成的好处 61
1.4.2 用Dapr 进行发布/ 订阅 . 64
1.4.3 发布/ 订阅的工作方式 65
1.5 Dapr 组件 . 65
1.5.1 Dapr 配置 67
1.5.2 自定义管道 68
1.5.3 自定义管道练习 . 69
1.5.4 OAuth 2.0 授权 72
1.5.5 编写自定义中间件 . 74
1.6 分布式追踪 . 75
1.6.1 追踪中间件 75
1.6.2 使用Zipkin 追踪 77
1.6.3 使用Azure Monitor 跟踪 79
1.7 服务运维 81
1.7.1 服务部署与升级 . 81
1.7.2 OAM . 83
1.8 小结 84
第2 章 状态 86
2.1 状态管理 86
2.1.1 无状态与有状态 . 87
2.1.2 为什么无状态服务在云端更受欢迎? . 87
2.1.3 托管有状态服务的挑战 89
2.1.4 将有状态服务转换为无状态服务 91
2.2 Dapr 状态管理 92
2.2.1 并发模型. 93
2.2.2 一致性模型 93
2.2.3 批量操作和事务 . 93
2.2.4 多状态存储 94
2.2.5 重试策略. 94
2.3 Dapr State API 94
2.3.1 Key 方案 . 95
2.3.2 Get 请求 95
2.3.3 Set 请求 96
2.3.4 Delete 请求 97
2.3.5 事务性请求 97
2.4 使用Dapr State API 97
2.4.1 数据处理的考虑因素 99
2.4.2 数据查询和聚合 . 99
2.5 状态存储 100
2.5.1 Redis 101
2.5.2 Azure Cosmos DB 102
2.5.3 etcd . 103
2.5.4 Apache Cassandra 104
2.5.5 Couchbase 106
2.6 自定义状态存储 106
2.6.1 实现 State API 107
2.6.2 更新组件注册表 110
2.7 小结 . 112
第3 章 消息 113
3.1 事件驱动编程 . 113
3.1.1 消息与事件的对比 114
3.1.2 输入绑定和输出绑定 . 115
3.1.3 Pub/Sub 117
3.2 Pub/Sub with Dapr 118
3.2.1 实现 Powershell 脚本 118
3.2.2 使用Dapr CLI 测试发布/ 订阅 119
3.2.3 Dapr 发布/ 订阅行为 . 120
3.2.4 扩展 Dapr Pub/Sub . 120
3.3 使用Dapr 进行输入和输出绑定 122
3.3.1 使用输入绑定 123
3.3.2 使用输出绑定 123
3.3.3 实现输入绑定 124
3.3.4 实现输出绑定 126
3.3.5 使用KEDA 自动缩放 127
3.4 消息传递模式 . 130
3.4.1 Saga 模式 . 130
3.4.2 基于内容的路由 133
3.4.3 路由清单 134
3.4.4 智能代理 135
3.4.5 MapReduce . 136
3.5 小结 . 137
第4 章 安全 138
4.1 保护分布式应用程序 138
4.1.1 访问控制 139
4.1.2 数据保护 142
4.1.3 安全通信 144
4.1.4 入侵与异常检测 145
4.2 Dapr 安全功能 146
4.2.1 密钥存储 146
4.2.2 实现密钥存储 148
4.2.3 Secret API 149
4.2.4 Mutual TLS (mTLS) 150
4.2.5 Dapr mTLS . 153
4.3 小结 . 155
第5 章 Actor 156
5.1 Actor 模式 . 156
5.1.1 现代 Actor 框架 158
5.1.2 Actor 模型的误用 159
5.2 Dapr 与 Actor 160
5.2.1 调用一个 Dapr Actor . 165
5.2.2 状态管理 166
5.2.3 计时器 167
5.2.4 Reminder . 169
5.3 开始使用 Dapr Actors for C# 170
5.3.1 定义 Actor 接口 170
5.3.2 实现 Actor 接口 171
5.4 小结 . 173
第6 章 应用模式 174
6.1 云原生应用 174
6.1.1 云上环境 175
6.1.2 基于 Dapr 的云原生应用 . 179
6.2 使用 Dapr 进行系统集成 189
6.2.1 使用分布式工作流构建有限状态机 189
6.2.2 同步 191
6.3 更大生态系统中的 Dapr 195
6.3.1 Yeoman Dapr 生成器 . 195
6.3.2 在 Visual Studio Code 中使用 Dapr 195
6.3.3 在 ASP.NET Core 中使用 Dapr . 197
6.3.4 更大应用中的 Dapr 199
6.3.5 Dapr 和服务网格 . 200
6.4 边缘场景中的 Dapr 201
6.5 小结 . 202
第7 章 Dapr 的未来 . 203
7.1 能力交付 204
7.1.1 架构 204
7.1.2 应用场景 207
7.2 增强的 Actor 209
7.2.1 聚合器 210
7.2.2 查询接口 210
7.2.3 Actor 图 211
7.2.4 多版本 Actor 212
7.2.5 Actor 中间件 213
7.3 通用命名空间 . 213
7.3.1 架构 214
7.3.2 应用场景 215
7.4 边缘场景中的 Dapr 216
7.4.1 作为轻量级函数运行时的 Dapr 217
7.4.2 WebAssembly 中的 Dapr . 218
7.4.3 作为脚本的 Dapr . 221
7.5 Dapr 的其他改进 222
7.5.1 Dapr 组件投影 222
7.5.2 最佳实践和经过验证的模式 223
7.5.3 Dapr 描述符 224
7.5.4 Dapr 对多方计算的促进 225
7.6 小结 . 225
“关于Dapr精彩的介绍,来自Dapr的原创。”
——Boris Scholl
Partner PM Architect,
Microsoft C&AI Engineering