dns的原理和作用


dns的原理和作用  

引言

随着秋季的来临,天气逐渐转凉。在这即将步入严寒的时刻,吒吒辉紧裹被子,却依旧抵挡不住鼻涕在键盘上敲打出的声音。就在大家都沉浸在清晨的梦境中时,他眼中默默流淌的泪水,仿佛在诉说着无尽的心酸和泪水。抛开这些情感铺垫,我们直接进入主题。

开篇

我们继续探讨分布式多级缓存的链路,现在来到网络缓存阶段。若之前没有阅读过相关文章的同学,请务必回头查阅。

小白疑惑地问道:“老吒,网络不都是进行请求-响应数据吗?怎么会有缓存?缓存是做什么的?我为什么需要这个缓存?”

吒吒辉解释道:“网络缓存并非你想象的那么简单。你可能已经使用到了,但不明确其满足的条件、实现原理以及应用场景。在架构中,网络缓存是一个非常重要的组成部分,我们必须深入了解。”

什么是网络缓存?

网络缓存是指在请求-响应阶段,通过使用缓存来提高请求响应的速度。因为只有通信才会涉及网络数据的传输。

有些小伙伴可能会认为,网络缓存是在网络上直接进行的。其实不然,我们可以想象一下一个完整的HTTP请求过程。它采用报文的方式发送数据,根据TCP协议进行数据传输。那么,在网络上是否有缓存存在呢?

实际上,数据通过网络传输是通过电信号完成的(这是一个抽象概念,实际上是通过光缆等进行的)。这个过程本身是直线传输的。如果有缓存存在,可能会导致拥塞。即使有缓存,也应该在路由器、交换机等设备上进行。

这时,可能会有同学提出疑问:“在网络通信上不是有接收数据的网络缓冲区吗?它们不是用来加速的吗?这不是缓存吗?”

吒吒辉强调:“缓存和网络缓冲区是不一样的。网络缓冲区是建立在Socket网络通信基础之上的,它们是为了提高系统每个单元的利用率和系统吞吐量,从而实现多路复用。而缓存则是为了减少对后端服务的请求,提高响应速度。”

以Redis为例,当我们获取数据时,首先要建立连接。此时的缓冲区是指,客户端发送Redis指令,会先存入自己本地的缓冲区,然后再通过网卡将数据发送到网络上。而Redis的服务端也是如此,它接受数据会先存到服务端缓冲区里,然后再获取到Redis服务进行处理。这就是网络缓冲区的作用。

那么,究竟什么是网络缓存呢?简单来说,网络缓存是位于客户端和服务端之间,通过代理或响应客户端的网络请求,对重复的请求返回缓存中的数据资源。接受服务端的请求,并更新缓存中的内容。

Web代理缓存

Web代理几乎是伴随着互联网诞生的。常用的Web代理分为正向代理、反向代理和透明代理。Web代理缓存可以理解为Web代理+缓存的一种技术。

正向代理是为了从源服务器取得内容,用户向代理服务器发送一个请求并指定目标服务器,然后代理服务器向源服务器转交请求并将获得的内容返回给客户端。一般情况下,客户端需要进行一些特别的设置才能使用正向代理。

反向代理则是隐藏了源服务器的存在,由代理服务器改变客户端请求的报文字段,并会传送真实的IP地址。透明代理的意思是客户端根本不需要知道有代理服务器的存在。

这里所说的Web代理缓存是指使用正向代理的缓存技术。Web代理缓存的作用类似于浏览器的内置缓存,只是它位于浏览器和互联网之间。简单来说,就是把上游服务的数据缓存到代理软件处。

当通过代理服务器进行网络访问时,浏览器不是直接到Web服务器去取回网页,而是向Web代理发出请求,由代理服务器来取回浏览器所需要的信息并传送给浏览器。而且,Web代理缓存有很大的存储空间,不断将新获取的数据存储到本地存储器上。如果浏览器所请求的数据在Web代理的缓存上已经存在并且是最新的,那么就不需要重新从Web服务器取数据,而是直接将缓存的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

对于企业而言,使用Web代理不仅可以节省成本,还能提高性能。对于Web代理缓存而言,比较流行的是Squid软件,它支持建立复杂的缓存层级结构,拥有详细的日志、高性能缓存以及用户认证支持等功能。Squid还支持各种插件,可以进一步扩展其功能。

除此之外,还有边缘缓存、CDN等内容需要探讨。网络缓存的本质是减少请求响应之间的网络时间。正向代理和反向代理是两种不同的方式,分别对应外网和内网的应用。CDN的回源受到多种因素影响,包括缓存时间、URL参数的变化、访问量等。而CDN资源的获取可以采用推和拉两种模式。

网络缓存是为了减少请求响应之间的网络时间而存在。我们需要深入了解其工作原理、应用场景以及如何实现优化。只有这样,才能更好地利用网络缓存提高系统的性能和效率。

  dns的原理和作用