【发布时间】:2018-03-28 18:24:10
【问题描述】:
我们正在努力将我们的软件带到 Azure 云,并将 Orleans 和 Service Fabric (SF) 视为潜在的框架。我们需要:
- 用每个引擎实例的大量数据(例如,100MB 到 2GB)填充我们的分析引擎。
- 保持该状态,如果引擎实例空闲 20 分钟或更长时间,我们希望将其卸载(即,不为引擎实例资源付费)。
- 每个引擎实例将支持一个到多个具有特定数据集的最终用户。
- 每个引擎实例都可以高度交互地生成大量近乎实时的绘图数据。我们正在维护状态,因为我们不想为每次引擎交互填充引擎实例而付出代价。
- 引擎实例操作可能需要几秒钟、几分钟甚至几十分钟。我们需要一些反馈。
- 用户可以每隔几秒访问一次引擎实例(例如,根据反馈引导引擎实现结果)并且需要实时绘图数据。
- 每个用户都希望与特定的引擎实例对话。
- 当用户表示有兴趣运行模拟(即建立引擎实例)时,理想情况下,我们希望他选择小型/中型/大型计算资源来运行他的引擎实例(即,基于他试图解决的问题解决他可能需要更多或更少的计算/内存能力)。
我们正在考虑奥尔良和旧金山,但我们很难根据上述要求指定架构。我们考虑过:
- 尝试将 SF 分区或 Orleans silo 视为上述“引擎实例”。
- 通过复制利用 Orleans 和 SF 的容错概念。
- 利用本地(即,分区或孤岛)存储来存储结果和维护状态(即,长时间或直到空闲 20 分钟)。
我们不知道如何:
- 将孤岛或分区限制为单个引擎实例,以便我们可以控制引擎实例的资源。
- 将用户的引擎实例数据与其他用户的引擎实例数据分开。
- 将来自用户的请求(例如,通过 Web API)定向到特定的引擎实例。
这对奥尔良有意义吗,对旧金山更有意义吗?有关如何实现上述内容的任何指示都会有所帮助。
【问题讨论】:
标签: azure-service-fabric service-fabric-stateful