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

问一个关于今天被问到的大文件分发策略的面试题

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

    假设有一台 master 节点上有一个 100G 的二进制文件,想分发给 10000 台服务器 node1-node10000,master 和 node 节点都是互联互通的,且 node 节点间也是互联互通的,问题就是怎么能在最短时间内分发完毕。我的思路是把大文件切分成 10000 个 10M 的小文件分发给 node,然后 node 间互相分发这些小文件,最后合并成大文件验证校验和。面试官好像不太满意我的解决方案,问问大家有什么好的想法吗?

    15 条回复    2021-08-26 06:07:25 +08:00
    liprais
        1
    liprais   87 天前 via iPhone
    你说的不就是 bt....
    cloudera 就是这样做的
    我觉得面试官也没啥好办法
    tanhui2333
        2
    tanhui2333   87 天前
    url base64 aHR0cDovL2x4dzEyMzQuY29tL2FyY2hpdmVzLzIwMTgvMDcvOTE1Lmh0bQ==
    感觉按这个答面试官也不一定满意。
    有时候面试跟对接头暗号差不多。
    heyjei
        3
    heyjei   87 天前
    做成 BT 种子分发,CDH 的安装就是这么做的。
    xiaoz
        4
    xiaoz   87 天前 via Android
    用 BT 协议,我看腾讯蓝鲸云资产管理中,文件分发就支持每个节点作为 BT 来传输。
    matrix67
        5
    matrix67   87 天前
    阿里巴巴的 Dragonfly 借助 P2P 与 CDN 技术,缩减镜像传输时间,提升分发效率,加速业务应用交付;
    https://d7y.io/zh-cn/index.html

    uber 的 Kraken 项目
    https://github.com/uber/kraken
    des
        6
    des   87 天前 via iPhone
    这个不是有人在 v 站问过吗?
    不会是同一个公司面试吧?
    rrfeng
        7
    rrfeng   87 天前 via Android
    p2p 应该没问题吧
    黑科技用广播 /组播(也不是不可以
    also24
        8
    also24   87 天前
    我觉得首先要确认网络拓扑情况,先搞清楚物理层面的限制,再去设计应用层的事情。
    zhoudaiyu
        9
    zhoudaiyu   87 天前 via iPhone
    @liprais 我突然发现我不经意间说出了 P2P 的思想…当时真没想到 P2P 和 BT
    @tanhui2333 就是 P2P
    @heyjei 当时面试完和面试官聊说到了 CDH,所以我更不理解为啥他不满意我的思路了…
    @xiaoz 学到了
    @matrix67 谢谢大佬,果然像面试官说的有很多细节的地方可能涉及到很多底层的知识,看似简单其实复杂,看了一下这两个项目确实考虑的很多
    @des 难道是某健身软件?
    @rrfeng 大佬,我听到了不一样的声音,广播组播怎么实现呢?
    @also24 不需要考虑这些…主要是分发算法
    Xs0ul
        10
    Xs0ul   87 天前
    要搞清楚是要问实现还是算法。实现就像大家说的用 bt,怎么分发靠 bt 自己解决。

    算法的话,就是考虑“最短时间”。楼主描述的“分成 10000 个 10M 的小文件”,为什么是 10000 和 10 ? 5000 和 20 会不会更快?然后“node 间互相分发”又是怎么个分法,怎么保证不缺少也不重复 /浪费?
    zhoudaiyu
        11
    zhoudaiyu   87 天前 via iPhone
    @Xs0ul 确实,老哥,那具体怎么做拆分,你有想法吗?
    JamesChen
        12
    JamesChen   87 天前
    有限定不能用 NAS 存储吗?没限定的话,用 NAS 直接挂载共享 FS 就完事了。有时候程序员容易死脑筋,想得太多,懂得太少,不要在一个糟糕方案的方案下死磕。
    zhoudaiyu
        13
    zhoudaiyu   87 天前 via iPhone
    @JamesChen 首先,我觉得既然是只给了这些资源,而且主要想考察的是分发思路,那就默认不考虑 NAS 等其他硬件了;第二,我理解分发的意思是文件要落在这些机器上;第三,不知道你所谓的死脑筋是如何转进的,使用软件替代硬件就是死脑筋吗?省成本也是死脑筋么?
    hq136234303
        14
    hq136234303   87 天前
    切分 。然后每台服务器做运行效率不一样 用窃取算法?
    blindlf
        15
    blindlf   58 天前
    @JamesChen 10000 台机器同时从 NAS 取,NAS 带宽不够用吧
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2194 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:27 · PVG 13:27 · LAX 22:27 · JFK 01:27
    ♥ Do have faith in what you're doing.