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

在不考虑安全的前提下,如何设计一个方案,实现 4 个 G 的文件的快速异地传输?比如从北京到上海... 面试的时候没答上来,求大佬们指点迷津

  •  
  •   moran3649 · 68 天前 · 13842 次点击
    这是一个创建于 68 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  68 天前
    萌新第一次发帖没注意标题长度,是这样的,就是不要求安全,仅要求效率,怎么快怎么来
    134 回复  |  直到 2019-08-08 07:52:08 +08:00
    1  2  
        101
    uncat   68 天前
    1. 接收端 nc 监听本地端口用于接收文件
    2. 购买一台按量付费服务器, 带宽选择按量付费不限峰值
    3. ssh 映射 nc 监听端口到服务器
    4. 发送端 ssh 服务器端的接收端口到本地
    5. 发送端发送文件内容到本地监听端口
        102
    windfarer   68 天前
    @qq976739120 你应该答,叫个饿了么小哥送
        103
    ryd994   68 天前 via Android
    Python -m simplehttpserver 或者任何轻量 HTTP 服务器
    取决于数据特点可以考虑启用 gzip 压缩
    对面用 uget / aria2c 多线程&断点续传

    如果是 Linux 服务器的话完全可以 rsync+ssh,还兼顾安全呢
        104
    qinyusen   68 天前   ♥ 2
    上次看到这种问题的时候,是 12TB 数据。。。
    答案是高铁人肉送一下。。。
        105
    harck   68 天前
    高铁 4 小时 18 分 左右
    飞机 2 小时 20 分左右
    快递 24 小时左右
        106
    AlvaIM   68 天前   ♥ 1
    早上 Mac 收到更新,2 个 G 的更新文件,2 分钟不到就下载完了。 很想知道让坐飞机的是让楼主坐土飞机么?

    让面试考官出题严谨,真是呵呵, 又不是高考,吐槽别人出题不严谨的心理上还没毕业吧。

    面试就是为了考察候选人面对问题处理问题的能力。 开放式的问题考验的也是你提问题的能力, 对一个 Case 连有价值的问题都提不出来,怎么能指望你能解决问题。这个问题又不复杂, 在不同的条件下有很多种不同的方案,包括看似不靠谱的坐飞机方案,但是楼主连问题都没问,接收两端的网络环境啊,有无什么物理限制啊这些。

    最后说道问题本身, 尽可能的快, 那么就包括了 线路选择和尽可能占满带宽,这两个要解决的问题。 包括坐飞机也是线路选择的一个可选模式。
        107
    wodexiaogou   68 天前   ♥ 1
    他说不考虑安全的前提下,这就已经告诉你答案了啊,用 udp 方式传输
        108
    ipwx   68 天前
    充分利用带宽,在现行网络协议的框架下面,瓶颈是 TCP 丢包造成的拥塞控制协议误判,导致带宽利用率底下。一种方案是多线程传输,所以你架个 HTTP(s) 服务器(譬如 Nginx ),用多线程下载软件(譬如 aria2 )下载就行了。

    然而国内网络的丢包很小,我觉得说不定不用搞这个,也能接近跑满带宽。
    ----

    这个答案怎么样?楼主?
        109
    vocaloid   68 天前
    @AlvaIM #106 国内下载是快,但是家宽普遍上传速度嘛...
        110
    ych8398527   68 天前
    百度云开会员
        111
    c0878   68 天前
    这是考思考问题的全面性 给的条件越少 你要考虑的点就越多 至少给出几个不同的解决方案并说明这些方案的区别和优缺点
    只说一个 ftp 下载之类的 估计面试官那边得分不会高
        112
    goodryb   68 天前
    比较赞同 #111 的说法,开放性问题就要开放性回答,没有限制条件你就可以自定条件
        113
    zcqshine   68 天前
    QQ 现在可以传输 4G 的文件了不
        114
    wlsnx   68 天前
    4G 又不是 4T,直接 rsync 就行了。
        115
    fuyufjh   68 天前
    这么简单的场景,无论用 HTTP 还是 FTP 还是 TCP 直接发,都不会有太大区别

    要是我就会问如果北京有个 4T 的文件,怎么给各个省会城市传一份,假设地理位置越近带宽越宽
        116
    zjyl1994   68 天前
    4g 不算大啊,公司 vps 开了个 100M 的端口,scp 过去也没多少时间
    前几天刚从成都往上海送了 10G 文件的路过
        117
    miserist   68 天前
    帝都,百度云,开会员,上传文件,魔都,百度云,开会员,下文件
        118
    guokeke   68 天前
    4G 直接 rsync 就行,而且追求速度的话,瓶颈永远是带宽,加钱就好了,设计方案再牛逼也没法突破带宽限制,
    除非设计压缩算法。
        119
    bilberry   68 天前
    飞鸽传书,把 U 盘绑到鸽子身上 https://mp.weixin.qq.com/s/RSvEWTzMHEYvY6FBdC4cbQ
        120
    yzmm   68 天前
    把文件分成 1000 份,然后 100 线程 UDP 传,至于接受端收不收得到管我屁事啊。
    问这问题的人不知道是在想啥,如果网速 10GB/S 那么考虑怎么传输真的就重要了?
        121
    wingyiu   68 天前
    分块 并发 md5 校验 小客户端 合并 udp 考虑双方带宽 先计算跑满
        122
    bertsir   68 天前
    不说带宽的都是耍流氓
        123
    lenmore   68 天前
    4G 不大不小
    1、考虑压缩。
    2、用最简单的工具,比如 QQ,云盘,SFPT
    3、考虑带宽,如果 PC 端的网络带宽不够,可以考虑通过手机 4G 网络传。一般 4G 网络的上传是不限速的,快的可以达到好几 MB。
        124
    lmw2616   68 天前 via Android
    分包多线程上传,到阿里云,接收方同时下载,
        125
    nicoljiang   68 天前
    假如我是面试官,我得到目的大概是:
    1. 看你应激的场景梳理能力;
    2. 看你知识的广度(喜欢折腾技术的 geek 和 培训班 出来的 coder 能看出很大差别);
    3. 看你对网络的特性是否有深入了解(例如:切成 4096 个 1M 的小文件,多线程传输,以充分利用「 TCP 的流量控制 /拥阻控制」算法的特性)

    当然,实际上我并非研发,而是 PM,所以纯属瞎猜。
        126
    casaca   68 天前
    发顺丰比较快。
        127
    lihongjie0209   67 天前
    突然想起来可以反问啊

    直接问: ftp/http/rsync 是否可以满足需求, 不满的话把需求再明确一下不就有方向了吗
        128
    radc   67 天前
    干过带着硬盘去机房直接拷的事 200G 同城打车往返 80 块 :doge:
        129
    xomix   67 天前
    拆分 /分布式发送 /分布式接收 /合并
    你能答出来这个就已经合格
    如果能想到用 udp 协议和 hash 校验来替换 tcp,那你的分数就相当高了。
        130
    vmskipper   67 天前
    北京 上海建一条专门传数据的光纤
        131
    YaakovZiv   67 天前
    阿里和华为有对象存储服务,传上去,然后对端下载,速度就很快,4G,该题目未对带宽限制,根据我以前在家里体验的情况看,预估在 10 分钟左右,可以传输 7G 的文件,无论是单个文件还是多个文件一共 7G。相对来说,这里面附带了对安全的考虑,因为可以设置安全策略限制指定的用户下载资源。
    再有就是,北京的终端 A 和上海的终端 B,同时使用了云磁盘 C,共享磁盘 C,A 终端存储的该 4G 文件可以直接在终端 B 查看使用。
        132
    danmu17   67 天前
    @xomix 问题是在现实世界里,在双方网络都正常的前提下,这样做完全是无用功,不会提高任何效率。好奇在中国哪种水平的公司才会有这种低水平的面试题。
        133
    moran3649   67 天前 via Android
    各位大佬的指点让我越来越懵逼。 😂
    事实上这是某外包公司的面试问题,楼主也是浪了四个月第一次去面试,很多事情都没想到缩小问题范围,比如带宽限制,考验知识的方向等等。
        134
    hfutzj   67 天前 via Android
    @alamaya 什么傻逼回答,还有这么多人赞同
    1  2  
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4200 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 08:29 · PVG 16:29 · LAX 01:29 · JFK 04:29
    ♥ Do have faith in what you're doing.