Azure Service Fabric可靠集合和其他持久性存储

时间:2016-10-06 02:32:59

标签: domain-driven-design azure-service-fabric distributed-transactions service-fabric-stateful

我是Service Fabric的新手。

Service Fabric是否建议仅使用Reliable Collections存储应用程序的所有数据?

如果我使用SQL DB来保存所有业务数据并使用Reliable Collection懒惰地持久保存到SQL DB以进行集成,该怎么办?在DDD之后,如果我将我的聚合持久保存到SQL DB并在可靠集合中保留一个条目以与其他Bounded Context进行通信。这种方法会有任何问题吗?

2 个答案:

答案 0 :(得分:1)

Service Fabric不建议将所有日期存储在Reliable Collections中。这是你的选择。 Service Fabric在多个层面为您提供如何做事的自由。

您可以使用外部数据库(如SQL DB或DocumentDB或任何其他内容)并将有状态服务用作缓存。或者使用有状态服务作为主存储,并且根本不使用外部数据库。

即使Reliable Collection的使用有限(它的键/值存储没有有效的查询接口而不是循环所有数据),它具有内部存储(性能)的优点,并且具有良好的故障保护机制(定义辅助实例,尽可能多)。不应忘记分区功能。

我个人倾向于最小化外部依赖性。外部DB是依赖项。但是,如果您对应用程序的要求具有广泛的查询功能,请继续使用。

答案 1 :(得分:0)

根据微软的说法

  

将可靠的演员视为交易系统。服务面料   可靠的Actors不是提供ACID的两阶段提交系统。   如果我们不实现可选的持久性,那么机器就可以了   演员正在死亡,它的当前状态将随之而来。演员   将会非常快地在另一个节点上出现,但除非我们有   实施支持持久性,状态将消失。然而,   在利用重试,重复过滤和/或幂等之间   设计,您可以实现高水平的可靠性和一致性。

https://acom-feature-videos-twitter-card.azurewebsites.net/en-us/documentation/articles/service-fabric-reliable-actors-anti-patterns/