支持认证和协议转换的Memcache代理方法、装置及系统与流程

文档序号:11263675阅读:264来源:国知局
支持认证和协议转换的Memcache代理方法、装置及系统与流程

本发明涉及网络技术领域,尤其涉及支持认证和协议转换的memcache代理方法、装置及系统。



背景技术:

对于目前的一些memcache(分布式的高速缓存系统)代理软件如moxi(不支持认证,不支持协议转换),twemproxy(不支持二进制协议,不支持协议转换,不支持认证)等,要么只支持memcahe的文本协议,要么虽然支持二进制协议,但是不支持二进制协议的认证。而且,如果后端的memcache工作在文本模式下,如果要使用认证功能,则无法通过代理实现,因为认证功能需要使用二进制协议,如果后端不提供二进制协议,则无法认证。



技术实现要素:

本发明实施例提供一种支持认证和协议转换的memcache代理方法、装置及系统,以支持二进制协议和文本协议的协议转换,实现客户端的认证及对用户的权限控制。

一方面,本发明实施例提供了一种支持认证和协议转换的memcache代理方法,在客户端和memcache服务器之间设置memcache代理装置,所述方法包括:

memcache代理装置接收所述客户端发送的基于二进制协议的认证请求,其中携带用户名和密码;

根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;

若认证成功,则将客户端的二进制协议请求转换为文本协议请求,并发送到所述二进制协议请求对应的memcache服务器,以获取请求结果。

另一方面,本发明实施例提供了一种支持认证和协议转换的memcache代理装置,所述memcache代理装置设置在客户端和memcache服务器之间,所述memcache代理装置包括:

接收单元,用于接收所述客户端发送的基于二进制协议的认证请求,其中携带用户名和密码;

认证单元,用于根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;

转换单元,用于若认证成功,则将客户端的二进制协议请求转换为文本协议请求;

发送单元,用于将转换得到的文本协议请求发送到所述二进制协议请求对应的memcache服务器,以获取请求结果。

再一方面,本发明实施例提供了一种支持认证和协议转换的memcache代理系统,包括memcache代理装置、客户端和若干memcache服务器,所述memcache代理装置设置在客户端和memcache服务器之间,其中:

所述客户端,用于发送基于二进制协议的认证请求,其中携带用户名和密码;若认证成功,则发起二进制协议请求;

memcache代理装置,用于接收客户端发送的基于二进制协议的认证请求,根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;若认证成功,则将客户端的二进制协议请求转换为文本协议请求,并发送到所述二进制协议请求对应的memcache服务器;

所述memcache服务器,用于接收memcache代理装置发送的所述文本协议请求,并向memcache代理装置返回请求结果。

上述技术方案具有如下有益效果:首先,支持协议转换,目前所有其他的代理方案,都不支持二进制协议到文本协议的转换;其次,可以实现客户端的认证,实现对用户的权限控制。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一种支持认证和协议转换的memcache代理方法流程图;

图2为本发明实施例一种支持认证和协议转换的memcache代理装置结构示意图;

图3为本发明实施例一种支持认证和协议转换的memcache代理系统示意图;

图4为本发明应用实例一种支持认证和协议转换的memcache代理方法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,为本发明实施例一种支持认证和协议转换的memcache代理方法流程图,在客户端和memcache服务器之间设置memcache代理装置,所述方法包括:

101、memcache代理装置接收所述客户端发送的基于二进制协议的认证请求,其中携带用户名和密码;

102、根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;

103、若认证成功,则将客户端的二进制协议请求转换为文本协议请求,并发送到所述二进制协议请求对应的memcache服务器,以获取请求结果。

优选地,所述客户端的二进制协议请求包括:请求头和请求主体,所述请求头中包含密钥;

所述将客户端的二进制协议请求转换为文本协议请求之前,所述方法还包括:

接收所述客户端发送的二进制协议请求的请求头;

解析所述二进制协议请求的请求头,获取所述二进制协议请求的请求头中包含的密钥;

根据所述密钥进行散列计算得到所述密钥的散列值;

根据所述密钥的散列值,通过一致性散列算法确定所述二进制协议请求对应的memcache服务器;

确定出所述二进制协议请求对应的memcache服务器后,判断是否已经连接所述memcache服务器,如果没有,则进行连接。

优选地,所述将客户端的二进制协议请求转换为文本协议请求,并发送到相应的memcache服务器,以获取请求结果,具体包括:

发送转换后的文本协议请求的请求头到对应的memcache服务器;

发送成功后,从所述客户端读取二进制协议请求的请求主体,将所述二进制协议请求的请求主体转换为文本协议请求的请求主体;

将所述文本协议请求的请求主体发送到对应的memcache服务器,以获取基于文本协议的请求结果。

