0

假设我有两个服务需要共享和/或交换数据。两个实例彼此分离,它们不知道另一部分的位置。

现在,为了让他们能够共享和/或交换数据,他们需要相互连接。

他们如何在不需要明确配置 IP 地址的情况下找到彼此?换句话说:它们如何自动检测到彼此?

基本上,我有两个想法:

  • 拉:您需要在他们注册的地方有一个中央服务。然后您可以向该服务询问服务的地址,然后该服务返回这些数据。虽然这可行,但它的缺点是它只会将问题转移到下一个级别:如果我有该服务的多个实例,并且我不希望它们提前相互了解怎么办?

  • 推送:每个服务广播自己的地址,以便其他服务知道。每项服务都会不时重复此操作。缺点:这在互联网上几乎不起作用。

知道如何以智能的方式解决这个问题吗?

PS:如果您要这么说,我正在寻找一种无需中央 DNS 服务器即可处理动态 IP 的方法。

4

2 回答 2

1

广播数据包不会在网络上的任何地方转发,而只会转发到广播域内的设备。

如果您的设备位于不同的广播域,则广播将无法正常工作。

您可能必须实现自己的中央服务,除非您可以使用免费的动态 dns 服务器之一,例如:免费

于 2014-01-24T12:44:43.057 回答
1

通常的方法是拥有一些容错服务器,服务在其中注册,然后可以查找其他服务 - Curator 框架通过zookeeper实现了这一点。

如果您想要自动发现,那么您可能应该实现某种八卦协议,以便服务器以可靠的方式知道哪些其他服务器在那里。您应该记住,正确获取 gossip 协议是很棘手的(例如,过去的一些 Amazon 云故障是由于其实施中的问题造成的)

于 2014-01-24T18:14:47.083 回答