使用服务结构的服务架构
Service architecture using service fabric
我正在设计一种无状态服务,它主要处理信息流,然后根据条件发送电子邮件。我想在 service fabric 中托管它,在发生故障时有多个活动,但是我如何限制仅从 "primary".
发送电子邮件
active/active是否仅对分区的有状态服务有效?
如果服务必须 active/passive 那么服务如何知道它现在是活动的?
leader election (that you can use) inside SF. You could use a blob lease 没有内置机制。
领导者将是获得租约的人,并且需要在 'alive' 时刷新租约。如果它崩溃了,它将失去租约,另一个实例可以得到它。
这确实引入了外部依赖性,降低了系统的整体可用性百分比。
您还可以创建执行类似操作的有状态服务。
出于以下几个原因,我将使用有状态服务:
- 您只需要一个 "primary" 来处理电子邮件。
- 你想要一个
backup/replica 以防主节点出现故障。这是默认的
有状态服务
- 无状态的多个实例很难
服务。当您拥有由多个处理的信息流时
实例。如果发送电子邮件的条件没有发生怎么办
"primary" 节点。然后你必须有一个单独的机制来转移
data/state 到 "primary" 节点。
另一个选择是有一个无状态工作池来处理你的数据流,然后每当它想发送电子邮件时,它会通知另一个服务(通过 ServiceRemoting/Rest/ServiceBus/other 通信渠道)和这个服务将处理电子邮件的实际发送。
如果此电子邮件发送服务是有状态的,那么它可以处理重复项(如果这是您的一个顾虑)。
我正在设计一种无状态服务,它主要处理信息流,然后根据条件发送电子邮件。我想在 service fabric 中托管它,在发生故障时有多个活动,但是我如何限制仅从 "primary".
发送电子邮件active/active是否仅对分区的有状态服务有效? 如果服务必须 active/passive 那么服务如何知道它现在是活动的?
leader election (that you can use) inside SF. You could use a blob lease 没有内置机制。 领导者将是获得租约的人,并且需要在 'alive' 时刷新租约。如果它崩溃了,它将失去租约,另一个实例可以得到它。 这确实引入了外部依赖性,降低了系统的整体可用性百分比。
您还可以创建执行类似操作的有状态服务。
出于以下几个原因,我将使用有状态服务:
- 您只需要一个 "primary" 来处理电子邮件。
- 你想要一个 backup/replica 以防主节点出现故障。这是默认的 有状态服务
- 无状态的多个实例很难 服务。当您拥有由多个处理的信息流时 实例。如果发送电子邮件的条件没有发生怎么办 "primary" 节点。然后你必须有一个单独的机制来转移 data/state 到 "primary" 节点。
另一个选择是有一个无状态工作池来处理你的数据流,然后每当它想发送电子邮件时,它会通知另一个服务(通过 ServiceRemoting/Rest/ServiceBus/other 通信渠道)和这个服务将处理电子邮件的实际发送。
如果此电子邮件发送服务是有状态的,那么它可以处理重复项(如果这是您的一个顾虑)。