一种基于虚拟主机的web服务器及用户获取访问数据的方法

文档序号:81433阅读:279来源:国知局
专利名称:一种基于虚拟主机的web服务器及用户获取访问数据的方法
技术领域
本发明涉及环球网(web)服务器技术,特别是指一种基于虚拟主机的web服务器及用户获取访问数据的方法。
背景技术
随着互联网的不断发展,网络逐渐融入到人们的生活中,各种各样的互联网业务及应用层出不穷,人们已逐渐习惯于在门户网站中发布和获取各种资讯信息,习惯于在电子商务站点上进行交易等等。这样一来,各个门户网站和电子商务站点中的web服务器的地位就越来越重要,web服务器的性能、容量及可扩展性决定着各个网站和站点提供服务的质量和速度。
目前,比较常用的web服务器有Apache服务器,这种web服务器的框架主要为进程池模型,并采用进程预创建(pre-fork)方式。具体来说,如图1所示,Apache服务器在进程池中设置有很多进程httpd,分别用于执行不同的业务、实现不同的功能。其中,有一个进程为主管理(manager)进程httpd,负责创建、调度和管理一个以上工作者(worker)进程httpd,这里工作者进程httpd也可称为子进程。通常,进程池中的主管理进程会预先创建多个工作者进程httpd,每个工作者进程httpd竞争许可(accept),接收并处理用户发送的http请求;主管理进程通过监控进程池中各子进程的负载情况,动态增加或减少子进程的个数。对于用户提交的特定业务请求如执行CGI程序等,工作者进程httpd将进一步创建新的业务处理(process)进程进行处理。
在Apache服务器中,虽然采用了进程预创建方式,但是业务处理进程的执行、进程池内工作者进程的动态调整都会涉及到进程的创建与删除,而进程的创建与删除开销较大,尤其是在用户大并发量访问的情况下,CPU时间往往大量消耗在进程问的上下文切换上,如此,会使系统的整体性能急剧下降,并且会出现响应处理时间过长、服务器连接不上、响应超时等现象。很显然,Apache服务器的框架模型决定了其难以支撑用户的大并发量访问,当出现用户大并发量访问的情况时,就可能导致web服务器的瘫痪。
而且,从图1可以看出,Apache服务器框架本身并不包含任何缓存(cache)机制,那么,每次动态的http请求都需要提交到后台业务处理进程进行处理,如此,使得单次请求的响应处理时间较慢,效率不高。
针对Apache服务器性能存在的缺陷,现有网络中逐渐出现了一些采用单进程简化的web服务器设计,ACME的Thttpd服务器就是其中的一个代表。Thttpd服务器的框架采用单进程select+non-blocking I/O模型,不存在进程创建和销毁、以及进程间上下文切换的时间开销。并且,在Thttpd服务器中采用一定的缓存机制,如使用哈希图(hash map)+mmap技术,可提高用户对本地静态页面和文件的访问效率,目前已在一些访问量较大的静态页面文件访问场合广泛使用。
虽然Thttpd服务器能够提高一定的访问效率,支持用户大并发量的访问,但由于其服务器框架采用的是单进程模型,因此,并不具有很好的业务逻辑扩展性;并且,对于动态页面生成、数据远程获取、业务会话验证等场景,Thttpd服务器对每个请求同样需要通过创建一个新的进程去处理,故此,在动态数据请求的场景下,系统效率仍然较低。
而且,虽然Thttpd服务器提供了一定的缓存机制,但缓存中数据对象的失效及淘汰是由服务器中定时器决定的,不是由具体业务应用决定的,而在不同的业务应用场景下数据对象的失效时间设置及数据对象淘汰策略往往是不一样,因此,Thttpd服务器无法很好地满足所有业务的应用场景。另外,Thttpd服务器的缓存机制只针对从磁盘中得到的静态数据,并不支持业务动态生成的数据。
总的来说,诸如Apache服务器等web服务器由于使用pre-fork处理模型,往往效率较低难以支持大并发量的用户访问;而诸如Thttpd服务器等web服务器由于使用单进程模型,采用同步方式进行处理,如图2所示,服务器迭代处理用户端发过来的请求,这种情况下,如果服务器需进行耗时较大的操作如磁盘读取、SSI方式读取、业务逻辑处理等,就可能出现用户由于排队等待服务器处理而超时的现象,可见,采用单进程模型对于简单的本地静态页面和图片的访问效率较高,但并不具有很好的业务逻辑扩展性,难以支持动态页面生成、数据远程获取、业务会话验证等场景,即使以CGI方式进行支持,对每个请求还需创建一个进程进行处理(process-per-req),效率较低。
另外,虽然Apache服务器和Thttpd服务器都能支持多虚拟主机vhost技术,也就是说,对于部署于同一台物理设备上域名不同的多个虚拟主机,Apache服务器或Thttpd服务器中的进程httpd都能够根据虚拟域名的配置,动态创建并运行相应的后台业务进程来处理用户的不同请求,但是,Apache服务器和Thttpd服务器对不同虚拟主机的处理都不能提供任何的服务质量(QoS)区分,因而无法满足对不同虚拟主机提供不同QoS的应用需求和场景。

