CDN闲谈

1. 为什么写这个文章

写这篇文章的起因是想把之前工作学习到的内容都记录下来,深究下有下几个原因:

  1. CDN涉及的知识点比较多,从技术到业务,可以先做个记录
  2. 很多业务知识想沉淀,虽然离开这个行业,但是很多经验可以复用
  3. 给更多有CDN消费需求的同学做下指引

再说一下本人,在独立第三方CDN服务商企业工作四年半,主要负责公司各类运营侧的系统研发。这里不得不感谢老东家,老东家推崇无边界、不对自己设限,这样的环境帮助我养成了了解上下游业务情况的习惯。

2. 请求从发起到看到结果

作者在校招进老东家的时候,甚至今年面试腾讯,都碰到下面这个问题:

用户从浏览器的地址栏输入网址,按下回车之后到界面展示出结果,背后都经历了什么

只能说刚毕业时的作者太年轻,当时回答了

  • tcp三次握手
  • http连接建立在tcp之上
  • http的不同请求
  • 请求经过DNS解析
  • 后端的web服务器如何运作服务
  • 前端如何渲染界面
  • tcp四次挥手
  • 考虑到面试的是CDN公司,简单的回答如果接入CDN,先从CDN返回结果

进入公司之后,才发现坐着只是简单的回答了框架,可能也就20%~30%,作为一家CDN公司,非常看重成员对网络流程的理解,其实上面的回答可以继续深入

  • 本地的host解析,getHostByName的系统调用
  • DNS分为localDNS、根域服务器、顶级域名服务器
  • 网络的路由转跳
  • CDN的多级缓存,回源

上面举了一些可以深入的例子,也是作者再进入公司后,实习期和试用期逐步了解起来的。

说了这么多,其实还是想引出来,CDN其实可以算是现在网络中的基建,网友现在的衣食住行离不开流行的app之外,也离不开CDN,就比如大家经常刷的抖音,背后就有大量的CDN服务在做支持。

3. CDN基本概念

内容分发网络(Content Delivery Network,简称CDN)是建立并覆盖在承载网之上,由分布在不同区域的边缘节点服务器群组成的分布式网络。

上面的引用是百度上到处可以找到的解释,如果是有想用CDN的同学,我想可以不用再详细说这块的内容了。

再简单总结下CDN是干啥的

  1. CDN供应商将要访问的内容缓存到物理位置离用户最近的服务器上
  2. 用户访问目标资源,DNS通过用户IP定位用户所在区域
  3. 根据用户所在区域,找到该区域缓存服务器,并返回给用户
  4. 用户通过拿到的服务器IP,进行服务访问

这上面的描述当然是尽量精简过的,如果还需要详细了解,可以参照标题2的内容进行深入了解。

4. CDN涉及到的开源软件

  1. Bind--提供name服务
  2. Nginx--提供7层负载均衡的能力
  3. Squid--提供缓存服务的能力
  4. Lvs--提供4层负载均衡的能力
    上面这些,除了lvs,其他三个基本是CDN常用到的基础软件,但是上面的软件都比较旧,市场上有其他新的技术已经可以取代了,大家可以自己再去了解。

这里就挑一个扩展说一下lvs的使用场景。其实简单的理解成做负载均衡是可以的,但是实际场景可以解决一些带宽突刺的问题。

由于localDNS没有参照下发的ttl时间进行ns记录的过期,会导致用户请求一直打到非预想的服务器上,这会导致CDN供应商的单服务器或单节点带宽突刺,带宽增高的影响

  • 服务器负载
  • 节点成本

这里就引入lvs,因为lvs可以挂在vip(这个vip当然不是very important person),是virtual ip,这样可以将vip返回给localDNS,这样即使ttl过期,CDN供应商自己替换vip下的服务器就可以解决带宽突刺

5. 推荐的CDN服务提供商

上面简单介绍了下CDN,那国内好的CDN公司有哪些呢,其实我当然比较想推荐老东家啦,作为CDN服务商,老东家的质量和速度在早期确实在业界掀起一阵清流,pk也是无往不胜,其他厂商也是望尘莫及。

如果是个人用户,推荐云厂商

  • 阿里云
  • 腾讯云

如果是企业用户,推荐第三方服务商

  • 白山云
  • 网宿科技

本篇仅代表个人观点,如有错误或不同意见,欢迎留言指正和交流~

博客地址:https://laocainiao.github.io

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容