论文部分内容阅读
随着互联网的高速发展,用户访问量越来越大,单个Web服务器非常容易成为性能瓶颈。通过使用反向代理服务器组建服务器集群可以提高系统的性能,但是随着Web服务器的增多,单个反向代理服务器可能又成为新的瓶颈,所以需要组建反向代理服务器集群来解决这个问题。但是目前大多数的反向代理服务器组建集群时都是独立工作,无法共享调度信息和缓存信息,影响了集群的性能。本文首先研究了代理服务器相关背景技术,分析了超文本传输协议、Web缓存技术和服务器集群技术。然后介绍了Erlang语言和OTP系统,并基于Erlang/OTP提出一个用来构建高并发、高可用、合作式的反向代理服务器集群的EDRP(Erlang Distributed Reverse Proxy)系统。本文将详细介绍EDRP系统的设计与实现。EDRP系统主要由反向代理、负载调度、缓存管理三个模块组成。反向代理模块利用Erlang语言的超轻量级进程实现了一个基于阈值动态调整的进程池,从而能够处理高并发的用户连接。并且为了方便能够在处理请求和响应时进行扩展,还设计了模块化的过滤机制,可以通过添加缓存过滤器、安全过滤器来实现缓存管理和安全控制的功能,提高了系统的灵活性。然后,本文在分析和比较各种负载调度模型的优缺点之后,基于在所有代理服务器之间都共享调度信息的考虑,实现了合作式负载调度模型,并采用了集中式和分布式相结合的管理方式。集群中有一个主调度进程负责进行调度工作,其它的调度进程都是它的备份,这样既可以减少调度请求时的开销又可以避免单点故障的问题。负载调度模块中还实现了多种负载调度算法,可以满足各种不同的需求,并且还实现了负载调度算法的热切换机制,可以在运行时对负载调度算法进行动态切换。为了提高缓存副本的查找速度同时又不影响整个集群的可靠性,缓存管理模块采用了集中式管理和分布式管理相结合的单层式缓存体系结构,代理服务器之间可以共享缓存。缓存管理模块还实现了基于动态阈值自适应TTL机制和LRU-threshold策略分别来保证缓存的弱一致性和进行缓存替换。最后,通过并发性测试和可用性测试证明了EDRP系统的设计和实现达到了预期的目标。