作者:此女人不嫁_ | 来源:互联网 | 2023-09-02 10:42
在我的Azure函数中,我正在使用一个在内存中缓存某些状态的库。当CosmosDB集合中的数据更改时,我需要清除此缓存。乍一看,似乎我可以使用输入绑定来侦听CosmosDB的更改,然后清除缓存。
但是我认为这在负载下不起作用。功能应用程序将被缩放,因此可以有多个实例。而且据我了解,来自输入绑定的CosmosDB事件将仅发送到一个实例,而不是所有实例。时间表上的功能也是如此。仅定位一个实例。
如何通知所有实例,以便它们可以清除其状态?我知道每个实例都可以手动轮询数据库,但这会导致大量开销。有更好的方法吗?
PS:不确定是否重要,但我使用的是NodeJS。
使用分布式缓存,例如通过使用功能代码中的SDK,Redis可能是缓存数据的最佳方法-这样,缓存的值将在所有实例之间共享,并且不依赖Azure函数运行时对所有函数调用重用同一台机器
其由Microsoft管理的具有高度可扩展性,并提供对数据的超快速访问。
参考:https://crmazurecomponents.wordpress.com/2018/08/11/caching-in-azure-functions/