缓冲(buffering) :用来弥补不同数据处理速率速度差距的存储技术。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

缓冲在日常生活中无处不在,人的身体就有许多缓冲的例子,如吃东西的嘴巴,因咽喉大小有限,嘴巴会先将食物寄存,嚼碎至食管能通过的大小,然后均匀送入人体;而胃又是第二道缓冲区,为适应肠子的吸收速度,胃需要将食物充分研磨,才能让肠更好的吸收。

我们常用的计算机硬盘,尽管通道技术不断加强,而且都内嵌许多微处理芯片,但盘片写入的速度始终是瓶颈,所以也需要借助内存芯片作为缓冲,这就是disk buffer or disk cache

通过上述例子可以比较形象的了解缓冲的原理。在负载均衡的领域,我们是否也能利用缓冲技术来实现流量优化呢?

 

1) TCP buffering

负载均衡设备采用full-proxy的工作模式,当客户端数据传输速度与服务器端传输速度存在差异(如上图),通过tcp buffering的技术可弥补这样的差异,保证数据传输的通畅。

由此带来的好处有:

     负载均衡设备采用TCP重用保持和开放连接来维持客户端和服务器之间的连接

     提供服务器端或客户端缓冲来临时存放数据包,以防止由于缓慢的客户端或服务器端响应造成的连接被丢弃

     可采用客户端或服务器端链路的速度发送数据

 

2) http buffer cache

buffer cache这两个概念其实是有区别的,虽然两者都是存储数据(单元),cache是划分一部分存储空间来存放经常被访问到的数据,减少访问源与原始数据的直接交互次数;buffer则更多是在往硬盘写入数据前的缓冲动作。在Qos的应用中,buffercache却时常被“结合”起来。在服务器上的原始数据(图片、音乐、视频等文件)会被经常访问到,而服务器的响应速度是有限的,由此在负载均衡设备上划分出一部分内存空间作为缓冲区,缓存服务器经常响应的内容,当大量的客户端发起请求时,负载均衡设备可从缓冲区直接响应。

1) CPU多核并行处理

新一代的负载均衡设备都采用了多CPU多核并行处理的技术,这样大大提升了自身的交付能力。 CPUI/O设备之间就存在着速度不匹配的情况,I/O buffer容量有限,在I/O buffer耗尽时,能否再生成system buffer来缓冲更多的数据队列,这需要负载均衡设备有着优良的操作系统设计。A10 ACOS就是这类技术的佼佼者,以下的例子中可看到每个核心都有相应的buffer

# buffers in Q0 cache: 2393 App: 15743405 TCPQ: 0 misc: 0
# buffers in Q1 cache: 3332 App: 0 TCPQ: 4223160824 misc: 0
# buffers in Q2 cache: 4630 App: 0 TCPQ: 71806473 misc: 0
Approximate # buffers in App 15743405
Approximate # buffers in App_cp -15743405
Approximate # buffers in Cache_cp 595
Approximate # buffers in Cache 10355
Approximate # buffers in Queue 10149
Approximate # buffers in misc 0
Approximate # buffers free 110568
Approximate # buffers avail from HW 81255
通过OS的调配, 1、改善CPUI/O设备之间速度不匹配的情况;   

2 、可以减少I/O设备对CPU的中断次数及放宽对CPU的中断响应时间要求。

 

以上是缓冲技术在负载均衡中的部分应用,当然不是所有的应用交付产品都能提供完整的缓冲优化,希望大家在产品选型时能充分考量产品的软硬件架构并作出正确的选择。

(ZJM)