V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
longmeier90
V2EX  ›  程序员

公司后端技术选型-是选择 go 还是 Java ?

  •  
  •   longmeier90 · 2020-12-07 20:53:21 +08:00 · 18761 次点击
    这是一个创建于 1429 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们公司是主要是开眼科诊所,但是需要把我们公司的日常业务搞成信息化、数字化管理。之前业务紧就选用 python 来开发后台应用,但是有时候 python 处理业务逻辑什么的特别慢,而且非常耗服务器 cpu 资源,现在就感觉 python 遇到瓶颈啦,假如说以后我们公司的诊所越开越多,业务也越来越庞大,要是从后端技术中选一门语言来支撑我们的哦业务发展,你们觉得是选择 go 还是 java 。我们公司有一些互联网的项目 公众号、小程序、挂号-做检查-收费-开药一系列操作的医疗系统。

    第 1 条附言  ·  2020-12-08 17:28:21 +08:00
    我的微信 longmeier99,希望各位大佬们多多指导交流
    191 条回复    2024-07-05 17:22:26 +08:00
    1  2  
    salmon5
        101
    salmon5  
       2020-12-08 10:21:00 +08:00   ❤️ 2
    go,加上 k8s,再加上 istio ;写到简历上,美美的
    ShuA1
        102
    ShuA1  
       2020-12-08 10:26:15 +08:00
    眼科诊所,利润在那里,直接继续 python 堆服务器吧
    invinci
        103
    invinci  
       2020-12-08 10:29:14 +08:00   ❤️ 3
    bbao
        104
    bbao  
       2020-12-08 10:29:28 +08:00   ❤️ 1
    眼科业务逻辑不会过于复杂,python 处理业务逻辑慢,要先找到慢的原因,原因都找不到,你用任何语言,都可能慢!
    litchinn
        105
    litchinn  
       2020-12-08 10:36:22 +08:00
    Java 的工资应该比 go 低点吧 >_>
    wmwmajie
        106
    wmwmajie  
       2020-12-08 10:37:08 +08:00
    php 不香吗?
    ResidualSoils
        107
    ResidualSoils  
       2020-12-08 10:38:27 +08:00   ❤️ 1
    .net core +1
    bzsh
        108
    bzsh  
       2020-12-08 10:38:38 +08:00
    @longmeier90 这数据量很小啊
    an93
        109
    an93  
       2020-12-08 10:38:49 +08:00
    @chengxiao go 为啥被替代性低
    darknoll
        110
    darknoll  
       2020-12-08 10:47:12 +08:00
    当然是 go,我司就从 c++转成 go
    ZSeptember
        111
    ZSeptember  
       2020-12-08 11:04:50 +08:00
    这种企业业务系统,当然是 Java 啦。
    cmdOptionKana
        112
    cmdOptionKana  
       2020-12-08 11:14:43 +08:00
    换语言工作量很大啊,楼主是不是故意想带薪学习?

    如果是带薪学习,换 go, java, .net 都很好,没有太大区别。

    如果站在公司利益的角度,优化 Python 代码才是正道。
    tanranran
        113
    tanranran  
       2020-12-08 11:20:44 +08:00
    java 或者.net core 其它生态都呵呵了,比如 ython 能支撑淘宝级别?
    tanranran
        114
    tanranran  
       2020-12-08 11:21:46 +08:00
    @tanranran #113 收回我的话,我太无知了
    you2790
        115
    you2790  
       2020-12-08 11:24:15 +08:00
    哈哈哈哈,用 go 美滋滋的, 那样的话自己的不可替代性更强~~~你懂的
    l00t
        116
    l00t  
       2020-12-08 11:24:47 +08:00
    十几万都要几分钟…… 不知道说啥好……
    felixin
        117
    felixin  
       2020-12-08 11:25:44 +08:00 via Android
    https://v2ex.com/t/733233 有大佬能帮慢看下吗?类似的问题
    BoarBoar
        118
    BoarBoar  
       2020-12-08 11:31:16 +08:00
    这两个都写过几年,你这情况还是 go 吧,对于没接触过 java 的人来说,光是搞懂那一堆概念性名词的时间,就足够撸一个简单 web 系统了。
    另外同意一楼,你这肯定没到语言性能瓶颈。但是忽悠不懂行的领导。刷刷 kpi 又学技术,似乎也没什么不好😂
    hubahuba
        119
    hubahuba  
       2020-12-08 11:44:07 +08:00
    @longmeier90 十几万数据···吓死人了·····/狗头

    python 无故躺枪哈哈哈哈哈哈哈哈哈哈

    想用语言解决这种问题的话,那我觉得出这个主意的人还挺 low 的哈哈哈哈哈
    hantsy
        120
    hantsy  
       2020-12-08 12:04:45 +08:00
    go,java,c# 现在都是在比挤牙膏的速度谁慢,只有 PHP 8 一次到位了。
    YouKnowIt
        121
    YouKnowIt  
       2020-12-08 12:08:08 +08:00
    一个眼科医院,能有多大的数据量,难不成一秒钟能有 1w 人就诊,1w 人交钱吗,这绝对不是 python 的问题
    volvo007
        122
    volvo007  
       2020-12-08 12:12:08 +08:00   ❤️ 1
    这个数据量 py 绝对够了……诊所的访问不可能比 3 年前的 油管、3 年前的知乎、现在的豆瓣和 ins 访问量更大吧……
    kevinwan
        123
    kevinwan  
       2020-12-08 12:18:46 +08:00 via iPhone
    我们开源了支持千万级日活的 go 微服务框架,可以试试,https://github.com/tal-tech/go-zero
    tairan2006
        124
    tairan2006  
       2020-12-08 12:27:01 +08:00
    我觉得楼主的问题和语言没啥关系
    caotian
        125
    caotian  
       2020-12-08 12:28:58 +08:00
    基本上常用的语言都会有人推荐的, 但是业务系统长远来看最好选 java 平台 springboot 等框架, 喜欢语法糖可以用 kotlin 来写
    la2la
        126
    la2la  
       2020-12-08 12:32:02 +08:00
    小人之心一下,不是到语言的瓶颈了,而是到开发人员水平的瓶颈了吧。手动狗头.jpg
    matatabi
        127
    matatabi  
       2020-12-08 12:37:46 +08:00
    首选 go,go 的速度最快,冲鸭
    wellsc
        128
    wellsc  
       2020-12-08 12:37:56 +08:00 via iPhone
    后台管理系统和语言没关系
    letking
        129
    letking  
       2020-12-08 12:57:08 +08:00
    qps 峰值能到多少?现在的服务器啥配置?
    jeristiano
        130
    jeristiano  
       2020-12-08 13:03:26 +08:00
    回复中有很多人只站在程序员角度看待问题,技术选型必要考虑三个因素: (人力 /设施)成本 + 性能+ 维护,使用 java 和 go 都必须根据贵公司的资源来做决定,技术并不是最重要的因素。
    summersnow521
        131
    summersnow521  
       2020-12-08 13:17:03 +08:00
    go
    hantsy
        132
    hantsy  
       2020-12-08 13:21:09 +08:00
    其实,很多小公司被忽悠上了什么狗屁“中小企业互联网转型”。大部分小公司,你只需要用好 Office,特别 Excel
    就足够了,什么统计查询用 Excel 函数就行了。

    我一个同学,做销售代理,一种仪器,实验和科研机构才用,非常小众的东西,一年下来也不会超过 100 单。前段时间问我要不要做个电商小程序,电子订单系统,感觉现在所有公司都是开始做了。我说你的东西和超市的白菜一样吗? 你产品就那么几种,而且这种谁会看到你的图片就决定用的,你每个产品推销出去,都是要去客户现场几天到几周的演示。

    到现在还不是 Excel 用得好好的。
    shawshi
        133
    shawshi  
       2020-12-08 13:28:57 +08:00
    @SmiteChow 挺赞同的。
    longmeier90
        134
    longmeier90  
    OP
       2020-12-08 13:39:57 +08:00
    @letking 服务器 四核 16G qps 目前不高。
    liuyibao
        135
    liuyibao  
       2020-12-08 13:46:29 +08:00
    代码写的垃圾用什么语言都不行。系统慢,cpu 不够用?你们是不是关联查询太多?是不是 for 循环里查数据库?
    aino
        136
    aino  
       2020-12-08 13:57:56 +08:00   ❤️ 2
    ctrl+f 关键词查找
    第一页
    java 35
    go 24
    第二页
    java 11
    go 17

    仅供参考
    efaun
        137
    efaun  
       2020-12-08 14:01:50 +08:00   ❤️ 5
    相信我,v2ex 上 90%的程序员都不会遇到语言性能瓶颈
    huayumo
        138
    huayumo  
       2020-12-08 14:11:57 +08:00
    没什么复杂的内容的话,go 不错
    teddy2725
        139
    teddy2725  
       2020-12-08 14:20:33 +08:00
    1. 你们遇到的瓶颈问题绝对不是 python 的问题。
    2. 复杂业务系统肯定选 java 不选 golang 。
    3. 加两台服务器比重写划算
    Remode
        140
    Remode  
       2020-12-08 14:21:20 +08:00
    眼科医院的数据量我觉得到不了语言瓶颈吧(可能是我无知了)
    xiongshengyao
        141
    xiongshengyao  
       2020-12-08 14:29:22 +08:00
    熟悉啥用啥
    longmeier90
        142
    longmeier90  
    OP
       2020-12-08 15:02:27 +08:00
    @liuyibao 十几万条数据从数据库里面查出来,还需要再去加工,加工完再导出 excel 。十几万条数据 for 循环加工太耗时间,导出 excel 也耗时间
    hubahuba
        143
    hubahuba  
       2020-12-08 15:09:48 +08:00
    @longmeier90 哥们 你把你那几条 sql 发出来 给大家看看就知道了·····
    hubahuba
        144
    hubahuba  
       2020-12-08 15:10:24 +08:00
    @longmeier90 表结构也发下···
    hubahuba
        145
    hubahuba  
       2020-12-08 15:10:38 +08:00
    @longmeier90 不过我怕他们骂你···你要顶住压力····
    nonduality
        146
    nonduality  
       2020-12-08 15:12:35 +08:00
    如果你想制造 KPI (这没什么不对),随便找个你喜欢的语言开始搞,不用在这里问大家。

    如果你只想解决问题,优化下 Python 代码更简单。实际上不少问题都是代码写得太 shit 造成的,我都在猜你有没用上缓存、数据查询 prefetch 之类的技巧。
    hubahuba
        147
    hubahuba  
       2020-12-08 15:14:26 +08:00
    @longmeier90

    我觉得

    虚心请教是好事,其实很多人都说出来你的诟病了···

    可你一个劲儿的用一些你觉得很高大上的词汇比如"十几万条数"、"耗时间"、"占内存" 来解释

    倒反而让我觉得你心理发虚,其实你也不知道为啥才慢的,

    可又不想被看不起···

    大可不必这样,

    或许你可以换个姿势,发出 sql 表结构等重要信息,让大家帮你优化,比你一个劲儿的用一些自己都可能听不懂的话来吓唬自己要好得多
    echowuhao
        148
    echowuhao  
       2020-12-08 15:17:01 +08:00 via Android
    十几万条数据 都要换语言 就怕换了语言都跑不起来了。
    AngryPanda
        149
    AngryPanda  
       2020-12-08 15:17:30 +08:00
    go +1
    lithbitren
        150
    lithbitren  
       2020-12-08 15:29:25 +08:00
    十几万的 for 循环算啥,Python 秒内 for 循环最差的机子也是有小几千万的。除非 join 了太多层,怀疑又是 two_sum 问题。导出 excel 不可能每秒都导十几万行的 excel 吧,小规模 excel 印象中大约是一秒可以导几万行,理论上对于日常表格完全应该是够用的,诊所的并发应该达不到这个程度吧。
    qa2080639
        151
    qa2080639  
       2020-12-08 15:34:09 +08:00
    @longmeier90 应该是导出 Excel 耗时 我用 PHP 导出几万条数据也很久(一分多钟) 查询就几秒
    可以分区间统计下耗时 换一个更高效的导出 Excel 方式
    stardustree
        152
    stardustree  
       2020-12-08 15:38:45 +08:00
    以我多年搞 APM 的经验,程序慢大多数都是如下几个原因:
    stardustree
        153
    stardustree  
       2020-12-08 15:39:09 +08:00
    网络慢、sql 写的太烂、数据库有问题
    annielong
        154
    annielong  
       2020-12-08 15:48:06 +08:00
    java 或者 php
    Dogtler
        155
    Dogtler  
       2020-12-08 15:50:41 +08:00
    gogogo
    des
        156
    des  
       2020-12-08 15:56:05 +08:00
    @stardustree 那耗性能呢?
    liion
        157
    liion  
       2020-12-08 15:58:34 +08:00
    python 不就是大数据处理的么
    chi1st
        158
    chi1st  
       2020-12-08 16:08:04 +08:00 via Android
    这个锅不能让 Python 来背,非要换语言那就换 go,不过换了我估计也没啥用,因为瓶颈根本不在语言上,十几万的数据真的不多。。。
    dayeye2006199
        159
    dayeye2006199  
       2020-12-08 16:16:42 +08:00
    听着像是用原版 py 来搞十几万数据的 统计计算,group by 等操作。

    建议直接上 pandas,专门是干这个的。十几万的 group by 也就是一秒钟的事情
    tfdetang
        160
    tfdetang  
       2020-12-08 16:22:56 +08:00
    @longmeier90 果然是对十几万条数据 for 循环加工,不慢有鬼了。上面已经有大佬给出药方了,多用矢量运算。如果用了 pandas,记得要优化数据类型,如果数据类型没优化好不但慢还占内存。 比起语言,可以找个有 python 数据处理经验的(比如我)优化下,快个 10 倍(除去 IO 耗时)还是不夸张的
    Lumuy
        161
    Lumuy  
       2020-12-08 16:49:05 +08:00
    python 应用这么广,怎么可能处理不了你这种情况。还是仔细分析一下问题原因。
    vanityfairn
        162
    vanityfairn  
       2020-12-08 17:01:09 +08:00
    同意一楼,才十几万,远远没到语言的瓶颈。。。楼主说 python 耗资源,java,等等语言一样耗啊,预热,内存,啥的不都是么。。
    longmeier90
        163
    longmeier90  
    OP
       2020-12-08 17:17:15 +08:00
    @hubahuba 大佬说的太对了,但是我们这样的代码太多啦
    huruwo
        164
    huruwo  
       2020-12-08 17:29:19 +08:00
    go 的缺点非常明显 不好招人
    thtznet
        165
    thtznet  
       2020-12-08 17:31:55 +08:00
    Java ? 49 国军
    Reiser
        166
    Reiser  
       2020-12-08 17:32:02 +08:00
    你这数据量恐怕还轮不到换语言,优先考虑加机器和优化代码吧
    pavelpiero
        167
    pavelpiero  
       2020-12-08 17:32:20 +08:00
    必须 php 人在上海刚被洗脑 我们公司不吹牛逼 平峰日均业务量四千万 高峰日业务量近 2 亿 领导说用 php 就够了 这么多 java 都是吃白饭的 服务器成本至少省 50% 人员成本省 80%以上还能给他们 php 加工资
    comsweetcs
        168
    comsweetcs  
       2020-12-08 17:45:13 +08:00
    眼科诊所。。。QPS 能有多少
    longmeier90
        169
    longmeier90  
    OP
       2020-12-08 17:47:57 +08:00
    @xunbug 大佬过来当俺们的架构师吧
    longmeier90
        170
    longmeier90  
    OP
       2020-12-08 17:55:30 +08:00
    @liujavamail 是的,每次十几万数据用 for 循环再去加工,太慢,我想想怎么加冗余字段
    dulife
        171
    dulife  
       2020-12-08 18:02:58 +08:00
    @longmeier90 #170 可以试试视图
    longmeier90
        172
    longmeier90  
    OP
       2020-12-08 18:27:08 +08:00
    @comsweetcs 目前不到 100
    longmeier90
        173
    longmeier90  
    OP
       2020-12-08 18:37:12 +08:00
    @hubahuba 大佬你的微信多少?加个微信
    beneo
        174
    beneo  
       2020-12-08 18:38:37 +08:00
    肯定 java,工资低,成本低
    longmeier90
        175
    longmeier90  
    OP
       2020-12-08 18:39:31 +08:00
    @tfdetang 大佬你的微信多少?加个微信请教请教嘛
    longmeier90
        176
    longmeier90  
    OP
       2020-12-08 18:40:25 +08:00
    @TypeError 大佬你的微信多少?加个微信请教请教嘛
    mengzhuo
        177
    mengzhuo  
       2020-12-08 18:50:10 +08:00
    python 先改成 uwsgi + gevent,解决小公司 90%问题
    livesitter
        178
    livesitter  
       2020-12-08 18:59:42 +08:00
    java 坑会少一点
    beidounanxizi
        179
    beidounanxizi  
       2020-12-08 19:58:19 +08:00
    建议带薪学习 换 Go
    ytmsdy
        180
    ytmsdy  
       2020-12-08 20:04:28 +08:00
    我觉得可以先考虑优化一波,把一些耗时长的任务丢到队列里面去处理。实在不行前面搞个 nginx,然后后面做负载均衡。换语言以及重新开发的成本太高了!
    alpha4zeta
        181
    alpha4zeta  
       2020-12-08 20:15:24 +08:00
    用 Rust 吧, 一步到位~
    geekjc
        182
    geekjc  
       2020-12-09 00:37:59 +08:00
    弱弱的问一句,为什么没用人说用 nodejs
    dayeye2006199
        183
    dayeye2006199  
       2020-12-09 02:23:05 +08:00
    @geekjc LZ 的任务听下来是属于计算密集型的范畴。多实例,上负载均衡,上 nodejs 这类解决 IO 密集型任务的方法并不能很好解决这个问题。

    应该考虑 计算方法优化(转成 SQL ),矢量化,计算离线化等操作。
    muskill
        184
    muskill  
       2020-12-09 08:34:32 +08:00 via iPhone
    @longmeier90 分页处理,例如每次 2000 条,多循环几次绝对不会卡 cpu
    qq1340691923
        185
    qq1340691923  
       2020-12-09 09:21:48 +08:00
    你需要 rust
    Vedar
        186
    Vedar  
       2020-12-09 10:51:18 +08:00
    @longmeier90 我看你的需求慢主要是离线批处理的比较多 建议数据库换成 pg 能节省好多转换加工的时间 另外把一些定时的处理用存储过程去搞
    coloz
        187
    coloz  
       2020-12-09 13:28:54 +08:00
    二选一的话,肯定 go,毕竟 2020 年了
    DoctorCat
        188
    DoctorCat  
       2020-12-09 14:21:21 +08:00
    go 吧,相比 py 和 java,菜鸡都能写出高性能代码。
    DoctorCat
        189
    DoctorCat  
       2020-12-09 14:22:56 +08:00
    不过,语言出现瓶颈这个说法,我觉得让 instagram 工程团队听到,他们会惊呼 amazing 吧,你们业务规模比 ins 还要大???
    young1lin
        190
    young1lin  
       2020-12-10 11:11:04 +08:00
    Java 生态好,容易招人,并且稳定,遇到问题国内就有很多解决的办法。
    qinsi
        191
    qinsi  
       123 天前
    Java 虽然生态好,容易招人。
    但 Go 比 Java 简洁,找便宜应届或者用已有团队现学,都可以搞定。语言拖着你规范,垃圾水平也出活。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1763 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.