我只在學習期間開發了Erlang應用程序,但通常我們有許多小進程只做一件事,並將消息發送到其他進程。 Erlang的優點在於,如果您在同一臺Erlang虛擬機或者同一臺計算機,同一個局域網或互聯網上發送消息,則無關緊要,調用和指向其他進程的指針總是相同開發商。
所以你真的想爲系統的每個小部分都有一個應用程序。
這就是說,它並沒有使構建可擴展的應用程序變得更簡單。根據經驗法則,如果您希望應用程序工作的節點數量是10倍以上,則需要重寫,否則消息傳遞開銷將會過大。顯然,當你從1開始到2時,你也需要考慮它。
所以如果你發現了一個瓶頸,當處理太多的客戶端時,這個應用程序特別慢,你希望第二次運行它,而且你需要實現一些額外的負載平衡,在你開始第二個應用。
讓我們假設主管檢查消息內容是否有不適當的內容,因此速度很慢。在這種情況下,每個人都在談論的節點將是簡單的路由器應用程序,它將以循環方式將消息轉發到管理程序應用程序的不同實例。如果這些1或2個實例不夠用,可以用某種方式寫路由器,以便通過發送控制消息來操縱實例的數量。
但是,爲了自動工作,您需要有另一個進程監視服務器,並發現它們過載或未充分利用。
我知道,動態添加和始終刪除資源,當你聽到它的聲音很大,但你可以看到它是一個大量的工作,你需要有建立了一些消息系統,該系統允許的話,還有一個監控系統可以監控需求。
希望這會給你一些關於如何完成的想法,不幸的是,自從我寫了我最後的Erlang應用程序已經過了一年多了,我不想提供可能會出錯的代碼。
你用什麼工具繪製頂部圖表? –
我沒有畫出它,它是截屏的截圖。但它來自OmniGaffle。 –
好的,謝謝。 –