CN103023939B - 在Nginx上实现云缓存的REST接口的方法和系统 - Google Patents

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

Info

Publication number
CN103023939B
CN103023939B CN201110288598.5A CN201110288598A CN103023939B CN 103023939 B CN103023939 B CN 103023939B CN 201110288598 A CN201110288598 A CN 201110288598A CN 103023939 B CN103023939 B CN 103023939B
Authority
CN
China
Prior art keywords
cloud
caching
buffer storage
type
action type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110288598.5A
Other languages
English (en)
Other versions
CN103023939A (zh
Inventor
李忠良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN201110288598.5A priority Critical patent/CN103023939B/zh
Priority to PCT/CN2012/074561 priority patent/WO2013044628A1/zh
Priority to EP12836160.7A priority patent/EP2763375B1/en
Priority to US14/241,689 priority patent/US9332085B2/en
Publication of CN103023939A publication Critical patent/CN103023939A/zh
Application granted granted Critical
Publication of CN103023939B publication Critical patent/CN103023939B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种在Nginx上实现云缓存的REST接口的方法,包括:接收客户端发送的HTTP消息,并根据预设的配置文件解析出所述HTTP消息所对应的关键信息和操作类型;将所述关键信息和操作类型转化为云缓存操作所需要的参数和云缓存操作类型,并将所述参数传入云缓存装置,以供云缓存装置根据所述参数及云缓存操作类型进行云缓存操作;接收云缓存装置返回的云缓存操作结果,对所述云缓存操作结果进行处理,并将处理的结果返回至客户端。本发明还提供了相应的系统。本发明所提供的一种在Nginx上实现云缓存的REST接口的方法和系统,使得缓存的容量更大,并且可以更好地节省CPU资源,使Nginx的缓存功能更加强大。

Description

在Nginx上实现云缓存的REST接口的方法和系统
技术领域
本发明涉及到通讯技术领域,特别涉及到一种在Nginx上实现云缓存的REST接口的方法和系统。
背景技术
Nginx是一个高性能的HTTP和反向代理服务器,同时也是IMAP/POP3/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:1
在解析该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:1
在解析该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消息的关键信息不正确或其操作类型不使能,则不必浪费时间进行转化而直接结束流程。这样,可以使得云缓存操作的速度得以进一步提升,同时避免了一些不必要的操作。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间
接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。

Claims (10)

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所述的系统,其特征在于,所述缓存插件还包括:
判断模块,用于判断所述关键信息是否正确或操作类型是否使能;当所述关键信息不正确或所述操作类型不使能时,结束流程。
CN201110288598.5A 2011-09-26 2011-09-26 在Nginx上实现云缓存的REST接口的方法和系统 Active CN103023939B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201110288598.5A CN103023939B (zh) 2011-09-26 2011-09-26 在Nginx上实现云缓存的REST接口的方法和系统
PCT/CN2012/074561 WO2013044628A1 (zh) 2011-09-26 2012-04-23 在Nginx上实现云缓存的REST接口的方法和系统
EP12836160.7A EP2763375B1 (en) 2011-09-26 2012-04-23 Method and system for realizing a rest interface of a cloud cache in nginx
US14/241,689 US9332085B2 (en) 2011-09-26 2012-04-23 Method and system for realizing rest interface of cloud cache in Nginx

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110288598.5A CN103023939B (zh) 2011-09-26 2011-09-26 在Nginx上实现云缓存的REST接口的方法和系统

Publications (2)

Publication Number Publication Date
CN103023939A CN103023939A (zh) 2013-04-03
CN103023939B true CN103023939B (zh) 2017-10-20

Family

ID=47972067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110288598.5A Active CN103023939B (zh) 2011-09-26 2011-09-26 在Nginx上实现云缓存的REST接口的方法和系统

Country Status (4)

Country Link
US (1) US9332085B2 (zh)
EP (1) EP2763375B1 (zh)
CN (1) CN103023939B (zh)
WO (1) WO2013044628A1 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104113443B (zh) * 2013-04-19 2018-10-02 南京中兴新软件有限责任公司 一种网络设备检测方法、装置及云检测系统
CN104394204B (zh) * 2014-11-12 2018-06-12 浪潮(北京)电子信息产业有限公司 一种实现负载均衡中信息交互方法及系统
CN104468226B (zh) * 2014-12-18 2018-04-17 山东中创软件工程股份有限公司 基于Nginx的配置方法及装置
CN104618392B (zh) * 2015-02-25 2018-09-21 浪潮电子信息产业股份有限公司 一种nginx-modsecurity安全规则智能匹配方法
CN107122362A (zh) * 2016-02-24 2017-09-01 南京中兴新软件有限责任公司 云数据库资源扩展和服务扩展的方法和系统
CN105959179B (zh) * 2016-06-08 2019-02-05 微梦创科网络科技(中国)有限公司 一种反向代理nginx测试系统及方法
CN106775859B (zh) * 2016-12-08 2018-02-02 上海壹账通金融科技有限公司 灰度发布方法和系统
KR102480372B1 (ko) 2018-03-09 2022-12-26 삼성전자주식회사 전자장치 및 그 제어방법
CN108848169B (zh) * 2018-06-21 2019-11-05 科芃智能科技(苏州)有限公司 一种基于工业互联网平台的数据高速采集方法
CN111294372B (zh) * 2018-12-07 2023-04-07 北京京东尚科信息技术有限公司 一种在代理服务器实现缓存的方法、装置及系统
CN109474643A (zh) * 2019-01-14 2019-03-15 广州虎牙信息科技有限公司 数据解析方法、装置、设备及存储介质
CN111555963B (zh) * 2020-04-30 2022-08-16 北京思特奇信息技术股份有限公司 消息推送方法、装置、电子设备及存储介质
CN113162913B (zh) * 2021-03-15 2023-04-18 煤炭科学技术研究院有限公司 矿井监控系统的报文解析方法及装置
CN113986976B (zh) * 2021-10-29 2023-02-10 重庆大学 一种基于智能多缓存链式处理机的类处理方法与装置
CN114237609B (zh) * 2021-11-08 2022-11-22 北京基调网络股份有限公司 一种动态适应及加载预编译的Nginx模块的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751408A (zh) * 2008-11-28 2010-06-23 上海均宜信息科技有限公司 一种互联网文内广告的系统与方法
WO2010085579A2 (en) * 2009-01-23 2010-07-29 Nasuni Corporation Method and system for interfacing to cloud storage
CN101930449A (zh) * 2009-06-22 2010-12-29 三星电子株式会社 客户机、代理服务器和用于提供云存储器的方法
CN102035881A (zh) * 2010-11-19 2011-04-27 清华大学 一种云端存储系统的数据缓存方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115346A1 (en) 2001-12-13 2003-06-19 Mchenry Stephen T. Multi-proxy network edge cache system and methods
US7600230B2 (en) 2004-07-06 2009-10-06 Oracle International Corporation System and method for managing security meta-data in a reverse proxy
US7596620B1 (en) * 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US20100274772A1 (en) * 2009-04-23 2010-10-28 Allen Samuels Compressed data objects referenced via address references and compression references
US8612439B2 (en) * 2009-06-30 2013-12-17 Commvault Systems, Inc. Performing data storage operations in a cloud storage environment, including searching, encryption and indexing
US9730037B2 (en) * 2010-06-16 2017-08-08 Microsoft Corporation Cellular data communication for mobile devices
CN102055771B (zh) * 2011-01-24 2013-06-05 上海红神信息技术有限公司 面向云服务的多并发业务流控制装置及控制方法
US8862933B2 (en) * 2011-02-09 2014-10-14 Cliqr Technologies, Inc. Apparatus, systems and methods for deployment and management of distributed computing systems and applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751408A (zh) * 2008-11-28 2010-06-23 上海均宜信息科技有限公司 一种互联网文内广告的系统与方法
WO2010085579A2 (en) * 2009-01-23 2010-07-29 Nasuni Corporation Method and system for interfacing to cloud storage
CN101930449A (zh) * 2009-06-22 2010-12-29 三星电子株式会社 客户机、代理服务器和用于提供云存储器的方法
CN102035881A (zh) * 2010-11-19 2011-04-27 清华大学 一种云端存储系统的数据缓存方法

Also Published As

Publication number Publication date
US9332085B2 (en) 2016-05-03
EP2763375B1 (en) 2016-06-29
EP2763375A4 (en) 2015-05-20
WO2013044628A1 (zh) 2013-04-04
EP2763375A1 (en) 2014-08-06
US20140195635A1 (en) 2014-07-10
CN103023939A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103023939B (zh) 在Nginx上实现云缓存的REST接口的方法和系统
US7054925B2 (en) Efficient method for determining record based I/O on top of streaming protocols
CN101179435B (zh) 一种主动推送网管事件的方法及网络管理系统
CN102468989B (zh) 处理网络数据的方法和系统
CN112800017B (zh) 分布式日志采集方法、装置、介质及电子设备
CN105681472B (zh) 一种日志传输方法及装置
CN102891875A (zh) 信令跟踪方法、web客户端、服务端及信令跟踪系统
CN102437925B (zh) 分布式系统中的数据备份方法、装置及系统
JP2004531839A (ja) 別個のメディアコンポーネント格納装置を用いた統一メッセージング
CN102769533A (zh) 数据处理方法和数据处理装置
CN104881990A (zh) 基于多协议并行采集技术的能耗数据采集器及其采集方法
CN109358805A (zh) 一种数据缓存方法
CN105208100B (zh) 一种接口数据的处理方法
CN112261142A (zh) 一种rdma网络的数据重传方法、装置及fpga
CN104125252B (zh) 数据存储系统及方法
CN110232029A (zh) 一种基于索引的fpga中ddr4包缓存的实现方法
CN114003413A (zh) 一种ipc数据通信方法、装置、设备及介质
CN103179162A (zh) 一种输出日志的方法及系统
WO2012109915A1 (zh) 一种保存话务数据的方法及系统
CN103581119B (zh) 一种生产过程数据高速显示系统及方法
CN110445730A (zh) 基于WinPcap的网络数据实时采集存储方法和装置
CN110445874A (zh) 一种会话处理方法、装置、设备和存储介质
CN103475564B (zh) 网络附件传送方法及其系统
CN108076111B (zh) 一种在大数据平台中分发数据的系统及方法
CN106209691B (zh) 一种具备独立mac源地址的网络端口镜像方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant