文档指出,Azure持久功能编排代码应该是确定性的,因为是重放。在我的例子中,我在Azure Table Storage中有一些数据,我需要在工作流中获取这些数据。工作流是递归的,Azure表存储中的数据可以在执行过程中更改,并且可以在大约1分钟内保持过时状态。在常规代码中,我会依靠内存缓存来提高性能。但在编排中,假设它不能直接使用,因为这会使工作流不确定。
我仍然可以在activity中使用缓存,并从编排中调用它,但每个activity调用都涉及输入\输出的序列化\反序列化以及通过控制队列传递消息。这些操作比获取数据本身更繁重。
所以我有一个问题,有没有什么模式可以用来在内存中的编排实例之间缓存数据,而不需要将这个逻辑包装在活动中?
发布于 2020-06-20 03:19:48
我可以建议你的是:使用分布式缓存,特别是Azure的Redis缓存。
我为你画了一张图片:

在编排中从Azure Table Storage中获取数据,在其中执行操作并将其保存到Redis缓存。然后将所需数据的id传递给每个活动。然后,您可以从每个活动中的Redis缓存中获取数据。
这是您所要求的具有缓存的解决方案。但是,请注意,如果你想要高性能的数据查询,Azure Table Storage不是最好的解决方案。我建议您使用Azure SQL或CosmosDB。但是,如果你正在寻找一个便宜的选择,这是很好的。但在这种情况下,Redis缓存对你来说不是一个好的选择,因为它也不是一个便宜的解决方案。如果这个Redis缓存对你不起作用,我建议你重新检查你的算法。
祝好运!
发布于 2020-07-11 23:30:50
https://stackoverflow.com/questions/62464653
复制相似问题