2017-10-17 198 views
0

我正在设计一个基本上处理信息流然后根据条件发送电子邮件的无状态服务。我希望在服务结构中承载这种服务结构,在发生故障的情况下有多个活动服务器,但是如何限制电子邮件仅从“主服务器”发送。使用服务结构的服务体系结构

活动/活动仅对分区的有状态服务有效吗? 如果服务必须是主动/被动的,那么服务怎么知道它现在是活动的呢?

回答

1

SF内部没有内置机制leader election(您可以使用)。您可以使用blob lease。 领导者将是获得租约的人,并且在“活着”时需要刷新它。如果它崩溃,它将失去租约,另一个实例可以得到它。 这会引入外部依赖性,降低系统的整体可用性百分比。

您也可以创建一个类似的有状态服务。

0

我将与状态服务去几个原因:

  • 你只想要一个“主”来处理电子邮件。
  • 你想要一个 备份/副本,以防主要故障。这是默认的 有状态服务
  • 它的困难与无状态 服务的多个实例。当您拥有多个由多个 实例处理的信息流时。 “主”节点上没有发送电子邮件的条件会怎么样?然后,您必须有一个单独的机制将数据/状态传送到“主”节点。
0

另一种选择是让无状态的工人是处理你的数据流池,然后就随时发送电子邮件,它会通知其他服务(通过ServiceRemoting/REST/ServiceBus /其他通信信道)并且该服务将处理实际的电子邮件发送。

如果此电子邮件发送服务是有状态的,那么它可以处理重复,如果这是您的一个担心。