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

七牛的文件存储简直是弱智

  •  
  •   whileFalse · 2017-07-17 16:17:20 +08:00 · 6496 次点击
    这是一个创建于 2473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    覆盖上传文件的新版本之后,下载下来还是旧的。 客服说解决办法只有:

    1. url 带参数
    2. 刷新该文件的缓存(每天限 500 个文件)
    3. 设置某种文件名前缀或者扩展名的缓存过期时间。

    简而言之,就是七牛的文件存储和 CDN 是割裂的;文件存储中上传一个文件,CDN 不知道该文件已经更新了。请问七牛的文件存储是外包出去的吗?

    试了一下 up 云,上传了新文件之后立马就可以下载到最新版,没有任何问题。

    以及,qiniu python SDK 功能各种不全;在线文档各种旧。

    第 1 条附言  ·  2017-07-17 17:29:07 +08:00
    我的喷点是,文件存储的下载依赖 CDN。然后他没有解决 CDN 缓存的问题,导致下载的文件和存储的文件不一样。
    我不管你下载是不是走的 CDN,你这个服务叫存储,结果下载下来跟存的不一样,你是不是在逗我。

    我完全明白 CDN 缓存的原理,请大家不要再科普怎么解决 CDN 缓存问题了,谢谢大家。
    第 2 条附言  ·  2017-07-17 18:10:00 +08:00
    经 @ovear 提醒,七牛是融合 CDN,也就是说他会使用其他 CDN 厂商的节点。
    所以七牛想做“更新了文件存储之后自动刷新 CDN 上的对应文件”这件事可能成本很高或者难以做到
    这同时也能够解释为什么七牛在更改 CDN 配置、绑定 SSL 证书等操作上非常缓慢。
    26 条回复    2017-07-17 23:44:51 +08:00
    Athrob
        1
    Athrob  
       2017-07-17 16:34:45 +08:00 via iPhone
    真能喷
    whileFalse
        2
    whileFalse  
    OP
       2017-07-17 16:40:53 +08:00
    @Athrob 喷的不对吗?
    lxml
        3
    lxml  
       2017-07-17 16:48:20 +08:00   ❤️ 1
    阿里云 OSS 也是,CDN 需要手动刷新,或是过期后自动刷新,不立刻更新,可能是处于性能的考虑?
    crysislinux
        4
    crysislinux  
       2017-07-17 16:53:01 +08:00 via Android
    cdn 肯定是异步的啊,本来就不该覆盖以前的文件
    Athrob
        5
    Athrob  
       2017-07-17 16:54:17 +08:00 via iPhone   ❤️ 1
    @whileFalse CDN 是有缓存时间的,强制刷新就是跟客服说的方法差不多。虽然常理上覆盖了旧的就应该去刷新缓存,但按规则刷新这也不能叫弱智吧。
    tigerstudent
        6
    tigerstudent  
       2017-07-17 16:55:24 +08:00
    5#说的应该是对的。
    mkeith
        7
    mkeith  
       2017-07-17 17:01:02 +08:00
    LZ 什么都不懂啊
    lianz
        8
    lianz  
       2017-07-17 17:06:54 +08:00   ❤️ 1
    我看是你弱智。第一次用 CDN ?
    whileFalse
        9
    whileFalse  
    OP
       2017-07-17 17:08:27 +08:00   ❤️ 2
    @crysislinux 我要是只用他们家 CDN 我根本就不会问出这种问题。我用的是他们家文件存储,结果上传上去下载的还是旧的这能叫文件存储么。

    @Athrob 我不满的地方在于:文件存储和 CDN 完全是割裂的。自己提供的服务,搞得跟外包的似的。
    如果早知道文件存储和 CDN 割裂,当初就不会用七牛。

    毕竟人家 up 云没问题。之前用 up 云用的挺好的,这个项目想着可能图片处理多一些,就用了七牛,没想到这么坑。
    whileFalse
        10
    whileFalse  
    OP
       2017-07-17 17:09:22 +08:00   ❤️ 2
    @lianz @mkeith 老子用的是文件存储,请看标题谢谢。如果用 CDN 我不会问这个问题谢谢。
    jarlyyn
        11
    jarlyyn  
       2017-07-17 17:11:54 +08:00
    @whileFalse

    你取的到底是 cdn 还是文件存储?
    tabris17
        12
    tabris17  
       2017-07-17 17:12:05 +08:00
    加个版本参数,CDN 一般都这么处理,没啥好喷的
    donlxn22
        13
    donlxn22  
       2017-07-17 17:14:04 +08:00   ❤️ 1
    分布式系统中 CAP 只能取其二,CDN 选择了 AP,对于 C 一致性采用了延迟更新的策略。

    一个全球分布的 CDN 具有无数节点,如此多节点在上传新文件之后的更新无疑需要花费一段时间。但花费这段时间之后带来的是性能方面的提高。

    如果一个 CDN,能在文件更新之后瞬间提供新文件的下载,这只说明了一件事情,新的文件并没有真正的分布式存储起来。
    whileFalse
        14
    whileFalse  
    OP
       2017-07-17 17:23:09 +08:00
    @donlxn22 我没有要求实时更新,但是七牛的更新完全依赖 CDN 节点缓存过期,有可能长达 30 天。
    这就和分布式一致性没有什么关系了。

    @jarlyyn 我用的是“对象存储”,也就是文件存储。这个对象存储的下载是走的 CDN。

    七牛明明可以选择在上传文件新版的时候主动刷新一下缓存,但是他没做,然后刷新单文件缓存操作每天限制 500 次。
    stabc
        15
    stabc  
       2017-07-17 17:37:56 +08:00   ❤️ 1
    这个我是比较能理解 LZ 的。
    如果商家的 CDN 和文件存储相对独立(像阿里云腾讯云那样),那么这种更新文件后不立即更新 CDN 的现象可以理解。
    问题是七牛推出的所谓“融合 CDN ”,带有很强的捆绑特性,甚至你不用 CDN 的话,默认的存储 URL 是有很大访问限制的,这种情况下的确应该在文件更新方面做更好的优化。
    bomb77
        16
    bomb77  
       2017-07-17 17:41:09 +08:00   ❤️ 2
    文件存储竟然还要自己强刷?哈哈哈哈哈哈
    newghost
        17
    newghost  
       2017-07-17 17:46:01 +08:00
    这很正常,所有的 DNS 都需要手动刷,而且还不是立即生效。 各个节点同步需要时间呀。

    所以一般都用新的文件名。
    ovear
        18
    ovear  
       2017-07-17 17:51:34 +08:00   ❤️ 1
    跟我一起念
    融合 CDN 融合 CDN 融合 CDN
    七牛没有自己的 CDN
    ovear
        19
    ovear  
       2017-07-17 17:51:49 +08:00
    @ovear 噢可能有,但是我没见过。。
    likuku
        20
    likuku  
       2017-07-17 17:55:56 +08:00   ❤️ 1
    CDN 刷新两个办法:1, TTL 到期 2,使用 CDN 供应商提供的 API/工具 自己主动去 purge. (主流 CDN 做法)

    七牛云存储自带 CDN 服务也提供有 purge 功能,七牛云存储文档和 SDK/API 文档 都有 如何 purge CDN 的方法。
    whileFalse
        21
    whileFalse  
    OP
       2017-07-17 17:56:20 +08:00
    @ovear 你这么一说我忽然理解了……
    我也理解为啥 up 云配个 ssl 证书分分钟的事儿,七牛就要最多 24 小时结果 24 小时还没完事了
    我也理解为啥七牛没有 http/2 了
    我一点都不生气了

    只是,下次还是用 up 云好了……
    ovear
        22
    ovear  
       2017-07-17 18:11:42 +08:00   ❤️ 1
    @whileFalse 偷偷跟你说,七牛有些东西要人工配的。。
    jayin
        23
    jayin  
       2017-07-17 18:13:56 +08:00   ❤️ 1
    文件存储 不是外包出去的,外包出去的是 CDN (逃

    某又拍云商务私底下跟我说的。
    isCyan
        24
    isCyan  
       2017-07-17 18:18:36 +08:00 via Android   ❤️ 2
    其实七牛可以直接访问源站,文档里有源站域名,你的存储空间域名不变,访问的服务器 ip 改成 nb-gate-io-msrc.qiniu.com 的 ip 一般就可以,不限区域,偶然发现的。
    xxxx.qiniudns.com 那个 cname 域名前面加上 src. 变成 src.xxxx.qiniudns.com 就是七牛源站。即使是别的区域也有可能源站在华东。
    偶然发现的。算是解决办法吧。流量费好像照收,但不是在 cdn 里面,价格大致和国内 cdn 相同。
    noErr
        25
    noErr  
       2017-07-17 18:54:12 +08:00
    @whileFalse 顶 LZ
    jasonpeng0322
        26
    jasonpeng0322  
       2017-07-17 23:44:51 +08:00
    文件名取成文件的 hash 不就解决啦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3822 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:28 · PVG 18:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.