- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发的系统可能有大量的客户端(比如说一百万),它们需要定期用一些信息更新中央服务器。客户端是用 Java 编写的。
具体用例是服务器后端需要有一个最新的 IP 地址到客户端的映射。但是客户端 IP 是动态的并且会(实际上是随机的)变化。
我想到的解决方案要求客户端对服务器执行 ping 操作以更新其 IP。理想的周期应该是每分钟一次,但即使是 1 ping/10 分钟也是可以接受的。
我的问题,按顺序:
每 1 分钟 1M 次 ping 超过 10k/秒。 所以首先我想知道这些方法可以扩展以处理这样的负载。这是为了了解可用的选项。
假设您有多个解决方案,请选择以下哪一个会是最经济的吗? 成本效益至关重要。我没有自己的数据中心或网络上的静态和胖端点,因此服务器应用程序将需要在某种提供商或最终在云端运行。
注意事项:
我考虑过使用我自己的 ISP 提供的连接在家里运行服务器,但我不确定性能问题,也不确定我的 ISP 会如何看待持续的 ping 流。
我看不到服务器如何自动发现这些 IP 更改。
最佳答案
Erik,你的问题比听起来要简单得多。
这个问题已经存在十年或两年了。无需在这里重新发明轮子。
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”(既是技术的描述性名称,也是提供 SaaS 解决方案的公司的名称)。
动态 DNS 是一个非常简单的 DNS 服务器,允许您非常快速地更改名称和 IP 地址之间的映射。通常这对于使用仅提供动态 IP 的 ISP 的设备很有用。每当动态 IP 上的路由器/服务器的 IP 更改时,它都会将更改通知动态 DNS 服务器。
假设 IP 客户端映射问题得到解决。你想通了,它完美地工作,你总是知道每个客户端的 IP。那么您是否有一个很好的可靠系统来将文件从移动设备传输到客户端?我会说不。
手机和家用电脑都可以有多种连接类型,Wi-Fi、蜂窝数据,也许还有线数据。这些网络中的每一个都可能有不同的安全系统。因此,从蜂窝数据移动设备到家庭路由器后面的 wifi 笔记本电脑的连接看起来与在同一 wifi 网络上连接到笔记本电脑的 wifi 移动设备非常不同。
您可能需要应对物理路由器防火墙。此外,家用计算机可能启用了 Windows 防火墙,可能是诺顿互联网安全、可能是赛门铁克、可能是 AVG、可能是区域警报等...您知道所有这些潜在客户的防火墙注意事项吗?
关于java - 如何知道WAN IP是否发生变化并接收海量IP地址广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9955350/
目前,我有以下设置: A记录: mydomain.com - aaa.aaa.aaa.aaa subdomain.mydomain.com - aaa.aaa.aaa.aaa NS记录: mydoma
有人可以帮助我以最佳方式在流畅的 nHibernate 中映射以下情况吗? Address 类用于 Client 和 Company。如何在 SQL 中最有效地存储它?映射应该是什么样的?我已经考虑过
我正在尝试编写一个 Windows 应用程序,它将在来自 PC 的以太网链接上生成流量。 我想使用 webBrowser 控件不断拉取网页以产生流量。 在这种情况下,我希望每个 webBrowser
我正在编写一个 SIP 堆栈,我需要在消息中插入一个 IP 地址。该地址必须是用于发送消息的地址。我知道目标 IP 并且需要确定将用于发送消息的 NIC(其地址).... 最佳答案 为了扩展 Remy
如何使用 IP 地址获取 MAC 地址,但以下代码不起作用 packet = ARP(op=ARP.who_has,psrc="some ip",pdst = ip) response = srp(p
目前我想知道如何实现对本地无线网络(路由器)的获取请求以获取当前连接到当前连接的 LAN 的所有设备.... 所以我做了一些研究,显然“nmap”是一个终端/命令提示符命令,它将连接的设备返回到本地无
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicates: how to find MAC address in MAC OS X programmatically
我们正在为 ipad 开发一个 iOS 应用程序,它使用 bonjour 与其他设备连接,使用 couchbaseListener 与对等数据库进行复制。我们观察到,每当 [nsnetservice
我创建了 3 个实例,其中 3 个弹性 IP 地址指向这些实例。 我做了 dsc 的 yum 安装:dsc12.noarch 1.2.13-1 @datastax 并且/etc/cassandra/d
我正在尝试获取规模集中所有虚拟机的私有(private) IP 地址列表(没有一个虚拟机故意拥有任何公共(public) IP 地址)。我找到了如何从 az cli 获取此内容,如下所示: az vm
我正在尝试获取规模集中所有虚拟机的私有(private) IP 地址列表(没有一个虚拟机故意拥有任何公共(public) IP 地址)。我找到了如何从 az cli 获取此内容,如下所示: az vm
我正在尝试与该端口上的任何 IP 建立连接。最初,我将其设置为 10.0.0.7,这是我网络上另一台计算机的 IP,因此我可以测试客户端/服务器。但是,我希望它可以与任何计算机一起使用而不必将 IP
作为序言,我开发了自己的 CRM(类似于 SalesForce 或 SAP),其“规模”要小得多,因为它面向服务,而不是销售。我在 Ubuntu 16.04 服务器上使用 MySql 或 MariaD
在我的项目中,我想做如下事情: static void test0(void) { printf("%s [%d]\n", __func__, __LINE__); } static void
我的机器上有两个网卡,配置了两个独立的 IP 地址。两个 IP 地址都属于同一个网络。我是否正确地说,当我创建一个特定于这些 IP 地址之一的套接字时? 更新: 这是我的情况: 我有一个位于 192.
当然,我意识到没有一种“正确的方法”来设计 SQL 数据库,但我想就我的特定场景中的优劣获得一些意见。 目前,我正在设计一个订单输入模块(带有 SQL Server 2008 的 Windows .N
我们将保存大量地址数据(在我公司的眼中,每个客户大约有150.000至500.000行)。 地址数据包含约5列: 名称1 名称2 街(+否) 邮政编码 市 也许以后再添加一些东西(例如电话,邮件等)
好的,我们在生产中实现了 Recaptcha。我们收到错误是因为它无法到达使用该服务所需的 IP 地址。我们为 IP 地址打开一个端口以到达 Google。没问题。我们这样做并显式配置该 IP 地址以
此页面使用 Drupals 联系表发送电子邮件:http://www.westlake.school.nz/contact 问题是,学校员工使用 outlook。当他们收到来自 parent 等的电子
是否可以将用户输入的邮政编码转换为文本框并将其转换为CLLocation?我正在尝试比较其当前位置与地址或邮政编码之间的距离,如果可以从NSString中创建CLLocation,这将很容易。 最佳答
我是一名优秀的程序员,十分优秀!