爱意满满的作品展示区。
protonme

做了一个快速(300M+)、不贵($1/TB)的文件下载分发服务

  •  8
     
  •   protonme · Nov 21, 2022 · 9814 views
    This topic created in 1445 days ago, the information mentioned may be changed or developed.

    由于复杂的网络环境,分发大文件即痛苦又昂贵。因此做了一个快速、不贵的文件下载分发服务: FastBlob,目前速度可达 300M+。

    📚 原理

    服务端有多个遍布世界各地的节点,对源站的文件进行反向代理。客户端将下载进行分片,利用多线程进行同时下载,再通过现代浏览器的 stream 组合成一个 Response ,从而实现和 fetch 同样的接口。

    ✨ 特点

    • 用的是你自己的域名,支持 HTTPS ,后期会支持 SNIProxy
    • 目前提供了 JavaScript SDK ,可以直接替换 fetch ,无需修改代码
    • 适应电信、联通、移动等不同运营商的网络环境
    • 设置简单,只需要将域名 CNAME 一下即可
    • 修改 Request 和 Response 的 Header 设置
    • 没有单点故障,一个节点挂掉了也没关系
    • 可以快速的扩容,不用担心用的人多了导致速度变慢
    • IPv4 + IPv6

    ⚡ 性能

    试运行阶段目前只有 6 个节点,在电信测试下载速度达到了 300M+,后期会继续增加节点,提高下载速度。

    💸 价格

    目前试运行期间 $1/TB ,后期会根据运行情况进行调整。注册提供 50GB 的免费流量供尝试。

    📝 备注

    建议使用 Cloudflare R2 来作为源站,因为 Cloudflare 不收流量费,且 R2 在全球进行分发。

    🏖️ 尝试一下

    https://zh.fastblob.com/try

    59 replies  •  2023-04-17 17:08:55 +08:00
    502Chef
    502Chef
    Nov 21, 2022 via iPhone❤️1
    1
    ui 挺好看的
    xiangchen2011
    xiangchen2011
    Nov 21, 2022
    2
    确实速度很快啊,赞
    star7th
    star7th
    Nov 21, 2022
    3
    思路很好,国外的机器都能多线程到这个速度,确实让人眼前一亮。
    搭车宣传下,如果有需求国内网络的便宜 cdn 需求可以看看这个 https://www.dfyun.com.cn
    速度没有 lz 的文件下载分发快,不适合大型文件。但是国内线路稳定可靠,可用作各种小文件加速。
    star7th
    star7th
    Nov 21, 2022
    4
    我再看了下,你这个仅仅做反向代理,不做内容缓存或者托管啊。这样算下来,源服务器的成本和带宽都可能成为瓶颈了。
    你多进程反向代理我源站,速度也是取决我的源站速度。而且流量层面都是要走一遍我的源站,我得付两次流量费用。
    再者,下载文件不能直接弹出来,需要等然后再点击一下,用户体验没那么友好。
    hteen
    hteen
    Nov 21, 2022
    5
    "注册提供 50GB 的免费流量供尝试。"

    为什么我只有 5G 呢
    hccsoul
    hccsoul
    Nov 21, 2022
    6
    没有中文为啥网址用 zh 开头
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    7
    @hccsoul 因为 Cloudflare 速度太慢了,所以用 hk 的机器反代了
    ClarkAbe
    ClarkAbe
    Nov 21, 2022 via Android
    8
    稳不稳, 会不会接受大陆机关审查......要是已经润了当我没说
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    9
    @star7th 所以建议使用 Cloudflare R2 或者 Cloudflare over B2 ,或者找个流量联盟的机器套上 CF ,也都不收流量费用。做内容缓存和托管的话,因为服务器数量多,很容易碰到缓存不一致的问题。下载可以直接弹出来,新建 atag 并 atag.click 就可以。
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    10
    @ClarkAbe 稳定性方面,这个项目脱胎于我自己其他项目的需求,所以不会随便放弃,其他项目也还需要这个项目。另外一个节点挂掉了也没关系,其他节点可以无缝顶上。隐私方面,之后会加上 SNIProxy 模式,这样的话 FastBlob 只是一个 TCP 的 relay ,不负责 TLS 。
    thyyn
    thyyn
    Nov 21, 2022
    11
    测试下载直连无法下载.似乎挂梯子也不行.
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    12
    @hteen 修复了
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    13
    @yehoshua 系统和网络环境是啥?我这没问题
    thyyn
    thyyn
    Nov 21, 2022
    14
    @hzcer Mozilla/5.0 (X11; Linux x86_64; rv:106.0) Gecko/20100101 Firefox/106.0 错误好像是 CORS Failed 网络是广东移动
    46fo
    46fo
    Nov 21, 2022
    15
    思路不错 有同样的开源实现可以自己搭的那种吗
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    16
    @yehoshua Firefox 对 CORS 的处理确实和其他浏览器不太一样,我需要再修改下源站的 CORS header 设置
    yanwen
    yanwen
    Nov 21, 2022
    17
    @yehoshua 我也是这样的问题。无法下载。

    系统是 macos 10.15.7 浏览器 firefox 广州电信。
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    18
    @xdeng 随便使用一个 web server 反代就可以了
    thyyn
    thyyn
    Nov 21, 2022
    19
    @hzcer 这么一说,我换 chrome 确实是好的.
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone❤️1
    20
    @yanwen
    @yehoshua
    你们可以先用 Chrome 测试一下,这个是背后源站的设置问题,跟 FastBlob 中间层没啥关系。
    suyuyu
    suyuyu
    Nov 21, 2022
    21
    要科学才能访问么
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    22
    @suyuyu 不需要
    penzi
    penzi
    Nov 21, 2022 via Android
    23
    使用境外服务器总是会遇到,某些城市的某个运营商的网络下无法访问。
    protonme
    protonme
    OP
    Nov 21, 2022
    24
    @maggch97 所以使用了多个不同地点不同服务商的服务器同时提供服务,这样就不会出现在某些城市的某个运营商的网络下无法访问的情况
    penzi
    penzi
    Nov 21, 2022 via Android
    25
    @hzcer 你提供的 sdk 总是需要去读 server list 的
    swhhaa
    swhhaa
    Nov 21, 2022
    26
    我还以为是类似 115 / 6 盘之类的工具...细看才知道是分发...
    protonme
    protonme
    OP
    Nov 21, 2022
    27
    @maggch97 提供的 SDK 不需要读 Server List 的,靠的是 DNS CNAME 运行的。全程与用户交互的都是你自己的域名,没有涉及到 FastBlob 的 API 。
    ClarkAbe
    ClarkAbe
    Nov 21, 2022
    28
    @hzcer 好吧...但还是希望能有一份 TOS 文件来列出服务范围......看了下支付是加密货币....感觉挺适合用来做资源分发的.....
    slowman
    slowman
    Nov 21, 2022
    29
    明明支持 h2 ,为什么会有这么多连接,有必要吗?
    slowman
    slowman
    Nov 21, 2022
    30
    感觉挺有意思的,mega.nz 的下载也是类似的玩法,不过 mega 的服务器似乎都在欧洲,而且感觉有限速。
    ftxg
    ftxg
    Nov 21, 2022 via Android
    31
    马克一下,最近可能有需要
    protonme
    protonme
    OP
    Nov 21, 2022
    32
    @1423 支持 H2 的,这个应该是 Surge 的显示问题?或者 Chrome 的调度问题?理论上 Chrome 应该会自动复用同一个 H2 链接的。
    slowman
    slowman
    Nov 21, 2022
    33
    @hzcer 看起来是 7.proxy.fastblob-endpoint.com. 这些没有 A 记录,所以在重试
    slowman
    slowman
    Nov 21, 2022
    34
    未来的 SNIProxy 模式难道不会被用于翻墙吗
    这个服务目标是作为 cf 或其他 cos 的前端,但 cf 本身就可以这么玩吧
    尤其 cf 的 ip 们虽在海外很容易都 anycast 到同临近地域,但在国内往往是不同的海外地域
    是不是可以直接用本项目的思路直接给 cf 做加速
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    35
    @1423 sniproxy 确实有这样的问题,至于怎么防止这个问题要再考虑考虑。
    应该可以,不同的域名 CF 优选不同 IP 。
    SgtPepper
    SgtPepper
    Nov 21, 2022
    36
    测试文件 firefox 无法下载 edge 可以
    tftk
    tftk
    Nov 21, 2022
    37
    请教下适用场景是什么,跟 cdn 有啥区别呢?
    slowman
    slowman
    Nov 21, 2022
    38
    不了解前端,请教一下,SDK 的示例是不是有问题
    ```
    const url = "https://example.website.fastblob.com/big-buck-bunny/Big%20Buck%20Bunny_1080p_30fps.mp4";

    const response = await fetch(url);
    const blob = await response.blob();
    const newURL = URL.createObjectURL(blob);
    console.log(newURL);
    ```
    上面会报错,改成 const url = "https://3.example.website.fastblob.com/big-buck-bunny/Big%20Buck%20Bunny_1080p_30fps.mp4"; 这样才可以,但下载源就只有一个了
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    39
    @1423 前面还有
    import fetch from "@fastblob/fastblob-fetch";

    确实比较容易让人误解以为和 window.fetch 是同一个 fetch
    protonme
    protonme
    OP
    Nov 21, 2022 via iPhone
    40
    @tftk 比国内 CDN 便宜,比国外 CDN 快且便宜
    itfanr
    itfanr
    Nov 21, 2022
    41
    厉害啊
    vincent321
    vincent321
    Nov 21, 2022
    42
    卡一个
    whileFalse
    whileFalse
    Nov 21, 2022 via iPhone
    43
    1 刀 1t ,这个定价 cover 得住吗
    lizhenda
    lizhenda
    Nov 21, 2022
    44
    360 极速无法下载,Chrome 可以
    protonme
    protonme
    OP
    Nov 21, 2022
    45
    @whileFalse 用的都是比较便宜的大流量服务器,成本上还是 cover 得住的。不过这只是试运行的优惠价,后续还是要根据具体的运行成本进行重新定价的
    protonme
    protonme
    OP
    Nov 21, 2022
    46
    @whileFalse 目前这个定价确实有点慈善定价了,为了后期的可持续发展以及人力开发成本还是要调整定价的,目前更多的还是看看这个的市场需求有多大以及进行一下 Alpha 测试。
    edis0n0
    edis0n0
    Nov 22, 2022
    47
    我为什么不用免费不限速的 wetransfer 呢,盈利方式是网页背景图广告,公司规模还不小,基本不用担心文件被篡改或不稳定,随时满速
    protonme
    protonme
    OP
    Nov 22, 2022
    48
    @edis0n0 文件分享服务现在市面上很多了,这个更多是分发服务。FastBlob 的受众更多是网站站长,是类似 CDN 的一个服务。
    haoxuexiaoyao
    haoxuexiaoyao
    Nov 22, 2022
    49
    有开源的分发么
    garyvalue
    garyvalue
    Nov 22, 2022
    50
    支持网站反代吗
    fox233
    fox233
    Nov 23, 2022
    51
    用不了阿 不支持国内付款吗
    macy
    macy
    Nov 23, 2022
    52
    除了网页端,能用命令行下载么?
    Envov
    Envov
    Nov 23, 2022
    53
    做的很好,唯一问题就是害怕跑路
    flyqie
    flyqie
    Nov 23, 2022
    54
    UI 这边捉个虫:

    https://hk.dash.fastblob.com/billing 的 Add Bandwidth 可输入负数。。
    protonme
    protonme
    OP
    Nov 24, 2022
    55
    @macy 目前没法,但你可以用 Node.js 封装一个。之后应该会出 Golang SDK ,这样就可以编译成命令行了。
    protonme
    protonme
    OP
    Nov 24, 2022
    56
    @haoxuexiaoyao 目前没有开源的,你可以直接用 webserver 反代
    protonme
    protonme
    OP
    Nov 24, 2022
    57
    @garyvalue 网站反代不在支持的范围内
    360kabasiji
    360kabasiji
    Feb 14, 2023
    58
    大佬停止维护了吗?
    aec4d
    aec4d
    Apr 17, 2023
    59
    挺厉害的,下载很快
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4565 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 89ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.