发明内容有鉴于此,本发明的主要目的在于提供一种基于虚拟主机的web服务器,能够在提高系统效率、可扩展性以及支持大并发量访问的同时,对不同虚拟主机提供不同的QoS需求。
本发明的另一目的在于提供一种用户通过基于虚拟主机的web服务器获取访问数据的方法,能够在提高系统效率、支持大并发量访问的同时,对不同虚拟主机提供不同的QoS需求。
为达到上述目的,本发明的技术方案是这样实现的一种基于虚拟主机的web服务器,该服务器包括高性能http进程单元、web缓存单元和缓存管理器;其中,高性能http进程单元,用于接受用户的并发连接,根据用户请求从web缓存单元中获取用户所需数据对象返回给用户,并在需要加载数据对象时通知缓存管理器;web缓存单元,用于缓存数据对象的属性和数据内容;缓存管理器,用于接收高性能http进程单元的加载请求,从相应业务模块组获取所需的数据对象,加载到web缓存单元中。
其中,所述高性能http进程单元进一步包括高效网络I/O接口,用于接受用户的并发请求,指令web缓存读模块到web缓存单元中读取所需的数据对象,并将获取的数据对象返回给用户;虚拟主机配置模块,用于提供虚拟主机配置信息;QoS策略模块,用于存储和提供基于虚拟主机的QoS策略;web缓存读模块,用于接收高效网络I/O接口的指令,从web缓存单元中读取相应的数据对象。
所述高性能http进程单元还包括系统监控模块、系统日志模块、访问控制模块三者中至少一个;其中,系统监控模块用于监测系统中各服务模块的运行情况,在服务模块出现异常或崩溃时,重启相应服务模块;系统日志模块,用于记录系统运行期间的用户访问情况、系统运行状况;访问控制模块,用于进行安全审计并提供对web服务器的保护。
所述web缓存单元进一步包括元素登记表、内存数据桶列表;其中,元素登记表,用于保存数据对象的属性信息;内存数据桶列表,用于存储数据对象的数据内容。
所述web缓存单元还包括磁盘文件系统,用于存储使用不频繁但未失效的数据对象。
所述缓存管理器进一步包括协议处理模块、web缓存写模块、SSI模块和基于虚拟主机事件调度模块;其中,协议处理模块,用于完成与高性能httpd进程单元之间、与各业务模块组之间通信协议的解析和封装;web缓存写模块,用于接收基于虚拟主机事件调度模块的指令,向web缓存单元写入数据对象;SSI模块,用于支持服务器所包含的各种功能;基于虚拟主机事件调度模块,用于将高性能httpd进程单元发来的请求分派到不同业务模块组进行处理。
所述缓存管理器还包括缓存调整模块,根据用户访问情况动态调整数据对象在web缓存单元中的位置。
所述缓存管理器还包括本地获取模块,用于获取保存在磁盘文件系统中的数据。
本发明还公开一种用户通过基于虚拟主机的web服务器获取访问数据的方法,关键在于,web服务器并发接收用户的访问数据请求,对每个访问数据请求执行以下步骤a.web服务器确认请求有效后,从web缓存中获取用户所需的数据对象;b.判断是否获取到用户所需的数据对象,如果获取到,则web服务器向相应用户返回所需的数据对象;如果未获取到,web服务器根据虚拟主机配置从自身连接的相应业务模块组中将用户所需的数据对象加载到web缓存中,之后再将web缓存中加载的数据对象返回给用户;其中,对于不同访问数据请求,所述获取数据对象、加载数据以及将数据对象返回给用户的处理以异步方式实现。
步骤b中所述获取到的数据对象为web缓存中未失效的数据对象、或为web缓存中已失效但能够延迟加载的数据对象。
该方法进一步包括设置两级web缓存,将使用频繁的数据对象缓存于web缓存的内存中,将使用不频繁但未失效的数据对象缓存于web缓存的本地磁盘中。
该方法进一步包括根据用户访问情况动态调整数据对象在缓存中的位置。
该方法进一步包括预先设置基于虚拟主机的QoS策略。所述QoS策略为控制数据发送窗口大小、控制和管理web服务器所拥有的网络带宽。
该方法进一步包括所述web服务器使用网络事件通知机制监听在各网络套接字上触发的网络事件。
本发明所提供的基于虚拟主机的web服务器及用户获取访问数据的方法,具有以下的优点和特点1)由于本发明的web服务器采用高效网络I/O接口并设置相应的QoS策略,可使系统在用户大并发量访问的情况下表现稳健;2)由于在本发明的web服务器中设置了web缓存单元,可以缓存用户要访问的一些数据对象的属性和数据,因此可加速用户访问并延迟数据对象加载,进而使web服务器即使在用户大并发量访问的情况下,依然能保证用户的高效访问,使用户的平均响应时间很短、效率很高并表现稳定。
3)在本发明的web服务器中设置有缓存管理器,能对web缓存单元进行有效、灵活的管理,并且,缓存管理器中的基于虚拟主机的事件调度模块能连接多个实现不同业务的业务模块组,如此,不仅能支持基于虚拟主机的事件多路分离,而且还使web服务器具有很好的业务扩展性,能很容易地增加新的业务模块以适应不同的业务场景。
图1为现有技术中Apache服务器框架结构示意图;图2为同步处理方式示意图;图3为本发明web服务器的系统总体框架结构示意图;图4为本发明web服务器异步处理方式的实现原理示意图;图5为本发明web服务器性能效果示意图1;图6为本发明web服务器性能效果示意图2;图7为本发明web服务器性能效果示意图3;图8为本发明web服务器性能效果示意图4;图9为本发明web服务器性能效果示意图5;图10为本发明web服务器性能效果示意图6。
具体实施方式如图3所示,本发明提出一种web服务器,包括三大部分高性能http进程单元(High performance httpd)31、web缓存单元(web cache component)32、缓存管理器(cache manager)33。其中,高性能http进程单元31,用于接受用户的并发连接,对用户提交的http请求进行分析,根据用户请求获取用户所需的数据对象属性和数据并返回给用户;web缓存单元32,用于缓存数据对象的属性和数据内容;缓存管理器33,用于接收高性能http进程单元31的加载请求,并根据请求从相应业务模块组获取所需的数据对象,加载到web缓存单元中,进一步可以根据用户访问数据对象情况,动态调整数据对象在内存数据桶中的位置。这里,缓存管理器33支持三种方式的数据对象加载本地磁盘加载、业务模块动态生成或到远程数据中心获取、本地加载与远程数据对象获取的组合。
高性能http进程单元31与缓存管理器33之间、高性能http进程单元31与web缓存单元32之间、web缓存单元32与缓存管理器33之间均通过通信消息队列进行信令和数据的交互。比如在数据对象加载时,缓存管理器33接收高性能http进程单元31发送的加载请求,根据虚拟主机的配置从本地磁盘向内存进行数据对象加载;或是通知相应的业务模块,从业务模块获取所需数据对象,之后将数据对象加载到web缓存单元中,加载完成后将所加载数据对象在web缓存单元中内存数据桶的位置返回给高性能http进程单元31。
这里,高性能http进程单元31、web缓存单元32以及缓存管理器33三者之间进行通信的消息可以采用自定义的消息结构,只要通信双方预先协商好消息格式,双方能相互识别即可。比如高性能http进程单元31与缓存管理器33之间的消息结构可以包括以下信息请求类型、请求对象的键值(URI)、请求的域名、连接标识、发送请求的时间戳、所请求数据对象在注册表中的位置信息、查询类型、用户代理信息、用户IP地址信息、http请求方法、请求流水号等等;还可以进一步包括数据对象在缓存中的内存桶号、内存位置、结果、数据对象的更改时间、数据对象的过期失效时间等信息。
同样,缓存管理器33与各个具体业务模块组之间的通信消息也可采用自定义消息,一般包括以下信息消息类型、前端应用的请求消息类型、请求对象的键值、请求的域名、连接标识、发送请求的时间戳、所请求数据对象在注册表中的位置信息、查询类型、用户代理信息、用户IP地址信息、http请求方法、请求流水号等。
具体来说,高性能http进程单元31进一步包括高效网络I/O接口(Efficient network I/O interface)311,用于连接用户接受用户的并发请求,指令web缓存读模块317到web缓存单元32中读取所需的数据对象,并将获取的数据对象返回给用户;在高效网络I/O接口311内部还设置有协议分析处理模块,用来分析所接收的请求是否有效,如果有效,继续后续获取所需数据对象的处理,否则就丢弃,不进行处理;系统监控模块(Monitor module)312,用于监测系统的各服务模块运行情况,在任何服务模块出现异常或崩溃时,将相应服务模块重启;系统日志模块(Logger module)313,主要用于记录系统运行期间的用户访问情况、系统运行状况等信息,其中,所记录的用户访问情况可用来分析出用户的行为习惯,可进一步为电子商务站点提供数据挖掘,所记录的系统运行状况用于系统管理员的监控和容量规划;虚拟主机配置模块(Vhost conf module)314,用于提供虚拟主机配置信息,也就是说,其它任何模块可以从本模块中获取虚拟主机配置信息;访问控制模块(Access control module)315,用于进行安全审计和提供对web服务器的保护,比如对报文的正确性进行检查;再比如可设置接入控制策略对某IP的访问频率进行限制,进而避免同一个IP攻击访问等;QoS策略模块(QoS strategy module)316,用于存储和提供设置好的基于虚拟主机的QoS策略,比如设置控制向用户返回数据的速度、流量等策略;web缓存读模块(web cache reader)317,用于接收高效网络I/O接口311的指令,从web缓存单元读取相应的数据对象属性和数据。
其中,系统监控模块312、系统日志模块313以及访问控制模块315的功能都是为了使web服务器的整体系统性能更完善、更安全而设置的,所以,这三个模块属于可选模块。当然,在实际应用中,较佳的是三个模块均设置。
高性能http进程单元31接收用户请求向用户反馈所需数据的过程是高效网络I/O接口311接受用户的访问数据请求,由自身内部的协议分析处理模块对用户通过浏览器提交的http请求进行协议分析,如果请求无效,则直接丢弃不做处理,如果请求有效,则会根据分析结果通知web缓存读模块317从web缓存单元32中读取相应的数据对象属性和数据,所述属性包括更改时间、失效时间等等。在读取数据对象时,若web缓存单元32中所要读取的数据对象未失效,则web缓存读模块317读取数据对象后,通过高效网络I/O接口311设置相应的多用途Internet邮件扩展协议(MIME)头,将相应数据对象的数据返回给用户;若web缓存单元32中所要读取的数据对象已失效但可进行延迟加载,则web缓存读模块317读取暂时失效的数据对象的数据,通过高效网络I/O接口311返回给用户,并通知缓存管理器33更新数据对象的内容;若web缓存单元32中的数据对象失效且不可进行延迟加载,则高性能http进程单元31通知缓存管理器33更新数据对象的内容,整个过程为异步过程。
这里,所述异步过程是指当存储于web缓存单元32中的用户请求访问的数据对象已失效时,高性能http进程单元31将发送数据对象加载请求给缓存管理器33,之后,高性能http进程单元31会继续完成其他的操作,而无需等待缓存管理器的应答才进行其他操作;同样,对于缓存管理器33而言,在收到前端高性能http进程单元31发来的请求后,将根据虚拟主机的配置进行事件的多路分离,即将请求消息分别发送到相应的业务模块组中进行处理;相应的,在各个业务模块组完成处理,将用户请求访问的数据对象加载到内存后,缓存管理器33会给高性能http进程单元31返回应答,高性能http进程单元31再将加载后的用户所需的数据对象的数据发送给用户。
如图4所示,高性能http进程单元31接收客户端要求访问数据的请求--请求1、请求2、请求3和请求4。对于请求3和请求4,用户请求访问的数据对象在缓存单元中存在且未失效,则高性能http进程单元31直接通过web缓存度模块317读取相应数据对象的数据内容发送给用户。而对于请求1和请求2,由于用户要访问的数据对象在缓存单元中已失效,所以,高性能http进程单元31要向缓存管理器33发送数据对象加载请求--请求1’、请求2’;进一步,缓存管理器33收到请求1’、请求2’后,根据虚拟主机的配置通过基于虚拟主机事件调度模块336向相应的业务模块组发送加载请求--请求1”、请求2”;相应业务模块组完成处理,向缓存管理器33的基于虚拟主机事件调度模块336返回携带有需加载的数据对象的应答--响应1”、响应2”;缓存管理器33收到响应后,将数据对象加载到web缓存单元32中,并向高性能http进程单元31返回应答--向应1’、响应2’;高性能http进程单元31收到响应后,再读取新加载的用户请求访问的数据对象的数据发送给用户。从图4可以看出,高性能http进程单元31向缓存管理器33发送请求后,无需等待其应答就可以进行其他处理,同样,缓存管理器33向业务模块组发送请求后,也无需等待其应答就可以进行其他处理。显然,web各模块之间的处理方式是异步的。
高性能http进程单元31在对用户请求的接收和处理过程中采用三种机制a)在接受用户所有的并发连接时,使用高效的网络事件通知机制(epoll)监听在各网络套接字上触发的网络事件,如此,即使在1~2万的并发量连接情况下,仍然能保证系统在底层网络I/O事件处理上的效率;b)采用连接建立优先策略,优先处理用户与服务器建立连接的请求;c)在数据发送时,采用基于连接的轮流发送策略,即遍历所有处于发送状态的网络套接字且每次发送应答数据的一部分;而不是采用连接迭代发送策略,即将一个连接上要发送的应答数据全部发送完,再发送下一个连接的应答数据。采用轮流发送策略可以使每个用户的请求都能平等地得到处理,而不会出现连接数过多,后面的连接由于排队发送导致的发送超时现象。
高性能http进程单元31在QoS策略控制上,主要提供两种QoS策略a)数据发送窗口大小控制,即对业务进行区分,控制web服务器对于各种不同业务的数据下行速率;b)网络带宽管理和控制,即对web服务器所拥有的总带宽进行划分和管理,并通过配置各种业务应用所使用的带宽大小以达到带宽管理和控制的目的,避免某种业务应用把整个站点的网络带宽耗尽的问题出现。具体实现为当连接建立时,先获取该连接能使用的最大带宽,然后,系统在运行过程中通过定时器动态地调整处于发送状态的连接可使用的带宽,即每个连接的可占用带宽和下行发送速率可根据虚拟主机的负载动态进行调整。一般,连接能使用的最大带宽=虚拟主机配置可使用的带宽/当前连接数;每次数据发送窗口的大小为占用最大带宽*1/4与发送窗口最大值中的最小值。
QoS策略配置信息主要包括QoS策略标识、数据发送窗口最大值、带宽控制;其中,所述QoS策略标识缺省为1,所述数据发送窗口最大值为一次发送过程中可发送的最大数据量,以字节为单位,值为-1时表示没有限制,带宽控制以bps(bits per second)为单位,值为-1时表示不做控制。所有的QoS策略配置信息可以用QoS策略列表保存,比如表一为一个QoS策略列表。
表一表一所示的QoS策略列表中条目1描述了数据发送窗口为1460 Bytes,带宽无任何限制的QoS策略,条目2描述了使用带宽大小为50M的QoS策略,条目3描述了可使用带宽为100M,且每次发送不超过730 Bytes的QoS策略。
web缓存单元32,用于将数据对象按某种策略缓存在内存和本地磁盘中,并使用一定的淘汰机制处理数据对象在内存和磁盘文件的扇入扇出,web缓存单元32支持两级缓存体系第一级为基于内存的分级缓存;第二级为基于磁盘文件系统的本地缓存。web缓存单元32进一步包括元素登记表(Element Register Table)321,用于保存数据对象的属性信息,如键值、所在数据桶的桶号和桶内位置、失效时间、最近更改时间等;内存数据桶列表(Data Bucket List)322,用于数据对象的分级存储,主要存储数据对象的数据内容,对于同一数据对象,相应数据内容与元素登记表321中的属性信息相对应;磁盘文件系统(File system)323,用于存储使用不频繁但没有失效的数据对象。
其中,对于内存数据桶列表322内部的存储可以按照数据桶中存储的数据对象大小分成不同级别的数据桶,并根据系统内存资源和不同应用的需要对各级数据桶进行容量配置,如此可增强可扩展性。
web缓存单元32的存储原则是优先将访问频繁的数据对象缓存在内存中,将使用不频繁但没有失效的数据对象缓存在本地磁盘,即磁盘文件系统323中,若数据对象失效过期,则通知相应的业务模块组进行更新加载,如此,能避免每次到后台获取数据。数据对象的淘汰基于访问触发机制,即只有调用者要访问这个数据对象,才会去判断该数据对象是否失效或从磁盘中加载。这里,对缓存在本地磁盘的数据对象可采用最近最少使用算法(LRU)进行淘汰。
在实际应用中,也可以只在web缓存单元32中设置一级缓存,即设置内存数据桶列表322,省略磁盘文件系统323,可以通过扩大数据桶的容量来实现更多数据的存储,这样,也可以达到节省时间、提高访问速度的目的。当然,设置两级缓存为应用的较佳实施方案。
web缓存单元32中,元素登记表321以hash map的方式实现,如此,根据数据对象的键值,通过一个对URL散列效果较好的哈希函数能快速定位并获取数据对象属性信息。在数据对象内容获取上,元素登记表321还可以作为检索的一级索引,提供数据对象的数据存储在内存数据桶列表322中的桶号和桶中位置,这样可使缓存管理器33通过所提供的位置信息快速获取数据对象的内容。一般,内存数据桶列表322的配置信息包括数据桶的标识、数据桶中条目的大小、桶中条目的个数。
web缓存单元32的设置可提高用户的访问速度和效率、缩短数据获取时间、减少后台数据对象的加载时间和CPU开销。
缓存管理器33进一步包括协议处理模块(Protocol process module)331,用于完成与前端高性能httpd进程单元31之间、以及与后端各业务模块组之间通信协议的解析和封装;web缓存写模块(web cache writer)332,用于接收基于虚拟主机事件调度模块336的指令,向web缓存单元写入相应数据对象的属性和数据;SSI(Server Side Include)模块333,用于支持服务器端所包含的各种功能;本地获取模块(Local get module)334,用于获取保存在磁盘文件系统中的数据;如果web缓存单元32中的磁盘文件系统323可选,相应的,缓存管理器33中的本地获取模块334也为可选模块;缓存调整模块(cache adjust module)335,根据用户访问情况动态调整数据对象在web缓存单元32中的位置,所述动态调整可采用最少使用(LFU,Least Frequency Used)缓存策略;基于虚拟主机事件调度模块(Base-vhost event dispatch module)336,用于连接实现不同业务的业务模块组,根据用户请求的虚拟主机的不同,将高性能httpd进程单元发来的请求分派到相应的业务模块组进行处理。
这里,基于虚拟主机事件调度模块336可同时与实现不同业务的各种业务模块组相连,比如Goods-Auction业务、Browse-Gen业务、Image-Fetch业务等等,缓存管理器33收到高性能http进程单元31发送来的请求后,将根据虚拟主机的配置如域名信息进行事件的多路分离,将请求消息分别发送到相应的业务模块组中进行处理,相应的业务模块组可根据请求进行处理,处理完成后再将数据对象加载到web缓存单元32中,并返回应答给高性能http进程单元31。由于基于虚拟主机事件调度模块336支持连接多个业务模块组,所以基于虚拟主机事件调度模块336所连接的业务模块组可根据需要随时增加或减少,如此,即可增强web服务器的可扩展性。
现有技术中的web服务器,对于一些动态数据请求都是针对每个请求创建一个进程即process-per-req处理方式来执行,但这种process-per-req的处理方式,在用户大并发量访问的情况下效率很低,大量的CPU时间消耗在进程的创建销毁与进程间的上下文切换上,并且扩展性较差,无法适用于不同的业务处理模型的需求,比如在某种场景下使用线程池模型效率更高,并通过增加线程来提高业务处理的吞吐量。
而本发明web服务器的设计能很好地支持各种业务模块的处理模型,通过基于虚拟主机的配置将用户请求分发到相应的业务模块组进行处理。在实际应用中,可以为每个具体的业务模块组配置以下的信息业务模块组标识、业务模块组名称、业务模块组通信消息队列标识等。
本发明的web服务器在实际应用中具有很好的性能效果,图5至图10分别给出了不同应用环境下使用本发明web服务器的性能效果统计数据。
当使用4台机器启动400个模拟并发用户,每个用户随机访问300个URL连接时,图5和图6分别表示在平均每秒获取页面个数--即每秒命中率(Hits perSecond)在不同cache命中率下的比较图、平均事务响应时间(TransactionResponse Time)在不同cache命中率下的比较图。
图5中,曲线501、502、503分别代表66%Cache命中率、80%Cache命中率、90%Cache命中率的性能曲线;同样,图6中,曲线601、602、603分别代表66%Cache命中率、80%Cache命中率、90%Cache命中率的性能曲线。相应的,web服务器在不同cache命中率下的详细性能统计数据如表二所示。
表二图7和图8分别表示平均每秒获取页面个数--即每秒命中率(Hits perSecond)在不同并发用户数下的比较图、平均事务响应时间(TransactionResponse Time)在不同并发用户数下的比较图。
图7中,曲线701、702分别代表并发用户数为400、1000的性能曲线;图8中,曲线801、802分别代表并发用户数为400、1000的性能曲线。相应的,web服务器在不同并发用户数下的详细性能统计数据如表三所示。
表三图9和图10分别表示平均每秒获取页面个数--即每秒命中率(Hits perSecond)在不同web服务器下的比较图、平均事务响应时间(TransactionResponse Time)在不同web服务器下的比较图。
图9中,曲线901、902分别代表本发明web服务器、apache服务器的性能曲线;图10中,曲线1001、1002分别代表本发明web服务器、apache服务器的性能曲线。相应的,不同web服务器下的详细性能统计数据如表四所示。
表四从图5至图10可以看出,本发明的web服务器由于采用异步的基于虚拟主机的事件多路分离、加速用户访问的数据对象缓存、以及延迟数据对象加载等技术,使系统即使在大并发量访问的情况下,用户的平均响应时间依然很短,效率很高,并具有较好的业务扩展性,能轻易地增加新的业务模块以适应不同的业务场景。除此之外,本发明的web服务器还具备一般通用web服务器所具有的特性,如支持HTTP 0.9/1.0/1.1多种协议版本,支持业务会话cookie分析设置,支持SSI等等。
本发明的web服务器可以应用于大型电子商务站点中,以支持目录分类浏览、静态页面和图片访问等等。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种基于虚拟主机的web服务器,其特征在于,该服务器包括高性能http进程单元、web缓存单元和缓存管理器;其中,高性能http进程单元,用于接受用户的并发连接,根据用户请求从web缓存单元中获取用户所需数据对象返回给用户,并在需要加载数据对象时通知缓存管理器;web缓存单元,用于缓存数据对象的属性和数据内容;缓存管理器,用于接收高性能http进程单元的加载请求,从相应业务模块组获取所需的数据对象,加载到web缓存单元中。
2.根据权利要求
1所述的方法,其特征在于,所述高性能http进程单元进一步包括高效网络I/O接口、虚拟主机配置模块、QoS策略模块和web缓存读模块;其中,高效网络I/O接口,用于接受用户的并发请求,指令web缓存读模块到web缓存单元中读取所需的数据对象,并将获取的数据对象返回给用户;虚拟主机配置模块,用于提供虚拟主机配置信息;QoS策略模块,用于存储和提供基于虚拟主机的QoS策略;web缓存读模块,用于接收高效网络I/O接口的指令,从web缓存单元中读取相应的数据对象。
3.根据权利要求
2所述的方法,其特征在于,所述高性能http进程单元还包括系统监控模块、系统日志模块、访问控制模块三者中至少一个;其中,系统监控模块用于监测系统中各服务模块的运行情况,在服务模块出现异常或崩溃时,重启相应服务模块;系统日志模块,用于记录系统运行期间的用户访问情况、系统运行状况;访问控制模块,用于进行安全审计并提供对web服务器的保护。
4.根据权利要求
1、2或3所述的方法,其特征在于,所述web缓存单元进一步包括元素登记表、内存数据桶列表;其中,元素登记表,用于保存数据对象的属性信息;内存数据桶列表,用于存储数据对象的数据内容。
5.根据权利要求
4所述的方法,其特征在于,所述web缓存单元还包括磁盘文件系统,用于存储使用不频繁但未失效的数据对象。
6.根据权利要求
1、2或3所述的方法,其特征在于,所述缓存管理器进一步包括协议处理模块、web缓存写模块、SSI模块和基于虚拟主机事件调度模块;其中,协议处理模块,用于完成与高性能httpd进程单元之间、与各业务模块组之间通信协议的解析和封装;web缓存写模块,用于接收基于虚拟主机事件调度模块的指令,向web缓存单元写入数据对象;SSI模块,用于支持服务器所包含的各种功能;基于虚拟主机事件调度模块,用于将高性能httpd进程单元发来的请求分派到不同业务模块组进行处理。
7.根据权利要求
6所述的方法,其特征在于,所述缓存管理器还包括缓存调整模块,根据用户访问情况动态调整数据对象在web缓存单元中的位置。
8.根据权利要求
4所述的方法,其特征在于,所述缓存管理器进一步包括协议处理模块、web缓存写模块、SSI模块和基于虚拟主机事件调度模块;其中,协议处理模块,用于完成与高性能httpd进程单元之间、与各业务模块组之间通信协议的解析和封装;web缓存写模块,用于接收基于虚拟主机事件调度模块的指令,向web缓存单元写入数据对象;SSI模块,用于支持服务器所包含的各种功能;基于虚拟主机事件调度模块,用于将高性能httpd进程单元发来的请求分派到不同业务模块组进行处理。
9.根据权利要求
8所述的方法,其特征在于,所述缓存管理器还包括缓存调整模块,根据用户访问情况动态调整数据对象在web缓存单元中的位置。
10.根据权利要求
5所述的方法,其特征在于,所述缓存管理器进一步包括协议处理模块、web缓存写模块、SSI模块和基于虚拟主机事件调度模块;其中,协议处理模块,用于完成与高性能httpd进程单元之间、与各业务模块组之间通信协议的解析和封装;web缓存写模块,用于接收基于虚拟主机事件调度模块的指令,向web缓存单元写入数据对象;SSI模块,用于支持服务器所包含的各种功能;基于虚拟主机事件调度模块,用于将高性能httpd进程单元发来的请求分派到不同业务模块组进行处理。
11.根据权利要求
10所述的方法,其特征在于,所述缓存管理器还包括缓存调整模块,根据用户访问情况动态调整数据对象在web缓存单元中的位置。
12.根据权利要求
10或11所述的方法,其特征在于,所述缓存管理器还包括本地获取模块,用于获取保存在磁盘文件系统中的数据。
13.一种用户通过基于虚拟主机的web服务器获取访问数据的方法,其特征在于,web服务器并发接收用户的访问数据请求,对每个访问数据请求执行以下步骤a.web服务器确认请求有效后,从web缓存中获取用户所需的数据对象;b.判断是否获取到用户所需的数据对象,如果获取到,则web服务器向相应用户返回所需的数据对象;如果未获取到,web服务器根据虚拟主机配置从自身连接的相应业务模块组中将用户所需的数据对象加载到web缓存中,之后再将web缓存中加载的数据对象返回给用户;其中,对于不同访问数据请求,所述获取数据对象、加载数据以及将数据对象返回给用户的处理以异步方式实现。
14.根据权利要求
13所述的方法,其特征在于,步骤b中所述获取到的数据对象为web缓存中未失效的数据对象、或为web缓存中已失效但能够延迟加载的数据对象。
15.根据权利要求
13所述的方法,其特征在于,该方法进一步包括设置两级web缓存,将使用频繁的数据对象缓存于web缓存的内存中,将使用不频繁但未失效的数据对象缓存于web缓存的本地磁盘中。
16.根据权利要求
15所述的方法,其特征在于,该方法进一步包括根据用户访问情况动态调整数据对象在缓存中的位置。
17.根据权利要求
13所述的方法,其特征在于,该方法进一步包括预先设置基于虚拟主机的QoS策略。
18.根据权利要求
17所述的方法,其特征在于,所述QoS策略为控制数据发送窗口大小、控制和管理web服务器所拥有的网络带宽。
19.根据权利要求
13所述的方法,其特征在于,该方法进一步包括所述web服务器使用网络事件通知机制监听在各网络套接字上触发的网络事件。
专利摘要
本发明公开了一种基于虚拟主机的web服务器,该服务器包括高性能http进程单元,用于接受用户的并发连接,根据用户请求从web缓存单元中获取用户所需数据对象返回给用户,并在需要加载数据对象时通知缓存管理器;web缓存单元,用于缓存数据对象的属性和数据内容;缓存管理器,用于接收高性能http进程单元的加载请求,从相应业务模块组获取所需的数据对象,加载到web缓存单元中。本发明还同时公开了一种用户通过基于虚拟主机的web服务器获取访问数据的方法,该web服务器和方法能够在提高系统效率、可扩展性以及支持大并发量访问的同时,对不同虚拟主机提供不同的QoS需求。
文档编号G06F9/46GK1997000SQ200510048886
公开日2007年7月11日 申请日期2005年12月31日
发明者黄斌强 申请人:腾讯科技(深圳)有限公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1