可伸缩Cache服务

附件大小
Image icon cache-cluster.jpg54.55 KB
Image icon squid-workflow.png39.78 KB

有效的网络Cache系统可以大大地减少网络流量、降低响应延时以及服务器的负载。但是,若Cache服务器超载而不能及时地处理请求,反而会增加响应延时。所以,Cache服务的可伸缩性很重要,当系统负载不断增长时,整个系统能被扩展来提高Cache服务的处理能力。尤其,在主干上的Cache服务可能需要几个Gbps的吞吐率,单台服务器(如SUN目前最高端的Enterprise 10000服务器)远不能达到这个吞吐率。可见,通过PC服务器集群实现可伸缩Cache服务是很有效的方法,也是性能价格比最高的方法。

基于LVS可伸缩Cache集群的体系结构如图2.3所示:在前端是一个负载调度器,一般采用IP负载均衡技术来获得整个系统的高吞吐率;在第二层是Cache服务器池,一般Cache服务器放置在接近主干Internet连接处,它们可以分布在不同的网络中。调度器可以有多个,放在离客户接近的地方,可实现透明的Cache服务。

基于LVS的可伸缩Cache集群

图2.3:基于LVS的可伸缩Cache集群

Cache服务器采用本地硬盘来存储可缓存的对象,因为存储可缓存的对象是写操作,且占有一定的比例,通过本地硬盘可以提高I/O的访问速度。Cache服务器间有专用的多播通道,通过ICP协议(Internet Cache Protocol)来交互信息。当一台Cache服务器在本地硬盘中未命中当前请求时,它可以通过ICP查询其他Cache服务器是否有请求对象的副本,若存在,则从邻近的Cache服务器取该对象的副本,这样可以进一步提高Cache服务的命中率。

为150多所大学和地区服务的英国国家Cache网在1999年11月用以上LVS结构实现可伸缩的Cache集群,只用了原有50多台相互独立Cache服务器的一半,用户反映网络速度跟夏天一样快(学生放暑假)。可见,通过负载调度可以摸平单台服务器访问的毛刺(Burst),提高整个系统的资源利用率。

Comments

最近在处理相关cache管理机制in GNU C,需要对request或content进行cache,也就是不仅仅cache具体的图片、文字等content,还要cache抽象的插入、释放等request。

刚本科毕业的我特别想知道cache的最基本架构原型,squid的cache相关code对于我又太过于复杂-_-#这种信息也不容于google——local content cache没有什么编程思想上的提示,最多的就是配置 + 应用,希望wensong教授能画张架构图^_^

我要踏踏实实把OurOpenSource杂志做好

这是我的一个同学在很久以前画的Squid工作流程图。

我想静下心来好好看Squid的资料和代码,一定可以深入地了解其实现结构,也可以在其代码学习到不少东西。

谢谢^_^
────────────────────
我要踏踏实实把OurOpenSource杂志做好

randomness