可伸缩Cache服务
附件 | 大小 |
---|---|
cache-cluster.jpg | 54.55 KB |
squid-workflow.png | 39.78 KB |
有效的网络Cache系统可以大大地减少网络流量、降低响应延时以及服务器的负载。但是,若Cache服务器超载而不能及时地处理请求,反而会增加响应延时。所以,Cache服务的可伸缩性很重要,当系统负载不断增长时,整个系统能被扩展来提高Cache服务的处理能力。尤其,在主干上的Cache服务可能需要几个Gbps的吞吐率,单台服务器(如SUN目前最高端的Enterprise 10000服务器)远不能达到这个吞吐率。可见,通过PC服务器集群实现可伸缩Cache服务是很有效的方法,也是性能价格比最高的方法。
基于LVS可伸缩Cache集群的体系结构如图2.3所示:在前端是一个负载调度器,一般采用IP负载均衡技术来获得整个系统的高吞吐率;在第二层是Cache服务器池,一般Cache服务器放置在接近主干Internet连接处,它们可以分布在不同的网络中。调度器可以有多个,放在离客户接近的地方,可实现透明的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
sirtoozee
周五, 2006-03-31 07:39
Permalink
对开发cache摸不到门儿
最近在处理相关cache管理机制in GNU C,需要对request或content进行cache,也就是不仅仅cache具体的图片、文字等content,还要cache抽象的插入、释放等request。
刚本科毕业的我特别想知道cache的最基本架构原型,squid的cache相关code对于我又太过于复杂-_-#这种信息也不容于google——local content cache没有什么编程思想上的提示,最多的就是配置 + 应用,希望wensong教授能画张架构图^_^
我要踏踏实实把OurOpenSource杂志做好
wensong
周六, 2006-04-01 11:14
Permalink
Squid工作流程
这是我的一个同学在很久以前画的Squid工作流程图。
我想静下心来好好看Squid的资料和代码,一定可以深入地了解其实现结构,也可以在其代码学习到不少东西。
sirtoozee
周二, 2006-04-04 09:23
Permalink
谢谢wensong教授&同学
谢谢^_^
────────────────────
我要踏踏实实把OurOpenSource杂志做好