在Nginx上实现云缓存的REST接口的方法和系统的制作方法

文档序号:7922211阅读:152来源:国知局
专利名称:在Nginx上实现云缓存的REST接口的方法和系统的制作方法
技术领域
本发明涉及到通讯技术领域,特别涉及到一种在Nginx上实现云缓存的REST接口的方法和系统。
背景技术
Nginx是一个高性能的HTTP和反向代理服务器,同时也是IMAP/P0P3/SMTP代理服务器。Nginx具有安装简单、配置文件简洁、启动容易、稳定性高以及对系统资源的消耗低等优点,并且即使运行数个月也不需要重新启动。基于这些高性能,Nginx已经开始被广泛应用。目前,通常采用高速缓冲存储器来实现Nginx的缓存功能,但存在性能不够高、可靠性不强和扩展性不够好的缺点。发明内容
本发明的主要目的为提供一种在Nginx上实现云缓存的REST接口的方法,将 Nginx和云缓存结合起来,使得缓存的容量更大,并且可以很好地节省CPU资源,从而使得 Nginx的缓存功能更加强大。
本发明提供一种在Nginx上实现云缓存的REST接口的方法,包括
接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP消息所对应的关键信息和操作 类型;
将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型, 并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;
接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
优选地,所述将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将转化后的参数传入云缓存装置包括
将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;
将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
优选地,在执行所述将操作类型转化为云缓存操作类型之后,还包括
根据所述云缓存操作类型创建一有名管道;
定时检测所述有名管道中是否存在云缓存装置所返回的数据,如存在,将该管道文件中的数据读出。
优选地,所述云缓存装置返回云缓存操作结果包括
检测是否存在所述有名管道;
如果存在所述有名管道,则将数据写入有名管道中。
优选地,在执行所述将关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型之前,还包括
判断所述关键信息是否正确或操作类型是否使能;
当所述关键信息不正确或所述操作类型不使能时,结束流程。
本发明还提供一种在Nginx上实现云缓存的REST接口的系统,包括缓存插件和云缓存装置,所述云缓存装置用于进行云缓存操作,其中,所述缓存插件包括
解析模块,用于接 收客户端发送的HTTP消息,并根据预设的配置文件解析出所述 HTTP消息所对应的关键信息和操作类型;
转化模块,用于将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;
返回模块,用于接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
优选地所述转化模块包括
封装单元,用于将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的 Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;
转化单元,用于将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
优选地,所述缓存插件还包括
创建模块,用于根据所述云缓存操作类型创建一有名管道;
读出模块,用于定时检测所述有名管道中是否存在云缓存装置所返回的数据,如存在,将该管道文件中的数据读出。
优选地,所述云缓存装置包括
检测模块,用于检测是否存在所述有名管道;
写入模块,用于如果存在所述有名管道,则将数据写入有名管道中。
优选地,所述缓存插件还包括
判断模块,用于判断所述关键信息是否正确或操作类型是否使能;当所述关键信息不正确或所述操作类型不使能时,结束流程。
本发明通过云缓存装置来代替Nginx高速缓冲存储器,并且在Nginx服务器中实现一个缓存插件,将Nginx和云缓存装置结合起来,以建立Nginx和云缓存装置之间数据的传送,从而可以在Nginx上利用云缓存装置实现Nginx的缓存功能,并且达到实现云缓存REST接口的目的。采用这种利用云缓存技术代替Nginx本身的高速缓冲存储器来实现其缓存功能的方法,由于结合了 Nginx自身所具有的高性能和云缓存所具有的高性能、高可靠性以及可扩展的特点,便可以很好地节省CPU资源,并且使得缓存的容量更大,从而使 Nginx的缓存功能更加强大。


