• 请不要在回答技术问题时复制粘贴 AI 生成的内容
longmeier90
V2EX  ›  程序员

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

  •  
  •   longmeier90 · Dec 7, 2020 · 20962 views
    This topic created in 2000 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

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

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

    我觉得

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

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

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

    可又不想被看不起···

    大可不必这样,

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

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

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