2017-04-02 98 views
5

我希望在使用Erlang/Elixir的金融市場中創建一個平臺即服務。我將在金融市場提供AWS lambda風格的功能,但我不打算通過web/rest/http訪問,我打算將自己的基於ARM的硬件終端分發給客戶端(基於Nvidia Jetson TX2或類似的硬體) 。他們將從這些終端訪問功能。我想讓終端成爲系統中的完整節點。因此,他們將使用演員模型向我的中央服務器發送消息,並且實際上,如果終端用戶決定將自己的功能在線,則終端之間可能會相互傳遞消息。Erlang系統中節點的最大(實際)數量是多少

這是一個可行的模型?我可以運行這樣的1000個終端嗎? 100 000?我可能會遇到什麼樣的限制?如果我們的軟實時金融市場流動數據流動,Erlang的消息路由是否可擴展到足以想象這樣的網絡仍然具有高性能? (大部分從中央服務器到終端,但是很大比例可能直接從終端到終端)。我們可以建立一個系統,其中可以使用高達10萬個或更多不同的「訂閱」數據通道進程,其中許多進程每秒都會進行輸入和生成輸出。

基本上我想要一個類似上面的Erlang系統的可伸縮性功能的規範指南。理想情況下,我也想要一些這樣的系統安全影響的指南,即。全球路由表或系統的任何其他部分是否可以被惡意終端用戶破解,或者邊緣節點是否可以從Erlang網絡其餘部分的敏感部分「封鎖」?

請注意,我想大量使用端口/ NIF的高計算過程。

回答

5

我不會追究這條大道因各種原因,所有這些都讓人想起那種系統是Erlang的分配機制是爲開發 - 無源背板上的一組電路板:「免費」本地帶寬,並且整個機器位於相同的安全域中。 Erlang的分發協議可能過於瑣碎,無法在廣泛傳播的大型網絡上正常運行,而且它肯定太不安全。當然,除非你希望節點能夠相互執行:os.cmd("rm -rf /")

在您的中央系統中使用Erlang分配協議來處理您的心臟內容,並讓這些終端通過SSL向該系統和對方講話。最重要的是,您可以非常簡單地構建一種覆蓋網絡來執行您想要的任何操作。

2

我建議仔細閱讀this,我建議將您的服務劃分爲小型微服務。
另一個基準是Investigating the Scalability Limits of Distributed Erlang
在喬Armstorng的書編程二郎,他說:
「幾年前,當我有我的研究的帽子上,我與PlanetLab的工作,我已經獲得了PlanetLab的網絡,所以我安裝空所有PlanetLab機器上的Erlang服務器(其中大約450臺)
我真的不知道我會如何處理這些機器,所以我只是設置服務器基礎設施以便稍後執行某些操作。
不要使用外部端口,而應使用用C或C++編寫的內部驅動程序。

+0

好吧我假設你的意思是每個節點都有n-1個連接,意思是整個系統的n *(n-1)?看起來這個事實使得我提出的架構不可行,因爲它本質上是一個網格。實際上沒有任何路由?是的,我會問Erlang的郵件列表。 –

+1

是的,n-1是正確的。我搜索了一些基準,在我最後的編輯中,我將它們添加到了帖子中。 – Pouriya

+0

你爲什麼不使用外部端口?另外,@普里亞 - 請不要通過提供外部參考來回答。 – cdegroot

相關問題