本申请涉及通信技术领域,尤其涉及一种数据压缩方法和设备。
背景技术:
随着互联网的高速发展,通过互联网传输的业务数据越来越多,也越来越复杂。在业务数据的传输过程中,网络设备可以采用HTTP(Hyper Text Transfer Protocol,超文本传输协议)压缩技术对业务数据进行压缩后传输,这样可以减少网络中的数据传输量,优化网络带宽。然而,对业务数据进行HTTP压缩的过程必然会消耗大量系统资源,因此如何提高网络设备的HTTP压缩处理性能十分关键。
技术实现要素:
有鉴于此,本申请提供一种数据压缩方法和设备,以解决相关技术中网络设备的HTTP压缩处理性能差的问题。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请提供一种数据压缩方法,所述方法应用于网络设备,所述网络设备包括处理器和硬件压缩模块,所述方法包括:
处理器对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数;
处理器将压缩预处理后的业务数据发送至硬件压缩模块,由硬件压缩模块进行压缩;
硬件压缩模块将压缩后的业务数据发送回处理器,并向处理器发送中断信号;
处理器在接收到中断信号时,判断所述中断信号是否来自硬件压缩模块;
当处理器确定所述中断信号来自硬件压缩模块时,调用所述回调函数,对所述压缩后的业务数据进行业务处理。
第二方面,本申请提供一种数据压缩设备,所述设备包括:处理器和硬件压缩模块;
其中,所述处理器,用于对接收到的业务数据进行压缩预处理,为所述业务数据指定回调函数,并将压缩预处理后的业务数据发送至硬件压缩模块;
所述硬件压缩模块,用于压缩来自所述处理器的业务数据,并将压缩后的业务数据发送回处理器,以及向处理器发送中断信号;
所述处理器,还用于在接收到中断信号时,判断所述中断信号是否来自硬件压缩模块,当确定所述中断信号来自硬件压缩模块时,调用所述回调函数,对所述压缩后的业务数据进行业务处理。
分析上述技术方案可知,处理器可以为接收到的业务数据指定回调函数,并在对所述业务数据进行压缩预处理后,将压缩预处理后的业务数据发送至硬件压缩模块进行压缩,硬件压缩模块在完成压缩后可以将压缩后的业务数据发送回处理器,并向处理器发送中断信号。处理器在确定接收到来自硬件压缩模块的中断信号时,可以调用所述回调函数对所述压缩后的业务数据进行业务处理。与相关技术相比,处理器在硬件压缩模块进行压缩时,可以继续对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数,而无需等待硬件压缩模块完成压缩,因此可以充分利用处理器资源,提高网络设备的HTTP压缩处理性能。
附图说明
图1是本申请一示例性实施例示出的一种数据压缩方法的流程图;
图2是本申请一示例性实施例示出的另一种数据压缩方法的流程图;
图3是本申请一示例性实施例示出的一种数据压缩设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的设备和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
相关技术中,处理器在接收到来自设备驱动的业务数据后,可以按照硬件压缩模块接口的规范对所述业务数据进行压缩预处理,例如:指定所述业务数据对应的压缩格式和压缩级别等。处理器可以将压缩预处理后的业务数据发送至硬件压缩模块,由硬件压缩模块对所述压缩预处理后的业务数据进行压缩。硬件压缩模块在完成压缩后,可以将压缩后的业务数据发送回处理器,由处理器对所述压缩后的业务数据进行业务处理,例如:基于所述压缩后的业务数据构造报文并发送等。处理器在完成业务处理后,可以继续对接收到的业务数据进行压缩预处理。然而采用这种方式,处理器在硬件压缩模块每次进行压缩时均处于等待状态,从而导致处理器资源的利用率低下,网络设备的HTTP压缩处理性能差。
请参考图1,为本申请一示例性实施例示出的一种数据压缩方法的流程图,该方法可以应用于网络设备,所述网络设备包括处理器和硬件压缩模块。该方法可以包括以下步骤:
步骤101:处理器对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数。
在本实施例中,处理器在接收到所述业务数据后,可以对所述业务数据进行压缩预处理,并为所述业务数据指定回调函数,所述回调函数用于指定后续处理器对压缩后的业务数据进行业务处理所采用的方式。
步骤102:处理器将压缩预处理后的业务数据发送至硬件压缩模块,由硬件压缩模块进行压缩。
在本实施例中,处理器可以将压缩预处理后的业务数据发送至硬件压缩模块,硬件压缩模块在接收到所述压缩预处理后的业务数据后,可以对其进行压缩。
步骤103:硬件压缩模块将压缩后的业务数据发送回处理器,并向处理器发送中断信号。
在本实施例中,硬件压缩模块在完成对所述压缩预处理后的业务数据的压缩后,可以将得到的压缩后的业务数据发送回处理器,并向处理器发送中断信号。
步骤104:处理器在接收到中断信号时,判断所述中断信号是否来自硬件压缩模块。
在本实施例中,网络设备中的各硬件可以向处理器发送中断信号,处理器在接收到中断信号时,可以先判断该中断信号是否来自硬件压缩模块。
步骤105:当处理器确定所述中断信号来自硬件压缩模块时,调用所述回调函数,对所述压缩后的业务数据进行业务处理。
在本实施例中,基于前述步骤104的判断结果,当处理器确定所述中断信号来自硬件压缩模块时,可以调用前述步骤101中处理器指定的回调函数,对前述步骤103中硬件压缩模块发送回的压缩后的业务数据进行业务处理。
由上述实施例可见,处理器可以为接收到的业务数据指定回调函数,并在对所述业务数据进行压缩预处理后,将压缩预处理后的业务数据发送至硬件压缩模块进行压缩,硬件压缩模块在完成压缩后可以将压缩后的业务数据发送回处理器,并向处理器发送中断信号。处理器在确定接收到来自硬件压缩模块的中断信号时,可以调用所述回调函数对所述压缩后的业务数据进行业务处理。与相关技术相比,处理器在硬件压缩模块进行压缩时,可以继续对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数,而无需等待硬件压缩模块完成压缩,因此可以充分利用处理器资源,提高网络设备的HTTP压缩处理性能。
参考图2,为本申请一示例性实施例示出的另一种数据压缩方法的流程图,该方法可以应用于网络设备,所述网络设备包括处理器和硬件压缩模块。所述处理器将非易失性存储器中与所述数据压缩方法对应的计算机程序指令读取到内存中运行,以实现上述数据压缩方法。在本例中,可以将与所述数据压缩方法对应的计算机程序指令分为两个部分:一部分计算机程序指令与数据压缩相关,可以将这部分指令的执行主体称为软件压缩模块,另一部分计算机程序指令与业务数据、中断信号的接收相关,可以将这部分指令的执行主体称为底层驱动模块。其中,所述软件压缩模块和所述底层驱动模块均为逻辑意义上的虚拟模块。基于上述划分,该数据压缩方法可以包括以下步骤:
步骤201:底层驱动模块接收业务数据。
在本实施例中,底层驱动模块在接收到来自网卡的中断信号时,可以接收到业务数据。
步骤202:底层驱动模块向软件压缩模块发送所述业务数据。
在本实施例中,底层驱动模块在接收到业务数据时,可以将所述业务数据发送至软件压缩模块。
步骤203:软件压缩模块对所述业务数据进行压缩预处理,并为所述业务数据指定回调函数。
在本实施例中,软件压缩模块在接收到所述业务数据后,可以对所述业务数据进行压缩预处理,并为所述业务数据指定回调函数,所述回调函数用于指定后续软件压缩模块对压缩后的业务数据进行业务处理所采用的方式。
在一个可选的实施例中,所述对接收到的业务数据进行压缩预处理可以是根据硬件压缩模块接口的规范对所诉业务数据进行组织处理,例如:可以指定所述业务数据对应的压缩格式和压缩级别等。所述压缩格式可以包括gzip、deflate等;所述压缩级别可与压缩后的业务数据的大小相关,一般而言,压缩级别越高,压缩后的业务数据的大小越小。
步骤204:软件压缩模块向硬件压缩模块发送压缩预处理后的业务数据。
在本实施例中,软件压缩模块在对接收到的业务数据进行压缩预处理后,可以将压缩预处理后的业务数据发送至硬件压缩模块。
步骤205:硬件压缩模块对所述压缩预处理后的业务数据进行压缩。
在本实施例中,硬件压缩模块在接收到所述压缩预处理后的业务数据后,可以对其进行压缩。
步骤206:硬件压缩模块向软件压缩模块发送压缩后的业务数据。
在本实施例中,硬件压缩模块在完成对所述压缩预处理后的业务数据的压缩后,可以将得到的压缩后的业务数据发送回软件压缩模块。
步骤207:硬件压缩模块向底层驱动模块发送中断信号。
在本实施例中,硬件压缩模块在完成对所述压缩预处理后的业务数据的压缩后,还可以向底层驱动模块发送中断信号。
步骤208:底层驱动模块判断接收到的中断信号是否来自硬件压缩模块。如果是,执行步骤209。
在本实施例中,底层驱动模块在接收到中断信号时,可以先判断该中断信号是否来自硬件压缩模块。如果该中断信号来自硬件压缩模块,则可以执行步骤209。
在本步骤中,如果该中断信号来自网卡,则可以执行步骤201,底层驱动模块可以继续接收业务数据,并将接收到的业务数据发送至软件压缩模块,由软件压缩模块进行压缩预处理。
步骤209:底层驱动模块调用所述回调函数。
基于前述步骤208的判断结果,当底层驱动模块确定接收到的中断信号来自硬件压缩模块时,可以调用在前述步骤203中软件压缩模块指定的回调函数。
步骤210:软件压缩模块根据所述回调函数对所述压缩后的业务数据进行业务处理。
在本实施例中,在底层驱动模块调用所述回调函数后,软件压缩模块可以对前述步骤206中硬件压缩模块发送回的压缩后的业务数据进行业务处理。
在一个可选的实施例中,软件压缩模块可以基于所述压缩后的业务数据构造报文并发送,也可以将所述压缩后的业务数据缓存,与下次硬件压缩模块发送回的压缩后的数据进行拼接后构造报文并发送。软件压缩模块对所述压缩后的业务数据进行业务处理所采用的方式由前述步骤203中指定的回调函数确定。
在本实施例中,当底层驱动模块未接收到硬件压缩模块的中断信号时,软件压缩模块可以继续对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数。
由上述实施例可见,软件压缩模块可以为接收到的业务数据指定回调函数,并在对所述业务数据进行压缩预处理后,将压缩预处理后的业务数据发送至硬件压缩模块进行压缩,硬件压缩模块在完成压缩后可以将压缩后的业务数据发送回软件压缩模块,并向底层驱动模块发送中断信号。底层驱动模块在确定接收到来自硬件压缩模块的中断信号时,可以调用所述回调函数,从而使软件压缩模块根据所述回调函数对所述压缩后的业务数据进行业务处理。与相关技术相比,在硬件压缩模块进行压缩时,底层驱动模块仍可以将接收到的业务数据发送至软件压缩模块,软件压缩模块仍可以所述业务数据进行压缩预处理,并为所述业务数据指定回调函数,而无需等待硬件压缩模块完成压缩,因此可以充分利用处理器资源,提高网络设备的HTTP压缩处理性能。
与前述数据压缩方法的实施例相对应,本申请还提供了数据压缩设备的实施例。
请参考图3,为本申请一示例性实施例示出的一种数据压缩设备的框图,该设备可以包括:处理器301和硬件压缩模块302;
其中,所述处理器301,可以用于对接收到的业务数据进行压缩预处理,为所述业务数据指定回调函数,并将压缩预处理后的业务数据发送至硬件压缩模块;
所述硬件压缩模块302,可以用于压缩来自所述处理器的业务数据,并将压缩后的业务数据发送回处理器,以及向处理器发送中断信号;
所述处理器301,还可以用于在接收到中断信号时,判断所述中断信号是否来自硬件压缩模块,当确定所述中断信号来自硬件压缩模块时,调用所述回调函数,对所述压缩后的业务数据进行业务处理。
在一个可选的实施例中,所述处理器301还可以用于当确定接收到的中断信号来自网卡时,继续对接收到的业务数据进行压缩预处理,并为所述业务数据指定回调函数。
在另一个可选的实施例中,所述处理器对接收到的业务数据进行压缩预处理,可以包括:处理器为所述业务数据指定的压缩格式和压缩级别。
在另一个可选的实施例中,所述对所述压缩后的业务数据进行业务处理,可以包括:基于所述压缩后的业务数据构造报文并发送。
上述设备中处理器和硬件压缩模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。