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