优选地,所述方法还包括:接收到基于文本协议的请求结果后,将所述基于文本协议的请求结果转换为基于二进制协议的请求结果,返回给所述客户端。

优选地,所述客户端基于sasl协议发送认证请求;以及所述方法还包括:若认证失败,则向客户端返回认证失败消息。

应于上述方法实施例,如图2所示,为本发明实施例一种支持认证和协议转换的memcache代理装置结构示意图,所述memcache代理装置设置在客户端和memcache服务器之间,所述memcache代理装置包括:

接收单元21,用于于memcache代理装置端接收所述客户端发送的基于二进制协议的认证请求,其中携带用户名和密码;

认证单元22,用于根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;

转换单元23,用于若认证成功,则将客户端的二进制协议请求转换为文本协议请求;

发送单元24,用于将转换得到的文本协议请求发送到所述二进制协议请求对应的memcache服务器,以获取请求结果。

优选地,所述客户端的二进制协议请求包括:请求头和请求主体,所述请求头中包含密钥;所述memcache代理装置还包括:

请求头接收单元25,用于在所述转换单元23将客户端的二进制协议请求转换为文本协议请求之前,接收所述客户端发送的二进制协议请求的请求头;解析所述二进制协议请求的请求头,获取所述二进制协议请求的请求头中包含的密钥;

散列处理单元26,用于根据所述密钥进行散列计算得到所述密钥的散列值;根据所述密钥的散列值,通过一致性散列算法确定所述二进制协议请求对应的memcache服务器;

连接处理单元27,用于确定出所述二进制协议请求对应的memcache服务器后,判断是否已经连接所述memcache服务器,如果没有,则进行连接。

另外,如图3所示,为本发明实施例一种支持认证和协议转换的memcache代理系统示意图,包括memcache代理装置、客户端和若干memcache服务器,所述memcache代理装置设置在客户端和memcache服务器之间,其中:

所述客户端,用于发送基于二进制协议的认证请求,其中携带用户名和密码;若认证成功,则发起二进制协议请求;

memcache代理装置,用于接收客户端发送的基于二进制协议的认证请求,根据所述认证请求中的用户名和密码,查询本地内存数据库进行认证;若认证成功,则将客户端的二进制协议请求转换为文本协议请求,并发送到所述二进制协议请求对应的memcache服务器;

所述memcache服务器,用于接收memcache代理装置发送的所述文本协议请求,并向memcache代理装置返回请求结果。

优选地,包括所述客户端的二进制协议请求包括:请求头和请求主体,所述请求头中包含密钥;

所述memcache代理装置,还用于将客户端的二进制协议请求转换为文本协议请求之前,接收所述客户端发送的二进制协议请求的请求头;解析所述二进制协议请求的请求头,获取所述二进制协议请求的请求头中包含的密钥;根据所述密钥进行散列计算得到所述密钥的散列值;根据所述密钥的散列值,通过一致性散列算法确定所述二进制协议请求对应的memcache服务器;确定出所述二进制协议请求对应的memcache服务器后,判断是否已经连接所述memcache服务器,如果没有,则进行连接。

优选地,所述memcache代理装置,具体用于发送转换后的文本协议请求的请求头到对应的memcache服务器;发送成功后,从所述客户端读取二进制协议请求的请求主体,将所述二进制协议请求的请求主体转换为文本协议请求的请求主体;将所述文本协议请求的请求主体发送到对应的memcache服务器;

所述memcache服务器,具体用于接收所述memcache代理装置发送的所述文本协议请求的请求头和请求主体,并向memcache代理装置返回基于文本协议的请求结果;

所述memcache代理装置,还用于接收到基于文本协议的请求结果后,将所述基于文本协议的请求结果转换为基于二进制协议的请求结果,返回给所述客户端。

上述技术方案具有如下有益效果:首先,支持协议转换,目前所有其他的代理方案,都不支持二进制协议到文本协议的转换;其次,可以实现客户端的认证,实现对用户的权限控制。

以下通过应用实例对本发明实施例上述技术方案进行详细说明:

本发明应用实例对于不支持认证的文本协议后端,通过memcache代理装置,可以实现支持认证,并且,实现二进制协议到文本协议的转换。

本发明应用实例对于一个memcache服务器,对外提供服务时,可以有两种方式,一种是对外提供文本协议服务,另外一种是提供二进制协议服务,其中,文本协议不支持针对客户端的认证,而二进制协议可以提供针对客户端的认证。

目前的生产环境中,绝大部分的memcache服务器提供的都是文本协议服务,因此,无法实现针对客户端的认证。

本发明应用实例实现了一种memcache代理装置,该memcache代理装置被放在客户端和memcache服务器之间,作为memcache代理装置存在,对客户端提供带认证功能的二进制服务,将客户端的请求转换成文本协议与memcache服务器进行交互。

