每天约 14 万次访问量,只返回访问者的 IP 地址,应该如何部署更节省成本?

2016-05-03 23:11:30 +08:00
 abelyao

有这样一个需求,每台机器每 30 秒通过访问一个特定的页面,来获取外网 IP 地址,大概会有 50 台机器运行;

返回的内容大概就是 {'ip':'123.123.123.123'} 而已,因为需要服务端来判断来访者 IP ,所以没办法直接部署到 CDN 或者做缓存(这个 IP 必须得是实时的,如果来访者 IP 换了也得给出新的结果);

目前考虑的是部署一个 node.js 来跑(据说高并发很好?),每天 14 万次请求,除了购买一个 VPS 还有什么更好的办法吗?

PS. 考虑过通过网卡来获取 IP ,但机器都在路由器后面,网卡信息是没有外网 IP 地址的;
PPS. 也考虑过直接抓网络上其它 IP 查询网站的结果,但这些网站有时会触发保护系统,返回了错误的结果;

16725 次点击
所在节点    DevOps
112 条回复
abelyao
2016-05-04 00:24:13 +08:00
@kofip 我去你们偷偷藏了这么多 API ……
kofip
2016-05-04 00:26:21 +08:00
@abelyao 我放弃这个了,某些地区,打开很卡。
YUX
2016-05-04 00:28:27 +08:00
我一般用这个
https://wtfismyip.com/text
kofip
2016-05-04 00:28:51 +08:00
@YUX 这个速度好慢。
abelyao
2016-05-04 00:40:45 +08:00
@kofip 看到这篇 2010 年的博客,是当时作者搞的这个 sohu 的接口,能存活到现在说明确实是可长期提供的,不过看了一下底下的评论,有人反应 IP 的结果不准确…
kofip
2016-05-04 00:52:17 +08:00
@abelyao 确实可以长期使用,至于结果不准确,这个是运营商的问题。某些地区访问 200 以上 MS 。
crab
2016-05-04 00:54:30 +08:00
c3538378
2016-05-04 01:12:30 +08:00
唉,楼主就取个 IP ,并不需要 ip2location ,多大点事:

```
location = /ip {
add_header Content-Type application/json;
return 200 "{\"ip\":\"$remote_addr\"}";
}
```
limengwei
2016-05-04 01:16:54 +08:00
golang
DravenJohnson
2016-05-04 02:55:34 +08:00
SoloCompany
2016-05-04 03:26:34 +08:00
自有服务器的话 28 楼是正解
考虑 SaaS / PaaS 的话首选 python 吧,毕竟最多平台支持,比如 SAE / GAE 这些
kofip
2016-05-04 03:33:26 +08:00
@c3538378 关键是各地访问的速度与稳定性。
kofip
2016-05-04 03:41:54 +08:00
我还幻想过,通过 DNS 服务器查询源 IP 。
可惜并没有这种功能!
msg7086
2016-05-04 05:42:00 +08:00
就像 28 楼那样 nginx 写个配置文件就行了,还部署……?
shiji
2016-05-04 06:37:50 +08:00
另外关掉 keepalive ,客户端收到回复之后也尽量直接关闭连接。
Bryan0Z
2016-05-04 07:00:11 +08:00
其实获取 ip 这事根本不用服务器,直接 traceroute 到自己 ip , 5 跳之内一般都有结果,第一个返回的外网 ip ,就是客户机公网 ip …当然想要 NAT 穿透就有点难了
kofip
2016-05-04 07:05:00 +08:00
@Bryan0Z 实验中!
kofip
2016-05-04 07:07:29 +08:00
@Bryan0Z 实验失败,你说的不成立。
Anteiku
2016-05-04 07:37:18 +08:00
c3538378
2016-05-04 07:45:58 +08:00
取个 IP 就也能有这么多幻想!楼主醒醒,杀鸡何必用牛刀?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/276129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX