我正在努力在 Go 中本地创建一个 Pastry 版本。从设计[PDF]:
假设应用程序提供了一个功能,允许每个 Pastry 节点确定具有给定 IP 地址的节点到自身的“距离”。具有较低距离值的节点被认为是更可取的。应用程序应根据其选择的邻近度度量来实现此功能,使用诸如跟踪路由或 Internet 子网映射之类的网络服务,以及适当的缓存和近似技术以最小化开销。
我试图找出从 Go 中以编程方式确定两个 EC2 实例之间“接近度”(即网络延迟)的最佳方法。不幸的是,我对低级网络不够熟悉,无法区分我可以使用的不同类型的请求。谷歌搜索没有提出任何测量 Go 延迟的建议,一般延迟技术似乎总是 Linux 二进制文件,我希望以减少依赖项的名义避免这种情况。有什么帮助吗?
另外,我注意到两个 EC2 实例之间的延迟应该在 1 毫秒的范围内。虽然我计划在 EC2 上使用该实现,但假设它可以在任何地方使用。延迟是否通常如此糟糕,以至于我应该努力确保两个节点的网络接近?请记住,大多数 Pastry 请求可以以集群中服务器数量的 16 为基数提供服务(因此对于 10,000 台服务器,平均大约需要 3 个请求才能找到正在搜索的密钥)。例如,从 EC2 的亚太地区到 EC2 的美国东部地区的延迟是否足以证明增加节点时延迟检查引入的复杂性和开销是合理的?