面试的时候问的很多问题是关于计算机网络的,而网络中的负载均衡问题又是重中之中,笔者曾经面试大厂的时候就被面试官虐的体无完肤,所以提前掌握了负载均衡问题,并且在此基础上掌握DPVS项目就能吊打面试官 : )
DPVS是爱奇艺开源的用户态高性能负载均衡项目,将传统的内核LVS基于DPDK改造而成。
what is CDN
CDN即内容分发网络,大家可能比较陌生。网络上绝大多数的流量都经过了CDN,对用户来说却是无感的。就是这样一个默默无闻的角色,给我们提供了高速的网络服务。感兴趣的同学可以自行学习。
敖天羽:闲话 CDNzhuanlan.zhihu.comCDN中的技术
CDN本质上是分布式缓存服务器,其中很重要的就是负载均衡。说起负载均衡,准备过后端面试的同学肯定背的滚瓜烂熟了:四层负载均衡LVS,七层负载均衡nginx。没记住的没关系,赶紧记笔记。LVS一个阿里的传奇人物写的,被纳入了linux源码。
why CDN
为什么提CDN呢?原因就是CDN将负载均衡用到了极致。简单介绍一下吧。首先我们用浏览器输入一个网址,浏览器会拿着这个网址的域名向DNS服务器做DNS解析,DNS解析的结果不一定是个IP地址,也可以是CNAME即另一个域名,然后浏览器继续DNS解析,直到得到A记录即IP地址。CDN厂商就能在此做文章了。举个栗子,小白访问了http://www.baidu.com,浏览器第一次DNS得到的是http://www.baidu.com.cdn.com,这个是百度公司在他的域名服务器上配置的,百度买了http://cdn.com公司的服务,浏览器第二次请求http://www.baidu.com.cdn.com,这个域名解析服务交给了CDN厂商http://cdn.com公司的服务器,这个服务器根据小白的源IP地址,确定了小白的地理位置在北京市海淀区,用的是电信宽带,根据算法取一个离小白最近的机房的IP返回给了浏览器作为http://www.baidu.com的最终目的IP,浏览器用这个IP发送http请求,发到了CDN厂商的服务器上,服务器不是一台设备,是一个大机房,公用一个IP,到底那个机器提供服务就取决于负载均衡算法。负载均衡主要有两层,首先是传输层的负载均衡,用了LVS;其次是应用层的负载均衡,用了nginx。决定出给小白服务的机器,请求也就到了那个机器上,这个机器可以理解成一个缓存硬盘,发现有http://www.baidu.com,就直接回给小白,不让就代替小白向百度请求http://www.baidu.com,保存下来,并且返回给小白。这就是CDN的大致流程。
待续