《深入分析JAVA web技术内幕》 之 CDN和Load balance
来源:互联网 发布:linux目录结构 编辑:程序博客网 时间:2024/06/17 03:13
CDN
context delivery Network,内容分布式网络,一种先进的流量分配网络,一个比喻,CDN=mirror + cache + GSLB。
主要用于web中请求的静态数据,如图片,CSS,JS,静态页面等,用户从主站请求到动态数据后,从CDN上下载静态的文件,
其架构如下图:
1、首先向local DNS server发起请求,经过一系列迭代操作,最终到达该域名的注册域名解析服务器上去解析(一般每个公司都有一个指定的域名解析服务器),
2、这时,该注册域名解析服务器会把域名重新CNAME到CDN中的GTM,再有这个负载均衡将距离用户最近的CDN节点返回给用户。
3、拿到了CDN节点的解析结果,用户就去这个节点上去下载静态数据了,如果这节点上得数据不存在,那么再去源站上去获取文件,再返回给用户。
LB load balance
一、什么是负载均衡?
顾名思义,将多个任务分摊到多个节点上处理,提高系统的并发处理能力,负载均衡是个很广泛的概念,由路由协议的负载均衡ECMP协议等,这个我们讨论的是web负载均衡,是指能够分担http请求的负载均衡技术。常见的web负载均衡包括DNS轮询,IP负载均衡和CDN。
二、基本原理
任何的负载均衡技术都是想建立一种一对多的映射机制,将一个请求的入口映射到多个处理请求的节点,然后分而治之,divide and conquer。采用不同的映射处理,形成不同的负载技术。
1、DNS轮询
DNS轮询是最简单的负载均衡方式。以域名作为访问入口,通过配置多条DNS A记录使得请求可以分配到不同的服务器。在DNS中为多个地址配置同一个名字,因而查询这个名字的客户机将得到其中一个地址,从而使得不同的客户访问不同的服务器,达到负载均衡的目的。
DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。当使用DNS负载均衡的时候,必须尽量保证不同的客户计算机能均匀获得不同的地址。由于DNS数据具备刷新时间标志,一旦超过这个时间限制,其他DNS服务器就需要和这个服务器交互,以重新获得地址数据,就有可能获得不同IP地址。因此为了使地址能随机分配,就应使刷新时间尽量短,不同地方的DNS服务器能更新对应的地址,达到随机获得地址,然而将过期时间设置得过短,将使DNS流量大增,而造成额外的网络问题。DNS负载均衡的另一个问题是,一旦某个服务器出现故障,即使及时修改了DNS设置,还是 要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。
2、CDN
上面已经介绍了,该方案的缺点是很难建立大量的缓存节点,费用高昂
3、IP负载均衡
IP负载均衡是基于特定的TCP/IP技术实现的负载均衡。比如NAT、DR、Turning等。是最经常使用的方式。
IP负载均衡可以使用硬件设备,也可以使用软件实现。硬件设备的主要产品是F5-BIG-IP-GTM(简称F5),软件产品主要有LVS、HAProxy、NginX。其中LVS、HAProxy可以工作在4-7层,NginX工作在7层。硬件负载均衡设备可以将核心部分做成芯片,性能和稳定性更好,而且商用产品的可管理性、文档和服务都比较好。唯一的问题就是价格。
软件负载均衡通常是开源软件。自由度较高,但学习成本和管理成本会比较大。这里仅仅介绍软件负载均衡。
3.1 LVS
3.2 VS/NAT
- 客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器
调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。
真实的服务器处理请求,并将响应报文发到调度器。
- 调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口
- 调度器将修改过的报文发给用户
3.3、VS/TUN
3.4、VS/DR
DR(Direct Routing, 直接路由), 路由器学习路由的方法之一。路由器对于自己的网络接口所直连的网络之间的通信,可以自动维护路由表,而且不需要进行路由计算。
直接路由通常用在一个三层交换机连接几个VLAN的情况,只要设置直接路由VLAN之间就可以通信,不需要设置其他的路由方式。VS/DR(Virtual Server via Direct Routing)是基于直接路由实现负载均衡的方法。其架构如下图所示:
跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。VS/DR要求调度器和服务器组都必须在物理上有一个网卡通过不分段的局域网相连,即通过交换机或者高速的HUB相连,中间没有隔有路由器。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。
- 《深入分析JAVA web技术内幕》 之 CDN和Load balance
- 《深入分析Java Web技术内幕》读后感
- 读《深入分析Java Web技术内幕》
- 深入分析Java Web技术内幕
- 深入分析Java Web技术内幕
- 《深入分析Java Web技术内幕》读书笔记
- 《深入分析Java web技术内幕》笔记
- 深入分析Java Web技术内幕
- 深入分析Java Web技术内幕 笔记
- 深入分析Java Web技术内幕pdf
- 深入分析java web 技术内幕_笔记_一
- 深入分析java web 技术内幕_笔记_二
- 深入分析java web 技术内幕_笔记_三
- 深入分析java web 技术内幕_笔记_四
- 深入分析java web 技术内幕_笔记_五
- 深入分析java web 技术内幕_笔记_六
- 深入分析java web 技术内幕_笔记_七
- 深入分析java web 技术内幕_笔记_八
- C++类中定义线程
- Qt信息隐藏(Q_D/Q_Q)介绍
- web攻击手段(一)XSS
- JDK1.8新特性lambel表达式
- Spring mvc通过xml配置文件方式实现简单HelloWorld
- 《深入分析JAVA web技术内幕》 之 CDN和Load balance
- java8 特性
- jsp和html的区别
- android基础之onActivityResult不执行问题
- 通讯录数据的存取(二)—— 获取通讯录的具体信息
- 数组中只出现一次的数字
- 简单分析小米智能插座基础版电路
- Android之带遮罩层的弹出框—popUpWindow
- Ubuntu使用小技巧