2

我对 Service Fabric 很陌生。

Service Fabric 是否建议仅使用可靠集合来存储应用程序的所有数据?

如果我使用 SQL DB 来持久化我的所有业务数据并使用 Reliable Collection 懒惰地持久化到 SQL DB 以实现集成,该怎么办?在 DDD 之后,如果我将聚合保存到 SQL DB 并在可靠集合中留下一个条目以与其他有界上下文通信。这种做法会不会有什么问题?

4

2 回答 2

1

Service Fabric 不建议将所有数据存储在可靠集合中。这是你的选择。Service Fabric 在许多层面上为您提供了如何做事的自由。

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

尽管 Reliable Collection 在使用上有点限制(它是一个键/值存储,除了循环所有数据之外没有有效的查询接口)它具有内部存储的优势(性能)并且它具有良好的故障安全机制(定义次要实例,任意数量)。也不应该忘记分区功能。

我个人倾向于尽量减少外部依赖。外部数据库是依赖项。但是,如果您对应用程序的要求指定了广泛的查询功能,那就去做吧。

于 2016-10-07T09:50:07.223 回答
0

根据微软

将 Reliable Actors 视为事务系统。Service Fabric Reliable Actors 不是提供 ACID 的基于两阶段提交的系统。如果我们不实现可选的持久性,并且actor正在运行的机器死亡,它的当前状态将随之消失。演员将很快出现在另一个节点上,但除非我们实现了支持持久性,否则状态将消失。但是,在利用重试、重复过滤和/或幂等设计之间,您可以实现高水平的可靠性和一致性。

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

于 2017-05-02T08:36:11.663 回答