书籍作者:白海石 | ISBN:9787519859367 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8448 |
创建日期:2022-12-12 | 发布日期:2022-12-12 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
·了解云原生应用的新编程模型。
·编写高性能的分布式应用,而无需深入技术细节。
·使用Dapr轻松编写基于任何语言或框架的微服务。
·了解Dapr如何通过开放的API,以及可扩展、社区驱动的组件来提供的一致性和可移植性。
·探索Dapr如何处理状态、资源绑定、以及发布/订阅来实现可伸缩、可扩展、事件驱动的架构。
·将各种SaaS产品的能力集成进云应用,比如机器学习。
Haishi Bai是一位经验丰富的开发人员和架构师,拥有30多年的编程经验。他作为Microsoft Azure CTO办公室的成员领导了一系列云创新项目。同时他还是一位热情的教育家,出版了八本云计算相关书籍。
Yaron Schneider是Microsoft Azure CTO团队的首席软件工程师。他是一位狂热的开源倡导者和贡献者,主要致力于云原生技术。Yaron是KEDA(CNCF项目)和Osiris的原创作者之一。
译者介绍
罗毅 Apache Dubbo PMC主席,Dapr Steering and Technical committee(STC)成员,从事分布式中间件领域多年。
曹胜利 Apache Dubbo PMC,Dapr Steering and Technical committee(STC)成员,从事多年微服务相关的基础建设工作。
敖小剑 Servicemesh布道师,Dapr Approver,云原生爱好者和实践者。
李志信 Apache Dubbo PMC,Dapr贡献者,从事Go语言中间件研发和开源工作。
前言
2018 年秋,一个阴沉的下午,Boris Scholl、Yaron Schneider 和我(海石)在微软位于雷德蒙德校园的一个小电话室,讨论云应用程序的开发。当时,我们正在构想一个与平台无关的应用程序模型,使开发人员能独立于特定平台设计出分布式应用程序的拓扑。这个想法最终成为开放应用程序模型(https://oam.dev),该模型将应用程序描述为在软件定义的网格上相互连通的服务集合。
这个应用程序模型并不关心每个服务是怎么编写的。当时,我认为提出一个统一的编程模型太有野心了。因此,我们试图严格定义一个将服务视为黑盒的应用程序模型。然而,当我们进一步讨论该想法时,似乎遗漏了一些东西。突然,Yaron 跳到白板前开始涂画。通过他模糊的书写,一个绝妙的主意浮出水面,他称之为Reaktive(带有k 的Reactive,这反映了 Yaron 对 Kubernetes的深厚感情)。 Reaktive 的核心思想很简单——通过边车容器或进程将分布式系统构件带给用户的代码。我们将在“简介”部分解释这个优雅而强大的想法是如何将这一新颖的思想带入分布式系统的设计和实现中。现在,我们继续故事的讲述。
几天后,Yaron 带着原型回来了,我们都认为这很厉害。 Reaktive 为用户的代码带来了状态管理、服务发现以及与可靠消息传递等功能,并且不会用任何 SDK 或库来污染用户代码。它可以与任何编程语言一起使用(为了证明这一点,Yaron 甚至在之后做了 COBOL 的示例),并且它非常轻量。
在接下来的几周中,我们三个人花了很多时间头脑风暴,添加或删除我们认为有意义或没必要的功能,在微软更大的技术场景下考量它,以及思考如何发布它。Boris 邀请了微软和其他公司的架构师和开发人员来进一步验证我们的想法,并获得了早期反馈。总体而言,我们三个人的方向似乎没错,因此我们将它介绍给了 Azure 的首席技术官 Mark Russinovich,他立刻喜欢上了我们的想法。他认为这个编程模型有可能对框架设计和分布式应用程序的开发产生深远和普遍的影响——这远超我们之前的想法。
后来,Mark 提议我们将 Reaktive 改名为 Actions,即 Actor 和 Functions 的组合。该名称反映了新产品的核心价值主张:一个非侵入式编程模型,并且将无状态服务、有状态服务、函数和 actor 统一在一起。我们都喜欢这个名字,所以保留了它。
一年过去了,Actions 经过了数月的开发、大量的讨论以及来自很多早期尝试者的验证。最终,它准备好以新的名字 Dapr(https://dapr.io)—— 分布式应用运行时的缩写,在佛罗里达州奥兰多市的 Microsoft Ignite 主讲台上被公布于众。这是微软有史以来最成功的开源项目之一。在最初的24 小时内,该项目收集了 1000 多个 GitHub star,并且在短短几天内增速就超越了一些最受欢迎的开源项目(见图1)。Star 的热度持续了几个星期,团队成员终于厌倦并停止了每隔几个小时就去检查一下的行为。
很快我们就疲于奔命,社区贡献从四面八方涌来:合作伙伴的、竞争对手的、知名企业的,以及一些小公司的,每个人都在努力使 Dapr 变得更有用。这确实是开源最好的地方。
巧合的是,O’Reilly 的 Kathleen Carr 通过 LinkedIn 联系上了我,询问我是否有出书的想法。 我提出了写《Actions in Action》这本书的想法。 这是一个大胆的提议:写一些仍在酝酿中的东西。Kathleen 依然很喜欢这个主意。几周后,我们签署了一份合同,将这本介绍 Actions (现在叫 Dapr)的书籍带给大家。
你正在阅读本书的事实证明了冒险是值得的。无论 Dapr 未来发生什么,你都在这里,我们也很高兴你在这里。
资源
61 Dapr 主页 (https://dapr.io)。
61 Dapr 运行时仓库 (https://oreil.ly/SRqme)。
61 Dapr 文档仓库 (https://oreil.ly/MlQfS)。
61 Dapr 示例仓库 (https://oreil.ly/7JBHH)。
61 Dapr 组件贡献仓库 (https://oreil.ly/lVk5V)。
本书使用的约定
本书采用了下列印刷规范。
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
固定宽度字体(Constant width)
用于程序清单,以及在段落中引用的程序元素,如变量或函数名、数据库、数据类型、环境变量、语句和关键字。
固定宽度加粗字体(Constant width bold)
显示命令或其他应由用户按字面输入的文本。也用于在代码片段中强调。
固定宽度斜体(Constant width italic)
显示应该被替换为用户提供的值或由上下文决定的值的文本。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly 和200 多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联络我们
请将有关本书的评论和问题发送给出版商:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们为这本书提供了一个网页,其中列出了勘误表、示例以及所有其他信息。
你可以通过https://oreil.ly/Dapr 访问该页面。
发送电子邮件到 [email protected] 来评论或询问有关此书的技术问题。
有关我们的书籍和课程的新闻和信息,请访问http://oreilly.com。
在Facebook 上找到我们:http://facebook.com/oreilly。
在Twitter 上关注我们:http://twitter.com/oreillymedia。
在YouTube 上观看我们:http://youtube.com/oreillymedia。
致谢
我们要感谢一直致力于Dapr,使其成为成熟产品的所有Dapr 核心团队:Aman Bhardwaj,Mark Chmarny,Aaron Crawfis,Vinaya Damle,Pruthvidhar Dhodda,Luke Kim,Yotam Lemberger,Leon Mai,Ryan Nowak,Young Bu Park,Mark Russinovich,Shalabh Mohan Shrivastava,Will Smith,Arthur Souza,Charlie Stanley,Mukundan Sundararajan,Ryan Volum 和Ori Zohar。
特别感谢 Mark Fussell 和 Boris Scholl 两位,本书的技术审稿人。我们还要感谢我们的合作伙伴、早期试用者,以及为Dapr 做出了巨大贡献的杰出社区成员。
目录
前言 .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
内容很棒,这么快能有纸质书出来是万万没想到的
2021-12-04 10:30:12
内容非常好 云原生趋势
2021-12-03 22:12:02
还行吧,翻译的一般般。。。。。。。。
2021-12-13 10:31:18
特别好!对于入门dapr帮助很大!书里面关于dapr介绍的很详细(不含k8s的东西),翻译也比较好,不像是纯机翻。
2021-12-03 22:24:10
这本书应该是目前国内第一本中文的dapr教程,纸质一般般,也挺薄的,但是终于出来了,这年纪你不学习你睡得着吗? 快来和我一起all in dapr,重铸云原生荣光,我辈义不容辞?
2021-12-09 20:23:21
书不厚,还没看,希望有帮助
2021-12-04 16:51:34