如题,最近最两个高并发的组合在我脑海中打转。
其实这种方案我感觉比较 Hack 不怎么优雅。怎么说呢? openresty 内置的 resty-redis 等库 + ngx.capture 基本可以解决需求。但是通过 rewrite_by_lua_file 这样。开发调试体验并不太好。
Go 语言以高并发高性能著称。
我算是后端新人,基本没有大型网站架构经验 ,希望能得到各位的见解。
1
lhx2008 2019-01-18 21:40:30 +08:00 1
先看看现有程序为什么慢,Python 慢是不是 IO 有问题?能不能搞异步 IO ?
|
2
fengjianxinghun 2019-01-18 22:02:32 +08:00 via iPhone 1
openresty+lua 然后 luaffi 调用编译成 shared 库的 go 满足你的所有问题
|
3
Vegetable 2019-01-18 22:07:53 +08:00 1
怎么说呢,个人看法.
Django 你们如果不打算一直用下去,那就早早切到 go 那边,少走点弯路. 如果近期没那个打算,可以考虑写个 lib 给 python 用,很多语言都行比如 GO.一样能解决眼下的问题,不要把系统搞太复杂. |
4
LukeChien 2019-01-18 22:50:30 +08:00 via Android
这个可以用 nodejs 试试
|
5
misaka19000 2019-01-18 22:56:45 +08:00
不知道你的并发量高指的是有多高哈,我们用 Python 开发的项目 qps1000 左右完全没有压力。。。
当然如果高指的是特别高那当我没说 |
6
dongqihong 2019-01-18 23:15:34 +08:00
Don ’ t make claims about performance without measurements
先确定瓶颈在哪儿,最好的解决方案也就呼之欲出了 |
7
junbaor 2019-01-18 23:24:23 +08:00
高并发比较模糊,得说你想支撑多大量
|
8
kran 2019-01-18 23:36:40 +08:00 via Android
先用现有技术栈解决问题。
有一句话怎么说,如无必要… |
9
cloudyplain 2019-01-19 08:02:10 +08:00
开发效率 python > openResty > go
性能 go >= openResty >> python 生态 python > go > openResty 如果不打算更换 python,只是实现简单高性能的 api,openResty 可以算是比较好的选择,至于其他方面需要自己找平衡点。 |
10
pathbox 2019-01-19 08:22:50 +08:00 via iPhone
真要改,我觉得 go,Nginx 就够你用了
|
11
hujianxin 2019-01-19 09:32:42 +08:00
@cloudyplain openresty 开发效率比 go 还高?
|
12
lihongjie0209 2019-01-19 10:09:45 +08:00 1
你的并发量到什么程度才让你决定你的程序已经到极限了, 只能优化 nginx ??
异步写尝试过吗? 多线程? 消息队列? 内存数据库? 你直接优化 nginx, 程序逻辑分散到两处, debug 和维护的时候都是坑 |
13
KgM4gLtF0shViDH3 2019-01-19 11:21:17 +08:00 via iPhone
要高并发为啥用 django
|
14
szq8014 2019-01-19 12:23:16 +08:00 1
@lihongjie0209 现在太多程序员谈程序必谈并发,甚至程序还没写出来就开始想遇到高并发怎么办,我甚至在怀疑真的需要这么高并发么,先快速写个“低并发”初版出来再迭代。。不要纠结语言么,nodejs, java , python 都是可以优化的,但是要记住“过早的优化是万恶之源”
|
15
lihongjie0209 2019-01-19 13:02:57 +08:00
@szq8014 对的
|
16
byteli 2019-01-19 13:41:55 +08:00 via Android
过早优化是万恶之源。先 profile 找到原因。cpu 硬盘 带宽 io,总有一个是限制,web 的一般都在 io
|
17
msg7086 2019-01-19 14:48:41 +08:00
所以你是问 Nginx + Lua 和 Nginx + Go 哪个好?
Nginx 你准备怎么连接 Go 呢? FastCGI 或者 HTTP Proxy 么?考虑过这之间的开销么。Lua 是进程内部执行的,少个进程间通信开销还有协议序列化之类的开销。 另外做开发的话还要考虑后期招人维护的成本。能不能招到 Lua 和 Go 的程序员也是一个问题,建议从多方面考虑。 |