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

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

  •  
  •   longmeier90 · 359 天前 · 15195 次点击
    这是一个创建于 359 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  359 天前
    我的微信 longmeier99,希望各位大佬们多多指导交流
    190 条回复    2020-12-10 11:11:04 +08:00
    1  2  
    chevalier
        1
    chevalier  
       359 天前   ❤️ 26
    技术选型,语言特性因素放在后面,先考虑下现有团队转哪种语言成本低

    另外,业务逻辑慢,99%的可能瓶颈不在语言上,Python 虽然比编译型语言慢 1 ~ 2 个数量级,但是处理普通的互联网 CURD 业务,不会有性能问题;我参与过多个大型的 Python 互联网业务系统了。

    你的问题多半可能出现在数据库、机器等资源上,跑个火焰图看下耗时在哪,或许不用换语言,也能解决问题
    chengxiao
        2
    chengxiao  
       359 天前
    减少自己团队的被替代性 GO+1
    节约成本 JAVA+1
    saulshao
        3
    saulshao  
       359 天前   ❤️ 4
    按照楼主的描述,你选啥语言都没大区别的,相信我。
    coderxy
        4
    coderxy  
       359 天前
    同意一楼,应该跟语言无关,其它地方卡估计是
    hantsy
        5
    hantsy  
       359 天前   ❤️ 14
    PHP 8 不错。
    hongch
        6
    hongch  
       359 天前
    基础数据的 crud,真的有那么耗性能吗,10 万条数据以内吧?
    longmeier90
        7
    longmeier90  
    OP
       359 天前
    我们业务处理速度慢,是因为查询大数据量(十几万)的时候,再用 python 来处理这些数据,我发现我们的服务器 cpu 就会占用 90%多,得需要等好几分钟,这还是 10 几家诊所的数据量。
    hqs0417
        8
    hqs0417  
       359 天前
    @longmeier90 搞分布式啊,并行计算
    wdwwtzy
        9
    wdwwtzy  
       359 天前   ❤️ 2
    C#/.net 不考虑下吗?
    goxy
        10
    goxy  
       359 天前
    python 本身不是瓶颈,团队里的人才是瓶颈

    题外话,这种东西最好就是 搭建 /用 Saas,多租户的平台,毕竟是一个眼科诊所,不是信息技术公司。应当可以抽离出一些通用的流程 /模块
    zhuangzhuang1988
        11
    zhuangzhuang1988  
       359 天前
    熟悉哪个用哪个。
    KuroNekoFan
        12
    KuroNekoFan  
       359 天前
    js
    AppxLite
        13
    AppxLite  
       359 天前
    go js
    TypeError
        14
    TypeError  
       359 天前 via Android
    十几万 Python 也没啥问题吧,试试把 list/dict 操作换成 numpy/pandas
    longmeier90
        15
    longmeier90  
    OP
       359 天前
    @goxy 是的我们公司也想弄成 sass 模式,可以加盟我们的诊所,用我们的医疗系统
    mascteen
        16
    mascteen  
       359 天前 via Android
    这个瓶颈显然不在语言啊,更在架构上吧
    MaxFang
        17
    MaxFang  
       359 天前
    普通的内部信息化系统应该还没有到达语言瓶颈吧。就目前的问题,很有可能是程序上问题,可能有一些优化空间。先定位问题,如果已经没有大的优化空间了,就需要考虑换架构的事情,无非变分布式,拆分系统,分库分表等一些常见的方案,主要的方案定了之后,综合考虑语言方面的成本,性能和支持情况。
    miniliuke
        18
    miniliuke  
       359 天前
    天下 Web 一石,我 Java 独占 9 斗......Web 系统的话,小团队最好用 Java,你想找个坑出来都难......
    ksedz
        19
    ksedz  
       359 天前
    反对一楼,语言造成的低水平的人员乱写本身是一个可以用语言解决的问题。
    语言选择我倾向 go,主要是运维成本低、和 python 的相似度高。
    heyjei
        20
    heyjei  
       359 天前
    @longmeier90 都一样的,我一个项目也是把数据从数据库里取出来放到内存中用 PHP 分析计算,就 1 万不到的数据,要好几秒才能算完。但是把把这个计算推到 MySQL 那里计算,速度一下子就快起来了。

    建议可以将计算推到数据库那里试试看。
    Lemeng
        21
    Lemeng  
       359 天前
    如果没要求,选顺手的
    janus77
        22
    janus77  
       359 天前
    选 go 可能对,但是选 java 肯定不会错。
    no1xsyzy
        23
    no1xsyzy  
       359 天前
    先换个更快的运行时比如 PyPy Cython 试一下,当换运行时有明显提升但仍然不够时才考虑换语言;否则换语言本身是没用的,最多新语言带来的新思维方式有点用,如果是基础设施问题多半可以通过引第三方包解决。
    longmeier90
        24
    longmeier90  
    OP
       359 天前
    @heyjei 很多时候我从数据库取完数还需要再匹配计算,没法完全放到 mysql 那里计算,再说如果数据量大 mysql 同样也会消耗大量资源,甚至会导致其他业务也会变慢。
    kevinwan
        25
    kevinwan  
       359 天前 via iPhone
    选 go +1
    jimrok
        26
    jimrok  
       359 天前
    java + python 混合就行。看你计算为啥慢,是不是没有用缓存?
    tumaowolf
        27
    tumaowolf  
       359 天前
    java 不会出大错,但我喜欢 go
    so1n
        28
    so1n  
       359 天前 via Android
    @longmeier90 你可以用 panda 试试……逻辑代码好写又快
    Leigg
        29
    Leigg  
       359 天前 via iPhone
    真要换,当然是 go,拥有 Java 的性能和强类型的同时,还比 Java 语法简洁 N 倍
    Yc1992
        30
    Yc1992  
       359 天前
    @longmeier90 排查下哪个操作占用了最多的时间,肯定有很耗时的操作,优化一下即可
    jmyz0455
        31
    jmyz0455  
       359 天前
    关注一下。
    heyjei
        32
    heyjei  
       359 天前
    @heyjei 请相信数据库, 他可以的。

    你这十几万的取数据,反而会更拖累数据库,你可以 explain 一下看看,这个取数的过程也可能需要好几秒
    djoiwhud
        33
    djoiwhud  
       359 天前 via Android   ❤️ 2
    两个语言都很熟。管了五年项目和团队,我建议选 go 。

    别听其他人忽悠你选 java 的说法。

    你们目前用的 python,说明团队成员都对 java 框架半吊子了解。leader 如果是 java 出身,不会选 python,java 开发者都比较固守城池。转 java 是完全不合适你团队现状的,熟悉 java 框架都要很长时间。开除现在的团队重新找 java 的时间成本也高。

    如果你那不是一群只会 python 的水货应届生,转 go 应该没太大磨合难度。
    emeab
        34
    emeab  
       359 天前
    先确认你是不是语言瓶颈。。 大部分的项目都是数据库瓶颈
    vision1900
        35
    vision1900  
       359 天前
    python 是真的慢,被 node 吊打可还行
    kalman03
        36
    kalman03  
       359 天前
    这个应该是技术负责人决定的事情。
    如果你是老板,信任你的技术负责人吧。
    如果你不是,那么你可能也不是技术负责人,不然你最初为什么会选用 python,现在却要大家出谋划策?这好像不符合技术负责人的技术能力要求。
    如果你不是老板,也不是技术负责人,那么这个事情就不需要操心了。
    misaka19000
        37
    misaka19000  
       359 天前
    我们 Python 应用目前 qps 1000 左右,没遇到瓶颈,所以我认为不是语言的问题
    Cbdy
        38
    Cbdy  
       359 天前 via Android
    java 技术栈很好,但是水货太多,没有靠谱 java 程序员的话建议选其他语言
    zachlhb
        39
    zachlhb  
       359 天前 via Android
    不考虑项目,业务范围来选择语言的都是耍流氓
    tikazyq
        40
    tikazyq  
       359 天前   ❤️ 1
    来鱼塘赏鱼
    NoBugDie
        41
    NoBugDie  
       359 天前 via Android
    大概率是程序或者数据库问题,换了语言一样无解。
    manhere
        42
    manhere  
       359 天前 via Android
    买套现成的成熟 his 系统使用不好吗?
    namelosw
        43
    namelosw  
       359 天前
    你这个不是语言的问题, 用很快的语言可能也只能提升不到 10 倍.

    感觉你挪动数据太多了, 要不优化成 SQL, 要不就上 Spark 之类的专业数据处理.
    catror
        44
    catror  
       359 天前 via Android
    什么操作要把十几万条数据查出来?换语言估计没啥明显效果
    gochat
        45
    gochat  
       359 天前
    毫无疑问! golang
    dayeye2006199
        46
    dayeye2006199  
       359 天前
    为什么十几万条数据,要用 py 来做内存处理呢?可不可以挪进数据库处理呢?单纯写 CRUD,很难碰到 py 的性能天花板。
    longmeier90
        47
    longmeier90  
    OP
       359 天前
    @kalman03 我们公司搞后端的就 3 个人,领导不是特别懂技术的那种,所以技术选型需要我们几个人商讨一下,是这种情况。
    longmeier90
        48
    longmeier90  
    OP
       359 天前
    @catror 都是一些统计方面的工作,统计好几年的数据,目前 10 家诊所就有 10 万级的数据量,以后数据量会更多
    zjsxwc
        49
    zjsxwc  
       359 天前 via Android
    不是数据库慢的问题,只是单纯由于 python 一次性处理查询来的十几万内存数据慢的话,可以用 pypy,性能可以达到纯 c 的级别,唯一缺点是内存占用大一点。
    2379920898
        50
    2379920898  
       359 天前
    选 GO 吧、成本也不高 6 天就转了
    ElmerZhang
        51
    ElmerZhang  
       359 天前 via iPhone
    才 10 几万数据就要跑几分钟,基本可以肯定和语言无关,你该换个程序员
    StephenHe
        52
    StephenHe  
       359 天前
    第一个公司.net 做的后台也是卡的一逼,这更多是架构问题。如果一定要换语言,果断 java 。
    micean
        53
    micean  
       359 天前
    得先分清是哪种情况
    1 、数据库查询慢,是不是没做优化
    2 、python 处理慢,是不是内存不够
    hbolive
        54
    hbolive  
       359 天前
    架构的问题,python 虽然慢,但不至于 10 万这个数据都对付不了。。
    一次性装进来,用什么语言都快不到哪去。。
    jbgz
        55
    jbgz  
       359 天前   ❤️ 2
    .net 5.0 考虑一下😒
    aladdindingding
        56
    aladdindingding  
       359 天前
    python 躺枪
    wwg1994
        57
    wwg1994  
       359 天前
    十几万的统计工作而已,python 用 pandas 试试?
    dawniii
        58
    dawniii  
       359 天前 via iPhone
    这不是离线任务吗?找个从库,闲时去跑,就算跑的慢了影响大吗?
    yalin
        59
    yalin  
       359 天前
    性能问题 与 语言无关
    magiclz233
        60
    magiclz233  
       359 天前   ❤️ 1
    建议 c#
    hezeming
        61
    hezeming  
       359 天前
    @longmeier90 统计对实时性要求应该没那么高啊,基本的定时统计,缓存完全可以解决,就算是实时查的,十几万的数据量 mysql 级别应该也没什么压力
    ming7435
        62
    ming7435  
       359 天前 via iPhone
    10 几万就性能不行,不用换语言,换人吧
    qwerthhusn
        63
    qwerthhusn  
       359 天前   ❤️ 1
    一个诊所就能把 CPU 干翻????你这是啥诊所,梅奥诊所吧
    lydzz
        64
    lydzz  
       359 天前
    主要讨论谁是世界上最棒的语言
    ihipop
        65
    ihipop  
       359 天前 via Android
    @miniliuke 天下 Web 领域 Java 占 90%?有数据来源没?
    lesterchen
        66
    lesterchen  
       359 天前
    所以用 python 的遇到点问题,就推锅到 python 身上。
    xunbug
        67
    xunbug  
       359 天前
    你的业务量比豆瓣更大的话,当我没说。
    如果没有,则不是 python 的瓶颈,是人的瓶颈。
    可以招我过去优化优化,哈哈
    blless
        68
    blless  
       359 天前 via Android
    选 go,直接用开发 python 的思维写就好。如果有一个好的 java 技术经理选 java
    liujavamail
        69
    liujavamail  
       359 天前
    你们是不是数据库的设计问题, 就是没有用一些冗余的字段,去存储一下你们统计需要查询的数据,导致每次都要先查数据出来,然后用 python 做计算,如果数据全部用 python 来计算,那肯定是会慢的,即使你们换语言了, 随着数据量的增大,还是会遇到同样的问题
    lyz1990
        70
    lyz1990  
       359 天前
    看这个描述,感觉不是语言问题
    chouchoui
        71
    chouchoui  
       359 天前
    Java
    某公司技术栈在国内突出一个吹
    krixaar
        72
    krixaar  
       359 天前
    十几万这个数量级用 Excel 都能搞定,Python 算半天是不是得优先考虑下是不是哪里写得有问题?
    Vibra
        73
    Vibra  
       359 天前
    你确定你们一个诊所 python 性能不够? Instagram 用的也是 python 哦
    RangerWolf
        74
    RangerWolf  
       359 天前
    如果是涉及到数据统计处理,我们是读取出来之后用 pandas 来扛~ 速度毫无压力
    tabris17
        75
    tabris17  
       359 天前
    你需要的是一个数据仓库
    x2009again
        76
    x2009again  
       359 天前
    建议 java 或者.net我以前就参与了.net 做的医疗系统,预约挂号、会诊、化验、出化验诊断、库存、费用结算等模块都有。
    zone10
        77
    zone10  
       359 天前
    盲猜是用 Python 循环导致慢了,十几万用 Python 的 Pandas 还是港港单单的,记住要用矢量计算别用循环
    sam014
        78
    sam014  
       359 天前
    用 Java 的话,会不会出现团队人数*2 的情况 ??
    wccc
        79
    wccc  
       359 天前
    可以先考虑业务优化的....
    matrix67
        80
    matrix67  
       359 天前
    统计直接 elk 就行了,买机器哈哈
    Yano
        81
    Yano  
       359 天前
    说实话,Java 和 go 都可以,如果性能的话几乎都差不多。我看你的描述还有 公众号、小程序、挂号-做检查-收费-开药一系列操作,那其实 Java 更好一点,因为毕竟生态更多,毕竟发展这么多年了,Spring boot 一把梭😁
    seven123
        82
    seven123  
       359 天前
    感觉慢应不是 python 的问题吧,几十万就这样了?
    zunceng
        83
    zunceng  
       359 天前
    看你们团队组成吧 四年前我们选了 go 不说项目写的多好 至少 hold 住了业务
    四年后你问我当然是选 Golang,因为我根本不会 java
    tcfenix
        84
    tcfenix  
       359 天前
    @chevalier
    每个人都有自己的屁股, 比如如果楼主是技术主管或者公司老板,那么看问题应该优先看哪个成本低, 出活快,底下人的技术成长老板又不在乎

    但是我们看到楼主好像就是一个打工的, 那么选择技术栈就有两条线了,
    一条是明线, 说服老板这个技术好,市场上好招人,性能好,轮子多
    一条是暗线,就是楼主跟几个小伙伴都有这个共识主推这个语言,后续跳槽的时候市场上工作好找

    python 在现在市场上面比较多的岗位是爬虫, 总得职位量跟楼主举得这两个例子完全没有可比性, 而且如果楼主或者其他人未来想去大厂的话,这两个语言几乎包括了所有大厂的服务端岗位, 而招聘 python 的大厂岗位非常有限
    resist
        85
    resist  
       359 天前
    考虑那么多做什么,选 Java 错不了,Java 便宜兄弟
    x940727
        86
    x940727  
       359 天前
    十几万的数据而已,放哪算都产生不了啥压力吧?给服务器换个好点的固态。
    wxw752
        87
    wxw752  
       359 天前
    同医疗行业,我们后端用的 java
    longmeier90
        88
    longmeier90  
    OP
       359 天前
    @zone10 谢谢大佬指点
    longmeier90
        89
    longmeier90  
    OP
       359 天前
    @tcfenix 分析的好,我就是一个搬砖的。
    JokeEnd
        90
    JokeEnd  
       359 天前
    10+w 数据怎么可能是语言的瓶颈,优化下代码看看
    neptuno
        91
    neptuno  
       359 天前
    才十几万数据,,,,估计是之前程序员代码写的有问题吧,你们没找到真正问题在哪的话,,换 go 和 java 一样慢的
    SmiteChow
        92
    SmiteChow  
       359 天前   ❤️ 1
    Python 慢为什么不优化?我还没见过 Python 慢到不能用的场景。
    securityCoding
        93
    securityCoding  
       359 天前
    跟语言没啥关系啊 , 是不是 10+w 数据实时 loading 到内存再计算? 那样谁来都慢啊,更多是实现方案的问题,这点数据量还谈不上架构
    tailf
        94
    tailf  
       359 天前   ❤️ 2
    #1 的回复是非常优秀的代表。

    #3 的回复是最傻逼的那种。

    希望我们都学习一楼,唾弃三楼。
    wysnylc
        95
    wysnylc  
       359 天前
    你看,py 和 go 都迫不及待的宣传自己
    所以你选什么自己知道吧
    fx
        96
    fx  
       359 天前
    Elixir
    nano91
        97
    nano91  
       359 天前
    十几万就慢了 那八成就是编码和数据库的问题了 先定点再优化吧 换啥都没用
    SjwNo1
        98
    SjwNo1  
       359 天前
    我也还没见过 Python 慢到不能用的场景~
    mamahaha
        99
    mamahaha  
       359 天前
    porn 站随时得有上百万的吞吐吧?如果卡顿肯定早凉凉了,人家是用 PHP 做的,PHP 可是在鄙视链最底层的存在了,可见选啥语言对服务能力影响不大。
    salmon5
        100
    salmon5  
       359 天前
    “go 性能好,用 go”
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2739 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:07 · PVG 20:07 · LAX 04:07 · JFK 07:07
    ♥ Do have faith in what you're doing.