Azure functions 侦听每个Azure Function应用程序实例中的数据库更改

Azure functions 侦听每个Azure Function应用程序实例中的数据库更改,azure-functions,azure-cosmosdb,Azure Functions,Azure Cosmosdb,在我的Azure函数中,我使用一个在内存中缓存某些状态的库。当CosmosDB集合中的数据更改时,我需要清除此缓存。乍一看,我似乎可以使用输入绑定来侦听CosmosDB的更改,然后清除缓存 但我认为这在负载下不起作用。功能应用程序将被缩放,因此可以有多个实例。据我所知,来自输入绑定的CosmosDB事件将只发送到一个实例,而不是所有实例。时间表上的函数也是如此。只针对一个实例 如何通知所有实例,以便它们可以清除其状态?我知道每个实例都可以手动轮询数据库,但这会导致大量开销。有更好的办法吗 PS:

在我的Azure函数中,我使用一个在内存中缓存某些状态的库。当CosmosDB集合中的数据更改时,我需要清除此缓存。乍一看,我似乎可以使用输入绑定来侦听CosmosDB的更改,然后清除缓存

但我认为这在负载下不起作用。功能应用程序将被缩放,因此可以有多个实例。据我所知,来自输入绑定的CosmosDB事件将只发送到一个实例,而不是所有实例。时间表上的函数也是如此。只针对一个实例

如何通知所有实例,以便它们可以清除其状态?我知道每个实例都可以手动轮询数据库,但这会导致大量开销。有更好的办法吗


PS:不确定这是否重要,但我使用的是NodeJS。

使用分布式缓存,例如Redis,从函数代码使用其SDK,可能是缓存数据的最佳方式-这样缓存的值在所有实例之间共享,而不依赖Azure函数运行时为所有函数调用重用同一台机器 它由Microsoft管理,具有高度可扩展性,并提供对数据的超快速访问


参考

您的每个实例都是一个独立的功能应用程序吗?不,这是一个应用程序,但Azure将在负载下扩展它(并行启动多个实例)。据我所知,我无法控制这一切。我仍然需要拉(查询缓存以获取更新),对吗?或者Redis有没有办法在值被修改时通知所有函数实例?因为它是分布式缓存,所以您需要始终更新并从Redis中提取内容。请阅读以下博客以供参考: