请推荐一门能精确控制大量并发并行的编程语言或解决方案

2020-12-14 17:11:55 +08:00
 Antigen

需求是短时间内发送大量 GET 和 POST 请求,支持并行,要有极致的效率,慢一毫秒都无法接受的那种。

我现在已经用 Python 的异步方式实现了一个小 Demo,用到了 Trio 和 HTTPX 这两个包。但是速度并不满意。虽然能够并发,但是随着并行数量越来越多,提升硬件和带宽并不能提升效率。毕竟异步仍然是单核单线程。

我也搜了相关的内容,比如用 Go 语言试试。但是时间有限,比较着急,希望熟悉的大佬能指点一下,谢谢。

7216 次点击
所在节点    Python
66 条回复
Antigen
2020-12-14 18:10:39 +08:00
@GM 呃...目标服务器不可控,这不是正向开发。
Antigen
2020-12-14 18:11:54 +08:00
@cyrbuzz 我只是描述了最核心的需求,其实还有很多业务上的逻辑要实现,Python 进程间通信又很麻烦。
mclxly
2020-12-14 18:12:14 +08:00
![ttt.jpg]( https://i.loli.net/2020/12/14/BkFsApmVu6qJEtb.jpg)

抓 500 页面的数据,你看看速度满足你的要求么?
zachlhb
2020-12-14 18:30:29 +08:00
tornado
tempdban
2020-12-14 18:35:11 +08:00
你要找的是测试仪? t-rex
march1993
2020-12-14 18:51:27 +08:00
要求这么高,就不要用 http 了吧,自己写 socket 调优?
MeteorCat
2020-12-14 18:53:02 +08:00
估计得上实时系统
opengps
2020-12-14 19:05:56 +08:00
不要纠结单线程多线程,你还可以考虑下多进程。
我之前开发 gps 压测 tcp 连接的时候,用了一个非常简易的小客户端,然后一个 1080 的屏幕摆满了满满一屏幕小窗口,以至于单个系统发起的连接都已经达到了 65535 的极限,最后开多个电脑内网压测
ljpCN
2020-12-14 19:13:06 +08:00
慢一毫秒都不行,VxWorks ?
woctordho
2020-12-14 19:14:56 +08:00
Erlang,传说中的面向并发编程
qinfensky
2020-12-14 20:25:27 +08:00
elixir ?
kevinwan
2020-12-14 20:37:36 +08:00
https://github.com/tal-tech/go-zero
可以试试,我们百万级 qps 平均延迟一般 30 毫秒内
wjxforu
2020-12-14 20:44:44 +08:00
erlang 可以考虑一下. erlang vm 对于软实时这方面的优化非常好了. erlang 线程甚至可以支持几十万的线程的并发了.
书籍的话.
入门: Erlang 趣学指南 https://book.douban.com/subject/26868859/
进阶: 高伸缩性系统 https://book.douban.com/subject/30262041/

熟悉了 gen_server 之后, 可以快速的开发 server 服务了. OTP 框架已经处理了非常多的考虑了.
zvl0reqglvd
2020-12-14 21:26:57 +08:00
硬实时操作系统+C 估计可以,是火箭导弹发射呢?还是月球车遥控呢?
wellsc
2020-12-14 21:36:34 +08:00
@kevinwan 百万级 qps 得是多大厂啊?你把 qps 和日活搞错了吧
janxin
2020-12-14 22:38:24 +08:00
直接上 RTOS 杜绝多余操作系统开销
SaltCat
2020-12-14 22:44:38 +08:00
> 一毫秒都无法接受

rust + tokio 吧.
sampeng
2020-12-15 00:03:27 +08:00
毫秒都不行…只有 c 了…当然如果怕写出安全漏洞,那自然是 rust 了。允许毫秒的损失; golang 最合适。
samuel
2020-12-15 00:17:00 +08:00
如果把极致性能作为唯一要求,那应该就是 C 了,然后应该还用得上 DPDK: https://www.dpdk.org/
echowuhao
2020-12-15 00:43:47 +08:00

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

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

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

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

© 2021 V2EX