gpt4 book ai didi

java - 如何知道WAN IP是否发生变化并接收海量IP地址广播

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:36 25 4
gpt4 key购买 nike

我正在开发的系统可能有大量的客户端(比如说一百万),它们需要定期用一些信息更新中央服务器。客户端是用 Java 编写的。

具体用例是服务器后端需要有一个最新的 IP 地址到客户端的映射。但是客户端 IP 是动态的并且会(实际上是随机的)变化。

我想到的解决方案要求客户端对服务器执行 ping 操作以更新其 IP。理想的周期应该是每分钟一次,但即使是 1 ping/10 分钟也是可以接受的。

我的问题,按顺序:

  1. 每 1 分钟 1M 次 ping 超过 10k/秒。 所以首先我想知道这些方法可以扩展以处理这样的负载。这是为了了解可用的选项。

  2. 假设您有多个解决方案,请选择以下哪一个会是最经济的吗? 成本效益至关重要。我没有自己的数据中心或网络上的静态和胖端点,因此服务器应用程序将需要在某种提供商或最终在云端运行。

注意事项:

  • 我考虑过使用我自己的 ISP 提供的连接在家里运行服务器,但我不确定性能问题,也不确定我的 ISP 会如何看待持续的 ping 流。

  • 我看不到服务器如何自动发现这些 IP 更改。

最佳答案

Erik,你的问题比听起来要简单得多。

这个问题已经存在十年或两年了。无需在这里重新发明轮子。

为什么轮询/Ping 是个坏主意

ISP 提供的动态 IP 可以有可变的租用时间,但通常至少为 24-72 小时。每 1-10m 对您的服务器执行一次 ping 操作将是一个可怕的资源浪费,可能会在 72 小时内为每个客户端发出超过 4,320 个无用的 HTTP 请求。每个请求大约为 300 字节 * 4,320 个浪费的 http 请求等于 1.3mb 的浪费带宽乘以您的目标客户端数量(100 万个客户端),您说的是每月浪费的带宽约为 1.2 TB!这只是浪费的带宽,而不是您运行应用程序和提供有用信息可能需要的其他带宽。

客户端需要比仅仅频繁 ping 更聪明。相反,他们应该能够在启动时检查他们的 IP 地址是否与 DNS 匹配,然后仅当 IP 更改时,才向服务器发送通知。这会将您的带宽和服务器处理要求降低数千倍。

您描述的是动态 DNS

您所说的是“动态 DNS”(既是技术的描述性名称,也是提供 SaaS 解决方案的公司的名称)。

动态 DNS 是一个非常简单的 DNS 服务器,允许您非常快速地更改名称和 IP 地址之间的映射。通常这对于使用仅提供动态 IP 的 ISP 的设备很有用。每当动态 IP 上的路由器/服务器的 IP 更改时,它都会将更改通知动态 DNS 服务器。

  • 动态 DNS 的实际标准协议(protocol)有据可查。从这里开始:DNS Update API ,我认为您正在寻找的细节在这里:DynDNS Perform Update .由于路由器硬件通常有一个每个人都想使用的内置 DynDNS 客户端,因此大多数商业实现都非常接近相同的协议(protocol)。
  • 大多数路由器(即使是便宜的路由器)都已经内置了动态 DNS 客户端。 (您可以编写自己的软客户端,但路由器可能是最有效的位置,因为您的客户端可能使用私有(private) IP 进行 NAT - 您仍然可以这样做,但以更多带宽为代价用于公共(public) IP 发现)
  • 在谷歌上快速搜索“dynamic DNS java client”会出现像这样的完整源项目:Java DynDNS client (未经测试,仅说明搜索的力量)

系统架构的其他注意事项

假设 IP 客户端映射问题得到解决。你想通了,它完美地工作,你总是知道每个客户端的 IP。那么您是否有一个很好的可靠系统来将文件从移动设备传输到客户端?我会说不。

手机和家用电脑都可以有多种连接类型,Wi-Fi、蜂窝数据,也许还有线数据。这些网络中的每一个都可能有不同的安全系统。因此,从蜂窝数据移动设备到家庭路由器后面的 wifi 笔记本电脑的连接看起来与在同一 wifi 网络上连接到笔记本电脑的 wifi 移动设备非常不同。

您可能需要应对物理路由器防火墙。此外,家用计算机可能启用了 Windows 防火墙,可能是诺顿互联网安全、可能是赛门铁克、可能是 AVG、可能是区域警报等...您知道所有这些潜在客户的防火墙注意事项吗?

关于java - 如何知道WAN IP是否发生变化并接收海量IP地址广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com