Azure 持久实体是 Microsoft Azure 函数提供的有状态组件。它们可以保存一个需要 JSON 序列化的状态,并将存储在可靠的存储中。
我的问题是:
- 实体的状态可以有多大?
- 实体的定价模型是什么?我是否可以依靠 Azure 门户报告的 GB-s 作为定价模型,或者实体使用的存储也将单独定价?
Azure 持久实体是 Microsoft Azure 函数提供的有状态组件。它们可以保存一个需要 JSON 序列化的状态,并将存储在可靠的存储中。
我的问题是:
JayakrishnaGunnam-MTs 定价答案对于正常功能是正确的,但天蓝色的持久实体/功能也按照正常的存储帐户成本计费,用于存储和事务到表和队列。https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-billing
在我能找到的关于单个实体的最大大小的信息中,我能找到的唯一答案是将 blob 的大小作为限制。我无法在 DurableEntityContext 实现中找到另一个限制,但可能会遗漏一些东西。
更新:经过一些测试,似乎持久实体在表存储中存储了 < 64 kb。之后,它们将被移动到一个 blob 中。我只有一个大字符串的简单实体只能存储大约 50-100MB,但在 100 时它开始出现一些问题。有时我收到 OutOfMemoryException。(消费计划)
函数根据观察到的以千兆字节秒 (GB-s) 衡量的资源消耗进行计费。观察到的资源消耗是通过将平均内存大小(以 GB 为单位)乘以执行该函数所需的时间(以毫秒为单位)来计算的。函数使用的内存通过四舍五入到最接近的 128 MB 来测量,最大内存大小为 1,536 MB,执行时间通过四舍五入到最接近的 1 毫秒来计算。单个函数执行的最小执行时间和内存分别为 100 ms 和 128 mb。函数定价包括每月免费授予 400,000 GB-s。
定价计算器链接https://azure.microsoft.com/en-us/pricing/details/functions/
假设您将尝试读取持久实体(使用ReadEntityStateAsync<T>()
),那么您可以将数据存储在持久实体中存在实际限制。
IDurableEntityClient
文档ReadEntityStateAsync<T>()
说:
Tries to read the current state of an entity. Returns default(<typeparamref name="T" />) if the entity does not
exist, or if the JSON-serialized state of the entity is larger than 16KB.
因此,建议根据您的应用程序仅存储您需要的少量数据,例如计数器、日期等。