在Azure Service Fabric中实现缓存

时间:2017-06-22 12:41:28

标签: azure caching azure-service-fabric stateful

我正在开展一个项目,其中我经常需要一组数据,目前为了获取该数据我必须拨打第三方服务,这需要花费大量时间。所以我希望是维护本地缓存。数据很少修改或几乎不变。在Azure Service Fabric中实现此功能的最佳方式是什么。我目前正在考虑使微服务状态。这是最好的方法吗?当节点发生故障时,它应该将其本地缓存复制到其他节点。如果使其成为有状态,那么我应该如何继续实现它呢?

2 个答案:

答案 0 :(得分:2)

嗯,你有两个选择: 如果需要性能和地理缓存数据复制,可以使用redis缓存。

另一种选择是使用可靠的字典。它是一种服务结构功能,可靠的字典被复制到其他节点。

您只能在服务结构状态完整的上下文中访问可靠的字典。

示例:

IReliableDictionary<string, string> Dictionary = await this.StateManager.GetOrAddAsync<IReliableDictionary<string, string>>("stringlistcache");
    using (var tx = this.StateManager.CreateTransaction())
    {   
        await pingDictionary.AddOrUpdateAsync(tx, "testkey", "testvalue", (key, value) => "testvalue");
        cachedValue = await Dictionary.TryGetValueAsync(tx, "testkey");
        await Dictionary.TryRemoveAsync(tx, "testkey");
        await tx.CommitAsync();     
    }

答案 1 :(得分:0)

我知道这篇文章已经很老了,但是对于那些今天正在寻找解决方案的人,您可以使用这个开源项目:

http://service-fabric-distributed-cache.socreate.it

您也可以在GitHub上找到它: https://github.com/SoCreate/service-fabric-distributed-cache