我正在構建一個傳感器網絡,其中大量傳感器將其狀態報告給中央集線器。傳感器需要至少每3小時報告一次狀態,但是我希望確保集線器在任何時候都不會因過多的報告而淹沒。因此,爲了減輕這一點,我讓中心告訴傳感器'下一次報告時間'。分配心跳的算法?
現在我正在尋找任何用於對這些更新進行負載平衡的標準算法,以便傳感器不會超過報告之間的設置時間間隔,並且集線器可以計算下一個報告時間,以使其負載(接收報告)在一天中平分秋色。
任何幫助將不勝感激。
我正在構建一個傳感器網絡,其中大量傳感器將其狀態報告給中央集線器。傳感器需要至少每3小時報告一次狀態,但是我希望確保集線器在任何時候都不會因過多的報告而淹沒。因此,爲了減輕這一點,我讓中心告訴傳感器'下一次報告時間'。分配心跳的算法?
現在我正在尋找任何用於對這些更新進行負載平衡的標準算法,以便傳感器不會超過報告之間的設置時間間隔,並且集線器可以計算下一個報告時間,以使其負載(接收報告)在一天中平分秋色。
任何幫助將不勝感激。
如果你知道有多少傳感器也有,只是瓜分每3小時塊成多時隙和(隨機或編程,因爲你需要),一個分配到每個傳感器。
如果不這樣做,你仍然可以瓜分每3小時塊到一些大的時隙數量,並將其分配給傳感器。在您的分配算法,你只需要確保所有的插槽有一個指定的傳感器之前,任何人有兩個,他們都具有兩個之前的任何人有三個,等
簡單的解決方案:有中樞無法根據自己的時間表輪詢傳感器的任何原因?
否則,你可能要設計一個系統,其中,輪轂可自行決定是否接受基於自身負荷的報告。如果傳感器的連接被拒絕,請等待一段時間並重試。隨着時間的推移,傳感器應該或多或少地將它們自己放在最佳位置。
IIRC TCP/IP的某些方面使用了類似的方法,但是我對這是一個空白。
我想在30分鐘的範圍內使用90分鐘的基帶的隨機變化,從而使間隔是隨機beteween 60和120分鐘。如果你想獲得更接近3小時的時間間隔調整這些數字,但我會親自留好下它
也許你正在考慮以太網的[指數退避]的(http://en.wikipedia.org/wiki/Exponential_backoff #An_example_of_an_exponential_backoff_algorithm)algorithm –
@ jwpat7就是這樣! – Sammitch
傳感器可能會在沒有集線器知道的情況下被添加或移除 - 因此無法使用輪詢解決方案。速率限制和重試可行,但通信開銷對我的用例來說並不理想。謝謝你的想法 – ZENX