DNS域名解析过程
当用户在浏览器中输入 www.abc.com 时
- 浏览器会检查缓存中有没有这个域名对应的解析过的ip如果缓存中有,解析过程就结束。
- 如果浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的 DNS解析结果。
以上还没有使用域名解析服务器,因为都是在本地完成的
- 操作系统将把这个域名发送给这里设置的LDNS 也就是 本地区的域名服务器,如学校的DNS服务器,电信联通 等。
- 如果LDNS没有命中就直接到 Root Server域名服务器请求解析。
- 根域名服务器返回给本地域名服务器一个所查询域的主域名服务器(gTLD)地址,gTLD是国际顶级域名服务器 如 .com .cn .org
- 本地域名服务器再向上一步返回的gTLD服务器发送请求
- 接受请求的gTLD服务器查找并返回此域名对应的 Name Server域名服务器的地址。这个 Name Server 通常就是你注册的域名服务器,例如你在某个域名服务器提供商申请的域名,那么这个域名解析任务就由这个域名提供商的服务器来完成。
- Name Server 域名服务器会查询存储的域名和IP的映射关系表,在正常情况下都根据域名的得到的IP记录,连同一个TTL值返回给 DNS Server域名服务器。
- 返回改域名对应的IP和TTL值Local DNS Server 会缓存这个域名和IP的对应关系,缓存时间由TTL控制。
- 把解析的结果返回给用户,用户根据TTL值缓存在本地缓存中,域名解析过程结束。
实际生活中可能不止这10个步骤,因为Name Server可能存在多级,或者有一个GT来负载均衡控制,
JVM中也会缓存DNS的解析结果,这个缓存是在InetAddress类中完成的,缓存时间有两种缓存策略:
- 正确解析结果缓存
- 失败解析结果缓存
域名解析方式
A记录,将多个域名解析到一个IP地址,但是不能将一个域名解析到多个IP地址
MX记录,可以将某个域名下的邮件服务器指向自己的 Mail Server
CNAME记录,Canonical Name(别名解析) 为一个域名设置一个或多个别名
NS记录, 为某个域名制定DNS解析服务器,也就是这个域名有指定的IP地址的DNS服务器去解析
TXT记录,为某个主机名或域名设置说明。
CDN工作机制
内容分布网络,在Internet中增加一层新的网络构架、将网站的内容发布到最接近用户的网络边缘、使用户可以就近去的所需的内容提高用户访问网站的响应速度。 CND缓存静态数据,如CSS、JS、图片和静态网页等数据,从而加速网页数据内容的下载速度。
引用一个网上的例子 :
A家的网速 100M的,但他只用了10M的速度,B家的网速是10M的,但是他需要15M的速度才行。怎么办呢。 C是一家CDN服务商,在A家有个节点(就像A是一个赞助商一样)B在C家买了CDN加速服务。当B的速度不够的时候,CDN加速就会选择有节余的节点来帮B,提高B的速度。这样B的速度就能达到或超过15M ,皆大欢喜。A没浪费,B速度有了,C赚了钱。 当C的节点在全国都有,非常多的时候。那么你用C家的CDN加速服务,你就会健步如飞了。
CDN= 镜像+缓存+整体负载均衡
负载均衡
对工作任务进行平衡、分摊到做个操作单元上执行,可以提高服务器响应速度及利用效率,避免软件或硬件模块出现单点失效,解决网络拥塞问题,实现地理位置无关性、
通常有三种负载均衡架构,
- 链路负载均衡
- 集群负载均衡
- 操作系统负载均衡