网络中的对等节点是否有一个通用或已建立的算法来决定一个唯一的“网络通道”(或任何其他形式的半秘密标识符)?
我工作的环境是SecondLife。我试图弄清楚如何让许多相同的对等脚本对象就允许它们形成网络的“通道”编号达成一致,而不会干扰同类对象的其他现有网络。
所有对象大致在同一时间被实例化,并且可以访问(公共)系统时间。
我想到的方法:
基于实例化时间。Channel 是从 unix 时间派生的(通过 md5)。问题是“大致相同的时间”部分。它们可能会在新的一秒前被实例化。
随机等待。让对象等待一个随机量,并宣布一个(随机生成的)通道号,该通道号由第一个唤醒的对象决定。问题是,系统的时间粒度较低,在处理公告之前可以唤醒多个对象。
结合 1 和 2。等待一个随机量后宣布一个高分辨率的时间戳,并从最低宣布的时间戳导出频道。
这一定是比我想象的更聪明的人。有更好的方法吗?