赞
踩
有些设备位于客户端或者网络边缘,能够迅速响应用户请求,避免给cpu和数据库带来压力,比如,本地缓存,内容分发网络,反向代理等。
有些设备处理能力能够线性扩展,易于伸缩,应尽量作为业务主体,如集群能够扩展的服务节点
有些设备对系统有全局性影响,需要时刻保持容错备份,比如服务注册中心,配置中心。
有些是单点设备,比如系统路由,网关,数据库等。
对系统进行流量规划时,应该考虑到部件特性
服务器对于客户端请求的响应中附带一些条件,要求客户端在想要发出相同请求时,先判断是否满足条件,如果满足,就直接使用上一次服务器给予的响应来替代,不必重新访问。
通过不同条件,客户端缓存又分为:强制缓存和协商缓存
比如收到请求的10分钟内有效,那么除了用户主动刷新页面,对于新开窗口,浏览器地址输入,前进,后退均可生效。
Header参数是一个截止时间参数。
问题:
受限客户端时间。
无法描述不缓存。
无法让私有资源不被代理服务器,内容分发网络缓存。
如果expire和cache-control起冲突,会以cache-control为准。
参数:
需要浏览器和服务器协商一次,检查客户端的资源是否过期了,会有另外的开销。和强制缓存是并行运行的。
有两种检查资源是否过期的模式:根据修改时间,根据资源唯一标识是否发生变化。他们都是通过一组成对出现的Header来实现的。
服务端返回资源会带上Last-Modified的Header,客户端下一次请求相同资源时,就会带上IF-Modified-Since(即获得资源的Last-Modified),如果服务器发现这段时间没有修改,就返回304/Not Modified,无消息体,从而节省流量。
ETage代表资源的唯一标识,相比于Modified更精密,因为modified是秒级。
但是通过哈希算ETage也会消耗资源。
基于传输链路的设计原则:
HTTP/2支持了每个域名维持一个TCP连接,一个HTTP响应当作一个个流,每个数据帧带有流ID,根据流ID可以在浏览器将数据帧重新组装成一个完整的HTTP响应。
对于小而多的文件,一个tcp好用(HTTP2),但是对于大文件,不如多tcp连接快。
DNS查询“icyfenix.cn"
DNS服务返回一个CNAME,”icyfenix.cn.cdn.dnsv1.com“。
递归查询CNAME,返回”icyfenix.cn"的全部的全国的DNS地址。
典型的 CDN 部署中,第一次 DNS 查询是为了获取 CDN 的 DNS 服务器地址,而第二次 DNS 查询则是通过 CDN 的 DNS 服务器获取实际的 IP 地址,CDN的DNS服务器会根据用户的位置等信息返回最优的CDN服务器地址,它可能是一个也可能是一组。
仅从网络传输的角度看,一个互联网系统的速度取决于这四点:
在DNS服务器的协助下,无论是用户还是服务器,内容分发网络都完全是透明的,在两者不知亲的情况下,由CDN节点接管了用户向服务器发出的资源请求。
这其中的问题就是,CDN节点中必须有用户要的资源,其中包括两个内容”如何获取源资源“,”如何保证资源是最新的“。
CDN获取源站资源的方式就叫做内容分发。
主要有两种方式:
CDN能做的事情:
经历过“域名”-“CNAME”-“最优CDN地址”(这个是DNS的负载均衡),在网络边缘的CDN才进行负载均衡(这是网关层面的负载均衡)。
无论在网关内部建立了多少层负载均衡,从形式上也只能分为两种:四层负载均衡和七层负载均衡,层是对OSI网络模型来说的。
特点是维持同一个TCP连接。
请求进入负载均衡器中,通过修改请求帧的MAC地址,在局域网内将请求送到服务器,由于帧的用户信息没变,服务器直接对用户响应。
想要实现的话需要服务器写入响应的ip地址和负载均衡器的相同,因为这样用户才能判断是自己发出的那个请求的响应。
网关给用户的请求再次封装,目标ip为服务器地址,服务器接收到后进行两次拆包,直接给用户响应。
要求服务器写入响应的ip地址和网关的相同。
会带来较大的性能损失
四层的负载均衡使用的都是一个数据帧,也就是通过修改帧的内容来实现的(即维持一个TCP连接)。
应用层的负载均衡需要网关和用户建立TCP,网关和服务器建立TCP,性能一定比不了四层。
七层代理的强大功能:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。