2016-12-30 67 views
0

在使用Actor或Services的服務結構應用程序中 - 如果您想確保您的代碼塊將在每個節點上運行,那麼設計會是什麼。如何在服務結構中的每個節點上運行某些東西

我的第一個想法是,它必須是一個實例計數設置爲-1的服務,但也適用於您已設置爲3個實例的情況。你將如何設計一個服務,確保它在每個實例上運行一些操作。

我自己的想法是讓一個Actor來控制需要運行的操作,它會使用serviceProxy調用每個實例的方法來調用服務 - 但這只是一個天真的想法,我不知道它是否是它的可能或者如果這是正確的方式?

回答

1

一些背景信息

只有無國籍的服務可以給一個-1實例計數。您不能使用ServiceProxy來定位特定實例。

使用1個或多個partitions(數據分片)部署有狀態服務。分區計數是作爲服務部署的一部分提前配置的,不能自動更改。例如,如果您的羣集已擴展,則不會自動添加分區。

自治工人

也許你可以反轉運行無國籍服務(所有節點上)的控制流程,並讓他們查詢工作項的「倉庫」。存儲庫可以是一個有狀態的服務,將工作項存儲在隊列中。

這樣,添加更多實例(擴展羣集)可提高吞吐量而無需修改代碼。無狀態服務實例成爲自主工作者。 (反對一個智能協調演員)

+0

我做了類似這樣的事情。我有一個服務的所有-1實例如你所描述的那樣工作,然後我將狀態存儲在一個有狀態的actor中。 –

相關問題