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

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

  •  
  •   longmeier90 · Dec 7, 2020 · 22151 views
    This topic created in 2166 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  
    ❮ ❯
    chevalier
    chevalier
    Dec 7, 2020❤️26
    1
    技术选型,语言特性因素放在后面,先考虑下现有团队转哪种语言成本低

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

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

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

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

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

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

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

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

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

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

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

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

    希望我们都学习一楼,唾弃三楼。
    wysnylc
    wysnylc
    Dec 8, 2020
    95
    你看,py 和 go 都迫不及待的宣传自己
    所以你选什么自己知道吧
    fx
    fx
    Dec 8, 2020
    96
    Elixir
    rSP0rcaA9K11Rjsz
    rSP0rcaA9K11Rjsz
    Dec 8, 2020
    97
    十几万就慢了 那八成就是编码和数据库的问题了 先定点再优化吧 换啥都没用
    SjwNo1
    SjwNo1
    Dec 8, 2020
    98
    我也还没见过 Python 慢到不能用的场景~
    mamahaha
    mamahaha
    Dec 8, 2020
    99
    porn 站随时得有上百万的吞吐吧?如果卡顿肯定早凉凉了,人家是用 PHP 做的,PHP 可是在鄙视链最底层的存在了,可见选啥语言对服务能力影响不大。
    salmon5
    salmon5
    Dec 8, 2020
    100
    “go 性能好,用 go”
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4538 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 290ms · UTC 03:42 · PVG 11:42 · LAX 19:42 · JFK 22:42
    ♥ Do have faith in what you're doing.