“持久化”

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

看起来,“持久化”这个词在 Serverless 世界中是一个新兴的术语。据我了解,它类似于在通常不期望有状态的地方允许状态。例如,您调用某个云函数并运行一些 JavaScript 代码……除非您让它从其他地方获取一些数据,否则它除了自己的代码之外没有任何信息。它不记得上次运行时发生了什么。每次都是一张白板。但是,假设您的云函数是一个 class,并且在初始化该类时您获得了 ID,并且通过该 ID,您可以随时与该类的确切实例进行通信。该实例会一直存在,直到您不再需要它为止。它是持久化的。

Cloudflare 发布了一项名为 持久化对象 的功能

… 我们最终确定了“唯一持久化对象”,或简称“持久化对象”。让我通过分解它来解释它们是什么

对象:持久化对象在面向对象编程的意义上是对象。持久化对象是类的实例——从字面上看,是用 JavaScript(或您选择的语言)编写的类定义。该类具有定义其公共接口的方法。对象是此类的实例,将代码与一些私有状态结合起来。

唯一:每个对象都有一个全局唯一的标识符。该对象在任何时候都只存在于世界上的一个位置。世界上任何地方运行的任何知道对象 ID 的 Worker 都可以向其发送消息。所有这些消息最终都会传递到同一个地方。

持久化:与 JavaScript 中的普通对象不同,持久化对象可以具有存储在磁盘上的持久状态。每个对象的持久状态都是私有的,这意味着不仅存储访问速度快,而且对象甚至可以安全地在内存中维护状态的副本并在其上进行零延迟操作。内存中的对象在空闲时将关闭,并在以后根据需要重新创建。

非常酷。实时方面非常引人注目。

Azure 也在其办公室中通过 持久化函数 使用“持久化”。该产品的一部分是 实体函数

实体的行为有点像通过消息通信的微型服务。每个实体都有一个唯一的标识和一个内部状态(如果存在)。与服务或对象一样,实体在收到提示时执行操作。当操作执行时,它可能会更新实体的内部状态。它也可能调用外部服务并等待响应。实体通过使用通过可靠队列隐式发送的消息与其他实体、编排和客户端通信。

对于我来说,文档有点难以理解(我认为它是针对那些比我更了解这些内容的人),但这个概念听起来与 Cloudflare 的东西非常相似。实体具有您可以通过其访问的 ID。它们可以持久化并可用于相同的实时内容,例如向任何连接的用户显示视频游戏的状态/分数。