一种用户请求信息的响应方法及系统的制作方法

文档序号:7720482阅读:174来源:国知局
专利名称:一种用户请求信息的响应方法及系统的制作方法
技术领域
本发明涉及网站工作领域,更具体地说,涉及网站的用户请求信息响应领域。
背景技术
随着信息社会的到来,人们越来越依靠网络来获取庞大的信息量。大型网站服务 器众多,网站访问量大,致使用户请求信息的处理成为棘手的难题。目前大多解决方案是采 用Apache或lighthttp等Http Server收集用户请求信息到本地,然后通过FTP,远程文件 拷贝等方式将日志拷贝到统一的服务器合并后分析。 现有技术中,Http Server在处理用户请求信息时多数为逐条处理,在大规模并发 情况时,系统存在不稳定性,可能在网站访问量突然增大等爆发式请求发生时,用户请求信 息传送不畅,且处理不够及时,以致网站服务器无法处理用户请求,甚至导致系统宕机。

发明内容
有鉴于此,本发明提供一种用户请求信息响应的方法及系统,以解决现有技术中
网站服务器在处理大爆发请求时产生的用户请求信息处理传送不畅。 为了实现上述目的,本发明提供了如下方案 —种用户请求信息的响应方法,其特征在于,包括 步骤1,网站服务器接收用户请求信息; 步骤2,网站服务器将用户请求信息写入内存空间; 步骤3,网站服务器在内存空间中提取用户请求信息,通过多个有名管道传送到各 子进程; 步骤4,所述各子进程响应上述用户请求信息。
优选的有,上述方法中,步骤2具体为 获取网站服务器的最大文件数,以0到该最大文件数为内存空间的索引号; 为当前接收的用户请求信息配置索引号; 将用户请求信息写入内存空间中所述索引号对应的地址。 优选的有,上述方法中,网站服务器在内存空间中提取用户请求信息之后,还包 括 监控各个有名管道的Epoll事件,并根据Epoll事件类型标识有名管道的当前状 态; 根据有名管道的当前状态,排除缓冲区已满或已经破裂的有名管道,轮循其余的 有名管道,选择可用的有名管道。
优选的有,上述方法中,通过多个有名管道传送到各子进程具体为 从所述有名管道的FIFO Buffer中读取用户请求信息,转存入各子进程的FIFO
Buffer j 从各子进程的FIFO Buffer读出用户请求信息,将用户请求信息格式转换为日志信息后发送至Spread环路。 优选的有,上述方法中,还包括 创建固定大小的FIFO Buffer ; 接收日志信息,存入上述FIFO Buffer中; 当上述FIFO Buffer中的数据存量达到预警值时,将FIFO Buffer中的数据全部 读出,写入磁盘。 本发明还提供一种用户请求信息的响应系统,其特征在于,包括网站服务器、有 名管道及各子进程模块,所述网站服务器包括接收模块、写入模块及提取传送模块;
所述接收模块,用于接收用户请求信息; 所述写入模块,用于将接收到的用户请求信息写入内存空间; 所述提取传送模块用于从内存空间中提取用户请求信息,并将用户请求信息通过 有名管道传送到各子进程; 所述各子进程模块用于响应接收到的用户请求信息。 优选的有,上述系统中,所述写入模块包括数组索引号配置子模块、Socket文件句 柄号配置子模块及内存空间写入子模块 数组索引号配置子模块,用于获取网站服务器的最大文件数,以0到该最大文件 数为内存空间的数组索引号; Socket文件句柄号配置子模块,用于在数组索引号的范围之内为当前接收到的用 户请求信息配置Socket文件句柄号; 内存空间写入子模块,用于根据Socket文件句柄号将用户请求信息写入相应的 内存空间。 优选的有,上述系统中,网站服务器还包括有名管道当前状态标识模块和可用有 名管道查找模块; 所述有名管道当前状态标识模块,用于监控各个有名管道的Epoll事件,并根据 Epoll事件类型标识有名管道的当前状态; 所述可用有名管道查找模块,用于根据有名管道的当前状态,排除缓冲区已满或 已经破裂的有名管道,轮循其余的有名管道,查找到可用的有名管道。 优选的有,上述系统中,所述子进程模块包括第一线程子模块和第二线程子模 块; 所述第一线程子模块,用于从所述有名管道的FIFO Buffer中读取用户请求信息, 转存至各子进程模块的FIFO Buffer ; 所述第二线程子模块,用于从各子进程模块的FIFO Buffer读出用户请求信息,进 行格式转换成日志信息后并发送至Spread环路。 优选的有,上述系统中,所述还包括写磁盘模块,所述写磁盘模块包括日志信息存 储子模块和磁盘写入子模块; 所述日志信息存储子模块,用于接收日志信息,并将日志信息保存到固定大小的 FIFO Buffer中; 所述磁盘写入子模块,用于监控FIFO Buffer的状态,当所述FIFO Buffer中的日 志信息接近或达到预定设定值时,一次将所述FIFO Buffer中的数据全部读出,写入磁盘中。 本发明中网站服务器先将接收到的用户请求信息存入内存空间,再由内存空间通 过多个有名管道传送至各子进程,这种传送方式避免每次只传送一条用户请求信息引起的 传送不畅。在处理大爆发式请求时,保证了用户请求信息数据量大时对用户请求信息的传 送。将用户请求信息通过各有名管道传送至若干子进程,若干子进程并行操作,分担了系统 的工作负担,保证了对用户请求信息的处理速度。避免了处理不及时引起的网站服务器无 法处理用户请求信息,甚至系统宕机的情况。


