处理多种参与者类型的 Service Fabric 参与者模型

Posted

技术标签:

【中文标题】处理多种参与者类型的 Service Fabric 参与者模型【英文标题】:Service Fabric actor model handling multiple actor types 【发布时间】:2019-01-26 14:54:06 【问题描述】:

我使用 Service Fabric 作为我的微服务框架。我正在使用无状态服务,因为我们使用的是外部数据库。我有两种类型的用户:一种是 CSR(客户代表),另一种是用户本身。如何安排我的 Actor 服务来解决这个问题?

CSR 的功能很少。但客户是整个难题的重要组成部分。 假设 CustomerActor 需要更新它自己的地址。 CSRActor 也可以进行同样的操作。

是否建议创建 2 个不同的 Actor,CSRActor 和 CustomerActor,然后 CSRActor 对客户 Actor 进行任何操作。或者 Customer 可以是一个单独的服务,两种类型的参与者都调用 CustomerService。 还有其他想法吗?

【问题讨论】:

【参考方案1】:

支持Actor polymorphism。你可以有一个继承自另一个 Actor 类型的 Actor 类型。

类似这样的:

public abstract class CustomerBase : Actor, ICustomer
 

[ActorService(Name = "Customer")]
public class Customer : CustomerBase, ICustomer
 

[ActorService(Name = "Csra")]
public class Csra : CustomerBase, ICsra
 

这将为您节省打 2 个电话来回答一个问题的开销。

【讨论】:

我认为代码Csra : CustomerBase, ICustomer 应该是Csra : CustomerBase, ICsra,其中ICsra 可能会实现ICustomer,因为问题表明它们在某些时候会有不同的操作 谢谢@LoekD 这有点离题,但在我的示例中,客户与其他服务(付款、发票等)进行交互,让客户作为参与者与可靠服务有什么优势?

以上是关于处理多种参与者类型的 Service Fabric 参与者模型的主要内容,如果未能解决你的问题,请参考以下文章

Service Fabric 中的 actorevent 都有哪些限制?

Service Fabric 参与者中的静态对象

Service Fabric,确定是不是存在特定参与者

Azure Service Fabric 可靠参与者与可靠服务

Service Fabric 是不是会无限期保留参与者信息?

为啥我的 Service Fabric 参与者使用的磁盘空间比预期的要多?