图1为本发明在Nginx上实现云缓存的REST接口的方法一实施例的流程示意图2为本发明在Nginx上实现云缓存的REST接口的方法一实施例中转化的流程示意图3为本发明在Nginx上实现云缓存的REST接口的方法一实施例中创建有名管道的流程示意示意图
图4为本发明在Nginx上实现云缓存的REST接口的方法一实施例中返回的流程图5为本发明在Nginx上实现云缓存的REST接口的方法又一实施例的流程示意图6为本发明在Nginx上实现云缓存的REST接口的系统的结构示意图;图7为本发明在Nginx上实现云缓存的REST接口的系统一实施中缓存插件的结
构示意图8为图7中转化模块的结构示意图9为本发明在Nginx上实现云缓存的REST接口的系统一实施中云缓存装置的结构示意图10为本发明在Nginx上实现云缓存的REST接口的系统又一实施例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,提出本发明在Nginx上实现云缓存的REST接口的方法一实施例,该方法包括
步骤S101,接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP 消息所对应的关键信息和操作类型;
在本实施例中,将现有的用于Nginx的高速缓冲存储器用云缓存装置来代替,即将Nginx的缓存机制独立出去交由云缓存线程来维护和管理。同时,在Nginx服务器中设置一个缓存插件,并且利用这个缓存插件将Nginx和云缓存装置结合起来,以建立Nginx和云缓存装置之间的数据传送。
当启动Nginx后,Nginx会自动获取其系统中所预设的配置文件,这个配置文件中包括了根据本系统所需的配置内容而在Nginx. conf中增加的配置信息,同时,云缓存装置开始加载其动态文件库,以启动云缓存线程。然后,Nginx的侦听端口等待HTTP消息的请求,当接收到HTTP消息后,便将该消息交由缓存插件进行处理,缓存插件会根据配置文件中的配置信息,解析出该HTTP消息所对应的关键信息和该HTTP消息的操作类型。Nginx系统的配置十分灵活,既可以支持配置预期的量值,又可以支持配置变量,使得参数可以随每一次的HTTP请求而改变。在本实施例中,可以在配置文件中配置变量,当Nginx系统所接收到的HTTP消息的HTTP-Header中存在变量时,缓存插件则会优先根据这个变量,来决定 HTTP消息所对应的云缓存操作类型。
步骤S102,将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;
由于本实施例是通过云缓存装置来实现Nginx的缓冲功能,云缓存装置是基于 Key-Value存储方式的分布式缓存系统。因此,当根据配置文件中的配置信息解析出HTTP 消息所对应的关键信息后,需要将其转化为云缓存操作所需要的参数,同时,由于HTTP消息的操作类型为REST接口,即POST,GET, DELETE和PUT这四种操作类型,而云缓存操作则支持6种操作类型SET操作,GET操作,DELETE操作,GETDEL操作,INCR操作以及STEP操作。因此,需要将所接收到的HTTP消息的操作类型转化为云缓存操作所支持的云缓存操作类型。然后,将所转化后的云缓存操作所需要的参数传入云缓存装置中,云缓存装置便可以根据所接收到的参数以及云缓存操作类型进行云缓存操作。
步骤S103,接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
云缓存装置根据所接收到的参数以及云缓存操作类型进行云缓存操作后,会将操作的结果返回至缓存插件。当接收到云缓存装置所返回的操作结果后,还需要将这个操作结果进行处理,并将处理的结果返回给客户端。本实施例中,所提到的对操作结果进行处理是指将其组织成客户端所请求的HTTP请求消息所需要的内容,并通过Nginx现有的通道将这个内容返回给HTTP客户端。这样,便完成了在Nginx上利用云缓存实现Nginx的缓存功能,并且达到了实现云缓存REST接口的目的。
本发明实施例所提供的在Nginx上实现云缓存的REST接口的方法,通过云缓存装置来代替Nginx高速缓冲存储器,并且在Nginx服务器中实现一个缓存插件,将Nginx和云缓存装置结合起来,以建立Nginx和云缓存装置之间数据的传送,从而可以在Nginx上利用云缓存装置实现Nginx的缓存功能,并且达到实现云缓存REST接口的目的。采用这种利用云缓存技术代替Nginx本身的高速缓冲存储器来实现其缓存功能的方法,由于结合了 Nginx自身所具有的高性能和云缓存所具有的高性能、高可靠性以及可扩展的特点,便可以很好地节省CPU资源,并且使得缓存的容量更大,从而使Nginx的缓存功能更加强大。
参照图2,本发明在Nginx上实现云缓存的REST接口的方法一实施例中,步骤 S102包括
步骤S1021,将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的 Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;
在本实施例中,由于云缓存装置是基于Key-Value存储方式的分布式缓存系统, 当解析出HTTP消息所对应的关键信息后,将这些关键信息进行转化,转化为云缓存操作所需要的参数,这就需要将HTTP消息的关键信息打包成用于云缓存的Key-Value存储方式的数据,即将这些关键信息进行封装而形成云缓存的Key-Value数据包,并将该Key-Value数据包发送到云缓存装置中,以供云缓存装置收到该Key-Value数据后,根据其中所包含的数据来进行云缓存操作。
步骤S1022,将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
当根据预设的配置文件中的配置信息对应出所接收到的HTTP消息的操作类型后,由于云缓存装置不支持REST接口,因此需要将HTTP的操作类型进行转化,转化为云缓存操作所支持的云缓存操作类型,以便在云缓存装置中根据该云缓存操作类型进行操作。 本实施例中,在将操作类型进行转化时,可以将POST操作和PUT操作转化为云缓存SET操作,GET操作转化为云缓存GET操作,DELETE操作转化为云缓存DELETE操作,然后,云缓存装置会根据该云缓存操作类型进行相应的云缓存操作,这样,便可以在云缓存上实现REST 接口。如在Nginx的配置文件中配置了变量
dcache_incr_base $http_base ;
dcache_incr_step $http_step ;
并在Nginx所接收到的HTTP消息的HTTP-Header中存在如下的消息头顶
base :1000
step I
在解析该HTTP消息的操作类型时,便可以根据这个变量来决定该HTTP消息的操作类型为INCR操作。
将HTTP消息所对应的关键信息封装为云缓存的Key-Value数据包,以供云缓存装置根据该Key-Value数据包中的数据进行云缓存操作;同时将该HTTP消息的操作类型转化为云缓存操作所支持的云缓存操作类型,以供云缓存装置根据该云缓存操作类型进行相应的云缓存操作。这样,便使得云缓存装置的REST接口得以实现,从而可以通过云缓存来实现Nginx的缓存功能,进一步保证了缓存的容大量,同时使得Nginx的缓存功能更加强大。
参照图3,本发明在Nginx上实现云缓存的REST接口的方法一实施例中,该方法还包括
步骤S104,根据所述云缓存操作类型创建一有名管道;
由于Nginx目前没有现成的支撑函数来支持无血缘关系的进程之间的通信机制, 因此,本实施例中,采用有名管道方式来建立云缓存线程与Nginx之间的数据通信。这样, 当将HTTP消息的操作类型转化为云缓存操作类型后,便可以根据这个云缓存操作类型创建一个 有名管道,这个有名管道用来实现缓存插件与云缓存装置之间的数据通信,Nginx为多线程操作,因此创建一个有名管道,由于此有名管道是唯一的,便可以保证缓存插件与云缓存装置之间进行数据通信的唯一性。这样,云缓存装置便调用自身的接口函数,根据通过 HTTP消息的操作类型转化而来的云缓存操作类型,进行相应的云缓存操作,并且会将经过云缓存操作后的数据写入有名管道中,并且进行返回。
步骤S105,定时检测所述有名管道中是否存在云缓存装置所返回的数据,如存在, 将该管道文件中的数据读出。
在云缓存装置根据由HTTP消息的操作类型转化而来的云缓存操作类型进行了相应的云缓存操作的同时,开启用以循环检测有名管道的定时器,以定时检测该有名管道中是否存在云缓存装置所返回根据云缓存操作类型而进行了云缓存操作后的数据,如果检测到在有名管道中存在,便可以将这个数据读出。这样,就完成了云缓存线程与Nginx之间的数据通信。
根据HTTP消息所对应的云缓存操作类型创建一个有名管道,来保证缓存插件与云缓存装置之间进行数据通信的唯一性。这样,当云缓存装置进行云缓存操作后,通过定时器检测到该有名管道中存在云缓存装置所返回的数据后,将其中的数据读出即可。采用这种有名管道的方式来实现云缓存装置与Nginx之间的数据通信,既保证了数据的准确性、 唯一性,同时又可以方便、快速地完成云缓存操作,使Nginx缓存的强大性能得以更有力的保障,并且节省了用户的等待时间。
参照图4,本发明在Nginx上实现云缓存的REST接口的方法一实施例中,步骤 S103包括
步骤S1031,检测是否存在所述有名管道;
当云缓存装置调用自身的接口函数,并根据所接收到的HTTP消息所对应的云缓存操作类型而进行相应的云缓存操作后,便会将操作后的数据写入到缓存插件所创建的有名管道中进行存储,并将这个有名管道进行返回。因此,当进行完云缓存操作后,云缓存装置便会首先检测是否存在由缓存插件所创建的有名管道,以便将数据写入其中,并且返回。
步骤S1032,如果存在所述有名管道,则将数据·写入有名管道中。
如果云缓存装置检测到存在由缓存插件所创建的有名管道,便会将根据所接收到的云缓存操作类型进行操作后的数据写入这个管道中,然后将这个存储了数据的有名管道返回至缓存插件。
当云缓存装置对所接收到的云缓存操作类型进行相应的操作后,并需要将操作后的数据进行存储并返回时,首先检测缓存插件所创建的有名管道是否存在,当检测到存在该有名管道后,便可以将数据写入其中,然后将这个管道文件返回至缓存插件,以方便缓存插件将该管道文件中的数据进行读出。
参照图5,提出本发明在Nginx上实现云缓存的REST接口的方法又一实施例,该方法还包括
步骤S106,判断所述关键信息是否正确或操作类型是否使能;
当根据预设的配置文件解析出所接收到的客户端发送的HTTP消息的关键信息和操作类型后,首先要判断该关键信息是否正确,或者判断该HTTP消息的操作类型是否使能,以便于根据判断的结果来决定是否将HTTP消息的关键信息和操作类型进行转化,转化为云缓存操作所需要的参数以及云缓存操作类型。
步骤S107,当所述关键信息不正确或所述操作类型不使能时,结束流程。
当对HTTP消息的关键信息和操作类型进行判断后,如判断出关键信息为正确的, 或HTTP消息的操作类型为使能,则将该关键信息和操作类型转化为云缓存操作所需要的参数以及云缓存操作类型,并将该参数传入云缓存装置,以便其根据转化后云缓存操作类型进行相应的云缓存操作;反之,如果判断出关键信息不正确,或者HTTP消息的操作类型为不使能,则不需要将HTTP消息的关键信息和操作类型进行转化,而直接结束流程。
在执行将HTTP消息的关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型之前,先对HTTP消息关键信息的正确性和操作类型是否使能进行判断,如该关键信息为正确的或操作类型使能,则将HTTP消息的关键信息和操作类型进行转化为云缓存操作所需要的参数和云缓存操作类型,以方便云缓存装置进行云缓存操作;如HTTP消息的关键信息不正确或其操作类型不使能,则不必浪费时间进行转化而直接结束流程。这样,可以使得云缓存操作的速度得以进一步提升,同时避免了一些不必要的操作。
参照图6和图7,提出本发明在Nginx上实现云缓存的REST接口的系统一实施例, 该系统包括缓存插件和云缓存装置,所述云缓存装置用于进行云缓存操作,其中,所述缓存插件包括
解析模块10,用于接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP消息所对应的关键信息和操作类型;
转化模块20,用于将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;
返回模块30,用于接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
在本实施例中,将现有的用于Nginx的高速缓冲存储器用云缓存装置来代替,即将Nginx的缓存机制独立出去交由云缓存线程来维护和管理。同时,在Nginx服务器中设置一个缓存插件,并且利用这个缓存插件将Nginx和云缓存装置结合起来,以建立Nginx和云缓存装置之间的数据传送。
当启动Nginx后,Nginx会自动获取其系统中所预设的配置文件,这个配置文件中包括了根据本系统所需的配置内容而在Nginx. conf中增加的配置信息,同时,云缓存装置开始加载其动态文件库,以启动云缓存线程。然后,Nginx的侦听端口等待HTTP消息的请求,当接收到HTTP消息后,便将该消息交由缓存插件进行处理,缓存插件会根据配置文件中的配置信息,由解析模块10解析出该HTTP消息所对应的关键信息和该HTTP消息的操作类型。Nginx系统的配置十分灵活,既可以支持配置预期的量值,又可以支持配置变量,使得参数可以随每一次的HTTP请求而改变。在本实施例中,可以在配置文件中配置变量,当 Nginx系统所接收到的HTTP消息的HTTP-Header中存在变量时,缓存插件则会优先根据这个变量,来决定HTTP消息所对应的云缓存操作类型。
由于本实施例是通过云缓存装置来实现Nginx的缓冲功能,云缓存装置是基于 Key-Value存储方式的分布式缓存系统。因此,当根据配置文件中的配置信息解析出HTTP 消息所对应的关键信息后,转化模块20需要将其转化为云缓存操作所需要的参数,同时, 由于HTTP消息的操作类型为REST接口,即POST,GET,DELETE和PUT这四种操作类型,而云缓存操作则支持6种操作类型SET操作,GET操作 ,DELETE操作,GETDEL操作,INCR操作以及STEP操作。因此,需要将所接收到的HTTP消息的操作类型转化为云缓存操作所支持的云缓存操作类型。然后,将所转化后的云缓存操作所需要的参数传入云缓存装置中,云缓存装置便可以根据所接收到的参数以及云缓存操作类型进行云缓存操作。
云缓存装置根据所接收到的参数以及云缓存操作类型进行云缓存操作后,会将操作的结果返回至缓存插件。当接收到云缓存装置所返回的操作结果后,返回模块30还需要将这个操作结果进行处理,并将处理的结果返回给客户端。本实施例中,所提到的对操作结果进行处理是指将其组织成客户端所请求的HTTP请求消息所需要的内容,并通过Nginx现有的通道将这个内容返回给HTTP客户端。这样,便完成了在Nginx上利用云缓存实现Nginx 的缓存功能,并且达到了实现云缓存REST接口的目的。
本发明实施例所提供的在Nginx上实现云缓存的REST接口的系统,通过云缓存装置来代替Nginx高速缓冲存储器,并且在Nginx服务器中实现一个缓存插件,将Nginx和云缓存装置结合起来,以建立Nginx和云缓存装置之间数据的传送,从而可以在Nginx上利用云缓存装置实现Nginx的缓存功能,并且达到实现云缓存REST接口的目的。采用这种利用云缓存技术代替Nginx本身的高速缓冲存储器来实现其缓存功能的方法,由于结合了 Nginx自身所具有的高性能和云缓存所具有的高性能、高可靠性以及可扩展的特点,便可以很好地节省CPU资源,并且使得缓存的容量更大,从而使Nginx的缓存功能更加强大。
参照图8,在本发明在Nginx上实现云缓存的REST接口的系统一实施例中,所述转化模块20包括
封装单元21,用于将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;
转化单元22,用于将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
在本实施例中,由于云缓存装置是基于Key-Value存储方式的分布式缓存系统, 当解析出HTTP消息所对应的关键信息后,将这些关键信息进行转化,转化为云缓存操作所需要的参数,这就需要将HTTP消息的关键信息打包成用于云缓存的Key-Value存储方式的数据,即封装单元21将这些关键信息进行封装而形成云缓存的Key-Value数据包,并将该 Key-Value数据包发送到云缓存装置中,以供云缓存装置收到该Key-Value数据后,根据其中所包含的数据来进行云缓存操作。
当根据预设的配置文件中的配置信息对应出所接收到的HTTP消息的操作类型后,由于云缓存装置不支持REST接口,因此转化单元22需要将HTTP的操作类型进行转化, 转化为云缓存操作所支持的云缓存操作类型,以便在云缓存装置中根据该云缓存操作类型进行操作。本实施例中,在将操作类型进行转化时,可以将POST操作和PUT操作转化为云缓存SET操作,GET操作转化为云缓存GET操作,DELETE操作转化为云缓存DELETE操作,然后,云缓存装置会根据该云缓存操作类型进行相应的云缓存操作,这样,便可以在云缓存上实现REST接口。如在Nginx的配置文件中配置了变量
dcache_incr_base $http_base ;
dcache_incr_step $http_step ;
并在Nginx所接收到的HTTP消息的HTTP-Header中存在如下的消息头顶
base 1000
step I
在解析该HTTP消息的操作类型时,便可以根据这个变量来决定该HTTP消息的操作类型为INCR操作。
将HTTP消息所对应的关键信息封装为云缓存的Key-Value数据包,以供云缓存装置根据该Key-Value数据包中的数据进行云缓存操作;同时将该HTTP消息的操作类型转化为云缓存操作所支持的云缓存操作类型,以供云缓存装置根据该云缓存操作类型进行相应的云缓存操作。这样,便使得云缓存装置的REST接口得以实现,从而可以通过云缓存来实现Nginx的缓存功能,进一步保证了缓存的容大量,同时使得Nginx的缓存功能更加强大。
参照图7,在本发明在Nginx上实现云缓存的REST接口的系统一实施例中,所述缓存插件还包括
创建模块40,用于根据所述云缓存操作类型创建一有名管道;
读出模块50,用于定时检测所述有名管道中是否存在云缓存装置所返回的数据, 如存在,将该管道文件中的数据读出。
由于Nginx目前没有现成的支撑函数来支持无血缘关系的进程之间的通信机制, 因此,本实施例中,采用有名管道方式来建立云缓存线程与Nginx之间的数据通信。这样, 当将HTTP消息的操作类型转化为云缓存操作类型后,创建模块40便可以根据这个云缓存操作类型创建一个有名管道,这个有名管道用来实现缓存插件与云缓存装置之间的数据通信,Nginx为多线程操作,因此创建一个有名管道,由于此有名管道是唯一的,便可以保证缓存插件与云缓存装置之间进行数据通信的唯一性。这样,云缓存装置便调用自身的接口函数,根据通过HTTP消息的操作类型转化而来的云缓存操作类型,进行相应的云缓存操作, 并且会将经过云缓存操作后的数据写入有名管道中,并且进行返回。
在云缓存装置根据由HTTP消息的操作类型转化而来的云缓存操作类型进行了相应的云缓存操作的同时,开启用以循环检测有名管道的定时器,以定时检测该有名管道中是否存在云缓存装置所返回根据云缓存操作类型而进行了云缓存操作后的数据,如果检测到在有名管道中存在,读出模块50便可以将这个数据读出。这样,就完成了云缓存线程与 Nginx之间的数据通信。
根据HTTP消息所对应的云缓存操作类型创建一个有名管道,来保证缓存插件与云缓存装置之间进行数据通信的唯一性。这样,当云缓存装置进行云缓存操作后,通过定时器检测到该有名管道中存在云缓存装置所返回的数据后,将其中的数据读出即可。采用这种有名管道的方式来实现云缓存装置与Nginx之间的数据通信,既保证了数据的准确性、 唯一性,同时又可以方便、快速地完成云缓存操作,使Nginx缓存的强大性能得以更有力的保障,并且节省了用户的等待时间。
参照图9,在本发明在Nginx上实现云缓存的REST接口的系统一实施例中,所述云缓存装置包括
检测模块60,用于检测是否存在所述有名管道;
写入模块70,用于如果存在所述有名管道,则将数据写入有名管道中。
当云缓存装置调用自身的接口函数,并根据所接收到的HTTP消息所对应的云缓存操作类型而进行相应的云缓存操作后,便会将操作后的数据写入到缓存插件所创建的有名管道中进行存储,并将这个有名管道进行返回。因此,当进行完云缓存操作后,检测模块 60便会首先检测是否存在由缓存插件所创建的有名管道,以便将数据写入其中,并且返回。
如果云缓存装置检测到存在由缓存插件所创建的有名管道,写入模块70便会将根据所接收到的云缓存操作类型进行操作后的数据写入这个管道中,然后将这个存储了数据的有名管道返回至缓存插件。
当云缓存装置对所接收到的云缓存操作类型进行相应的操作后,并需要将操作后的数据进行存储并返回时,首先检测缓存插件所创建的有名管道是否存在,当检测到存在该有名管道后,便可以将数据写入其中,然后将这个管道文件返回至缓存插件,以方便缓存插件将该管道文件中的数据进行读出。
参照图10,提出本发明在Nginx上实现云缓存的REST接口的系统又一实施例,所述缓存插件还包括
判断模块80,用于判断所述关键信息是否正确或操作类型是否使能;当所述关键信息不正确或所述操作类型不使能时,结束流程。
当根据预设的配置文件解析出所接收到的客户端发送的HTTP消息的关键信息和操作类型后,判断模块80首先要判断该关键信息是否 正确,或者判断该HTTP消息的操作类型是否使能,以便于根据判断的结果来决定是否将HTTP消息的关键信息和操作类型进行转化,转化为云缓存操作所需要的参数以及云缓存操作类型。当对HTTP消息的关键信息和操作类型进行判断后,如判断出关键信息为正确的,或HTTP消息的操作类型为使能,则将该关键信息和操作类型转化为云缓存操作所需要的参数以及云缓存操作类型,并将该参数传入云缓存装置,以便其根据转化后云缓存操作类型进行相应的云缓存操作;反之,如果判断出关键信息不正确,或者HTTP消息的操作类型为不使能,则不需要将HTTP消息的关键信息和操作类型进行转化,而直接结束流程。
在执行将HTTP消息的关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型之前,先对HTTP消息关键信息的正确性和操作类型是否使能进行判断,如该关键信息为正确的或操作类型使能,则将HTTP消息的关键信息和操作类型进行转化为云缓存操作所需要的参数和云缓存操作类型,以方便云缓存装置进行云缓存操作;如HTTP消息的关键信息不正确或其操作类型不使能,则不必浪费时间进行转化而直接结束流程。这样,可以使得云缓存操作的速度得以进一步提升,同时避免了一些不必要的操作。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间
接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
权利要求
1.一种在Nginx上实现云缓存的REST接口的方法,其特征在于,包括接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP消息所对应的关键信息和操作类型;将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
2.如权利要求1所述的方法,其特征在于,所述将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将转化后的参数传入云缓存装置包括将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
3.如权利要求2所述的方法,其特征在于,在执行所述将操作类型转化为云缓存操作类型之后,还包括根据所述云缓存操作类型创建一有名管道;定时检测所述有名管道中是否存在云缓存装置所返回的数据,如存在,将该管道文件中的数据读出。
4.如权利要求3所述的方法,其特征在于,所述云缓存装置返回云缓存操作结果包括:检测是否存在所述有名管道;如果存在所述有名管道,则将数据写入有名管道中。
5.如权利要求1所述的方法,其特征在于,在执行所述将关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型之前,还包括判断所述关键信息是否正确或操作类型是否使能;当所述关键信息不正确或所述操作类型不使能时,结束流程。
6.一种在Nginx上实现云缓存的REST接口的系统,其特征在于,包括缓存插件和云缓存装置,所述云缓存装置用于进行云缓存操作,其中,所述缓存插件包括解析模块,用于接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP 消息所对应的关键信息和操作类型;转化模块,用于将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;返回模块,用于接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。
7.如权利要求6所述的系统,其特征在于,所述转化模块包括封装单元,用于将所述HTTP消息所对应的关键信息封装为云缓存操作所需要的 Key-Value数据包,并将所述Key-Value数据包发送至云缓存装置进行处理;转化单元,用于将所述操作类型转化为云缓存操作类型,以供云缓存装置根据所述云缓存的操作类型进行操作。
8.如权利要求7所述的系统,其特征在于,所述缓存插件还包括创建模块,用于根据所述云缓存操作类型创建一有名管道;读出模块,用于定时检测所述有名管道中是否存在云缓存装置所返回的数据,如存在, 将该管道文件中的数据读出。
9.如权利要求8所述的系统,其特征在于,所述云缓存装置包括检测模块,用于检测是否存在所述有名管道;写入模块,用于如果存在所述有名管道,则将数据写入有名管道中。
10.如权利要求6所述的系统,其特征在于,所述缓存插件还包括判断模块,用于判断所述关键信息是否正确或操作类型是否使能;当所述关键信息不正确或所述操作类型不使能时,结束流程。
全文摘要
本发明公开了一种在Nginx上实现云缓存的REST接口的方法,包括接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP消息所对应的关键信息和操作类型;将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。本发明还提供了相应的系统。本发明所提供的一种在Nginx上实现云缓存的REST接口的方法和系统,使得缓存的容量更大,并且可以更好地节省CPU资源,使Nginx的缓存功能更加强大。
文档编号H04L29/06GK103023939SQ201110288598
公开日2013年4月3日 申请日期2011年9月26日 优先权日2011年9月26日
发明者李忠良 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1