我们公司是主要是开眼科诊所,但是需要把我们公司的日常业务搞成信息化、数字化管理。之前业务紧就选用 python 来开发后台应用,但是有时候 python 处理业务逻辑什么的特别慢,而且非常耗服务器 cpu 资源,现在就感觉 python 遇到瓶颈啦,假如说以后我们公司的诊所越开越多,业务也越来越庞大,要是从后端技术中选一门语言来支撑我们的哦业务发展,你们觉得是选择 go 还是 java 。我们公司有一些互联网的项目 公众号、小程序、挂号-做检查-收费-开药一系列操作的医疗系统。
1
chevalier 2020-12-07 20:58:44 +08:00 26
技术选型,语言特性因素放在后面,先考虑下现有团队转哪种语言成本低
另外,业务逻辑慢,99%的可能瓶颈不在语言上,Python 虽然比编译型语言慢 1 ~ 2 个数量级,但是处理普通的互联网 CURD 业务,不会有性能问题;我参与过多个大型的 Python 互联网业务系统了。 你的问题多半可能出现在数据库、机器等资源上,跑个火焰图看下耗时在哪,或许不用换语言,也能解决问题 |
2
chengxiao 2020-12-07 21:06:57 +08:00
减少自己团队的被替代性 GO+1
节约成本 JAVA+1 |
3
saulshao 2020-12-07 21:11:43 +08:00 4
按照楼主的描述,你选啥语言都没大区别的,相信我。
|
4
coderxy 2020-12-07 21:12:05 +08:00
同意一楼,应该跟语言无关,其它地方卡估计是
|
5
hantsy 2020-12-07 21:15:31 +08:00 14
PHP 8 不错。
|
6
hongch 2020-12-07 21:20:18 +08:00
基础数据的 crud,真的有那么耗性能吗,10 万条数据以内吧?
|
7
longmeier90 OP 我们业务处理速度慢,是因为查询大数据量(十几万)的时候,再用 python 来处理这些数据,我发现我们的服务器 cpu 就会占用 90%多,得需要等好几分钟,这还是 10 几家诊所的数据量。
|
8
hqs0417 2020-12-07 21:22:26 +08:00
@longmeier90 搞分布式啊,并行计算
|
9
wdwwtzy 2020-12-07 21:22:40 +08:00 2
C#/.net 不考虑下吗?
|
10
goxy 2020-12-07 21:28:09 +08:00
python 本身不是瓶颈,团队里的人才是瓶颈
题外话,这种东西最好就是 搭建 /用 Saas,多租户的平台,毕竟是一个眼科诊所,不是信息技术公司。应当可以抽离出一些通用的流程 /模块 |
11
zhuangzhuang1988 2020-12-07 21:29:08 +08:00
熟悉哪个用哪个。
|
12
KuroNekoFan 2020-12-07 21:30:29 +08:00
js
|
13
AppxLite 2020-12-07 21:32:10 +08:00
go js
|
14
TypeError 2020-12-07 21:34:14 +08:00 via Android
十几万 Python 也没啥问题吧,试试把 list/dict 操作换成 numpy/pandas
|
15
longmeier90 OP @goxy 是的我们公司也想弄成 sass 模式,可以加盟我们的诊所,用我们的医疗系统
|
16
mascteen 2020-12-07 21:37:20 +08:00 via Android
这个瓶颈显然不在语言啊,更在架构上吧
|
17
MaxFang 2020-12-07 21:37:49 +08:00
普通的内部信息化系统应该还没有到达语言瓶颈吧。就目前的问题,很有可能是程序上问题,可能有一些优化空间。先定位问题,如果已经没有大的优化空间了,就需要考虑换架构的事情,无非变分布式,拆分系统,分库分表等一些常见的方案,主要的方案定了之后,综合考虑语言方面的成本,性能和支持情况。
|
18
miniliuke 2020-12-07 21:43:42 +08:00
天下 Web 一石,我 Java 独占 9 斗......Web 系统的话,小团队最好用 Java,你想找个坑出来都难......
|
19
ksedz 2020-12-07 21:45:24 +08:00
反对一楼,语言造成的低水平的人员乱写本身是一个可以用语言解决的问题。
语言选择我倾向 go,主要是运维成本低、和 python 的相似度高。 |
20
heyjei 2020-12-07 21:45:58 +08:00
@longmeier90 都一样的,我一个项目也是把数据从数据库里取出来放到内存中用 PHP 分析计算,就 1 万不到的数据,要好几秒才能算完。但是把把这个计算推到 MySQL 那里计算,速度一下子就快起来了。
建议可以将计算推到数据库那里试试看。 |
21
Lemeng 2020-12-07 21:48:10 +08:00
如果没要求,选顺手的
|
22
janus77 2020-12-07 21:55:14 +08:00
选 go 可能对,但是选 java 肯定不会错。
|
23
no1xsyzy 2020-12-07 22:03:13 +08:00
先换个更快的运行时比如 PyPy Cython 试一下,当换运行时有明显提升但仍然不够时才考虑换语言;否则换语言本身是没用的,最多新语言带来的新思维方式有点用,如果是基础设施问题多半可以通过引第三方包解决。
|
24
longmeier90 OP @heyjei 很多时候我从数据库取完数还需要再匹配计算,没法完全放到 mysql 那里计算,再说如果数据量大 mysql 同样也会消耗大量资源,甚至会导致其他业务也会变慢。
|
25
kevinwan 2020-12-07 22:10:57 +08:00 via iPhone
选 go +1
|
26
jimrok 2020-12-07 22:18:56 +08:00
java + python 混合就行。看你计算为啥慢,是不是没有用缓存?
|
27
tumaowolf 2020-12-07 22:20:17 +08:00
java 不会出大错,但我喜欢 go
|
28
so1n 2020-12-07 22:20:22 +08:00 via Android
@longmeier90 你可以用 panda 试试……逻辑代码好写又快
|
29
Leigg 2020-12-07 22:20:23 +08:00 via iPhone
真要换,当然是 go,拥有 Java 的性能和强类型的同时,还比 Java 语法简洁 N 倍
|
30
Yc1992 2020-12-07 22:28:31 +08:00
@longmeier90 排查下哪个操作占用了最多的时间,肯定有很耗时的操作,优化一下即可
|
31
jmyz0455 2020-12-07 22:34:37 +08:00
关注一下。
|
32
heyjei 2020-12-07 22:43:50 +08:00
|
33
djoiwhud 2020-12-07 22:46:54 +08:00 via Android 2
两个语言都很熟。管了五年项目和团队,我建议选 go 。
别听其他人忽悠你选 java 的说法。 你们目前用的 python,说明团队成员都对 java 框架半吊子了解。leader 如果是 java 出身,不会选 python,java 开发者都比较固守城池。转 java 是完全不合适你团队现状的,熟悉 java 框架都要很长时间。开除现在的团队重新找 java 的时间成本也高。 如果你那不是一群只会 python 的水货应届生,转 go 应该没太大磨合难度。 |
34
2kCS5c0b0ITXE5k2 2020-12-07 22:49:18 +08:00
先确认你是不是语言瓶颈。。 大部分的项目都是数据库瓶颈
|
35
vision1900 2020-12-07 22:53:01 +08:00
python 是真的慢,被 node 吊打可还行
|
36
kalman03 2020-12-07 22:55:28 +08:00
这个应该是技术负责人决定的事情。
如果你是老板,信任你的技术负责人吧。 如果你不是,那么你可能也不是技术负责人,不然你最初为什么会选用 python,现在却要大家出谋划策?这好像不符合技术负责人的技术能力要求。 如果你不是老板,也不是技术负责人,那么这个事情就不需要操心了。 |
37
misaka19000 2020-12-07 22:57:22 +08:00
我们 Python 应用目前 qps 1000 左右,没遇到瓶颈,所以我认为不是语言的问题
|
38
Cbdy 2020-12-07 22:57:31 +08:00 via Android
java 技术栈很好,但是水货太多,没有靠谱 java 程序员的话建议选其他语言
|
39
zachlhb 2020-12-07 22:58:37 +08:00 via Android
不考虑项目,业务范围来选择语言的都是耍流氓
|
40
tikazyq 2020-12-07 23:04:03 +08:00 1
来鱼塘赏鱼
|
41
NoBugDie 2020-12-07 23:40:54 +08:00 via Android
大概率是程序或者数据库问题,换了语言一样无解。
|
42
manhere 2020-12-07 23:48:42 +08:00 via Android
买套现成的成熟 his 系统使用不好吗?
|
43
namelosw 2020-12-07 23:52:02 +08:00
你这个不是语言的问题, 用很快的语言可能也只能提升不到 10 倍.
感觉你挪动数据太多了, 要不优化成 SQL, 要不就上 Spark 之类的专业数据处理. |
44
catror 2020-12-07 23:55:35 +08:00 via Android
什么操作要把十几万条数据查出来?换语言估计没啥明显效果
|
45
gochat 2020-12-07 23:58:36 +08:00
毫无疑问! golang
|
46
dayeye2006199 2020-12-08 06:51:08 +08:00
为什么十几万条数据,要用 py 来做内存处理呢?可不可以挪进数据库处理呢?单纯写 CRUD,很难碰到 py 的性能天花板。
|
47
longmeier90 OP @kalman03 我们公司搞后端的就 3 个人,领导不是特别懂技术的那种,所以技术选型需要我们几个人商讨一下,是这种情况。
|
48
longmeier90 OP @catror 都是一些统计方面的工作,统计好几年的数据,目前 10 家诊所就有 10 万级的数据量,以后数据量会更多
|
49
zjsxwc 2020-12-08 08:09:44 +08:00 via Android
不是数据库慢的问题,只是单纯由于 python 一次性处理查询来的十几万内存数据慢的话,可以用 pypy,性能可以达到纯 c 的级别,唯一缺点是内存占用大一点。
|
50
2379920898 2020-12-08 08:46:11 +08:00
选 GO 吧、成本也不高 6 天就转了
|
51
ElmerZhang 2020-12-08 08:53:35 +08:00 via iPhone
才 10 几万数据就要跑几分钟,基本可以肯定和语言无关,你该换个程序员
|
53
micean 2020-12-08 08:58:58 +08:00
得先分清是哪种情况
1 、数据库查询慢,是不是没做优化 2 、python 处理慢,是不是内存不够 |
54
hbolive 2020-12-08 08:59:13 +08:00
架构的问题,python 虽然慢,但不至于 10 万这个数据都对付不了。。
一次性装进来,用什么语言都快不到哪去。。 |
55
jbgz 2020-12-08 08:59:41 +08:00 2
.net 5.0 考虑一下😒
|
56
aladdindingding 2020-12-08 09:03:42 +08:00
python 躺枪
|
57
wwg1994 2020-12-08 09:04:46 +08:00
十几万的统计工作而已,python 用 pandas 试试?
|
58
dawniii 2020-12-08 09:06:05 +08:00 via iPhone
这不是离线任务吗?找个从库,闲时去跑,就算跑的慢了影响大吗?
|
59
yalin 2020-12-08 09:09:32 +08:00
性能问题 与 语言无关
|
60
magiclz233 2020-12-08 09:10:37 +08:00 1
建议 c#
|
61
hezeming 2020-12-08 09:11:07 +08:00
@longmeier90 统计对实时性要求应该没那么高啊,基本的定时统计,缓存完全可以解决,就算是实时查的,十几万的数据量 mysql 级别应该也没什么压力
|
62
ming7435 2020-12-08 09:11:16 +08:00 via iPhone
10 几万就性能不行,不用换语言,换人吧
|
63
qwerthhusn 2020-12-08 09:15:33 +08:00 1
一个诊所就能把 CPU 干翻????你这是啥诊所,梅奥诊所吧
|
64
lydzz 2020-12-08 09:16:09 +08:00
主要讨论谁是世界上最棒的语言
|
66
lesterchen 2020-12-08 09:22:13 +08:00
所以用 python 的遇到点问题,就推锅到 python 身上。
|
67
hahaba 2020-12-08 09:22:53 +08:00
你的业务量比豆瓣更大的话,当我没说。
如果没有,则不是 python 的瓶颈,是人的瓶颈。 可以招我过去优化优化,哈哈 |
68
blless 2020-12-08 09:26:36 +08:00 via Android
选 go,直接用开发 python 的思维写就好。如果有一个好的 java 技术经理选 java
|
69
liujavamail 2020-12-08 09:31:52 +08:00
你们是不是数据库的设计问题, 就是没有用一些冗余的字段,去存储一下你们统计需要查询的数据,导致每次都要先查数据出来,然后用 python 做计算,如果数据全部用 python 来计算,那肯定是会慢的,即使你们换语言了, 随着数据量的增大,还是会遇到同样的问题
|
70
lyz1990 2020-12-08 09:32:23 +08:00
看这个描述,感觉不是语言问题
|
71
chouchoui 2020-12-08 09:33:09 +08:00
Java
某公司技术栈在国内突出一个吹 |
72
krixaar 2020-12-08 09:33:10 +08:00
十几万这个数量级用 Excel 都能搞定,Python 算半天是不是得优先考虑下是不是哪里写得有问题?
|
73
Vibra 2020-12-08 09:33:58 +08:00
你确定你们一个诊所 python 性能不够? Instagram 用的也是 python 哦
|
74
RangerWolf 2020-12-08 09:41:17 +08:00
如果是涉及到数据统计处理,我们是读取出来之后用 pandas 来扛~ 速度毫无压力
|
75
tabris17 2020-12-08 09:42:49 +08:00
你需要的是一个数据仓库
|
76
x2009again 2020-12-08 09:43:14 +08:00
建议 java 或者.net ,我以前就参与了.net 做的医疗系统,预约挂号、会诊、化验、出化验诊断、库存、费用结算等模块都有。
|
77
zone10 2020-12-08 09:46:42 +08:00
盲猜是用 Python 循环导致慢了,十几万用 Python 的 Pandas 还是港港单单的,记住要用矢量计算别用循环
|
78
sam014 2020-12-08 09:46:51 +08:00
用 Java 的话,会不会出现团队人数*2 的情况 ??
|
79
wccc 2020-12-08 09:47:16 +08:00
可以先考虑业务优化的....
|
80
matrix67 2020-12-08 09:47:22 +08:00
统计直接 elk 就行了,买机器哈哈
|
81
Yano 2020-12-08 09:50:02 +08:00
说实话,Java 和 go 都可以,如果性能的话几乎都差不多。我看你的描述还有 公众号、小程序、挂号-做检查-收费-开药一系列操作,那其实 Java 更好一点,因为毕竟生态更多,毕竟发展这么多年了,Spring boot 一把梭😁
|
82
seven123 2020-12-08 09:50:02 +08:00
感觉慢应不是 python 的问题吧,几十万就这样了?
|
83
zunceng 2020-12-08 09:50:25 +08:00
看你们团队组成吧 四年前我们选了 go 不说项目写的多好 至少 hold 住了业务
四年后你问我当然是选 Golang,因为我根本不会 java |
84
tcfenix 2020-12-08 09:53:20 +08:00
@chevalier
每个人都有自己的屁股, 比如如果楼主是技术主管或者公司老板,那么看问题应该优先看哪个成本低, 出活快,底下人的技术成长老板又不在乎 但是我们看到楼主好像就是一个打工的, 那么选择技术栈就有两条线了, 一条是明线, 说服老板这个技术好,市场上好招人,性能好,轮子多 一条是暗线,就是楼主跟几个小伙伴都有这个共识主推这个语言,后续跳槽的时候市场上工作好找 python 在现在市场上面比较多的岗位是爬虫, 总得职位量跟楼主举得这两个例子完全没有可比性, 而且如果楼主或者其他人未来想去大厂的话,这两个语言几乎包括了所有大厂的服务端岗位, 而招聘 python 的大厂岗位非常有限 |
85
resist 2020-12-08 09:55:04 +08:00
考虑那么多做什么,选 Java 错不了,Java 便宜兄弟
|
86
x940727 2020-12-08 09:55:22 +08:00
十几万的数据而已,放哪算都产生不了啥压力吧?给服务器换个好点的固态。
|
87
wxw752 2020-12-08 09:55:34 +08:00
同医疗行业,我们后端用的 java
|
88
longmeier90 OP @zone10 谢谢大佬指点
|
89
longmeier90 OP @tcfenix 分析的好,我就是一个搬砖的。
|
90
JokeEnd 2020-12-08 09:59:35 +08:00
10+w 数据怎么可能是语言的瓶颈,优化下代码看看
|
91
neptuno 2020-12-08 10:02:32 +08:00
才十几万数据,,,,估计是之前程序员代码写的有问题吧,你们没找到真正问题在哪的话,,换 go 和 java 一样慢的
|
92
SmiteChow 2020-12-08 10:06:11 +08:00 1
Python 慢为什么不优化?我还没见过 Python 慢到不能用的场景。
|
93
securityCoding 2020-12-08 10:07:30 +08:00
跟语言没啥关系啊 , 是不是 10+w 数据实时 loading 到内存再计算? 那样谁来都慢啊,更多是实现方案的问题,这点数据量还谈不上架构
|
94
tailf 2020-12-08 10:09:20 +08:00 2
#1 的回复是非常优秀的代表。
#3 的回复是最傻逼的那种。 希望我们都学习一楼,唾弃三楼。 |
95
wysnylc 2020-12-08 10:13:38 +08:00
你看,py 和 go 都迫不及待的宣传自己
所以你选什么自己知道吧 |
96
fx 2020-12-08 10:16:09 +08:00
Elixir
|
97
nano91 2020-12-08 10:18:43 +08:00
十几万就慢了 那八成就是编码和数据库的问题了 先定点再优化吧 换啥都没用
|
98
SjwNo1 2020-12-08 10:18:46 +08:00
我也还没见过 Python 慢到不能用的场景~
|
99
mamahaha 2020-12-08 10:19:14 +08:00
porn 站随时得有上百万的吞吐吧?如果卡顿肯定早凉凉了,人家是用 PHP 做的,PHP 可是在鄙视链最底层的存在了,可见选啥语言对服务能力影响不大。
|
100
salmon5 2020-12-08 10:19:50 +08:00
“go 性能好,用 go”
|