我经营的一些网站和产品的访问量越来越高,付出的 cdn 流量成本(主要是图片资源)也越来越大。抱着节省成本的想法,我尝试在网络上找下有没有便宜的 cdn 商家。 像阿里云、腾讯云、七牛云,这些公有云 cdn 的价格都大同小异,我感觉即使从这一家换到另一家,也节省不了多少成本,同时还增加了迁移的麻烦。因此我把目光投向传统机房,预感可能越接近机器底层,能优化的空间越大。
经过几天的考察,发现很多非热门地区的机房都或多或少都有一些闲置的优惠产品,甚至其中也不乏优质带宽机器。特别是三四线机房,线路测试其实还不错。很明显这些闲置资源没有得到充分利用。一个点子在我脑海中酝酿了。
假如我把各地的闲置机器组织起来,把它们当成一个个节点,组建起一个分布式网络,自动容灾切换,岂不就是一个廉价的自建 cdn 方案了? 顺着这个思路,我去找一下开源的 cdn 软件 ,看看有没有现成的解决方案。
然而事情没有我想的那么简单。开源 cdn 并没有很好的容灾切换机制,无法实时避障。 它核心原理里,用域名 cname 的方式指向某个节点 ip ,当节点挂了的时候,由于域名 cname 解析变更有 10 分钟以上的缓存,所以必定会导致用户有一段时间的访问故障。 我现在探索的是把各地机房集成到一起,其中机器节点的可靠性是参差不齐的。如果想做成一套 cdn ,那么就必须要假设节点是不可靠的,随时可能故障的,然后为此设计一套完善的容灾解决方案。
既然找不到现成的开源解决方案,那就自己动手写代码实现吧。
我边啃着玉米,边用笔在纸上画着逻辑交互图。 经过一阵子的反复斟酌,基本逻辑已经成型。
1 ,这套程序主要有两个角色,调度服务器和节点服务器。调度服务器架设在阿里云 k8s 上,保障高可用。而节点服务器则是分布在各地机房,做好可能会故障、随时容灾切换的准备。
2 ,调度服务器的作用是导流和容灾,将用户流量以重定向的方式导向可用的节点,同时避开故障节点,做到实时无缝切换。
3 ,节点服务器的主要作用是拉取源文件到本地缓存,从而被用户访问。
4 ,节点服务器跟调度服务器之间要用某 tcp 协议实时连接监控,监控粒度细分到每个文件,方便调度服务器实时避开故障节点,这样才能保证故障时候,用户访问的每个链接都可以正常切换访问。这里实时性是非常重要的,也是容灾方案的核心。
于是我花了一个多月的时间去写代码来实现这个逻辑。核心代码其实写得很快,但是为了保障稳定性,增加了非常多的异常容灾措施,要花时间不断测试不断重写。 初期只放三个异地机房节点,把流量切进来看看。 为了保险起见,先从小的做起。我一开始切日均 10G 流量过去,让它跑几天。 几天后,没问题。 试试日均 50G 流量? 50G 跑了几天,ok 。日均 300G ? 依然正常运行 。
现在,已经完美运行了一个月,每天承受超过 1000G 流量,暂时没发现有故障现象。我以及一些朋友的很多产品都在用。我刻意关掉其中一个节点,调度服务器马上切流量到其他节点。我刻意关闭全部节点,流量也马上转到源站。整个过程中,只要调度服务器正常运作,那么,无论节点故障与否,用户都将继续无感知地正常访问图片。 而调度服务器直接运行在阿里云 k8s 上,可靠性是非常高的。因此整套架构的可靠性很高。
有了这个架构,如果需要承受更大流量,我只需要增加节点数即可。而全国范围内的机房机器多的是 ,我可以随时租机器来新增节点。当我意识到有规模化运作大流量的可能性后, 我决定把 cdn 能力包装出去 ,商业化运作。于是注册并备案了大风云网, 访问地址是 www.dfyun.com.cn
大风云 www.dfyun.com.cn 严格来讲不是传统 cdn ,它是另一种内容分发机制,基于传统 cdn 以及传统机房机器, 用软件技术实现资源整合,是应用层面的一种微创新,在图片访问,文件下载等这些场景下可以成倍地降低流量成本 ,成本低于 0.05G/元 , 降低到公有云 cdn 价格的四分之一以下(只对比平时价格,不考虑搞活动的临时特价),几乎是全网 cdn 流量成本最低之一了。
101
h280254082 2022-09-05 20:19:40 +08:00
@star7th 所以我的重点在于你的价格太贵了。。。你对于商业 CDN 的价格完全不了解 12M/s 是按照你说的当前一天 1000G 流量算出来的 商业 CDN 的价格都是按照 xxx 元 G/s 一个月来算的 你的价格比商业 CDN 贵很多 而不是说你的规模很小 我是说你在规模这么小的情况下价格还远高于商业 CDN 这生意不好做的
|
103
wdhwg001 2022-09-05 20:27:22 +08:00
|
104
star7th OP @h280254082 我了解过商业方案,结论是我这个依然有市场。你看一下本贴的讨论以及收藏数就行了,真的毫无价值是不会被人看到的。目前商业方案都是设置各种各样的门槛才能优惠的,比如最低消费,比如流量限制等等。你如果真的坚持认为百度云加速性价比最高,你可以基于它包装一层拿出来卖吧。另外就是我也没打算跟他们直接正面竞争,我就找个细分市场,小赚一笔。真的大到需要跟他们正面竞争的时候,我已经有足够的实力去规模化降低成本了,到时候自有办法。
|
105
sgissb1 2022-09-05 20:30:30 +08:00
看了一会才反应过来,原来是通过调度手段来降低成本,这是一个好方法。
不过事实上,现在减少图片场景下,cdn 流量的做法,逐渐的有两种在渐渐行程。 第一种就是用 heif 或者更高压缩比的压缩标准来替代,图片不同于视频,没有对解压缩过程中有太强的实时性要求,只需要浏览器或者客户端支持就行。 另一种就是渐渐的开始调用 webrtc 的 p2p channel 来降低服务器流量。这个我看到有几家厂家在做,其实最典型的还是我们知道的某下载器厂商,他们做视频 web p2p 方案的多。图片的话也不会太难。 接下来 p2p 网络协议还会继续火起来一段时间。 |
106
star7th OP @wdhwg001 说实话,我即使告诉你了,你也不会考虑成为我的客户的。目前我都是租各个机房的,基本上啥地区都有。只是说我出于成本考虑,不会一下子上那么多节点。
|
107
star7th OP @xx3122 像你这种情况,应该就是要做一个可视化界面,让用户输入信息。然后自己写程序生成 nginx 配置。然后 reload nginx
|
109
h280254082 2022-09-05 20:51:03 +08:00
@star7th 百度云那个和 CDN 价格当然是不一样的,商业 CDN 的价格是比你低出一个数量级的,更不要提 PCDN 了,我只是想告诉你你可能收到的"廉价"资源没有那么廉价,比如你可以参考快手的 CDN 支出,财报里面有公布的。当然你坚持也没事 我就出于善意的说一说 如果能节约你时间精力和经济投入那自然很好 如果你有你的想法 那也很好
|
110
star7th OP @h280254082 没事的啦。我只是在细分领域赚点小钱,不至于跟巨头正面竞争。我还是有我的定位的,跟巨头错开一些就好
|
111
xx3122 2022-09-05 21:32:04 +08:00
@star7th 你能弄不?之所以不直接把配置直接给用户,目的就是用作商业,这样用户自己完成,像你这个 cdn 一样,你做的话大概什么价格谢谢
|
112
israinbow 2022-09-05 21:52:00 +08:00 1
OP 这个做得好啊, 让我想到了谷歌购买大量城市中预铺设冗余的网线, 作为 YouTube 的内容分发线路, 从而用极低的成本维护了这个体量最大的视频网站. 祝愿能好好运营下去, 给中小型用户更多的选择👍
|
113
star7th OP @xx3122 我一般不帮人做产品,我只做我自己的产品。好处是我的产品可以规模化,持续存在。而帮别人做东西只是一次性的钱。真的要我做的话我会收费蛮高,比如收费三万,因为我要额外花时间去了解你原有的项目,去跟你原有的项目集成。我倒比较建议你找专门接外包的,可能价格低一些。如果真的要联系我,打开这个网站点击右上角就可以看到邮件联系方式 https://www.dfyun.com.cn
|
115
o00o 2022-09-05 23:21:31 +08:00
之前用微博图床的时候考虑到以后可能存在的图床失效的问题 做过一个类似的,默认走微博图床,图床加载失败自动加载自有服务器图片
|
116
star7th OP @o00o 其实微博图床主要是增加了一个 refer 限制,现在应该还是可用吧。我几年前也用微博图片。现在很久没用过了。
|
117
Aloento 2022-09-06 05:47:13 +08:00
支持一下,以后有机会上个车
|
121
o00o 2022-09-06 08:56:07 +08:00
目前是只能 cdn 图片?什么时候能 cdn 所有文件的时候说一声
|
122
wangxiaoaer 2022-09-06 09:00:55 +08:00
“大风云 cdn 并不是传统意义上的 cdn ,并不打算替代传统 cdn 。而是配合传统 cdn 使用。”
对比价格的时候和传统 CDN 对比,对比功能的时候就不一样。这样维度不统一啊。 |
123
ixinshang 2022-09-06 11:25:57 +08:00
好久不见,第七星尘
|
125
xx3122 2022-09-06 15:02:36 +08:00
是的,问题的怎么大规模的给别人使用
|
127
star7th OP @wangxiaoaer 对比价格,是因为用户关心价格 ; 对比功能,是阐述技术原理。这是看问题得角度不一样,并不矛盾。你成矛盾,大概率你不是目标用户,没有节省流量成本需求
|
128
nightsky 2022-09-06 23:10:37 +08:00
有没有三四线的便宜的云服务器租用,最好老牌一点,哪怕性能低点
|
130
blackboar 2022-09-08 15:23:47 +08:00
我搞 idc 的,楼主看看有没有合作的可能性啊?全国各地有一些直营节点。
|
132
windyskr 2022-09-09 01:39:53 +08:00 via iPhone
支持!
|
133
robinchina 2022-09-13 09:09:31 +08:00
收藏了,比腾讯云打折还便宜····
|
134
hanguofu 2022-09-13 09:21:36 +08:00
好奇问问: 楼主的这个 cdn 有没有 大厂 的 同类产品的 限制访问次数或者使用 TOKEN 鉴权 之类的功能 ?
|
135
star7th OP @hanguofu 我有一个默认的防盗链设置,每个 url 都会生成长度是一个月左右的时间戳以及签名(类似你说的 token )。这个设置尚未开放给用户自定义,但是后台已经支持了的。我晚点再做可视化界面给用户设置。
|
136
luojianxhlxt 2022-09-13 16:31:51 +08:00
不知道以后有没有对象存储啊
|
137
star7th OP @luojianxhlxt 以后看看用户需求吧
|
138
ICKelin 2022-09-13 22:58:04 +08:00
支持。
|
139
baokk 2022-09-15 13:28:41 +08:00
目前知道起步能拿最低价格的是聚合 cdn0.07/G ,量大大厂可以做到低于 0.05.楼主的产品类似是文件存储?和 cdn 有很大差别,不过把图片和静态文件加速之后网站访问速度也很快了,希望能做下去
|
140
star7th OP @baokk 不是文件存储。跟传统 cdn 的机制不一样。但也是一种 cdn ,Content Distribution Network , 文件分发机制不一样而已。
|
141
ETO 2022-09-16 09:46:07 +08:00
楼主能做个帮助文档吗?
|
142
star7th OP @ETO
其实使用很简单。 假如你原来的图片访问地址是 www.website1.com/test.jpg , 那么,去 dfyun 申请接入,通过审核的话,dfyun 会分配一个加速域名给你,比如说加速域名是 www.website2.com . 那么你的加速图片链接就是 www.website2.com/test.jpg ,就是改一下域名即可。 |
143
Gaays 2022-09-16 09:56:13 +08:00
官网 html 加个 title 和 icon 吧
|
144
wzy44944 2022-09-16 09:57:21 +08:00
统一加速域名的问题就是一个客户出问题,管局看到是小域名会直接封禁二级域名,所有客户都会受影响。这个还是其次,主要还是法务风险,很多所谓的免费廉价资源是薅的运营商的单线 idc 机房的羊毛,就是这个机房已经部署了多个商业 cdn 的服务,平时利用率不够,就有些空闲出来,会被内部人员倒卖,要是被商业 cdn 发现利用率达不到,追查下来就会被牵连。这种资源比较好的利用方式应该还是倒卖给其他人,自己不要直接接手。
|
145
mringg 2022-09-16 09:58:37 +08:00
这个需要 “B12 内容分发网络业务( CDN 许可证)”吧?
|
147
docxs 2022-09-16 10:10:36 +08:00 via iPhone
雾计算?利用低廉的服务器做雾节点,腾讯云的 PCDN 就可以吧
|
149
star7th OP @wzy44944 不是走内部人员倒卖路线。是走正常的购买路线,不会被运营商封。至于公用域名的问题,以后用户多了可以推出自定义绑定域名的方案。
|
151
id7368 2022-09-16 12:17:52 +08:00 via iPhone
申请了 等待审核中
|
152
Kinnice 2022-09-16 14:18:44 +08:00
看起来如果你的 302 接口挂了,整个 CDN 都 GG 了
|
154
star7th OP @Kinnice 你说的 302 接口,应该是指我的调度服务吧。调度服务器确实是这个 cdn 的关键,所以我是跑在阿里云 k8s 集群上的,可靠性还是相对高的。
|
155
monson 2022-09-16 19:22:52 +08:00
其实是传统的 CDN 啦,只是着眼点不同,放弃质量和用户体验去追求性价比。
就像做手机大家都想做苹果华为,次一点也要 vivo 小米,而你却跑去非洲做百来块一部的传音。市场是有的,但这条长尾有多长就不好说了。 |
156
DeWjjj 2022-09-17 03:23:15 +08:00
需要对象存储,cdn 其实对我目前的业务来说没有太大的分发压力。
|
157
star7th OP @DeWjjj 要廉价的对象存储可以考虑用这个方案(不是我的) https://www.ladydaily.com/
|
158
atshow 2022-09-18 01:19:39 +08:00
针对 wordpress 站点,搞个插件支持,一键开启 CDN 。免去配置。
|
160
NUT 2022-09-18 15:49:55 +08:00
比较好奇楼主用什么语言栈写的?
|
161
hgg12580 2022-09-18 17:33:51 +08:00
什么原理? 302 转发吗?
|
164
i4oolish 2022-09-19 15:17:17 +08:00
收藏一下,以后研究研究
|
165
myqoo 2022-09-21 14:28:48 +08:00
Web 场合调度用 302 有些费劲,每个资源白白增加一次请求延迟,而且还依赖调度服务器的稳定性。
直接让浏览器自己调度就可以,前端用 Service Worker 拦截请求然后负载均衡,参考 https://github.com/etherDream/freecdn |
166
star7th OP @myqoo
你这个项目思路挺好,我也蛮欣赏。但你的项目跟我现在这个项目是不同的东西。 我需要在服务端层面控制很多东西,比如节点的 url ,节点的权重,用户的 ip 属地调度等等,纯前端无法满足需求 我可以无侵入客户的网站产品。用你的 freecdn 则必须引入 js 脚本,这个侵入性太强了,不宜用来做面向客户的产品。 我的 cdn 可以用于 app 的图片和视频(实质上这部分是客户主要的流量),而你的不能。你的只能跑在支持 js 的浏览器上。单单这一点我就必须放弃 freecdn 。 你的 freecdn 会导致初次刷新,影响用户体验。 要更新节点 url ,加速文件等,要提前用命令行操作生成。这导致使用范围大大受限制。我开放 cdn 服务出去,我的客户要加速什么文件,我怎么能知道呢。 总之我就是觉得 freecdn 是一个使用范围比较窄的项目,在某些场景下才能发挥作用,不适合用作 dfyun 的调度方案。 |
167
jason56 2022-10-08 10:43:37 +08:00
后续会支持 websocket 吗
|
169
star7th OP 更新:现在 dfyun 已经支持绑定自定义域名。同时管理后台支持刷新节点缓存文件。
|
170
burninggit 2022-12-01 14:07:28 +08:00
有试用额度吗? 比如每个月免费 10 个 G 或者 其他的
|
171
star7th OP @burninggit
当月内免费试用!例如你 12 月份接入大风云,则 12 月份整个月是免费期。这个优惠力度非常大了。至于说每个月免费 10G ,则没有必要。当前价格已经跌倒冰点,10G 也就是五毛钱。没必要省。 |
172
as9567585 2022-12-08 15:04:06 +08:00
什么量级才能接入能,建议直接在网站上明盘~
|
173
star7th OP |
175
wbzd 2022-12-16 11:55:55 +08:00 via Android
重大 bug:注册时,邮箱 @前面的部分不能有小数点。如: [email protected] ,提示格式错误。
|
177
Lilalaaa 2023-08-14 15:27:12 +08:00
123 网盘的直链都已经做到你这个价格了,并且人家节点质量比你好,存储成本低( 19 元/T/年)
https://20692631.s21i.faiusr.com/2/ABUIABACGAAgvarnpgYoxNCS8gcwmwk40wQ.jpg |
178
star7th OP |
181
Lilalaaa 2023-08-18 02:48:42 +08:00
更重要的是我多次对比过你们两家的节点质量,综合延迟/稳定性/丢包,他家明显好过你家(虽然总体来看半斤八两,跟大厂正价产品没得比),并且没有二次重定向流程,首包时间更短。
另外,你说你「调度服务器架设在阿里云 k8s 上,保障高可用」,那么你是否考虑过调度服务器 IP 遭遇 DDOS 攻击相关问题?在此方面是否有预案?据我了解,阿里云防御产品价格是相当高的。你的方案极度依赖于调度服务,只要调度服务出现异常,服务将完全不可用;而传统形态 CDN 产品由于节点数量多且分散,并不存在此问题。 |
182
star7th OP @Lilalaaa
去搜索了解了下 明赋云 ,原来是 p2p 的 cdn 。确实跟 p2p 是很难比便宜的,p2p 的成本太低了。 我只能说,敢直接把域名解析到 p2p 的 ip 去,可靠性很差的。某个地方节点挂了,那个地方的用户至少有 10 分钟不可用。 我的 dfyun ,节点是实时容灾的,根本不需要担心节点质量好不好的问题。 调度服务器 IP 遭遇 DDOS 的问题我自然想过。遇到的时候,我就再前置一层商业 cdn 来挡一下呗,只前置调度服务器,费用可控。 |
183
star7th OP @Lilalaaa
dfyun 采用 跳转机制 就是为了避开节点故障时候的那 10 分钟(因为 dns 更改节点 ip 后,至少十分钟才能生效)。任何不使用跳转机制的 cdn ,可靠性就等于节点的可靠性。大厂的节点自然可靠,但是,用 p2p ,或者乱七八糟服务器节点的 cdn ,节点 ip 真的容易挂。真的没法在可靠性上跟 dfyun 比。dfyun 的节点质量无论好坏,都能容灾,而它不能。 |
184
Lilalaaa 2023-08-18 20:54:07 +08:00
@star7th 他家 CDN 节点 IP 段我查了一下,都是机房 IP 段,基于 p2p 的 pcdn/mcdn IP 不应该是家宽段吗?
我拿大文件测了一下,多线程峰值可以跑到 60MB/s ,应该没有哪个地区(联通)家宽上行口子给这么大吧 并且,他家和商业 CDN 一样是走标准端口 80/443 跑的,家宽不会给开这俩端口吧 |
185
tomato1111 2023-08-19 19:55:45 +08:00
一年过去了,想知道大风云现在运营的怎么样了,一天承受多少流量? 有多少用户接入了? 可以透露下吗
|
186
csulyb 2023-08-20 08:12:31 +08:00
503 了 不知道是业务的问题还是官网的问题
|
187
star7th OP @Lilalaaa
我去 ping 了一下,那大概懂了,他是包了辽宁的一个小机房的一条带宽来提供服务。也是 ok 吧,唯一的风险就是单点风险,因为他全国都走同一个机房节点。还有就是他的带宽,是多人共享的,如果多一点的 vip 的话,带宽也会受限制。单机房的总带宽上限是有限的。 |
189
star7th OP |
190
star7th OP @tomato1111
另外就是,即使数据不理想,我也不会降低标准去迎合一些小客户,因为麻烦,得不偿失。 目前我还是坚持接入 dfyun 的标准是,域名已备案,产品月流量大于 200G 。 至于有多少接入,就随缘吧,反正收入不靠它吃饭。 |
191
star7th OP 换了一拨服务器,现在整体稳定性提高了不少。客户流量也多了起来。如果有后面的人看到此贴,欢迎来尝试。
|