Azure 持久实体的大小限制是多少
What is the size limitation for Azure Durable Entities
Azure 持久实体是由 Microsoft Azure 函数提供的有状态组件。它们可以保持一个状态,该状态需要 JSON 可序列化,并将存储在可靠的存储中。
我的问题是:
- 实体的状态可以有多大?
- 实体的定价模型是什么?我可以依赖 Azure 门户报告的 GB-s 作为定价模型,还是实体使用的存储也将单独定价?
- 实体的存储大小限制与我们可以放入 Azure Table 存储的数据量有关。我认为我们没有使用门槛。
- 根据定价模型,azure 函数根据内存大小、执行时间和每月执行量收费。
函数根据观察到的以千兆字节秒 (GB-s) 为单位的资源消耗进行计费。观察到的资源消耗是通过将平均内存大小(以千兆字节为单位)乘以执行该函数所需的时间(以毫秒为单位)来计算的。函数使用的内存通过四舍五入到最接近的 128 MB 来衡量,最大内存大小为 1,536 MB,执行时间通过四舍五入到最接近的 1 毫秒来计算。单个函数执行的最小执行时间和内存分别为 100 ms 和 128 mb。函数定价包括每月免费授予 400,000 GB-s。
Link 用于定价计算器 https://azure.microsoft.com/en-us/pricing/details/functions/
JayakrishnaGunnam-MTs 的定价答案对于正常功能是正确的,但 azure durable entities/functions 也按照正常存储帐户成本对 table 的存储和交易以及队列进行计费。 https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-billing
在我能找到的关于单个实体的最大大小的信息中,我能找到的唯一答案是 blob 的大小作为限制。我无法在 DurableEntityContext 实现中找到另一个限制,但可能遗漏了一些东西。
更新:经过一些测试,持久实体似乎确实用于存储在 table 存储中的 < 64 kb。之后,它们将被移动到一个 blob 中。我只有一个大字符串的简单实体只能存储大约 50-100MB,但在 100MB 时它开始出现一些问题。有时我会收到 OutOfMemoryException。 (消费计划)
假设您将尝试读取持久实体(使用 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.
因此建议根据您的应用只存储您需要的少量数据,例如计数器、日期等。
Azure 持久实体是由 Microsoft Azure 函数提供的有状态组件。它们可以保持一个状态,该状态需要 JSON 可序列化,并将存储在可靠的存储中。
我的问题是:
- 实体的状态可以有多大?
- 实体的定价模型是什么?我可以依赖 Azure 门户报告的 GB-s 作为定价模型,还是实体使用的存储也将单独定价?
- 实体的存储大小限制与我们可以放入 Azure Table 存储的数据量有关。我认为我们没有使用门槛。
- 根据定价模型,azure 函数根据内存大小、执行时间和每月执行量收费。
函数根据观察到的以千兆字节秒 (GB-s) 为单位的资源消耗进行计费。观察到的资源消耗是通过将平均内存大小(以千兆字节为单位)乘以执行该函数所需的时间(以毫秒为单位)来计算的。函数使用的内存通过四舍五入到最接近的 128 MB 来衡量,最大内存大小为 1,536 MB,执行时间通过四舍五入到最接近的 1 毫秒来计算。单个函数执行的最小执行时间和内存分别为 100 ms 和 128 mb。函数定价包括每月免费授予 400,000 GB-s。
Link 用于定价计算器 https://azure.microsoft.com/en-us/pricing/details/functions/
JayakrishnaGunnam-MTs 的定价答案对于正常功能是正确的,但 azure durable entities/functions 也按照正常存储帐户成本对 table 的存储和交易以及队列进行计费。 https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-billing
在我能找到的关于单个实体的最大大小的信息中,我能找到的唯一答案是 blob 的大小作为限制。我无法在 DurableEntityContext 实现中找到另一个限制,但可能遗漏了一些东西。
更新:经过一些测试,持久实体似乎确实用于存储在 table 存储中的 < 64 kb。之后,它们将被移动到一个 blob 中。我只有一个大字符串的简单实体只能存储大约 50-100MB,但在 100MB 时它开始出现一些问题。有时我会收到 OutOfMemoryException。 (消费计划)
假设您将尝试读取持久实体(使用 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.
因此建议根据您的应用只存储您需要的少量数据,例如计数器、日期等。