2017-10-17 348 views
0

我正在設計一個基本上處理信息流然後根據條件發送電子郵件的無狀態服務。我希望在服務結構中承載這種服務結構,在發生故障的情況下有多個活動服務器,但是如何限制電子郵件僅從「主服務器」發送。使用服務結構的服務體系結構

活動/活動僅對分區的有狀態服務有效嗎? 如果服務必須是主動/被動的,那麼服務怎麼知道它現在是活動的呢?

回答

1

SF內部沒有內置機制leader election(您可以使用)。您可以使用blob lease。 領導者將是獲得租約的人,並且在「活着」時需要刷新它。如果它崩潰,它將失去租約,另一個實例可以得到它。 這會引入外部依賴性,降低系統的整體可用性百分比。

您也可以創建一個類似的有狀態服務。

0

我將與狀態服務去幾個原因:

  • 你只想要一個「主」來處理電子郵件。
  • 你想要一個 備份/副本,以防主要故障。這是默認的 有狀態服務
  • 它的困難與無狀態 服務的多個實例。當您擁有多個由多個 實例處理的信息流時。 「主」節點上沒有發送電子郵件的條件會怎麼樣?然後,您必須有一個單獨的機制將數據/狀態傳送到「主」節點。
0

另一種選擇是讓無狀態的工人是處理你的數據流池,然後就隨時發送電子郵件,它會通知其他服務(通過ServiceRemoting/REST/ServiceBus /其他通信信道)並且該服務將處理實際的電子郵件發送。

如果此電子郵件發送服務是有狀態的,那麼它可以處理重複,如果這是您的一個擔心。