rv54ntjwfm3ug8
V2EX  ›  Java

想写个高性能版 Nextcloud 后端,用 Rust 还是 Java 好?

  •  2
     
  •   rv54ntjwfm3ug8 · Sep 16, 2021 · 9302 views
    This topic created in 1875 days ago, the information mentioned may be changed or developed.

    不考虑 Go,非常不喜欢 Go 这个语言。 Rust 部署方便,社区支持好,但貌似还不是成熟,很多包连 1.0 都没发出来。 Java 目前还是后端第一语言,比 Rust 成熟不少,但部署不是很方便(虽然打 Docker 镜像都差不多),资源占用也比 Rust 高。

    57 replies  •  2025-03-28 17:21:19 +08:00
    ipwx
    ipwx
    Sep 16, 2021
    1
    用 Java 你就很难部署到比如低内存的 Nas 上了。。。
    agagega
    agagega
    Sep 16, 2021
    2
    自己写着玩的话就 Rust 呗,有时候踩坑也是种乐趣。不过听说 Rust 的 async/await 这块还没定稿?不应该哇。
    wangxn
    wangxn
    Sep 16, 2021
    3
    Rust 并不适合来做后端吧,它的优势在后端开发上几乎没有任何应用场景。用 Rust 写后端大致等同于用 C/C++ 写后端,你可以想象这个流行度。
    现在 Rust 被用得最多的地方是重写各种命令行工具,都需要大量时间来慢慢磨细节、优化性能。
    基本上动态语言凭借专门优化了的 IO 处理和 JIT 在评测上就能打平原生语言,实际应用不好说。
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Sep 16, 2021❤️23
    4
    你排除了最合适的答案……
    anyxchachapoly
    anyxchachapoly
    Sep 16, 2021❤️4
    5
    这帖子让我产生难得一见的好奇心,看了下楼主过往发帖

    1. 楼主 59 天前发布的『第一次用 go 写爬虫那篇』,包含他人回覆概览了下,恍然大悟,原来是非常多基础不懂所以不喜欢。

    2. Java...后端第一,比 Rust 成熟不少,资源占用比 Rust 高,连个基本的 engineering 选择 tech stack 时所需要拿捏的平衡点到底是哪些都不理解。

    加油,我非常看好楼主写出一个所谓高性能的 nextcloud 『后端』
    xupefei
    xupefei
    Sep 16, 2021 via iPhone
    6
    楼主一个人搞?这工程量挺大的啊。
    owncloud 有一个团队在用 go 重写服务器端,楼主可以加入一下
    icy37785
    icy37785
    Sep 16, 2021 via iPhone
    7
    都发在 java 分区了那肯定就是已经决定 java 了吧。
    有一说一 go 是最合适的。
    Mohanson
    Mohanson
    Sep 16, 2021 via Android❤️1
    8
    对裹脚布过敏
    Hanggi
    Hanggi
    Sep 16, 2021❤️2
    9
    一个成熟的开发者不会用非常不喜欢一个语言这种无厘头的理由做技术选型。
    redr41n
    redr41n
    Sep 16, 2021❤️1
    10
    刚想来回答 golang,结果看到楼主第一句话
    quan01994
    quan01994
    Sep 16, 2021
    11
    为什么不用 dotnet 呢 。。
    MeatIndustry
    MeatIndustry
    Sep 16, 2021
    12
    为什么不考虑 Kotlin 呢,都考虑到 Java 了
    seven123
    seven123
    Sep 16, 2021
    13
    现在这个情况,首选就是 golang,又要占用小,性能还要不错,还得方便部署
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Sep 16, 2021
    14
    我不知道你怎么想的。
    nc 21 已经有 rust 写的高性能文件后端了。
    oc 则是挑选了 go 的样子
    看来是 PHP 积重难返
    # docker 不适合运行时带虚拟机语言
    a22271001
    a22271001
    Sep 16, 2021
    15
    java 不便于在树莓派 3 之类的小内存设备上部署,用 Go 挺合适的
    顺便吐槽一句 nextcloud 是真的卡
    witcherhope
    witcherhope
    Sep 16, 2021
    16
    GraalVM 试试,可以减少 Java 内存占用
    chiuan
    chiuan
    Sep 16, 2021
    17
    golang 最舒服最强目前。
    x940727
    x940727
    Sep 16, 2021
    18
    GraalVM 试试呗,Native 无论是启动速度还是内存占用已经好很多了,优化优化估计能和 Go 掰掰手腕。
    byte10
    byte10
    Sep 16, 2021
    19
    @a22271001 nextcloud 为啥会那么卡,我也是郁闷。这么简单的一个网盘不至于会卡吧。。
    @icy37785 go 确实是比较合适,小服务器也可以运行起来,要知道很多小玩具都是 1-2g 内存的。

    go 语言目前比较合适的。话说 nodejs 能搞吗,python 呢?按道理这是一个非常简单的服务啊,业务也简单。
    xieren58
    xieren58
    Sep 16, 2021
    20
    绝对 rust
    seakingii
    seakingii
    Sep 16, 2021
    21
    网络服务,GOLANG 首选
    Ayanokouji
    Ayanokouji
    Sep 16, 2021
    22
    java + graalvm native ?
    systemcall
    systemcall
    Sep 16, 2021
    23
    用 C#试试吧
    现在的生态也不错了。而且性能也有保障,低内存设备其实也还好,部署非常方便
    Wincer
    Wincer
    Sep 16, 2021❤️6
    24
    问得出这样问题的人,我不觉得楼主能写出来高性能的 NextCloud 客户端~当然,欢迎楼主打我脸
    a22271001
    a22271001
    Sep 16, 2021
    25
    @byte10 网上一堆参数优化文章杂七杂八的,我看了下干脆放弃了。。。
    mmdsun
    mmdsun
    Sep 16, 2021 via Android
    26
    Java 云原生还是不行至少等 spring 6 出来,spring native GraalVM 还有很多小 bug.

    不想用 go 可以考虑 .NET core,C#。

    https://dotnet.microsoft.com
    ming2050
    ming2050
    Sep 16, 2021
    27
    个人感觉,还是用自己比较熟悉的语言写起来,之后想改成其他语言再说就好。
    zysuper
    zysuper
    Sep 16, 2021
    28
    个人喜欢不喜欢重要吗? 能方便的干活赚钱不香吗?
    DawnMoon
    DawnMoon
    Sep 16, 2021 via Android
    29
    你确定你要重写 nextcloud ?
    这个工作量可不是几天几个月能搞定的
    DsuineGP
    DsuineGP
    Sep 16, 2021
    30
    @agagega async/await 我上生产环境都一年了。
    但是有一说一,只是用来写 web 的话真不如 spring 一把梭
    用了 Rust 各种轮子都得自己造,开源的轮子要么没有要么不圆
    devcat9
    devcat9
    Sep 16, 2021
    31
    @DsuineGP Rust 范型好用吗?除了轮子的话,写业务逻辑还有什么坑?
    GBdG6clg2Jy17ua5
    GBdG6clg2Jy17ua5
    Sep 16, 2021
    32
    为啥 不用 php 写呢,狗头
    dimlau
    dimlau
    Sep 16, 2021
    33
    喜欢不喜欢的……

    OwnCloud 在用 Go 重写啊:

    https://github.com/owncloud/ocis
    DsuineGP
    DsuineGP
    Sep 16, 2021❤️1
    34
    @devcat9 比较大的坑是要避免在异步运行时( tokio )里面运行另一个异步运行时( tokio )
    比如一开始是在异步函数内部调用一个同步函数,之后需求改了你想在同步函数内部再调了另一个异步函数(比如网络请求之类的)就很困难
    范型的话,只要不涉及到生命周期参数就还挺好理解的,但是因为不像 java 有类继承,Rust 要想代码优雅至少得学会声明宏和派生宏的使用
    allanpk716
    allanpk716
    Sep 16, 2021 via iPhone
    35
    楼主的意思是 rust 比 java 容易部署吗? doge
    NjcyNzMzNDQ3
    NjcyNzMzNDQ3
    Sep 16, 2021
    36
    nextcloud 卡是因为用户关闭窗口,后台程序还在读取文件,读到结束才关闭。

    借楼推荐下 php 版本的 filerun 自用啥问题都没有。
    https://filerun.com/
    PDX
    PDX
    Sep 16, 2021 via iPhone
    37
    用 quarkus 写,然后编译成 native
    devcat9
    devcat9
    Sep 16, 2021
    38
    @DsuineGP 感谢!写业务代码的效率看起来还行?

    宏会不会过多影响可读性?
    wph95
    wph95
    Sep 16, 2021
    39
    > Java 目前还是后端第一语言,比 Rust 成熟不少,但部署不是很方便(虽然打 Docker 镜像都差不多),资源占用也比 Rust 高。

    graalvm 了解一下 quarkus 了解一下
    littlewing
    littlewing
    Sep 16, 2021
    40
    php
    earneet
    earneet
    Sep 16, 2021 via iPhone
    41
    当然是 java 了,虚拟机得天下,裸语言实现虚拟机呀!
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Sep 16, 2021
    42
    这种重 IO 的场景,换个语言有效果吗
    sky96111
    sky96111
    Sep 16, 2021 via Android
    43
    用 Rust 重写的话…全人类感谢你.jpg
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Sep 16, 2021 via Android
    44
    @gstqc +1,顶多省点内存
    watcher
    watcher
    Sep 16, 2021
    45
    用 php 啊 大哥
    zxCoder
    zxCoder
    Sep 16, 2021
    46
    dotnet
    iyear
    iyear
    Sep 16, 2021
    47
    java 适合企业用,个人如果就一个星际蜗牛或者其他矿渣组的 nas,跑都跑不起来
    netcan
    netcan
    Sep 16, 2021
    48
    不要浪费时间精力在 Rust 上,这个没啥前途。
    namelosw
    namelosw
    Sep 16, 2021
    49
    这种钓鱼贴,你们顺着他说不就完了…

    就算不是钓鱼贴,鼓励他一下,哪个费事用哪个,让他勇往直前不好吗
    jiayong2793
    jiayong2793
    Sep 16, 2021
    50
    C#?
    iseki
    iseki
    Sep 17, 2021
    51
    JVM 吃资源确实有点严重,虽然我很反感 Go 这个残废语言,但还是不得不说,如果 Rust 不合适,可能 Go 就是无法规避的选择了,也许你可以考虑下 dot Net 系?
    saltbo
    saltbo
    Sep 17, 2021
    52
    欢迎使用 zpan https://zpan.space
    zxCoder
    zxCoder
    Sep 17, 2021
    53
    @iseki 话说感觉 Java 和.Net 很相似,为啥都说 JVM 吃资源严重,而.Net 不会呢?是因为微软比较 nb 吗
    comoyi
    comoyi
    Sep 17, 2021
    54
    你的内心还是想用 Rust 的,那就用吧
    iseki
    iseki
    Sep 17, 2021 via Android
    55
    @zxCoder 个人不太熟悉.net ,直觉上好像在起始阶段资源消耗略小一点,可能是策略不一样吧
    wapollo9
    wapollo9
    Jan 12, 2023
    56
    Nextcloud 部分好像已经开始用 Rust 重写了?现在文件推送部分是已经重写了
    YANGGGGGG
    YANGGGGGG
    Mar 28, 2025
    57
    @dimlau emmm 现在怎么样了,成熟了吗。一直用 nextcloud 。试试 go 重写的 own 丑陋的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2857 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 10:55 · PVG 18:55 · LAX 02:55 · JFK 05:55
    ♥ Do have faith in what you're doing.