图1为本发明中实施例一流程示意图;
图2为本发明中实施例六系统模块示意图;
图3为本发明中实施例九系统模块示意图;
图4为本发明中实施例十系统模块示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 本发明提供一种用户请求信息的响应方法,参见图l,步骤包括 步骤S101,网站服务器接收用户请求信息。其中,网站服务器接收用户请求,收集
用户请求信息。 步骤S102,网站服务器将用户请求信息写入内存空间。 步骤S103,网站服务器在内存空间中提取用户请求信息,通过多个有名管道传送 到各子进程。 步骤S104,各子进程响应上述用户请求信息。 本发明中网站服务器先将接收到的用户请求信息写入内存空间,再由内存空间通
过多个有名管道传送至各子进程,这种传送方式避免每次只传送一条用户请求信息引起的
传送不畅。且有名管道为FIFO有名管道,有效缓冲了数量巨大的用户请求信息对系统的冲
击,在处理大爆发式请求时,保证了用户请求信息数据量大时用户请求信息的传送畅通。将
用户请求信息通过各有名管道传送至若干子进程,若干子进程相互独立,并行操作,分担了
系统的工作负担,保证了对用户请求信息的处理速度。避免了在大爆发式请求发生时,处理
不及时引起的网站服务器无法处理用户请求信息,甚至系统宕机的情况。 实施例二,与上述实施例相似,与之不同为,步骤S102中所述将数据写入内存空
间具体为 获取网站服务器的最大文件数,以0到该最大文件数为内存空间的索引号;
为当前接收的用户请求信息配置索引号,将用户请求信息写入内存空间中所述索 引号对应的地址。 本实施例为内存空间配置索引号,并在索引号范围内为当前接收到的用户请求信息配置Socket文件句柄号,根据Socket文件句柄号将用户请求信息写入相应的内存空间。 继而,后端进程从内存空间中将用户请求信息读出。当下一个用户发送用户请求时,网站服 务器收集当前用户的用户请求信息,将为该用户配置Socket文件句柄号,根据该Socket文 件句柄号将当前用户的用户请求信息写入对应的内存空间中,覆盖上一个用户的用户请求 信息。 实施例三,与上述实施例相似,与之不同在于,步骤S103中,网站服务器提取用户 请求信息后还包括 监控各个有名管道的Epoll事件,并根据Epoll事件类型标识有名管道的当前状 态;其中,有名管道组成管道池,网站服务器内的管道池管理模块监控管道池中各有名管道 的Epoll事件,并根据Epoll事件类型标识有名管道的当前状态。 管道池管理模块根据有名管道的当前状态,排除缓冲区已满或已经破裂的有名管
道,轮循其余的有名管道,查找到可用的有名管道。其中,网站服务器接收到用户请求,将用
户请求信息发送至管道池管理模块,管道池管理模块根据得到的有名管道的当前状态,排
除缓存区已满或已经破裂的管道,轮询其余的管道,查找到当前可用的有名管道。 当用户请求信息数据量大时,本实施例中管道池管理模块判断是否有可用有名管
道,若有将用户请求信息写入可用有名管道,若无将用户请求信息保存至有名管道的FIFO
Buffer待有可用有名管道时再将用户请求信息写入可用有名管道,保证了各有名管道的负
载均衡,避免了有名管道缓存区已满或破裂造成的用户请求信息传输不畅。 当无可用有名管道时将用户请求信息保存至FIFO Buffer待有可用有名管道时再
将用户请求信息写入可用有名管道,在用户请求信息传输过程中起到缓冲的作用,能有效
缓解突发性和爆发性用户请求对系统的冲击。 实施例四,与上述实施例相似,与之不同在于,步骤S104具体为
从所述有名管道的FIFO Buffer中读取用户请求信息,发送至若干子进程的FIFO Buffer ;其中,子进程的第一线程由有名管道中读取出用户请求信息,并转存至子进程的 FIFO Buffer。 从各子进程的FIFO Buffer读出用户请求信息,进行格式转换成日志信息后并发 送至Spread环路。其中,子进程的第二进程由子进程的FIFO Buffer中读取用户请求信息, 对用户请求信息进行格式装换成日志信息后发送至Spread环路。 本实施例中,若干独立工作的子进程可提高系统的并发处理能力,在出现爆发式 请求时有效快速实现对用户请求信息的格式转换和传送,并对大量用户请求信息的传送 起到了分流的作用。本实施例中,可将FIFO有名管道视为第一层缓冲,将子进程的FIFO Buffer视为第二层缓冲,本发明采用的二级缓冲机制能有效缓解访问量大时高并发请求对 系统的冲击,保证了系统的安全。 实施例五,与上述实施例相似,与之不同在于,还包括
创建固定大小的FIFO Buffer ; 接收日志信息,存入上述FIFO Buffer中;当上述FIFO Buffer中的数据存量达到 预警值时,将FIFO Buffer中的数据全部读出,写入磁盘。 其中,第一线程接收日志信息,并存入至FIFO Buffer中。第二线程监视FIFO Buffer状态,当FIFO Buffer中的数据存量达到预警值时,将FIFO Buffer中的全部读出写入磁盘。 在用户请求信息的响应系统中,最后所有的日志信息都将写入至一台单独的服务 器上,即所述的磁盘中。频繁的写入磁盘会造成本地磁盘负载增加,写入日志还会受到移动 大量日志时造成的对磁盘操作的抢夺冲突,容易之致使写入的日志丢失。本实施例中将日 志信息缓冲起来,当日志信息数量达到一定大小时再一次行写入磁盘,可以有效缓解磁盘 频繁写入的冲突,提升系统的响应性能,解决日志信息响应系统中集中存储时所面临的瓶 颈问题。 实施例六,参见图2,本发明还提供一种用户请求信息的响应系统,包括网站服 务器11、有名管道12及各子进程模块13,所述网站服务器11包括接收模块111、存入模块 112和提取传送模块113; 其中,接收模块111用于接收用户请求信息;
写入模块112用于将用户请求信息写入内存空间; 提取传送模块113用于从内存空间中提取出用户请求信息,并将用户请求信息通 过多个有名管道12传送至各子进程模块13。
有名管道12用于传送用户请求信息。 各子进程模块13用于响应用户请求信息。其中,子进程模块13将用户请求信息 格式转换为日志信息传送至后端系统。 本发明中网站服务器ll先将接收到的用户请求信息写入内存空间,再由内存空 间通过多个有名管道12传送至各子进程模块13,这种传送方式避免每次只传送一条用户 请求信息引起的传送不畅。且有名管道12为FIF0有名管道12,有效缓冲了数量巨大的用 户请求信息对系统的冲击,在处理大爆发式请求时,保证了用户请求信息数据量大时用户 请求信息的传送畅通。将用户请求信息通过各有名管道12传送至若干子进程模块13,若干 子进程模块13相互独立,并行操作,分担了系统的工作负担,保证了对用户请求信息的处 理速度。避免了在大爆发式请求发生时,处理不及时引起的网站服务器ll无法处理用户请 求信息,甚至系统宕机的情况。 实施例七,本发明还提供一种用户请求信息的响应系统,与上述系统相似,与之不 同在于,所述存入模块112包括数组索引号配置子模块、Socket文件句柄号配置子模块及 内存空间写入子模块 其中,数组索引号配置子模块,用于获取网站服务器11的最大文件数,以0到该最 大文件数为内存空间的数组索引号; Socket文件句柄号配置子模块,用于在数组索引号的范围之内为当前接收到的 用户请求信息配置Socket文件句柄号;其中,网站服务器11接收到用户请求,创建用户 Socket文件,Socket文件句柄号配置子模块在数组索引号范围内为用户请求信息配置得 到当前用户请求信息Socket文件句柄号。 内存空间写入子模块,用于根据Socket文件句柄号将用户请求信息写入相应的 内存空间。其中,内存空间写入子模块根据Socket文件句柄号找到数组索引号对应的内存 空间,将用户请求信息写入到相应的内存空间中。将用户请求信息发送至后端进程后,重置 内存空间供下一个用户使用。 本系统中,本实施例为内存空间配置数组索引号,并在数组索引号范围内为当前
8接收到的用户请求信息配置Socket文件句柄号,根据Socket文件句柄号将用户请求信息 写入相应的内存空间。继而,后端进程从内存空间中将用户请求信息读出。当下一个用户 发送用户请求时,网站服务器11收集当前用户的用户请求信息,将为该用户配置Socket文 件句柄号,根据该Socket文件句柄号将当前用户的用户请求信息写入对应的内存空间中, 覆盖上一个用户的用户请求信息。 实施例八,本发明还提供一种用户请求信息的响应系统,与上述系统相似,与之不 同在于,网站服务器11还包括有名管道当前状态标识单元和可用有名管道查找单元;
所述有名管道当前状态标识单元,用于监控各个有名管道12的Epoll事件,并根 据Epoll事件类型标识有名管道12的当前状态; 所述可用有名管道查找单元,用于根据有名管道12的当前状态,排除缓冲区已满
或已经破裂的有名管道12,轮循其余的有名管道12,查找到可用的有名管道12。 当用户请求信息数据量较大时,本系统判断是否有可用有名管道12,若有将用户
请求信息写入可用有名管道12,若无将用户请求信息保存至有名管道12的FIF0 Buffer待
有可用有名管道12时再将用户请求信息写入可用有名管道12,保证了各有名管道12的负
载均衡,避免了有名管道12缓存区已满或破裂造成的用户请求信息传输不畅。 实施例九,参见图3,本发明还提供一种用户请求信息的响应系统,与上述系统相
似,与之不同在于,子进程模块13包括第一线程子模块131和第二线程子模块132 ; 所述第一线程子模块131,用于从所述有名管道12的FIFO Buffer中读取用户请
求信息,转存至各子进程13的FIFO Buffer ; 所述第二线程子模块132,用于从各子进程模块13的FIFO Buffer读出用户请求
信息,将用户请求信息格式转换为日志信息后并发送至Spread环路14。 本系统中,若干独立工作的子进程模块13可提高系统的并发处理能力,在出现爆
发式请求时有效快速实现对用户请求信息的格式转换和传送,并对大量用户请求信息的传
送起到了分流的作用。可将FIF0有名管道12视为第一层缓冲区,将子进程模块13的FIF0
Buffer视为第二层缓冲区,本系统中的二级缓冲区能有效缓解访问量突然增大时高并发请
求对系统的冲击,保证了系统的安全。 实施例十,参见图4,本发明还提供一种用户请求信息的响应系统,与上述系统相 似,与之不同在于,还包括写磁盘模块15,写磁盘模块15包括日志信息存储子模块151和磁 盘写入子模块152。 其中,日志信息存储子模块151,用于接收日志信息,并将日志信息保存到固定大 小的FIFO Buffer中; 磁盘写入子模块152,用于监控FIFO Buffer的状态,当所述FIFO Buffer中的日 志信息接近或达到预定设定值时,一次将所述FIFO Buffer中的数据全部读出,写入磁盘 16中。 在用户请求响应系统中,最后所有的日志信息都将通写入至一台单独的服务器 上,即所述磁盘16中。频繁的写入磁盘会造成本地磁盘16负载增加,写入日志还会受到移 动大量日志时造成的对磁盘操作的抢夺冲突,容易之致使写入的日志丢失。本实施例中将 日志信息缓冲起来,当日志信息数量达到一定大小时再一次行写入磁盘16,可以有效缓解 磁盘频繁写入的冲突,提升系统的响应性能,解决日志信息响应系统中集中存储时所面临的瓶颈问题。 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明 将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
权利要求
一种用户请求信息的响应方法,其特征在于,包括步骤1,网站服务器接收用户请求信息;步骤2,网站服务器将用户请求信息写入内存空间;步骤3,网站服务器在内存空间中提取用户请求信息,通过多个有名管道传送到各子进程;步骤4,所述各子进程响应上述用户请求信息。
2. 根据权利要求1所述的方法,其特征在于,步骤2具体为 获取网站服务器的最大文件数,以0到该最大文件数为内存空间的索引号; 为当前接收的用户请求信息配置索引号; 将用户请求信息写入内存空间中所述索引号对应的地址。
3. 根据权利要求1所述的方法,其特征在于,网站服务器在内存空间中提取用户请求 信息之后,还包括监控各个有名管道的Epoll事件,并根据Epoll事件类型标识有名管道的当前状态;根据有名管道的当前状态,排除缓冲区已满或已经破裂的有名管道,轮循其余的有名 管道,选择可用的有名管道。
4. 根据权利要求1所述的方法,其特征在于,通过多个有名管道传送到各子进程具体为从所述有名管道的FIFO Buffer中读取用户请求信息,转存入各子进程的FIFO Buffer j从各子进程的FIFO Buffer读出用户请求信息,将用户请求信息格式转换为日志信息 后发送至Spread环路。
5. 根据权利要求l所述的方法,其特征在于,还包括 创建固定大小的FIFO Buffer ; 接收日志信息,存入上述FIFO Buffer中;当上述FIFO Buffer中的数据存量达到预警值时,将FIFO Buffer中的数据全部读出, 写入磁盘。
6. —种用户请求信息的响应系统,其特征在于,包括网站服务器、有名管道及各子进 程模块,所述网站服务器包括接收模块、写入模块及提取传送模块;所述接收模块,用于接收用户请求信息;所述写入模块,用于将接收到的用户请求信息写入内存空间;所述提取传送模块用于从内存空间中提取用户请求信息,并将用户请求信息通过有名 管道传送到各子进程;所述各子进程模块用于响应接收到的用户请求信息。
7. 根据权利要求6所述的系统,其特征在于,所述写入模块包括数组索引号配置子模 块、Socket文件句柄号配置子模块及内存空间写入子模块数组索引号配置子模块,用于获取网站服务器的最大文件数,以0到该最大文件数为 内存空间的数组索引号;Socket文件句柄号配置子模块,用于在数组索引号的范围之内为当前接收到的用户请 求信息配置Socket文件句柄号;内存空间写入子模块,用于根据Socket文件句柄号将用户请求信息写入相应的内存 空间。
8. 根据权利要求6所述的系统,其特征在于,网站服务器还包括有名管道当前状态标 识模块和可用有名管道查找模块;所述有名管道当前状态标识模块,用于监控各个有名管道的Epoll事件,并根据Epoll 事件类型标识有名管道的当前状态;所述可用有名管道查找模块,用于根据有名管道的当前状态,排除缓冲区已满或已经 破裂的有名管道,轮循其余的有名管道,查找到可用的有名管道。
9. 根据权利要求6所述的系统,其特征在于,所述子进程模块包括第一线程子模块和 第二线程子模块;所述第一线程子模块,用于从所述有名管道的FIFO Buffer中读取用户请求信息,转存 至各子进程模块的FIFO Buffer ;所述第二线程子模块,用于从各子进程模块的FIFO Buffer读出用户请求信息,进行格 式转换成日志信息后并发送至Spread环路。
10. 根据权利要求6所述的系统,其特征在于,所述还包括写磁盘模块,所述写磁盘模 块包括日志信息存储子模块和磁盘写入子模块;所述日志信息存储子模块,用于接收日志信息,并将日志信息保存到固定大小的FIFO Buffer中;所述磁盘写入子模块,用于监控FIFO Buffer的状态,当所述FIFO Buffer中的日志信 息接近或达到预定设定值时,一次将所述FIFO Buffer中的数据全部读出,写入磁盘中。
全文摘要
本发明公开了一种用户请求信息的响应方法及系统网站服务器接收用户请求信息;网站服务器将用户请求信息存入内存空间;网站服务器在内存空间中提取用户请求信息,通过多个有名管道传送到各子进程;所述各子进程响应上述用户请求信息。将接收到的用户请求信息存入内存空间,再由内存空间通过多个有名管道传送至各子进程,避免每次只传送一条用户请求信息引起的传送不畅。在处理大爆发式请求时,保证了对用户请求信息的传送。将用户请求信息通过各有名管道传送至若干子进程,若干子进程并行操作,分担了系统的工作负担,保证了对用户请求信息的处理速度。避免了处理不及时引起的网站服务器无法处理用户请求信息,甚至系统宕机的情况。
文档编号H04L29/08GK101729415SQ20091023874
公开日2010年6月9日 申请日期2009年11月24日 优先权日2009年11月24日
发明者吴帅, 左鹞飞, 王国腾, 绍军 申请人:北京雷霆万钧网络科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1