1
TuYanzheng 2020-06-24 19:56:29 +08:00
为什么要保存到 db ?这种东西,都有时效性吧?
|
2
linvon 2020-06-24 20:17:26 +08:00
这也没什么性能瓶颈吧,python 为啥性能差了
|
3
timchou OP @TuYanzheng 查询结果要保存一下呀,前端要展示,当然可以存 cache 里,不用存 MySQL
|
5
XanderChen 2020-06-24 20:37:16 +08:00
@timchou
没啥思路,目前掌握的哪门编程语言熟练,就用。 机器嘛,只要能跑起来,就让它往死里跑。 性能什么的都是后面要考虑的事情。 说句难听的,你担心查询量大其实有点多余, 还是先把基础功能做出来吧。如果你真想做的话,感觉这个前期投资还挺大的。 |
6
jeeyong 2020-06-24 20:41:34 +08:00
python 开发的话, 主机环境 Python+Redis.
Python 接到任务, 推送到 Redis. 剩下的从机: 每 500 毫秒轮询一次. 有任务取出来执行, 返回结果. 结果可以用 UUID 或者 IP 去统一管理, 也可以就直接取 IP 地址. 如果担心从机数量多, 一直轮训造成 REDIS 主机负载过高.那就再做一个进程, 由他负责轮训, 如果有任务了, 通过 get 的方式触发从机的任务.. 至于这套方案里, 真的发生了你担心的 python 导致的性能问题... 你可能已经有足够的资金雇一个 Golang, 一个 Nodejs, 一人写一个了. [/逃] 2H4GB 的 Flask 主机, 开 4 个线程监听, 每秒请求 500+应对起来我觉得没啥压力...很保守的说. 我现在一台 2H4GB 的性能突发型主机, 类似的业务, 86 台从机, 每天大概执行类似 ping 的任务 12000+. CPU 积分攒了 300, 不能再高了.. |
8
heiheidewo 2020-06-25 00:21:12 +08:00
爱站和站长工具这两个网站经常出现 ping 和测速功能不能用的情况,挺垃圾的
|
9
opengps 2020-06-25 01:03:58 +08:00 via Android
个人觉得,你的公网环境下,需要选择的差异已经不明显了,及时有 10ms 的差异,公网波动带来的 1000ms 差异更应当优先考虑。
语言只是个工具,我提倡哪个称手用哪个,等你在这个领域解决掉了 1000ms 的公网环境问题,你才有必要去优化语言带来的性能差异 |
10
janxin 2020-06-25 08:48:40 +08:00
这个挺简单的吧...通知机制可以主动 push 也可以 pull
|
11
ohao 2020-06-25 09:13:02 +08:00 via iPhone
没那么麻烦,我 php 写过一个,100 多个节点
分 master 和 slave slave 就是你理解的节点 提供 mtr ping traroute 3 个服务 就是直接 shell_exec 调用 mtr fping 返回格式化的结果 用户在 master 网页提交请求 async 请求后端每个 slave 节点,节点实时返回结果 特别注意做好 slave 的 api rate limit,很多批量 icmp 拿来刷攻击 这种工具类的需求不大 小众的很 而且也不适合作为基准测试,节点一般都是数据中心 线路和普通民用宽带的数据包优先级不一样 没什么参考价值 |