star7th · 1 小时 37 分钟前 · 1574 次点击 缘起 我经营的一些网站和产品的访问量越来越高,付出的 cdn 流量成本(主要是图片资源)也越来越大。抱着节省成本的想法,我尝试在网络上找下有没有便宜的 cdn 商家。 像阿里云、腾讯云、七牛云,这些公有云 cdn 的价格都大同小异,我感觉即使从这一家换到另一家,也节省不了多少成本,同时还增加了迁移的麻烦。因此我把目光投向传统机房,预感可能越接近机器底层,能优化的空间越大。 经过几天的考察,发现很多非热门地区的机房都或多或少都有一些闲置的优惠产品,甚至其中也不乏优质带宽机器。特别是三四线机房,线路测试其实还不错。很明显这些闲置资源没有得到充分利用。一个点子在我脑海中酝酿了。 使用开源 or 自己原创? 然而事情没有我想的那么简单。开源 cdn 并没有很好的容灾切换机制,无法实时避障。 它核心原理里,用域名 cname 的方式指向某个节点 ip ,当节点挂了的时候,由于域名 cname 解析变更有 10 分钟以上的缓存,所以必定会导致用户有一段时间的访问故障。 我现在探索的是把各地机房集成到一起,其中机器节点的可靠性是参差不齐的。如果想做成一套 cdn ,那么就必须要假设节点是不可靠的,随时可能故障的,然后为此设计一套完善的容灾解决方案。 既然找不到现成的开源解决方案,那就自己动手写代码实现吧。 基本逻辑 1 ,这套程序主要有两个角色,调度服务器和节点服务器。调度服务器架设在阿里云 k8s 上,保障高可用。而节点服务器则是分布在各地机房,做好可能会故障、随时容灾切换的准备。 2 ,调度服务器的作用是导流和容灾,将用户流量以重定向的方式导向可用的节点,同时避开故障节点,做到实时无缝切换。 3 ,节点服务器的主要作用是拉取源文件到本地缓存,从而被用户访问。 4 ,节点服务器跟调度服务器之间要用某 tcp 协议实时连接监控,监控粒度细分到每个文件,方便调度服务器实时避开故障节点,这样才能保证故障时候,用户访问的每个链接都可以正常切换访问。这里实时性是非常重要的,也是容灾方案的核心。 小试牛刀 开放商用 有了这个架构,如果需要承受更大流量,我只需要增加节点数即可。而全国范围内的机房机器多的是 ,我可以随时租机器来新增节点。当我意识到有规模化运作大流量的可能性后, 我决定把 cdn 能力包装出去 ,商业化运作。于是注册并北岸了大风云网, 访问地址是 www.dfyun.com.cn 结语 ——–搞笑瞬间———– star7th 1 小时 16 分钟前 |
翻译:我们搞了几个便宜机子当节点,所以成本低 |
这个作者是要GAN阿里和腾讯啊
超低价格CDN服务 我们的价格按流量付费,低至 0.05元/G 。 作为对比,腾讯云和阿里云cdn对中小型网站的流量价格在0.20到0.24元/G之间的区间浮动。我们的价格不到他们的四分之一,并且能在低成本的同时,保证服务稳定可用。 |
大厂CDN价格比它还便宜好吧 |
我用的cdn 1T才100¥ 还是大厂 |
有些迷糊,他主节点调度之后,采用重定向的方式到子节点??30x重定向?这样不妥吧? |
webp都不支持,你说节省流量成本?你在教大厂做事? |
这个不应该是后端检测,而是js前端判断才对,读取不到文件,直接再请求读取备用域名就好了,我记得github上有这样的前端代码 |
那网站要是php页面呢? |