基于耐用功能的设计可长期使用 运行 activity
Durable function based design for long running activity
根据业务需求,我们需要将第三方AD的广大客户数据导入到我们的应用数据库中,然后需要与第三方AD建立实时同步,以同步他们之后的变化。
为此,我们方 API 和第三方方 API 已准备就绪。由于这种入职和实时同步活动是按需发生的(不是 24x7,而是每当第三方 AD 资源发生变化或每当我们获得新客户时)我更喜欢做基于 Azure 功能的解决方案,但 Azure 功能最多。消费计划超时 10 分钟,我认为这不符合我们的要求。目前我们不考虑 Azure Function 的其他托管计划。
因此想到进行面向持久功能的设计,其中有关第三方 AD 的最新更改的通知将在 Azure 队列中接收,这会触发持久功能执行,而协调器功能将查询第三方以获取用户最近的更改列表资源和响应可能 return 用户数以千计变化。
然后 orchestator 循环遍历用户更改列表并为列表中的每个用户调用全新的 activity 函数,该函数又调用内部 REST API(将仅接受一个用户对象不是用户列表作为其参数)并将用户加入我们的应用程序。
通过这种设计,我们最终可能会在我们的 Azure 帐户中同时拥有数千个 相同 activity 函数 运行 的实例。这可能吗?
对特定 activity 函数在给定时间点的最大实例化有任何限制吗?
每个 activity 函数都是普通的 Azure 函数吗?
是否有更好的设计方法而不是为每个新的入职用户资源启动 activity 函数的新实例?
长 运行 Activity 功能可以通过 Azure 功能的持久扩展实现, 单独 将处理 activity 持续超过 30消费计划下的分钟数?请提出建议。
问:通过这种设计,我们最终可能会在我们的 Azure 帐户中同时拥有数千个相同 activity 函数 运行 的实例。这可能吗?
答: 是的。您的方案通常称为 fan-out/fan-in pattern.
问:在给定时间点特定 activity 函数的最大实例化次数有任何限制吗?
A: 有一个 couple of performance targets documented 您可以参考,但请注意它们将取决于您的 activity 功能。
此外,您可以尝试不同的 throttle settings 来改善数字 但是 请注意文档中提到的后果。
问:每个 activity 函数都是普通的 Azure 函数吗?
答: 是的。把它想象成一个队列触发函数
问:有没有更好的方法来设计而不是为每个新的入职用户资源启动 activity 函数的新实例?
A:消费计划应该可以轻松应对这种情况,但注意fan-in操作在[=13=中提到的单个VM上运行] 将其拆分到多个 VM。
问:使用 Azure 函数的持久扩展可以实现长时间的 运行 Activity 函数,单独处理 activity 持续超过 30 分钟的消耗计划?
A:消费计划不可以。您将不得不使用 Premium Tier or an App Service Plan.
根据业务需求,我们需要将第三方AD的广大客户数据导入到我们的应用数据库中,然后需要与第三方AD建立实时同步,以同步他们之后的变化。
为此,我们方 API 和第三方方 API 已准备就绪。由于这种入职和实时同步活动是按需发生的(不是 24x7,而是每当第三方 AD 资源发生变化或每当我们获得新客户时)我更喜欢做基于 Azure 功能的解决方案,但 Azure 功能最多。消费计划超时 10 分钟,我认为这不符合我们的要求。目前我们不考虑 Azure Function 的其他托管计划。
因此想到进行面向持久功能的设计,其中有关第三方 AD 的最新更改的通知将在 Azure 队列中接收,这会触发持久功能执行,而协调器功能将查询第三方以获取用户最近的更改列表资源和响应可能 return 用户数以千计变化。
然后 orchestator 循环遍历用户更改列表并为列表中的每个用户调用全新的 activity 函数,该函数又调用内部 REST API(将仅接受一个用户对象不是用户列表作为其参数)并将用户加入我们的应用程序。
通过这种设计,我们最终可能会在我们的 Azure 帐户中同时拥有数千个 相同 activity 函数 运行 的实例。这可能吗?
对特定 activity 函数在给定时间点的最大实例化有任何限制吗?
每个 activity 函数都是普通的 Azure 函数吗?
是否有更好的设计方法而不是为每个新的入职用户资源启动 activity 函数的新实例?
长 运行 Activity 功能可以通过 Azure 功能的持久扩展实现, 单独 将处理 activity 持续超过 30消费计划下的分钟数?请提出建议。
问:通过这种设计,我们最终可能会在我们的 Azure 帐户中同时拥有数千个相同 activity 函数 运行 的实例。这可能吗?
答: 是的。您的方案通常称为 fan-out/fan-in pattern.
问:在给定时间点特定 activity 函数的最大实例化次数有任何限制吗?
A: 有一个 couple of performance targets documented 您可以参考,但请注意它们将取决于您的 activity 功能。
此外,您可以尝试不同的 throttle settings 来改善数字 但是 请注意文档中提到的后果。
问:每个 activity 函数都是普通的 Azure 函数吗?
答: 是的。把它想象成一个队列触发函数
问:有没有更好的方法来设计而不是为每个新的入职用户资源启动 activity 函数的新实例?
A:消费计划应该可以轻松应对这种情况,但注意fan-in操作在[=13=中提到的单个VM上运行] 将其拆分到多个 VM。
问:使用 Azure 函数的持久扩展可以实现长时间的 运行 Activity 函数,单独处理 activity 持续超过 30 分钟的消耗计划?
A:消费计划不可以。您将不得不使用 Premium Tier or an App Service Plan.