我必須編寫一個分佈式系統,並在四個不同節點上運行四個進程。分佈式系統應該按照以下方式工作:隨機數生成器在每個進程中生成一個隨機數。目標是通過消息在進程之間傳遞來平衡所有進程中的這些值。這樣的過程A是服務器從所有過程中獲取數字,然後命令他們將其部分數字發送到一個或多個其他過程,以平衡過程所持有的所有數字。例如,A的計數是30,B的計數是65,C的計數是35,D的計數是70.計算30 + 65 + 35 + 70 = 200除以4 = 50.現在流程A知道誰少了比平均水平和誰的平均水平更高。現在的問題是,A如何決定誰向誰發送什麼號碼?平衡所有流程的價值。請注意A不能直接指示進程減少或增加它的計數,例如它不能發送消息給B,並告訴它遞減15,然後向C發送另一個消息並告訴它增加15.必須向B發送消息,告訴B遞減15,然後發送一個消息給B給C的消息,並告訴它增加15或換句話說,它告訴B發送15你的計數C.預先感謝。扎基。爲所有進程均勻分配值的算法
回答
您所描述的問題被稱爲分佈式聚合。有許多解決方案適用於網絡上的不同假設(連接了哪些節點?可能會丟失信息?),計算函數(平均值?和?)等等。您可以在http://arxiv.org/abs/1110.0725找到一個很好的概述,並提供可以使用的算法。
對於我所知道的沒有一個具體的配方或者只能很好地定義模式來實現這樣的分佈式系統(同樣如果有材料提供參數的指導,請參閱問題末尾的鏈接)。 這裏涉及到各種選擇,將形成最終的系統,其可擴展性,如何將響應,如何將穩固等。
您將問題標記爲語言不可知的。我相信,好的概念不僅僅是技術,而是最終必須做出選擇,而像這樣的系統太複雜,不能用你不熟悉的語言來構建。
我會用C#構建它,因爲它是我的主要開發語言,所以我的技術面向agile development。
- 首先,我會盡力繪製一個宏觀建築設計,突出參與演員和他們的責任(但不打算過多的細節)。
- 然後,我會嘗試編寫第一個簡單原型,涉及兩個節點。
- 當原型工程時,我會嘗試找到薄弱點並讓它與四個節點一起工作。
- 如果有問題,請重複上一點直到它滿足要求。
進一步細化,你甚至可以使用原始插座來編譯它;但爲了保持簡單建議你發現在系統上HTTP protocol(例如使用.NET BCL HttpListener和HttpClient組件的基礎上)進行通信:
- 一組預定義消息
GET
可以執行對等服務器之間的同步。 POST
消息可用於在隨機數上交換數據。
關於數字世代,它打開了一個全新的世界。我會依賴一個外部服務,如ANU Quantum Random Server(如果您可以計算一個活動的Internet連接)。我知道你說過你有一個算法來實現,我提供這個作爲替代(我不知道這部分是否可以改變)。
至於最少的事情,我建議你閱讀this article也this約對等網絡如果您將使用.NET框架。
謝謝你的評論周杰倫。然而,我正在尋找的是算法,以促進均勻分佈,如上所述。無論如何我不擔心執行(或隨機數生成)。 – Zaki 2015-01-02 11:30:57
- 1. 將項目均勻分配到3列的算法
- 2. 均勻分配菜單
- 3. 按天分配行均勻
- 4. 分配均勻行從表
- 5. 將值均勻分佈到容器中的算法?
- 6. 算法均勻分配「獎品」/無方差彩票
- 7. 編程算法:如何均勻分佈列間的類別
- 8. Hadoop:如何將任務均勻分配給所有節點
- 9. pyspark在所有執行者之間均勻分配負載
- 10. 將非均勻分佈轉化爲均勻分佈
- 11. 均衡分配算法
- 12. 均勻性測試的快速算法
- 13. 問:我如何均勻分配元素?
- 14. 在水平線上均勻分配div
- 15. UIStackView - 均勻分配視圖中心
- 16. Cassandra負載分配 - 不均勻1.2.8
- 17. PRNG均勻分佈
- 18. 生成均勻分佈的隨機排列的算法
- 19. 幾乎均勻分佈的數據的高效聚類算法
- 20. 將矩形均勻分佈在另一個矩形內所需的算法
- 21. 算法:如何均勻分佈不同的綵球?
- 22. 均勻分佈比特但密度不斷增加的算法
- 23. 在多邊形中生成均勻分佈點的算法
- 24. 算法矩陣中元素的均勻分佈
- 25. 一個形狀上的均勻分佈算法
- 26. 非均勻插值
- 27. 倍增一個numpy的陣列和均勻地分配值
- 28. 通過它的值將數組拆分爲兩個均勻值
- 29. 功能/算法以均勻地重新分配數據處理介乎
- 30. 分配採樣多項式值均勻地隨機
謝謝你,我發現調查報告中描述的戒指方法,你提供了一個鏈接,爲我工作。 – Zaki 2015-01-02 13:28:54