机器 A 需要向机器 B 发送消息。机器 A 具有静态 IP,但机器 B 没有。
我可以想到的解决此问题的一个选项是机器 B 打开与机器 A 的 TCP 连接,然后机器 A 将数据/消息发送到机器 B。但是,此解决方案具有以下限制:
a) 如果有很多机器(如机器 B)向其发送数据,则它是不可扩展的。这可能会破坏机器 A 的资源。
b) 机器 A 需要在需要时发送数据。机器 B 不知道什么时候会有数据。在当前的设计中,机器 B 将不得不通过 TCP 连接反复轮询机器 A,询问它是否有任何数据。如果有很多机器 B,这可能会变得昂贵。
有没有更便宜的方法来解决这个问题?观察者设计模式浮现在脑海中。机器 B 可以订阅来自机器 A 的通知,以便在数据可用时通知它。但是,当机器 B 没有静态 IP 时,如何在分布式环境中实现该模式?
除了观察者之外,除了使用机器 A 的原始套接字将数据发送到机器 B 之外,还有其他方法会更便宜吗?