其中,客户端到memcache代理装置通过二进制协议交互,memcache代理装置到memcache服务器通过文本协议交互。

如图4所示,为本发明应用实例一种支持认证和协议转换的memcache代理方法流程图,具体包括:

401、首先本memcache代理装置启动;

402、等待客户端连接;

403、客户端连接后,使用二进制协议交互,在实际运行前,必须进行认证,认证是使用sasl(simpleauthenticationandsecuritylayer,是一种用来扩充c/s模式验证能力的机制)协议发送二进制协议的用户名和密码,本memcache代理装置收到二进制协议的用户名和密码后,查询内存数据库进行认证,判断是否认证成功:若认证成功,则转405;否则,转404;

404、认证失败,向客户端返回认证失败消息,关闭连接;

405、认证成功后,客户端通过二进制协议发送请求,请求包含两部分,请求头和请求主体(body),首选,接收请求头,请求头中包含请求的key(密钥);

406、拿到key之后,根据key进行散列hash(散列,也有直接音译为“哈希”的)计算得到所述key的散列值,并根据所述key的散列值,通过一致性散列算法确定所述二进制协议请求对应的memcache服务器;

407、确定对应的memccache服务器后,判断是否已经连接该后端memccache服务器:如果是,则转409;否则,转408;

408、如果没有连接,则先进行连接;

409、如果已经连接,则直接使用已有的连接,如果没有连接,则先进行连接,连接完成后,memcache代理装置将二进制请求头转换为文本请求头,首先发送文本请求头到后端memcache服务器;

410、然后从客户端读取请求主体;

411、memcache代理装置将二进制请求主体转换为文本请求主体,并将请求主体发送到后端memcache服务器;

412、发送成功后,从后端memcache服务器读取请求结果;

413、请求结果读取成功后,转换成二进制协议请求结果返回给客户端。

与最接近的现有技术相比,本发明应用实例首先是支持协议转换,目前所有其他的代理程序,都不支持二进制协议到文本协议的转换;其次是对于已有的文本协议服务器,经过协议转换后,可以实现客户端的认证,实现对用户的权限控制。

应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。

在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要比清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。

为使本领域内的任何技术人员能够实现或者使用本发明,上面对所公开实施例进行了描述。对于本领域技术人员来说;这些实施例的各种修改方式都是显而易见的,并且本文定义的一般原理也可以在不脱离本公开的精神和保护范围的基础上适用于其它实施例。因此,本公开并不限于本文给出的实施例,而是与本申请公开的原理和新颖性特征的最广范围相一致。

上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。

本领域技术人员还可以了解到本发明实施例列出的各种说明性逻辑块(illustrativelogicalblock),单元,和步骤可以通过电子硬件、电脑软件,或两者的结合进行实现。为清楚展示硬件和软件的可替换性(interchangeability),上述的各种说明性部件(illustrativecomponents),单元和步骤已经通用地描述了它们的功能。这样的功能是通过硬件还是软件来实现取决于特定的应用和整个系统的设计要求。本领域技术人员可以对于每种特定的应用,可以使用各种方法实现所述的功能,但这种实现不应被理解为超出本发明实施例保护的范围。

本发明实施例中所描述的各种说明性的逻辑块,或单元都可以通过通用处理器,数字信号处理器,专用集成电路(asic),现场可编程门阵列或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。

本发明实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件模块、或者这两者的结合。软件模块可以存储于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动磁盘、cd-rom或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于asic中,asic可以设置于用户终端中。可选地,处理器和存储媒介也可以设置于用户终端中的不同的部件中。

在一个或多个示例性的设计中,本发明实施例所描述的上述功能可以在硬件、软件、固件或这三者的任意组合来实现。如果在软件中实现,这些功能可以存储与电脑可读的媒介上,或以一个或多个指令或代码形式传输于电脑可读的媒介上。电脑可读媒介包括电脑存储媒介和便于使得让电脑程序从一个地方转移到其它地方的通信媒介。存储媒介可以是任何通用或特殊电脑可以接入访问的可用媒体。例如,这样的电脑可读媒体可以包括但不限于ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁性存储装置,或其它任何可以用于承载或存储以指令或数据结构和其它可被通用或特殊电脑、或通用或特殊处理器读取形式的程序代码的媒介。此外,任何连接都可以被适当地定义为电脑可读媒介,例如,如果软件是从一个网站站点、服务器或其它远程资源通过一个同轴电缆、光纤电缆、双绞线、数字用户线(dsl)或以例如红外、无线和微波等无线方式传输的也被包含在所定义的电脑可读媒介中。所述的碟片(disk)和磁盘(disc)包括压缩磁盘、镭射盘、光盘、dvd、软盘和蓝光光盘,磁盘通常以磁性复制数据,而碟片通常以激光进行光学复制数据。上述的组合也可以包含在电脑可读媒介中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1