求基于 Python 开发大流量在线服务的经验教训

2024-04-20 16:36:24 +08:00
 craftx
rt
之前发了个帖子,询问现在有哪些大流量在线服务是用 python 作为主力语言。
现在问题改下,如果真的要以 python 来开发,可能面临哪些问题,如何解决?
6910 次点击
所在节点    Python
38 条回复
livenux
2024-04-20 16:42:40 +08:00
python 性能是差些,对付大流量 web 使用异步框架应该足够了,况且还有使用 rust 底层 web 框架 https://github.com/sparckles/Robyn
LeeReamond
2024-04-20 16:47:08 +08:00
你这个问题意义不大,
1. 大部分人和大部分公司不会选择 python 的方案,原因是 java 在国内环境下更合适,直接原因就是招人随便招都有一帮卷 B 来找你
2. springcloud 生态整合了开发中的一些重要节点,比如微服务和分布式容器化部署,服务注册与发现,管理与更新,均衡负载和智能路由,故障和容错和灾备,以及开发过程中的链路追踪等等问题。这些问题不是说 Python 不能解决,只是说生态导致语言自然分化出了不同定位,你强行要逆趋势而行就要支付对应的代价,有一些过程目前的开源工具做的不是很好,有一些过程需要你自己实现,这些过程中任意一个单拿出来都说不上很难,但一箩筐打包还是令人头疼的工作。
3. 所以你用 java 开发这叫顺势而动,用 python 开发这叫逆天而行。单说坑,python 没什么坑,使用量这么高的语言有什么坑,但是因为你逆天而行所以可以说到处都是坑。
4. 而你使用动态类型语言的优势则是开发周期短,然后如果你资金和技术够,那么另起炉灶会让你对项目有完全的掌握力度。这些优势在资本密集型项目中不具备什么价值。
5. 所以最后问题就变成,你既然都有大流量了,何须在意成本,直接花钱铺路,javaer 帮你把问题解决得服服帖帖。除非你实际上没有大流量,开发还想省钱,然后同时你是个技术专家,非常清楚自己要做什么,那你就用自己熟悉的技术栈。不过如果你是技术专家的话你还来 v2 问什么
BeiChuanAlex
2024-04-20 16:48:29 +08:00
大流量,如果是我,绝对不会用 python
shinession
2024-04-20 17:13:11 +08:00
Instagram, django 的框架, 当然魔改了一部分, 抗的住十亿流量, 成为独脚兽之前语言不是啥问题吧
crysislinux
2024-04-20 17:17:06 +08:00
流量大语言性能差点多加服务器就好了,关键是架构要能方便的加服务器
luozic
2024-04-20 17:35:52 +08:00
为啥限定是 python ?即使是那几个说的 python 大项目,也是用 python 当胶水,具体的实际中间件,性能敏感的地方还是用 c++,golang 甚至 rust 重写了的。
Hopetree
2024-04-20 17:40:56 +08:00
用 Python 就别讲究性能,Python 的最大优势在于可以当脚本用,开发方便才是 Python 的优势,性能真没必要
FlyingBackscratc
2024-04-20 17:41:36 +08:00
@luozic 这就比较无聊了,用什么开发业务就是用什么语言,比如你牙齿是每天磨损最多的地方,然后你换了钢牙,能说你这人是钢做的?
akira
2024-04-20 18:26:55 +08:00
豆瓣好像是吧, 还有那个问答社区,v2 之前也是
craftx
2024-04-20 18:33:17 +08:00
@akira V2EX 现在是什么语言?
craftx
2024-04-20 18:36:50 +08:00
@livenux 有没有 c 底层的 python web 组件/框架?
luozic
2024-04-20 18:53:54 +08:00
@FlyingBackscratc 我的意思是,仅仅 python 搞高性能,短期内是扯淡呢。 用 python 就得多种语言一起用。python 做快速原型,业务代码,遇到性能问题可以快速切换语言再搓一遍
codegenerator
2024-04-20 19:28:44 +08:00
你这个问题有歧义
如果你的需求是 web 后端 api ,我可以肯定的说没有任何问题
因为 Instagram 和早中期字节使用完全没有问题,字节是这 2 年才换的 go 但是历史还是遗留不少 python
但是你说你的需求是音视频实时编解码之类的,那 python 肯定不合适
python 最大的问题不是性能,而是弱类型,其次是如果做业务的话生态显然不如 java
lithiumii
2024-04-20 19:37:34 +08:00
国外例子有 Instagram ,但不能说没有坑:被收购了之后为了性能 Facebook 就魔改出了 Cinder 。
RockShake
2024-04-20 19:56:32 +08:00
豆瓣之前是,已经转 GO 了,你去查下他们转 GO 的原因不就知道了么
louisxxx
2024-04-20 20:01:57 +08:00
你的业务大到 python 无法支撑的时候还会缺钱重构?就算没人,有钱你也可以直接加机器行了
cdlnls
2024-04-20 20:05:56 +08:00
每个人对大流量的定义和理解都是不一样的,有可能你以为的大流量,在别人看来就是洒洒水,或者反过来。。。没有参照物的话,这种回答没啥用。
suyuyu
2024-04-20 20:06:39 +08:00
你说的大流量是多大?
keakon
2024-04-20 21:17:03 +08:00
用 Python 做过单机几千 qps 的项目,也用 Go 做过多机高可用一天几个请求的项目。说实话绝大部分 web 服务的瓶颈不在语言。
ben1024
2024-04-20 21:30:44 +08:00
一般流量压力不再语言,在数据库;
另 Python 是动态强类型

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

https://ex.noerr.eu.org/t/1034197

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

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

© 2021 V2EX