我们公司是主要是开眼科诊所,但是需要把我们公司的日常业务搞成信息化、数字化管理。之前业务紧就选用 python 来开发后台应用,但是有时候 python 处理业务逻辑什么的特别慢,而且非常耗服务器 cpu 资源,现在就感觉 python 遇到瓶颈啦,假如说以后我们公司的诊所越开越多,业务也越来越庞大,要是从后端技术中选一门语言来支撑我们的哦业务发展,你们觉得是选择 go 还是 java 。我们公司有一些互联网的项目 公众号、小程序、挂号-做检查-收费-开药一系列操作的医疗系统。
101
salmon5 2020-12-08 10:21:00 +08:00 2
go,加上 k8s,再加上 istio ;写到简历上,美美的
|
102
ShuA1 2020-12-08 10:26:15 +08:00
眼科诊所,利润在那里,直接继续 python 堆服务器吧
|
103
invinci 2020-12-08 10:29:14 +08:00 3
虽然知道楼主不会选,但还是在这里推荐一波以高性能著称的.net core
|
104
bbao 2020-12-08 10:29:28 +08:00 1
眼科业务逻辑不会过于复杂,python 处理业务逻辑慢,要先找到慢的原因,原因都找不到,你用任何语言,都可能慢!
|
105
litchinn 2020-12-08 10:36:22 +08:00
Java 的工资应该比 go 低点吧 >_>
|
106
wmwmajie 2020-12-08 10:37:08 +08:00
php 不香吗?
|
107
ResidualSoils 2020-12-08 10:38:27 +08:00 1
.net core +1
|
108
bzsh 2020-12-08 10:38:38 +08:00
@longmeier90 这数据量很小啊
|
110
darknoll 2020-12-08 10:47:12 +08:00
当然是 go,我司就从 c++转成 go
|
111
ZSeptember 2020-12-08 11:04:50 +08:00
这种企业业务系统,当然是 Java 啦。
|
112
cmdOptionKana 2020-12-08 11:14:43 +08:00
换语言工作量很大啊,楼主是不是故意想带薪学习?
如果是带薪学习,换 go, java, .net 都很好,没有太大区别。 如果站在公司利益的角度,优化 Python 代码才是正道。 |
115
you2790 2020-12-08 11:24:15 +08:00
哈哈哈哈,用 go 美滋滋的, 那样的话自己的不可替代性更强~~~你懂的
|
116
l00t 2020-12-08 11:24:47 +08:00
十几万都要几分钟…… 不知道说啥好……
|
117
felixin 2020-12-08 11:25:44 +08:00 via Android
https://v2ex.com/t/733233 有大佬能帮慢看下吗?类似的问题
|
118
BoarBoar 2020-12-08 11:31:16 +08:00
这两个都写过几年,你这情况还是 go 吧,对于没接触过 java 的人来说,光是搞懂那一堆概念性名词的时间,就足够撸一个简单 web 系统了。
另外同意一楼,你这肯定没到语言性能瓶颈。但是忽悠不懂行的领导。刷刷 kpi 又学技术,似乎也没什么不好😂 |
119
hubahuba 2020-12-08 11:44:07 +08:00
|
120
hantsy 2020-12-08 12:04:45 +08:00
go,java,c# 现在都是在比挤牙膏的速度谁慢,只有 PHP 8 一次到位了。
|
121
YouKnowIt 2020-12-08 12:08:08 +08:00
一个眼科医院,能有多大的数据量,难不成一秒钟能有 1w 人就诊,1w 人交钱吗,这绝对不是 python 的问题
|
122
volvo007 2020-12-08 12:12:08 +08:00 1
这个数据量 py 绝对够了……诊所的访问不可能比 3 年前的 油管、3 年前的知乎、现在的豆瓣和 ins 访问量更大吧……
|
123
kevinwan 2020-12-08 12:18:46 +08:00 via iPhone
我们开源了支持千万级日活的 go 微服务框架,可以试试,https://github.com/tal-tech/go-zero
|
124
tairan2006 2020-12-08 12:27:01 +08:00
我觉得楼主的问题和语言没啥关系
|
125
caotian 2020-12-08 12:28:58 +08:00
基本上常用的语言都会有人推荐的, 但是业务系统长远来看最好选 java 平台 springboot 等框架, 喜欢语法糖可以用 kotlin 来写
|
126
la2la 2020-12-08 12:32:02 +08:00
小人之心一下,不是到语言的瓶颈了,而是到开发人员水平的瓶颈了吧。手动狗头.jpg
|
127
matatabi 2020-12-08 12:37:46 +08:00
首选 go,go 的速度最快,冲鸭
|
128
wellsc 2020-12-08 12:37:56 +08:00 via iPhone
后台管理系统和语言没关系
|
129
letking 2020-12-08 12:57:08 +08:00
qps 峰值能到多少?现在的服务器啥配置?
|
130
jeristiano 2020-12-08 13:03:26 +08:00
回复中有很多人只站在程序员角度看待问题,技术选型必要考虑三个因素: (人力 /设施)成本 + 性能+ 维护,使用 java 和 go 都必须根据贵公司的资源来做决定,技术并不是最重要的因素。
|
131
summersnow521 2020-12-08 13:17:03 +08:00
go
|
132
hantsy 2020-12-08 13:21:09 +08:00
其实,很多小公司被忽悠上了什么狗屁“中小企业互联网转型”。大部分小公司,你只需要用好 Office,特别 Excel
就足够了,什么统计查询用 Excel 函数就行了。 我一个同学,做销售代理,一种仪器,实验和科研机构才用,非常小众的东西,一年下来也不会超过 100 单。前段时间问我要不要做个电商小程序,电子订单系统,感觉现在所有公司都是开始做了。我说你的东西和超市的白菜一样吗? 你产品就那么几种,而且这种谁会看到你的图片就决定用的,你每个产品推销出去,都是要去客户现场几天到几周的演示。 到现在还不是 Excel 用得好好的。 |
134
longmeier90 OP @letking 服务器 四核 16G qps 目前不高。
|
135
liuyibao 2020-12-08 13:46:29 +08:00
代码写的垃圾用什么语言都不行。系统慢,cpu 不够用?你们是不是关联查询太多?是不是 for 循环里查数据库?
|
136
aino 2020-12-08 13:57:56 +08:00 2
ctrl+f 关键词查找
第一页 java 35 go 24 第二页 java 11 go 17 仅供参考 |
137
efaun 2020-12-08 14:01:50 +08:00 5
相信我,v2ex 上 90%的程序员都不会遇到语言性能瓶颈
|
138
huayumo 2020-12-08 14:11:57 +08:00
没什么复杂的内容的话,go 不错
|
139
teddy2725 2020-12-08 14:20:33 +08:00
1. 你们遇到的瓶颈问题绝对不是 python 的问题。
2. 复杂业务系统肯定选 java 不选 golang 。 3. 加两台服务器比重写划算 |
140
Remode 2020-12-08 14:21:20 +08:00
眼科医院的数据量我觉得到不了语言瓶颈吧(可能是我无知了)
|
141
xiongshengyao 2020-12-08 14:29:22 +08:00
熟悉啥用啥
|
142
longmeier90 OP @liuyibao 十几万条数据从数据库里面查出来,还需要再去加工,加工完再导出 excel 。十几万条数据 for 循环加工太耗时间,导出 excel 也耗时间
|
143
hubahuba 2020-12-08 15:09:48 +08:00
@longmeier90 哥们 你把你那几条 sql 发出来 给大家看看就知道了·····
|
144
hubahuba 2020-12-08 15:10:24 +08:00
@longmeier90 表结构也发下···
|
145
hubahuba 2020-12-08 15:10:38 +08:00
@longmeier90 不过我怕他们骂你···你要顶住压力····
|
146
nonduality 2020-12-08 15:12:35 +08:00
如果你想制造 KPI (这没什么不对),随便找个你喜欢的语言开始搞,不用在这里问大家。
如果你只想解决问题,优化下 Python 代码更简单。实际上不少问题都是代码写得太 shit 造成的,我都在猜你有没用上缓存、数据查询 prefetch 之类的技巧。 |
147
hubahuba 2020-12-08 15:14:26 +08:00
@longmeier90
我觉得 虚心请教是好事,其实很多人都说出来你的诟病了··· 可你一个劲儿的用一些你觉得很高大上的词汇比如"十几万条数"、"耗时间"、"占内存" 来解释 倒反而让我觉得你心理发虚,其实你也不知道为啥才慢的, 可又不想被看不起··· 大可不必这样, 或许你可以换个姿势,发出 sql 表结构等重要信息,让大家帮你优化,比你一个劲儿的用一些自己都可能听不懂的话来吓唬自己要好得多 |
148
echowuhao 2020-12-08 15:17:01 +08:00 via Android
十几万条数据 都要换语言 就怕换了语言都跑不起来了。
|
149
AngryPanda 2020-12-08 15:17:30 +08:00
go +1
|
150
lithbitren 2020-12-08 15:29:25 +08:00
十几万的 for 循环算啥,Python 秒内 for 循环最差的机子也是有小几千万的。除非 join 了太多层,怀疑又是 two_sum 问题。导出 excel 不可能每秒都导十几万行的 excel 吧,小规模 excel 印象中大约是一秒可以导几万行,理论上对于日常表格完全应该是够用的,诊所的并发应该达不到这个程度吧。
|
151
qa2080639 2020-12-08 15:34:09 +08:00
@longmeier90 应该是导出 Excel 耗时 我用 PHP 导出几万条数据也很久(一分多钟) 查询就几秒
可以分区间统计下耗时 换一个更高效的导出 Excel 方式 |
152
stardustree 2020-12-08 15:38:45 +08:00
以我多年搞 APM 的经验,程序慢大多数都是如下几个原因:
|
153
stardustree 2020-12-08 15:39:09 +08:00
网络慢、sql 写的太烂、数据库有问题
|
154
annielong 2020-12-08 15:48:06 +08:00
java 或者 php
|
155
Dogtler 2020-12-08 15:50:41 +08:00
gogogo
|
156
des 2020-12-08 15:56:05 +08:00
@stardustree 那耗性能呢?
|
157
liion 2020-12-08 15:58:34 +08:00
python 不就是大数据处理的么
|
158
chi1st 2020-12-08 16:08:04 +08:00 via Android
这个锅不能让 Python 来背,非要换语言那就换 go,不过换了我估计也没啥用,因为瓶颈根本不在语言上,十几万的数据真的不多。。。
|
159
dayeye2006199 2020-12-08 16:16:42 +08:00
听着像是用原版 py 来搞十几万数据的 统计计算,group by 等操作。
建议直接上 pandas,专门是干这个的。十几万的 group by 也就是一秒钟的事情 |
160
tfdetang 2020-12-08 16:22:56 +08:00
@longmeier90 果然是对十几万条数据 for 循环加工,不慢有鬼了。上面已经有大佬给出药方了,多用矢量运算。如果用了 pandas,记得要优化数据类型,如果数据类型没优化好不但慢还占内存。 比起语言,可以找个有 python 数据处理经验的(比如我)优化下,快个 10 倍(除去 IO 耗时)还是不夸张的
|
161
Lumuy 2020-12-08 16:49:05 +08:00
python 应用这么广,怎么可能处理不了你这种情况。还是仔细分析一下问题原因。
|
162
vanityfairn 2020-12-08 17:01:09 +08:00
同意一楼,才十几万,远远没到语言的瓶颈。。。楼主说 python 耗资源,java,等等语言一样耗啊,预热,内存,啥的不都是么。。
|
163
longmeier90 OP @hubahuba 大佬说的太对了,但是我们这样的代码太多啦
|
164
huruwo 2020-12-08 17:29:19 +08:00
go 的缺点非常明显 不好招人
|
165
thtznet 2020-12-08 17:31:55 +08:00
Java ? 49 国军
|
166
Reiser 2020-12-08 17:32:02 +08:00
你这数据量恐怕还轮不到换语言,优先考虑加机器和优化代码吧
|
167
pavelpiero 2020-12-08 17:32:20 +08:00
必须 php 人在上海刚被洗脑 我们公司不吹牛逼 平峰日均业务量四千万 高峰日业务量近 2 亿 领导说用 php 就够了 这么多 java 都是吃白饭的 服务器成本至少省 50% 人员成本省 80%以上还能给他们 php 加工资
|
168
comsweetcs 2020-12-08 17:45:13 +08:00
眼科诊所。。。QPS 能有多少
|
169
longmeier90 OP @xunbug 大佬过来当俺们的架构师吧
|
170
longmeier90 OP @liujavamail 是的,每次十几万数据用 for 循环再去加工,太慢,我想想怎么加冗余字段
|
171
dulife 2020-12-08 18:02:58 +08:00
@longmeier90 #170 可以试试视图
|
172
longmeier90 OP @comsweetcs 目前不到 100
|
173
longmeier90 OP @hubahuba 大佬你的微信多少?加个微信
|
174
beneo 2020-12-08 18:38:37 +08:00
肯定 java,工资低,成本低
|
175
longmeier90 OP @tfdetang 大佬你的微信多少?加个微信请教请教嘛
|
176
longmeier90 OP @TypeError 大佬你的微信多少?加个微信请教请教嘛
|
177
mengzhuo 2020-12-08 18:50:10 +08:00
python 先改成 uwsgi + gevent,解决小公司 90%问题
|
178
livesitter 2020-12-08 18:59:42 +08:00
java 坑会少一点
|
179
beidounanxizi 2020-12-08 19:58:19 +08:00
建议带薪学习 换 Go
|
180
ytmsdy 2020-12-08 20:04:28 +08:00
我觉得可以先考虑优化一波,把一些耗时长的任务丢到队列里面去处理。实在不行前面搞个 nginx,然后后面做负载均衡。换语言以及重新开发的成本太高了!
|
181
alpha4zeta 2020-12-08 20:15:24 +08:00
用 Rust 吧, 一步到位~
|
182
geekjc 2020-12-09 00:37:59 +08:00
弱弱的问一句,为什么没用人说用 nodejs
|
183
dayeye2006199 2020-12-09 02:23:05 +08:00
@geekjc LZ 的任务听下来是属于计算密集型的范畴。多实例,上负载均衡,上 nodejs 这类解决 IO 密集型任务的方法并不能很好解决这个问题。
应该考虑 计算方法优化(转成 SQL ),矢量化,计算离线化等操作。 |
184
muskill 2020-12-09 08:34:32 +08:00 via iPhone
@longmeier90 分页处理,例如每次 2000 条,多循环几次绝对不会卡 cpu
|
185
qq1340691923 2020-12-09 09:21:48 +08:00
你需要 rust
|
186
Vedar 2020-12-09 10:51:18 +08:00
@longmeier90 我看你的需求慢主要是离线批处理的比较多 建议数据库换成 pg 能节省好多转换加工的时间 另外把一些定时的处理用存储过程去搞
|
187
coloz 2020-12-09 13:28:54 +08:00
二选一的话,肯定 go,毕竟 2020 年了
|
188
DoctorCat 2020-12-09 14:21:21 +08:00
go 吧,相比 py 和 java,菜鸡都能写出高性能代码。
|
189
DoctorCat 2020-12-09 14:22:56 +08:00
不过,语言出现瓶颈这个说法,我觉得让 instagram 工程团队听到,他们会惊呼 amazing 吧,你们业务规模比 ins 还要大???
|
190
young1lin 2020-12-10 11:11:04 +08:00
Java 生态好,容易招人,并且稳定,遇到问题国内就有很多解决的办法。
|
191
qinsi 168 天前
Java 虽然生态好,容易招人。
但 Go 比 Java 简洁,找便宜应届或者用已有团队现学,都可以搞定。语言拖着你规范,垃圾水平也出活。 |