我不熟悉AWS,但它是我們使用的堆棧,因此需要在AWS上運行。如何添加EC2節點並讓他們從共享工作池開始拾取?
我沒有看到AWS工具集中的任何內容幫助我啓動另一個EC2節點,然後自動處理將一堆任務分配到新節點的任務。
因此,作爲一個例子,我可能會有一堆請求來創建斐波納契數字。最初,單個EC2節點上的單個JVM可能啓動,竊取一批數字以處理並處理它們。
隨着負載的增加,第二個節點可能啓動,它的JVM會竊取下一批要處理的數字。
注意:沒有單個號碼必須多次處理,理想情況下。奇怪的重複並不重要,但是我們需要避免在整批工作上發生衝突。
我可以將任務存儲在RDS中,也可以存儲在DynamoDB中。然後,我必須將條目標記爲由特定EC2節點保留進行處理,並在完成後將其清除。更糟糕的是,如果EC2節點停機並留下一些標記爲處理的條目,則必須具有某種恢復邏輯。
我可以使用非AWS-y之類的東西,比如Redis,並通過JVM分配內存中的數據。我仍然需要在某些時候堅持參賽作品,因爲它們需要持久耐用,但這可能會更有效果。
我想我認爲這必須是一個非常普遍的要求:共享狀態並在越來越多的節點上處理它,必須有一個解決方案已經存在。
請參閱:https://aws.amazon.com/documentation/autoscaling/ – alfasin
我沒有看到任何解決共享狀態或從池中分配工作的內容。 – fiddlesticks
假設您的ASG中的所有節點都配置了相同的AMI,您可以基於CPU使用情況或其他可用的watchwatch指標創建自動縮放規則,這樣當您的ASG超載時,AWS會自動啓動新實例。如果您沒有將實例邏輯烘焙到AMI中,也就是說,如果您添加的任何新實例需要手動安裝和配置 - 那麼AFAIK無法在沒有手動干預的情況下進行自動調整。 – alfasin