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

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

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

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

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

7461 次点击
所在节点    Python
66 条回复
Jooooooooo
2020-12-14 17:12:44 +08:00
java 的 netty
lscexpress
2020-12-14 17:14:30 +08:00
时间有限那就要看你们团队最擅长的语言是什么了,当然 go 确实满足你的需求
learningman
2020-12-14 17:21:12 +08:00
快那就 C 啊,libcurl,不过这个线程不安全
maocat
2020-12-14 17:22:56 +08:00
golang 纯天然的并发啊
WalkingEraser
2020-12-14 17:40:09 +08:00
Erlang OTP,一门为并发而生的软实时语言
acmore
2020-12-14 17:42:15 +08:00
Elixir / Erlang
Actor 模型做这种相对独立的并行任务比 CSP 模型更舒服些。
misaka19000
2020-12-14 17:43:42 +08:00
任何语言都实现不了「慢一毫秒都无法接受」,包括市面上主流的操作系统也实现不了你这个需求
misaka19000
2020-12-14 17:45:16 +08:00
go 肯定不行,go 还有 gc 呢,对比你这个需求简直是太慢了

C 或者 C++可能也不行,因为操作系统可能会对进程进行 schedule 导致处理时间变慢

综上,你只能使用实时操作系统,并且配合 C 语言
shoaly
2020-12-14 17:45:26 +08:00
这种场景, 瓶颈通常在 网络那边, 不在本机吧..
FutherAll
2020-12-14 17:50:27 +08:00
啥应用场景,火箭发射吗?
renmu123
2020-12-14 17:54:05 +08:00
发送请求是网络密集型,用不了多少 cpu 。可以多开几个进程搭配异步。go 应该是目前携程用起来最爽的语言了,性能肯定达不到你说的慢 1ms,手写机器语言应该可以达到速度最优但是达不到快速。
dbskcnc
2020-12-14 17:54:27 +08:00
慢一毫秒都无法接受的那种,只有 rtos+硬件中继能满足你了
GM
2020-12-14 17:55:18 +08:00
一脸问号:既然追求极致效率,还用 HTTP ?果断 Socket 走起啊。
wuwukai007
2020-12-14 17:56:18 +08:00
随着并发数量增多,效率降低,开多进程作负载应该可以提升不少吧
YouLMAO
2020-12-14 17:58:11 +08:00
量化交易, JP Morgan 开源的嵌入式编程, 使用微波通信, 比光纤快
nightwitch
2020-12-14 17:58:38 +08:00
"慢一毫秒都无法接受"
操作系统的调度是有随机性的,网络的拥堵程度也是不可控的。

另外,速度和吞吐量是两个矛盾的指标。你的标题要“大量并发”,你的正文要“极致速度”,这两个指标是不可能同时满足的
Antigen
2020-12-14 18:02:15 +08:00
可能我描述的不太准确。就像 DDOS 那样,只管发,不管目标服务器的反馈。只是尽最大可能保证极致速度。
hdbzsgm
2020-12-14 18:02:53 +08:00
c++
cyrbuzz
2020-12-14 18:06:53 +08:00
你用 Python 实现的 demo 瓶颈在于 Python 只能是单核单线程的情况下直接多跑几个不就可以了吗= =...
Antigen
2020-12-14 18:09:24 +08:00
@WalkingEraser 我也搜到了 Erlang,但是这门语言的文档和资料少之又少,倒是看国外的社区有很多人推荐。如果用 GO 也可以的话,想用 GO 试试。

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

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

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

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

© 2021 V2EX