用于分发心跳的算法?

3
我正在构建一个传感器网络,在这个网络中,大量的传感器会将它们的状态报告给一个集中控制中心。这些传感器需要至少每三个小时报告一次状态,但是我想确保中心控制中心在任何给定时间内不会受到太多的报告干扰。因此,为了缓解这种情况,我让中心控制中心告诉传感器“下一个报告时间”。
现在我正在寻找任何标准算法来平衡这些更新的负载,使传感器不会超过设定的报告间隔,而中心控制中心可以计算出下一个报告时间,以便其负载(接收报告)在一天内均匀分布。
如有帮助,将不胜感激。
3个回答

1

如果你知道有多少个传感器,只需将每个三小时块分成相应数量的时间段,然后(根据需要随机或编程),为每个传感器分配一个时间段。

如果你不知道,仍然可以将每个三小时块分成一些大量的时间段,并将它们分配给传感器。在你的分配算法中,你只需要确保所有时间段在任何一个时间点之前都有一个被分配的传感器,而在任何一个时间点之前都有两个传感器,等等。


0

最简单的解决方案:中心节点是否可以根据自己的时间表轮询传感器?

否则,您可能需要设计一个系统,使中心节点可以根据自己的负载决定是否接受报告。如果传感器的连接被拒绝,请让它等待一段随机时间并重试。随着时间的推移,传感器应该会更加优化地分布。

我记得TCP/IP的某些方面使用了类似的方法,但我不记得是哪个了。


2
也许你正在考虑以太网的指数退避算法。 - James Waldby - jwpat7
传感器可以随时添加或移除,但中心无法知道这一点 - 因此无法使用轮询解决方案。速率限制和重试可以工作,但通信开销对于我的用例来说并不理想。谢谢您提供的想法。 - ZENX

0
我会使用一个基准时间为90分钟,并在30分钟范围内进行随机变化,以便间隔时间在60到120分钟之间随机分布。如果你想要更接近3小时的间隔时间,可以调整这些数字,但我个人建议保持在这个范围之内。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接