V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
vexjoe
V2EX  ›  问与答

做 Scala 的分布式编译服务有没有市场?

  •  
  •   vexjoe · 2018-04-28 13:39:54 +08:00 · 1942 次点击
    这是一个创建于 2399 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为自己平时开发要用 scala,在自己的笔记本上编译太慢 开发体验很差,想着搞一个类似 distcc 的东西,原理大概是这样的:

    1. 把本地的源码文件上传到服务器(单机或者集群)
    2. 服务器编译源码
    3. 本地从服务器下载编译好的 class 文件

    自己搞了个 scala 的小项目看了下, 50k 的源码(大约 2K 行)编译出来目标文件大约 150k, 编译时间大约需要 25 秒。 这种场景下网络带宽的开销比很小, 理论上可以线性的降低编译时间(服务器集群的计算能力越大编译越快)

    一个挺美好的想法就是: 有这个需求的人,捐个闲置的 VPS 出来(安装一个 compiler worker)作为 compiler farm 的一部分,然后大家共享整个集群的计算能力。

    现在有 2 个问题:

    1. scala 编译过程的可并行程度有多高?(太低就不好水平扩展了)
    2. 有多少人需要这个东西?(其实也可以应用于别的语言,C/C++已经有比较成熟的东西,不过貌似都是大公司内部在用,而 scala 的使用者貌似不太多,其他语言的编译速度都还可以接受。动态语言不需要这个。)

    现在自己是挺需要这个东西的,感觉做个简单的原型出来不难。关键有多少人需要这种东西,给点意见?

    11 条回复    2018-04-28 16:38:10 +08:00
    bbx
        1
    bbx  
       2018-04-28 14:41:55 +08:00
    我觉得 assembly 才蛋疼,我有的时候 sbt assembly 20 分钟。。
    msg7086
        2
    msg7086  
       2018-04-28 14:52:19 +08:00
    20 台 VPS 算力加一起相当于一个台式机,你这是云减速吧。
    自己托管服务器然后按 CPU 时间收费倒是可以的,但是吧,受众太小了,投入产出不成比例。
    vexjoe
        3
    vexjoe  
    OP
       2018-04-28 15:48:14 +08:00
    @bbx 你是指用这个 https://github.com/sbt/sbt-assembly 打出一个 fat jar 么?
    我个人的话这种操作不频繁,请问你是在什么场景有这种需求?
    bbx
        4
    bbx  
       2018-04-28 15:56:26 +08:00 via iPhone
    @vexjoe 随便加一些 big data 的 jar,像是 flink spark druid,因为需要 exclude 一些 dependency,dependency 经常各种 conflict,所以 merge 成 fat jar 的时候很耗时
    vexjoe
        5
    vexjoe  
    OP
       2018-04-28 16:03:16 +08:00
    @msg7086
    随便找了个阿里云最低配的 VPS 做测试
    CPU 情况 Intel(R) Xeon(R) 2.50GHz 1 核 1G 内存
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 22.635s
    [INFO] Finished at: Sat Apr 28 15:55:19 CST 2018
    [INFO] Final Memory: 25M/60M
    [INFO] ------------------------------------------------------------------------


    我这边日常工作的配置 2.7 GHz Intel 2 核 8G 内存
    compile 上面提到的项目
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 14.382 s
    [INFO] Finished at: 2018-04-28T15:55:24+08:00
    [INFO] Final Memory: 38M/447M
    [INFO] ------------------------------------------------------------------------


    粗略计算下 22.635s / 14.382 s ≈ 1.57 ,算力的差距差不多是 1.5 台 VPS 等于 1 台 个人电脑这样,感觉还行的样子?
    agagega
        6
    agagega  
       2018-04-28 16:04:27 +08:00
    不如做个 C++ 的(
    vexjoe
        7
    vexjoe  
    OP
       2018-04-28 16:07:42 +08:00
    @bbx 我的需求是开发阶段(写代码-编译-写代码)会经常需要编译。fat jar 这种场景一般是部署的时候,是不是你代码的修改,经常需要部署某一个环境里去跑,才能看到修改的效果?
    3a3Mp112
        8
    3a3Mp112  
       2018-04-28 16:10:23 +08:00
    需要用到 scala 的公司不会缺少硬件的。
    vexjoe
        9
    vexjoe  
    OP
       2018-04-28 16:11:40 +08:00
    @3a3Mp112 看来我司比较小气 XD
    vexjoe
        10
    vexjoe  
    OP
       2018-04-28 16:15:09 +08:00
    @3a3Mp112 不过我用自己另一台 4 核 3.9Ghz 16G RAM 的,编译速度仍然只有这台 2 核笔记本的 2 倍左右。感觉个人计算机的能力还是很有限的。
    msg7086
        11
    msg7086  
       2018-04-28 16:38:10 +08:00   ❤️ 1
    VPS 上的 CPU 一般是配置成 Fair Share 的,爆发式运行可以,量大了经常连续爆发会被商家限速。
    4 核 3.9 差不多三四年前的台式机水平,现在如果配 Ryzen 可以 8 核 4.0,速度又能翻倍了,价格也不离谱。
    自己搞服务器的话,E5-2670v2 这种 CPU 插 2 块,20 个核心一起跑,感觉又不一样了。

    总之呢我是觉得这需求太小众,花时间去做,不如把时间转成钱然后买设备解决。
    当然你想搞也是可以的,比如固定月租+按量付费,充值然后根据 CPU 时间计价,补偿硬件费用,也可以。
    每分钟算力 1 毛,起步费 5 块=50 分钟算力什么的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 14:17 · PVG 22:17 · LAX 06:17 · JFK 09:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.