2013-10-18 30 views
1

我們都很容易談到REST的擴展 - 我們可以添加節點來水平擴展,因爲沒有狀態 - 這意味着沒有會話複製,沒有會話相關性等等。REST與集羣的優勢狀態

我的問題是:爲什麼我們不能在有狀態的應用程序中通過聚類來實現這種擴展?我還要補充一點,我的注意力只是擴展 - 我不擔心會導致數據丟失或會話註銷等節點的故障 - 所以,讓我們說,我不需要任何會話複製/緩存。

因此,與Stateful-Traditional應用程序相比,無狀態-RESTful應用程序會有什麼優勢,它可以歸爲一類來輔助水平縮放?

回答

2

這並不是說你無法擴展一個有狀態的應用程序,而是它更困難,更多的人可能會出錯。您必須在所有服務器之間引入更多通信才能共享狀態。使用無狀態設計,您只需添加更多服務器,它們不需要彼此交談,甚至不需要彼此瞭解。曾試圖擴展關係數據庫以確保所有節點之間數據一致性的任何人都可以證明所涉及的麻煩。

+0

嗨Mulhall,感謝您的回覆......但是,即使我不希望他們共享任何狀態信息(如會話),服務器之間是否應該進行通信?正如我在問題中所述 - 可用性不是約束我想解決.. – user2893263

+0

我沒有真正遵循。如果他們不需要共享狀態信息,他們彼此之間的通信是什麼?理想情況下,應用程序服務器不應該彼此瞭解。這讓你的生活變得更加輕鬆。您可以根據需要放入服務器,而無需更新負載均衡器之外的任何其他服務器。 –

+0

我的觀點是:服務器應該像會話一樣共享狀態信息,這樣如果一個節點發生故障,羣集中的其他節點可以自由地向「失敗」節點的用戶提供請求,而不會丟失數據/事務。但是,如果我的要求不是要實現這一點 - 即使用戶由於節點崩潰而退出,我也沒問題 - 其他節點可以重新啓動。因此,在這種情況下,REST爲我提供了有狀態優勢嗎? – user2893263