我使用在java上编写的azure http函数来处理基于webhook的不同事件。
这些功能的许多配置都存储在azure应用程序配置中,因此我们可以在不重新启动功能应用程序的情况下动态更改配置。作为事件的处理程序,我有一个事件网格触发函数,只有当配置修改事件到达时,它才会从应用程序配置中获取新配置(每次执行HTTP函数后直接获取配置是很昂贵的(。这个工作流程运行良好,但当我们扩展功能应用程序时,问题就来了。一旦函数应用程序有更多实例,只有一个实例获取事件并更改本地配置,所有其他实例都将继续使用旧配置。
有没有办法让缩放控制器将事件分配给所有实例?
若配置缓存是最好的选择,那个么您会选择哪种azure资源来降低成本?
提前感谢!
尝试在配置更改时向功能应用程序发送多个事件,但我们不能保证这些事件在实例之间均匀分布
对于推送模型(通过事件网格(,您必须使用类似服务总线的东西,如下面文档中所讨论的,将事件分发到Azure函数的所有实例。
https://learn.microsoft.com/en-us/azure/azure-app-configuration/enable-dynamic-configuration-dotnet-core-push-refresh
您也可以考虑投票模型。应用程序配置提供程序库会自动为您进行缓存和刷新。它不会在每次函数调用时向应用程序配置发送一个请求。请查看下面的文档。
https://learn.microsoft.com/en-us/azure/azure-app-configuration/enable-dynamic-configuration-azure-functions-csharp