中英文双语网站站点,手游cpa推广平台,甘肃城乡建设厅网站,网页视频下载app软件部件考虑
有些设备位于客户端或者网络边缘#xff0c;能够迅速响应用户请求#xff0c;避免给cpu和数据库带来压力#xff0c;比如#xff0c;本地缓存#xff0c;内容分发网络#xff0c;反向代理等。 有些设备处理能力能够线性扩展#xff0c;易于伸缩#xff0c;应…部件考虑
有些设备位于客户端或者网络边缘能够迅速响应用户请求避免给cpu和数据库带来压力比如本地缓存内容分发网络反向代理等。 有些设备处理能力能够线性扩展易于伸缩应尽量作为业务主体如集群能够扩展的服务节点 有些设备对系统有全局性影响需要时刻保持容错备份比如服务注册中心配置中心。 有些是单点设备比如系统路由网关数据库等。 对系统进行流量规划时应该考虑到部件特性
规划原则
尽量减少单点部件尽量减少到达单点部件的流量
最简单的系统就是最好的系统
客户端缓存
服务器对于客户端请求的响应中附带一些条件要求客户端在想要发出相同请求时先判断是否满足条件如果满足就直接使用上一次服务器给予的响应来替代不必重新访问。 通过不同条件客户端缓存又分为强制缓存和协商缓存
强制缓存
比如收到请求的10分钟内有效那么除了用户主动刷新页面对于新开窗口浏览器地址输入前进后退均可生效。
HTTP的Header参数实现强制缓存
Expires
Header参数是一个截止时间参数。 问题 受限客户端时间。 无法描述不缓存。 无法让私有资源不被代理服务器内容分发网络缓存。
Cache-Control
如果expire和cache-control起冲突会以cache-control为准。 参数
max-age和s-maxage:缓存有效时间以秒为单位s-maxage的s是share的缩写意味着在CDN代理中持有缓存的有效时间。public和privateprivate不允许CDN等缓存。no-cache不缓存
协商缓存
需要浏览器和服务器协商一次检查客户端的资源是否过期了会有另外的开销。和强制缓存是并行运行的。 有两种检查资源是否过期的模式根据修改时间根据资源唯一标识是否发生变化。他们都是通过一组成对出现的Header来实现的。
Last-Modified和IF-Modified-Since
服务端返回资源会带上Last-Modified的Header客户端下一次请求相同资源时就会带上IF-Modified-Since即获得资源的Last-Modified如果服务器发现这段时间没有修改就返回304/Not Modified无消息体从而节省流量。
ETage和If-None-Match
ETage代表资源的唯一标识相比于Modified更精密因为modified是秒级。 但是通过哈希算ETage也会消耗资源。
传输链路
基于传输链路的设计原则
减少请求数量因为每个http请求都需要建立tcp连接。扩大浏览器的并发请求现代浏览器一般支持6个对于相同域名的并发请求通过将资源分布在不同域名上从而实现并发请求。压缩传输
tcp连接复用
HTTP/2支持了每个域名维持一个TCP连接一个HTTP响应当作一个个流每个数据帧带有流ID根据流ID可以在浏览器将数据帧重新组装成一个完整的HTTP响应。 对于小而多的文件一个tcp好用HTTP2但是对于大文件不如多tcp连接快。
压缩HTTP响应
域名解析是透明多级分流系统中重要的环节
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服务器地址它可能是一个也可能是一组。 内容分发网络CDN
仅从网络传输的角度看一个互联网系统的速度取决于这四点
网站服务器接入网络运营商的链路所能提供的出口带宽。用户客户端接入网络运营商的链路所能提供的入口带宽。从网站到用户所经过的不同运营商之间的带宽。从网站到用户的物理链路传输时延。 除了第二条其他都可以通过CDN实现。
内容分发CDN获取源站资源的方式
在DNS服务器的协助下无论是用户还是服务器内容分发网络都完全是透明的在两者不知亲的情况下由CDN节点接管了用户向服务器发出的资源请求。 这其中的问题就是CDN节点中必须有用户要的资源其中包括两个内容”如何获取源资源“”如何保证资源是最新的“。 CDN获取源站资源的方式就叫做内容分发。 主要有两种方式
源站主动分发Push预加载。CDN被动回源Pull
CDN的应用
CDN能做的事情
加速静态资源分发安全防御如果只使用CDN而隐藏服务器的IP恶意攻击就无法触及到服务器。状态缓存修改资源的内容比如可以压缩修改Header参数等。
负载均衡就是将进入网关的流量合理分配给多个服务器
经历过“域名”-“CNAME”-“最优CDN地址”这个是DNS的负载均衡在网络边缘的CDN才进行负载均衡这是网关层面的负载均衡。 无论在网关内部建立了多少层负载均衡从形式上也只能分为两种四层负载均衡和七层负载均衡层是对OSI网络模型来说的。
四层负载均衡链路层的负载均衡
修改MAC地址在链路层分流
特点是维持同一个TCP连接。 请求进入负载均衡器中通过修改请求帧的MAC地址在局域网内将请求送到服务器由于帧的用户信息没变服务器直接对用户响应。 想要实现的话需要服务器写入响应的ip地址和负载均衡器的相同因为这样用户才能判断是自己发出的那个请求的响应。
IP隧道协议在网络层分流
网关给用户的请求再次封装目标ip为服务器地址服务器接收到后进行两次拆包直接给用户响应。 要求服务器写入响应的ip地址和网关的相同。
通过修改请求的ip让服务器和网关通信然后网关和用户通信
会带来较大的性能损失
七层负载均衡应用层
四层的负载均衡使用的都是一个数据帧也就是通过修改帧的内容来实现的即维持一个TCP连接。 应用层的负载均衡需要网关和用户建立TCP网关和服务器建立TCP性能一定比不了四层。 七层代理的强大功能
CDN能做的它都能做静态资源缓存安全防护等等。更智能化的路由微服务的治理很多都在七层实现
负载均衡的算法策略
轮询权重轮询随机均衡权重随机哈希MAC或者IP测试服务器的响应速度进行均衡最少连接均衡通过记录服务器连接数