Dapr学习手册
作者: (美)白海石(Haishi Bai),(美)亚龙·施耐德(Yaron Schneider),罗毅,等
出版社:中国电力出版社 2021-11-19
简介:了解云原生应用的新编程模型。编写高性能的分布式应用,而无需深入技术细节。使用Dapr轻松编写基于任何语言或框架的微服务。了解Dapr如何通过开放的API,以及可扩展、社区驱动的组件来提供的一致性和可移植性。探索Dapr如何处理状态、资源绑定、以及发布/订阅来实现可伸缩、可扩展、事件驱动的架构。将各种SaaS产品的能力集成进云应用,比如机器学习。【目录】目录前言 .1第0 章 简介 .70.1 什么是 Dapr 70.1.1 异构环境的编程模型 90.1.2 更多的帮助,更少的倾向 . 100.1.3 不要重复造轮子! 110.1.4 统一的编程模型 120.2 Dapr 的架构 13语言支持 150.3 开始使用 Dapr 160.3.1 Dapr 独立模式下的 Hello world ! 160.3.2 Dapr Kubernetes 模式下的 Hello world 250.4 使用 gRPC 320.4.1 从 gRPC 客户端调用应用程序 330.4.2 编写 gRPC 服务器 . 360.5 绑定 400.5.1 独立模式下的绑定 . 410.5.2 Kubernetes 模式下的绑定 440.6 小结 45第1 章 服务 471.1 在云出现之前 471.2 云的承诺与挑战 481.2.1 可用性 . 481.2.2 弹性 491.2.3 云原生应用 501.2.4 基础设施是乏味的 . 511.3 服务调用 531.3.1 名称解析. 541.3.2 请求和应答 561.3.3 并发控制. 571.3.4 服务调用练习 571.3.5 通用命名空间 601.4 发布/ 订阅 611.4.1 基于消息的集成的好处 611.4.2 用Dapr 进行发布/ 订阅 . 641.4.3 发布/ 订阅的工作方式 651.5 Dapr 组件 . 651.5.1 Dapr 配置 671.5.2 自定义管道 681.5.3 自定义管道练习 . 691.5.4 OAuth 2.0 授权 721.5.5 编写自定义中间件 . 741.6 分布式追踪 . 751.6.1 追踪中间件 751.6.2 使用Zipkin 追踪 771.6.3 使用Azure Monitor 跟踪 791.7 服务运维 811.7.1 服务部署与升级 . 811.7.2 OAM . 831.8 小结 84第2 章 状态 862.1 状态管理 862.1.1 无状态与有状态 . 872.1.2 为什么无状态服务在云端更受欢迎? . 872.1.3 托管有状态服务的挑战 892.1.4 将有状态服务转换为无状态服务 912.2 Dapr 状态管理 922.2.1 并发模型. 932.2.2 一致性模型 932.2.3 批量操作和事务 . 932.2.4 多状态存储 942.2.5 重试策略. 942.3 Dapr State API 942.3.1 Key 方案 . 952.3.2 Get 请求 952.3.3 Set 请求 962.3.4 Delete 请求 972.3.5 事务性请求 972.4 使用Dapr State API 972.4.1 数据处理的考虑因素 992.4.2 数据查询和聚合 . 992.5 状态存储 1002.5.1 Redis 1012.5.2 Azure Cosmos DB 1022.5.3 etcd . 1032.5.4 Apache Cassandra 1042.5.5 Couchbase 1062.6 自定义状态存储 1062.6.1 实现 State API 1072.6.2 更新组件注册表 1102.7 小结 . 112第3 章 消息 1133.1 事件驱动编程 . 1133.1.1 消息与事件的对比 1143.1.2 输入绑定和输出绑定 . 1153.1.3 Pub/Sub 1173.2 Pub/Sub with Dapr 1183.2.1 实现 Powershell 脚本 1183.2.2 使用Dapr CLI 测试发布/ 订阅 1193.2.3 Dapr 发布/ 订阅行为 . 1203.2.4 扩展 Dapr Pub/Sub . 1203.3 使用Dapr 进行输入和输出绑定 1223.3.1 使用输入绑定 1233.3.2 使用输出绑定 1233.3.3 实现输入绑定 1243.3.4 实现输出绑定 1263.3.5 使用KEDA 自动缩放 1273.4 消息传递模式 . 1303.4.1 Saga 模式 . 1303.4.2 基于内容的路由 1333.4.3 路由清单 1343.4.4 智能代理 1353.4.5 MapReduce . 1363.5 小结 . 137第4 章 安全 1384.1 保护分布式应用程序 1384.1.1 访问控制 1394.1.2 数据保护 1424.1.3 安全通信 1444.1.4 入侵与异常检测 1454.2 Dapr 安全功能 1464.2.1 密钥存储 1464.2.2 实现密钥存储 1484.2.3 Secret API 1494.2.4 Mutual TLS (mTLS) 1504.2.5 Dapr mTLS . 1534.3 小结 . 155第5 章 Actor 1565.1 Actor 模式 . 1565.1.1 现代 Actor 框架 1585.1.2 Actor 模型的误用 1595.2 Dapr 与 Actor 1605.2.1 调用一个 Dapr Actor . 1655.2.2 状态管理 1665.2.3 计时器 1675.2.4 Reminder . 1695.3 开始使用 Dapr Actors for C# 1705.3.1 定义 Actor 接口 1705.3.2 实现 Actor 接口 1715.4 小结 . 173第6 章 应用模式 1746.1 云原生应用 1746.1.1 云上环境 1756.1.2 基于 Dapr 的云原生应用 . 1796.2 使用 Dapr 进行系统集成 1896.2.1 使用分布式工作流构建有限状态机 1896.2.2 同步 1916.3 更大生态系统中的 Dapr 1956.3.1 Yeoman Dapr 生成器 . 1956.3.2 在 Visual Studio Code 中使用 Dapr 1956.3.3 在 ASP.NET Core 中使用 Dapr . 1976.3.4 更大应用中的 Dapr 1996.3.5 Dapr 和服务网格 . 2006.4 边缘场景中的 Dapr 2016.5 小结 . 202第7 章 Dapr 的未来 . 2037.1 能力交付 2047.1.1 架构 2047.1.2 应用场景 2077.2 增强的 Actor 2097.2.1 聚合器 2107.2.2 查询接口 2107.2.3 Actor 图 2117.2.4 多版本 Actor 2127.2.5 Actor 中间件 2137.3 通用命名空间 . 2137.3.1 架构 2147.3.2 应用场景 2157.4 边缘场景中的 Dapr 2167.4.1 作为轻量级函数运行时的 Dapr 2177.4.2 WebAssembly 中的 Dapr . 2187.4.3 作为脚本的 Dapr . 2217.5 Dapr 的其他改进 2227.5.1 Dapr 组件投影 2227.5.2 实践和经过验证的模式 2237.5.3 Dapr 描述符 2247.5.4 Dapr 对多方计算的促进 2257.6 小结 . 225