一种数据处理方法、装置及服务器与流程

文档序号:14571838发布日期:2018-06-01 22:41阅读:147来源:国知局
一种数据处理方法、装置及服务器与流程

本发明涉及互联网技术领域,具体涉及一种数据处理方法、装置及服务器。



背景技术:

网络即时通信工具(Instant Messenger,IM)是一种两人或多人使用网络进行即时的文字信息、档案、语音及视频交流的终端服务,现已成为了大多数网民使用的沟通工具。在IM的后台服务中,为了保证部署的灵活性以及运营成本,通常会将多个业务模块混合部署在同一台服务器,从而出现单个缓存服务多个前端业务模块的运营状态。通常情况下,缓存服务是基于关键字-值的方式存储数据,在同一缓存服务中,如果不同业务模块存储的关键字相同,而值不同,可能会导致业务模块读取错误的数据。



技术实现要素:

本发明实施例公开了一种数据处理方法、装置及服务器,可以在解决IM的后台服务中不同业务模块对应同一缓存服务容易出现数据读取错误的问题。

本发明实施例公开了一种数据处理方法,该方法可以包括:

接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,所述缓存请求携带有所述第一业务模块的标识;

根据预定策略将所述第一业务模块的标识和所述第一关键字进行组合得到第一目标关键字,根据所述第一目标关键字查询存储引擎得到原始缓存数据,采用所述第一缓存数据覆盖所述原始缓存数据;

接收所述第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,所述第一数据读取请求携带有所述第一业务模块的标识;

根据所述预定策略将所述第一业务模块的标识和所述第二关键字进行组合得到第二目标关键字,根据所述第二目标关键字查询所述存储引擎得到对应的第二缓存数据,并将其返回给所述第一业务模块。

可选的,所述方法还包括:

接收第二业务模块发送的用以请求读取所述第一业务模块的与第三关键字对应的缓存数据的第二数据读取请求,所述第二数据读取请求携带有所述第一业务模块的标识以及所述第二业务模块的标识;

根据所述第二业务模块的标识判断所述第二业务模块是否具备读取所述第一业务模块的缓存数据的权限;

若具备,则根据所述预定策略将所述第一业务模块的标识和所述第三关键字进行组合得到第三目标关键字,根据所述第三目标关键字查询所述存储引擎得到对应的第三缓存数据,并将其返回给所述第二业务模块。

可选的,所述根据所述第二业务模块的标识判断所述第二业务模块是否具备读取所述第一业务模块的缓存数据的权限,包括:

判断所述第二业务模块的标识是否存在于所述第一业务模块的白名单中;

若存在,则确定所述第二业务模块具备读取所述第一业务模块的缓存数据的权限。

可选的,所述方法还包括:

接收第三业务模块发送的用以请求读取所述第一业务模块的与第四关键字对应的缓存数据的第三数据读取请求,所述第三数据读取携带有所述第一业务模块的标识以及验证信息;

根据所述验证信息对所述第三业务模块进行身份认证;

在对所述第三业务模块的身份认证通过的情况下,根据所述预定策略将所述第一业务模块的标识和所述第四关键字进行组合得到第四目标关键字,根据所述第四目标关键字查询所述存储引擎得到对应的第四缓存数据,并将其返回给所述第三业务模块。

相应的,本发明实施例公开了一种数据处理装置,该装置包括:

接收单元,用于接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,所述缓存请求携带有所述第一业务模块的标识;

缓存单元,用于根据预定策略将所述第一业务模块的标识和所述第一关键字进行组合得到第一目标关键字,根据所述第一目标关键字查询存储引擎得到原始缓存数据,采用所述第一缓存数据覆盖所述原始缓存数据;

所述接收单元,还用于接收所述第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,所述第一数据读取请求携带有所述第一业务模块的标识;

查找单元,用于根据所述预定策略将所述第一业务模块的标识和所述第二关键字进行组合得到第二目标关键字,根据所述第二目标关键字查询所述存储引擎得到对应的第二缓存数据;

发送单元,用于将所述第二缓存数据返回给所述第一业务模块。

可选的,所述接收单元,还用于接收第二业务模块发送的用以请求读取所述第一业务模块的与第三关键字对应的缓存数据第二数据读取请求,所述第二数据读取请求携带有所述第一业务模块的标识以及所述第二业务模块的标识;

所述装置还包括:

判断单元,用于根据所述第二业务模块的标识判断所述第二业务模块是否具备读取所述第一业务模块的缓存数据的权限;

所述查找单元,还用于在所述判断单元判断出所述第二业务模块具备读取所述第一业务模块的缓存数据的权限时,根据所述预定策略将所述第一业务模块的标识和所述第三关键字进行组合得到第三目标关键字,根据所述第三目标关键字查询所述存储引擎得到对应的第三缓存数据;

所述发送单元,还用于将所述第三缓存数据返回给所述第二业务模块。

可选的,所述判断单元根据所述第二业务模块的标识判断所述第二业务模块是否具备读取所述第一业务模块的缓存数据的权限的具体方式为:

判断所述第二业务模块的标识是否存在于所述第一业务模块的白名单中;

若存在,则确定所述第二业务模块具备读取所述第一业务模块的缓存数据的权限。

可选的,所述接收单元,还用于接收第三业务模块发送的用以请求读取所述第一业务模块的与第四关键字对应的缓存数据的第三数据读取请求,所述第三数据读取请求携带有所述第一业务模块的标识以及验证信息;

认证单元,用于根据所述验证信息对所述第三业务模块进行身份认证;

所述查找单元,还用于在所述认证单元对所述第三业务模块的身份认证通过的情况下,根据所述预定策略将所述第一业务模块的标识和所述第四关键字进行组合得到第四目标关键字,根据所述第四目标关键字查询所述存储引擎得到对应的第四缓存数据;

所述发送单元,还用于将所述第四缓存数据返回给所述第三业务模块。

相应的,本发明实施例公开了一种服务器,所述服务器包括至少两个业务模块和一个缓存模块,第一业务模块为所述至少两个业务模块中的任意一个业务模块,其中:

所述第一业务模块,用于向缓存模块发送用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,所述缓存请求携带有所述第一业务模块的标识;

所述缓存模块,用于接收所述缓存请求,并根据预定策略将所述第一业务模块的标识和所述第一关键字进行组合得到第一目标关键字,根据所述第一目标关键字查询存储引擎得到原始缓存数据,采用所述第一缓存数据覆盖所述原始缓存数据;

所述第一业务模块,还用于向所述缓存模块发送用以请求读取与第二关键字对应的缓存数据的数据读取请求,所述数据读取请求携带有所述第一业务模块的标识;

所述缓存模块,还用于接收所述第一数据读取请求,根据所述预定策略将所述第一业务模块的标识和所述第二关键字进行组合得到第二目标关键字,根据所述第二目标关键字查询所述存储引擎得到对应的第二缓存数据返回给所述第一业务模块;

所述第一业务模块,还用于接收所述缓存模块返回的所述第二缓存数据。

实施本发明实施例,具有如下有益效果:

本发明实施例中,数据处理装置可以在缓存数据时针对不同的业务模块进行数据缓存,即,在缓存数据时区分不同的业务模块,那么业务模块在读取数据时,可以基于业务模块的标识读取对应的数据,从而能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。

附图说明

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

图1是本发明实施例公开的一种数据处理方法的流程示意图;

图2是本发明实施例公开的另一种数据处理方法的流程示意图;

图3是本发明实施例公开的一种服务器的结构示意图;

图4是本发明实施例公开的另一种服务器的结构示意图;

图5是本发明实施例公开的一种数据处理装置的结构示意图;

图6是本发明实施例公开的又一种服务器的结构示意图。

具体实施方式

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

本发明实施例公开了一种数据处理方法、装置及服务器,能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。以下分别进行详细说明。

请参阅图1,图1是本发明实施例公开的一种数据处理方法的流程示意图。图1所示的方法可以应用于服务器,其中,该服务器可以为即时通信应用(例如,微信、QQ等)的后台服务器,可以为即时通信应用的多个业务提供缓存功能。如图1所示,该数据处理方法可以包括以下步骤:

101、数据处理装置接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一业务模块的标识。

本发明实施例中,服务器在缓存数据时,一般基于关键字key-值value进行缓存,例如,key=“Bob’s Money”,value=“10000”。缓存请求可以理解为:由第一业务模块发起的,或者第一业务模块写入的,用于请求缓存与第一关键字对应的第一缓存数据。该缓存请求携带有需要缓存的数据value、对应的关键字key以及第一业务模块的标识。

可选的,缓存请求可以仅仅携带第一关键字和第一缓存数据,数据处理装置还可以基于该缓存请求的路径向发送缓存请求的第一业务模块发送标识获取请求,从而获取第一业务模块的标识。

可选的,第一业务模块在发送缓存请求时,可以携带用于特殊标记,数据处理装置在接收到缓存请求后,可以基于该特征标记从对应数据库中获取与该特殊标识对应的标识,从而得到第一业务模块的标识。

102、数据处理装置根据预定策略将第一业务模块的标识和第一关键字进行组合得到第一目标关键字,根据第一目标关键字查询存储引擎得到原始缓存数据,采用第一缓存数据覆盖原始缓存数据。

本发明实施例中,数据处理装置在接收到缓存请求后,会根据第一业务模块的标识和缓存请求中的第一关键字对第一缓存数据进行缓存处理,具体是缓存第一缓存数据。

具体的,数据处理装置首先会根据预定的策略将第一业务模块的标识和第一关键字进行组合,例如,在第一关键字之前加上第一业务模块的标识,或者在之后加上第一业务模块的标识,从而得到第一目标关键字,然后从存储引擎(例如Myisam存储引擎、InnoDB存储引擎等)查询与第一目标关键字对应的原始缓存数据,从而将第一缓存数据覆盖原始缓存数据,以完成对第一缓存数据的缓存,该方法一般用于在存储引擎中已存在第一目标关键字,需要对第一目标关键字对应的缓存数据进行更新的场景中。

举例来说,假设业务模块A发送的缓存请求中key=“Bob’s Money”,value=“10000”,数据处理装置在接收到业务模块A的缓存请求后,在将key=“Bob’s Money”,value=“10000”写入缓存模块时,会将key=“Bob’s Money”修改为key=“A_Bob’s Money”,并从存储引擎中查找到与key=“A_Bob’s Money”对应的原始缓存数据value=“100”,数据处理装置从而将value=“10000”覆盖value=“100”,实现对key=“Bob’s Money”,value=“10000”的缓存,以便业务模块A后续读取该缓存数据。

可选的,如果第一目标关键字在存储引擎中未存储过,则在存储引擎中新建第一目标关键字,并将第一目标关键字和第一缓存数据缓存。

现有技术中,在多个模块对应一个缓存服务(也即是单个缓存实例,其中,缓存模块也可以称为缓存实例)时,为了避免模块读取错误数据的情况发生,一般需要通过运维配置手段,起多个缓存实例,从而实现一个模块对应一个缓存实例,这种方法称为物理隔离。这种方式缺点明显,配置比较繁琐,后续单个业务的变化需要日常运维持续跟进,如果一个模块对应一个缓存实例,会增加维护成本。本发明实施例通过在缓存数据时,按照不同业务模块的标识来写入存储的key,即,由业务模块的标识和缓存请求的key一起组成缓存里的实际存储key,从而可以解决多个业务模块对应一个缓存服务时数据读取错误的问题,不仅提高了数据读取的正确率,还简化了配置,减少维护成本。

103、数据处理装置接收第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一业务模块的标识。

相应的,数据处理装置在根据不同业务模块的标识实现数据缓存后,如果第一业务模块需要读取缓存数据,则需要向数据处理装置发送第一数据读取请求,以请求读取与第二关键字对应的缓存数据。其中,第一数据读取请求包括第二关键字和第一业务模块的标识。

可选的,第一数据读取请求还可以只包括第二关键字,数据处理装置在接收到第一数据读取请求后,可以进一步获取第一业务模块的标识。

104、数据处理装置根据预定策略将第一业务模块的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的第二缓存数据,并将第二缓存数据返回给第一业务模块。

本发明实施例中,由于数据处理装置(如缓存模块)中缓存有目标关键字和与之对应的缓存数据,数据处理装置在接收到第一数据读取请求后,可以将第一业务模块的标识和数据读取请求包括的第二关键字进行组合得到第二目标关键字,从而根据第二目标关键字查询存储引擎得到对应的第二缓存数据。

进一步的,数据处理装置会将查找到的第二缓存数据返回给第一业务模块。

举例来说,假设业务模块A向缓存模块中写入key=“Bob’s Money”,value=“3000”,业务模块B向缓存模块中写入key=“Bob’s Money”,value=“100”,那么缓存模块在缓存时,就会将业务模块A写入的数据缓存为key=“A_Bob’s Money”,value=“3000”,业务模块B写入的数据缓存为key=“B_Bob’s Money”,value=“100”。在此之后,如果业务模块A需要查询缓存的数据,会向缓存模块发送查询请求,查询key=“Bob’s Money”,缓存模块在接收到查询请求,并确定该查询请求为业务模块A发送之后,会将业务模块A的标识也查询的key合并,生成key=“A_Bob’s Money”,从而可以查询出正确的缓存数据。

又举例来说,假设业务模块A向缓存模块中写入key=“Bob’s Money”,value=“3000”,业务模块B向缓存模块中写入key=“Bob’s Money”,value=“100”,那么缓存模块在缓存时,就会将业务模块A写入的数据缓存为key=“A_Bob’s Money”,value=“3000”,业务模块B写入的数据缓存为key=“B_Bob’s Money”,value=“100”。在此之后,如果业务模块A需要查询缓存的数据,会向数据处理装置发送查询请求,查询key=“Bob’s Money”,数据处理装置在接收到查询请求,并确定该查询请求为业务模块A发送之后,会将业务模块A的标识也查询的key合并,生成key=“A_Bob’s Money”,从而从缓存模块中可以查询出正确的缓存数据。

需要说明的是,本发明实施例可以应用于集业务功能和缓存功能为一体的服务器中,即,该服务器包括至少两个业务模块和一个缓存模块,数据处理装置可以应用于具有缓存功能的处理器,也可以应用于该服务器的中心处理器,那么第一业务模块为该服务器包括的至少两个业务模块中的任意一个;本发明实施例同样可以应用于业务功能和缓存功能分离的服务器中,即,缓存模块与多个业务模块设置于不同服务器,那么第一业务模块为可以为用户提供不同业务的计算实体中的任意一个,本发明实施例不做限定。

可见,在图1所描述的方法中,数据处理装置可以在缓存数据时针对不同的业务模块进行数据缓存,即,在缓存数据时区分不同的业务模块,那么业务模块在读取数据时,可以基于业务模块的标识读取对应的数据,从而能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。进一步的,通过逻辑方式对多个业务模块对应一个缓存服务进行隔离,相对于物理隔离来说,能够简化配置,减少维护成本。

请一并参阅图2,图2是本发明实施例公开的另一种数据处理方法的流程示意图。图2所示的方法可以应用于服务器,其中,该服务器可以为即时通信应用(例如,微信、QQ等)的后台服务器,可以为即时通信应用的多个业务提供缓存功能。如图2所示,该方法可以包括以下步骤:

201、数据处理装置接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一业务模块的标识。

202、数据处理装置根据预定策略将第一业务模块的标识和第一关键字进行组合得到第一目标关键字,根据第一目标关键字查询存储引擎得到原始缓存数据,采用第一缓存数据覆盖原始缓存数据。

203、数据处理装置接收第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一业务模块的标识。

204、数据处理装置根据预定策略将第一业务模块的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的第二缓存数据,并将第二缓存数据返回给第一业务模块。

205、数据处理装置接收第二业务模块发送的用以请求读取第一业务模块的与第三关键字对应的缓存数据的第二数据读取请求,该第二数据读取携带有第一业务模块的标识和第二业务模块的标识。

本发明实施例可以应用于集业务功能和缓存功能为一体的服务器中,即,该服务器包括至少两个业务模块和一个缓存模块,数据处理装置可以应用于具有缓存功能的处理器,也可以应用于该服务器的中心处理器,那么第一业务模块是指该服务器包括的至少两个业务模块中的任意一个;本发明实施例同样可以应用于业务功能和缓存功能分离的服务器中,即,缓存模块与多个业务模块设置于不同服务器,那么第一业务模块是指为用户提供不同业务的计算实体中的任意一个,本发明实施例不做限定。因此,第二业务模块可以是指服务器包括的至少两个业务模块中除第一业务模块之外的任一业务模块,也可以是指为用户提供不同业务的计算实体中除第一业务模块对应的计算实体之外的任意一个。

本发明实施例中,如果第二业务模块需要读取第一业务模块的缓存数据,数据处理装置可以接收到第二业务模块发送的用以读取第一业务模块的与第三关键字对应的缓存数据的第二数据读取请求。其中,第二数据读取请求包括有需要查询的第二关键字key,第一业务模块的标识以及第二业务模块的标识。

需要说明的是,步骤206~208与步骤204~205可以同时执行,本发明实施例不做限定。

206、数据处理装置根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限,若是,执行步骤206;若否,结束本流程。

本发明实施例中,如果业务模块之间需要相互读取缓存数据,数据处理装置可以为每个业务模块对应的缓存数据设置权限,比如,为每个业务模块增加读取缓存数据的白名单或者黑名单,在需要实现不同业务模块之间的缓存数据共享时,可以首先对业务模块进行权限鉴别,如果具有读取权限,则允许读取,如果不具有,则拒绝读取请求。

因此,数据处理装置在接收到第二业务模块发送的针对第一业务模块的第二数据读取请求后,首先会基于第二业务模的标识来判断第二业务模块是否具备读取第一业务模块的缓存数据的权限。如果第二业务模块没有读取第一业务模块的缓存数据的权限,数据处理装置则不会响应第二业务模块的第二数据读取请求,从而返回拒绝该第二数据读取请求的响应;如果第二业务模块具有读取第一业务模块的缓存数据的权限,数据处理装置从而会查找与该第二数据读取请求包含的关键字对应的缓存数据。

具体实现中,数据处理装置根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限的具体方式可以为:

数据处理装置首先会判断第二业务模块的标识是否存在于第一业务模块的白名单中,如果存在,则确定第二业务模块具备读取第一业务模块的缓存数据的权限。

具体的,数据处理装置可以为每个业务模块设置白名单,只有白名单中的业务模块可读取其对应的缓存数据。因此,如果第二业务模块想要读取第一业务模块的缓存数据,数据处理装置从而可以判断第二业务模块的标识是否在白名单中,如果在,则允许第二业务模块读取,如果不在,则拒绝其读取请求。

相应的,数据处理装置还可以为每个业务模块设置白名单,只拒绝黑名单中的业务模块来读取其对应的缓存数据。如果不在黑名单中,可以先对业务模块进行身份认证,认证通过后可以加入白名单中。

进一步的,数据处理装置还可以为每种类型的缓存数据设置访问权限级别,比如,权限级别较低的缓存数据,其他业务模块可以读取,权限级别高一点的缓存数据,需要对读取的业务模块进行黑名单或白名单的识别,也可以进行身份认证,只有不在黑名单中或者在白名单中或者认证通过的业务模块才可以读取其缓存数据,而权限基本更高的缓存数据,则只允许本业务模块的读取。

相应的,数据处理装置还可以设置读取其他业务模块的缓存数据的时间,例如,对于可以被其他业务模块读取的缓存数据来说,可以设置允许读取的时间段,只有在允许的时间段内才能允许其他业务模块读取,不在允许的时间段内也就拒绝其他业务模块的数据读取请求。

207、数据处理装置根据预定策略将第一业务模块的标识和第三关键字进行组合得到第三目标关键字,根据第三目标关键字查询存储引擎得到对应的第三缓存数据,并将第三缓存数据返回给第二业务模块。

本发明实施例中,在判断出第二业务模块具备读取第一业务模块的缓存数据的权限时,数据处理装置可以将第二数据读取请求中包括的第一业务模块的标识和第三关键字进行组合,得到第三目标关键字,从而根据第三目标关键字查询存储引擎,得到与第三目标关键字对应的第三缓存数据,并将第三缓存数据返回给第二业务模块。

需要说明的是,为了防止第二业务模块在发送用于读取第一业务模块的缓存数据的数据读取请求时,伪造第一业务模块(例如,业务模块B发送的数据读取请求中,key设置为A_Bob’s Money,数据处理器从而会将其当作第一业务模块),数据处理装置在接收到数据读取请求后,一律会将请求中的关键字加上对应的业务模块的标识。

作为一种可行的实施方式,该方法还可以包括以下步骤:

数据处理装置接收第三业务模块发送的用以请求读取第一业务模块的与第四关键字对应的缓存数据的第三数据读取请求,该第三数据读取请求携带有第一业务模块的标识以及验证信息;

数据处理装置根据该验证信息对第三业务模块进行身份认证;

在对第三业务模块的身份认证通过的情况下,数据处理装置根据预定策略将第一业务模块的标识和第四关键字进行组合得到第四目标关键字,根据第四目标冠军艾女自查询存储引擎得到对应的第四缓存数据,并将第四缓存数据返回给第三业务模块。

具体实现中,第三业务模块可以是指服务器包括的至少两个业务模块中除第一业务模块之外的任一业务模块,可以是第二业务模块,也可以不是;也可以是指为用户提供不同业务的计算实体中除第一业务模块对应的计算实体之外的任意一个,本发明实施例不做限定。数据处理装置可以预先为第一业务模块设置允许读取的验证信息,如果第三业务模块也需要读取第一业务模块的缓存数据,可以在发送数据读取请求时携带相应的验证信息。数据处理装置在接收到第三业务模块的第三数据读取请求后,可以基于第三业务模块发送的验证信息对第三业务模块进行身份认证,只有认证通过的业务模块才允许其读取第一业务模块的缓存数据。

其中,该验证信息可以是业务模块的信息(例如账户名和密码)通过MD5等加密算法进行加密得到的(也可以成为票据),每个模块需要读取缓存模块中的缓存数据时,都需要携带对应的验证信息。当数据处理装置在接收到第三业务模块的验证信息后,同样基于MD5解密算法对其进行解密,解密成功则对第三业务模块的信息进行校验,检验通过,则允许第三业务模块读取第一业务模块的缓存数据,数据处理装置从而可以将第一业务模块的标识和第四关键字进行组合,得到第四目标关键字,从而根据第四目标关键字查询存储引擎,得到与第四目标关键字对应的第四缓存数据,并将其返回给第三业务模块。

进一步的,如果其他业务模块没有相应账户名和密码,则无法生成正确的验证信息。

举例来说,假设业务模块A的key=“Bob’s Money”在缓存模块里白名单配置为仅有业务模块A和业务模块B可以访问。此时业务模块B去登录加密服务里,输入自己模块的账户名+密码,若验证通过,则得到业务模块B的票据,然后业务模块B带上自己的票据,就可以访问缓存模块里业务模块A的key=“Bob’s Money”。若此时,业务模块C想访问缓存模块里业务模块A的key=“Bob’s Money”,由于C没有A或者B的模块密码,无法生成A或者B的票据,则C无法访问缓存模块里业务模块A的key=“Bob’s Money”。

可见,在图2所描述的方法中,如果其他业务模块需要访问第一业务模块中的缓存数据,数据处理装置则需要对其他业务模块进行身份认证,认证通过,才会进一步查找对应的缓存数据,从而返回给认证通过的业务模块。可以实现业务模块之间的数据读取,并能够提高数据读取的安全性。

请参阅图3,图3是本发明实施例公开的一种服务器的结构示意图。本实施例中所描述的服务器可以为即时通信应用(例如,微信、QQ等)的后台服务器,可以为即时通信应用的多个业务提供缓存功能。其中,服务器可包括但不限于:至少一个处理器301,如CPU,网络接口302、存储器303以及至少一个通信总线304。存储器303是服务器中的记忆设备,用于存放程序和至少两个业务模块的缓存数据。可以理解的是,服务器可以为集业务功能和缓存功能于一体的服务设备,即,服务器包括至少两个具有业务功能的业务模块和具有缓存功能的缓存模块;服务器也可以为只具有缓存功能的服务设备,即,该服务器只具有缓存功能的缓存模块,业务模块设置于其他服务器中。此处的存储器303可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory),如至少一个磁盘存储器,可选的,存储器303还可以是至少一个位于远离前述处理器301的存储装置。其中:

通信总线304用于实现处理器301、网络接口302以及存储器303等这些组件之间的连接通信。

存储器303中存储一组程序代码,且处理器301用于调用存储器303中存储的程序代码,执行以下操作:

接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一业务模块的标识,第一业务模块为至少两个业务模块中的任意一个业务模块;

根据预定策略将第一业务模块的标识和第一关键字进行组合得到第一目标关键字,根据第一目标关键字查询存储引擎得到原始缓存数据,采用第一缓存数据覆盖该原始缓存数据;

接收第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一业务模块的标识;

根据预定策略将第一业务模块的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的缓存数据,并将第二缓存数据返回给第一业务模块。

作为一种可行的实施方式,处理器301还用于调用存储器303中存储的程序代码,执行以下操作:

接收第二业务模块发送的用以请求读取第一业务模块的与第三关键字对应的缓存数据的第二数据读取请求,第二数据读取请求携带有第一业务模块的标识以及第二业务模块的标识,第二业务模块为至少两个业务模块中除第一业务模块之外的任意一个业务模块;

根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限;

在第二业务模块具备读取第一业务模块的缓存数据的权限的情况下,根据预定策略将第一业务模块的标识和第三关键字进行组合得到第三目标关键字,根据第三目标关键字查询存储引擎得到对应的第三缓存数据,并将第三缓存数据返回给第二业务模块。

作为另一种可行的实施方式,处理器301根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限的具体方式可以为:

判断第二业务模块的标识是否存在于第一业务模块的白名单中;

若存在,则确定第二业务模块具备读取第一业务模块的缓存数据的权限。

作为又一种可行的实施方式,处理器301还用于调用存储器303中存储的程序代码,执行以下操作:

接收第三业务模块发送的用以请求读取第一业务模块的与第四关键字对应的缓存数据的第三数据读取请求,第三数据读取请求携带有第一业务模块的标识以及验证信息,第三业务模块为至少两个业务模块中除第一业务模块之外的任意一个业务模块;

根据该验证信息对第三业务模块进行身份认证;

在对第三业务模块的身份认证通过的情况下,根据预定策略将第一业务模块的标识和第四关键字进行组合得到第四目标关键字,根据所述第四目标关键字查询所述存储引擎得到对应的第四缓存数据,并将第四缓存数据返回给第三业务模块。

可见,在图3所示的服务器中,服务器可以在缓存数据时针对不同的业务模块进行数据缓存,即,在缓存数据时区分不同的业务模块,那么业务模块在读取数据时,可以基于业务模块的标识读取对应的数据,从而能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。进一步的,通过逻辑方式对多个业务模块对应一个缓存服务进行隔离,相对于物理隔离来说,能够简化配置,减少维护成本。进一步的,如果其他业务模块需要访问第一业务模块的缓存数据,服务器则需要对其他业务模块进行身份认证,认证通过,才会进一步查找对应的缓存数据,从而返回给认证通过的业务模块。可以实现业务模块之间的数据读取,并能够提高数据读取的安全性。

请参阅图4,图4是本发明实施例公开的另一种服务器的结构示意图。本实施例中所描述的服务器可以为即时通信应用(例如,微信、QQ等)的后台服务器,可以为即时通信应用的多个业务提供缓存功能。其中,服务器可包括但不限于:至少两个计算实体(如第一计算实体401、第二计算实体403以及第三计算实体404)、缓存实体402和网络接口405。缓存实体402是服务器中的记忆设备,用于存放至少两个计算实体的缓存数据,计算实体用于对外提供不同业务,网络接口405可以与缓存实体402以及至少两个计算实体相连,用于实现服务器与外部设备的数据和指令的交互。可以理解的是,服务器可以为集业务功能和缓存功能于一体的服务设备。其中:

第一计算实体401,用于向缓存实体402发送用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一计算实体401的标识,第一计算实体401为至少两个计算实体中的任意一个。

缓存实体402,用于接收第一计算实体401的缓存请求,并根据预定策略将第一计算实体401的标识和第一关键字进行组合得到第一目标关键字,根据第一目标关键字查询存储引擎得到原始缓存数据,采用第一缓存数据覆盖原始缓存数据。

第一计算实体401,还用于向缓存实体402发送用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一计算实体401的标识。

缓存实体402,还用于接收第一数据读取请求,根据预定策略将第一计算实体401的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的第二缓存数据,并将第二缓存数据返回给第一计算实体401。

第一计算实体401,还用于接收第二缓存数据。

作为一种可行的实施方式,第二计算实体403为至少两个计算实体中除第一计算实体401之外的任意一个。

第二计算实体403,用于向缓存实体402发送用以请求读取第一计算实体401的与第三关键字对应的缓存数据的第二数据读取请求,第二数据读取请求携带有第一计算实体401的标识以及第二计算实体403的标识。

缓存实体402,还用于接收第二数据读取请求,并根据第二计算实体403的标识判断第二计算实体403是否具备读取第一计算实体401的缓存数据的权限,在第二计算实体403具备读取第一计算实体401的缓存数据的权限的情况下,根据预定策略将第一计算实体401的标识和第三关键字进行组合得到第三目标关键字,根据第三目标关键字查询存储引擎得到对应的第三缓存数据,并将第三缓存数据返回给第二计算实体403。

第二计算实体403,还用于接收第三缓存数据。

作为另一种可行的实施方式,缓存实体402根据第二计算实体403的标识判断第二计算实体403是否具备读取第一计算实体401的缓存数据的权限的具体方式可以为:

判断第二计算实体403的标识是否存在于第一计算实体401的白名单中;

若存在,则确定第二计算实体403具备读取第一计算实体401的缓存数据的权限。

作为又一种可行的实施方式,第三计算实体404为至少两个计算实体中除第一计算实体401之外的任意一个,可以为第二计算实体403。

第三计算实体404,用于向缓存实体402发送用以请求读取第一计算实体401的与第四关键字对应的缓存数据的第三数据读取请求,第三数据读取请求携带有第一计算实体401的标识以及验证信息。

缓存实体402,还用于接收第三数据读取请求,并根据该验证信息对第三计算实体404进行身份认证,在对第三计算实体404的身份认证通过的情况下,根据预定策略将第一计算实体401的标识和第四关键字进行组合得到第四目标关键字,根据第四目标关键字查询存储引擎得到对应的第四缓存数据,并将第四缓存数据返回给第三计算实体404。

第三计算实体404,还用于接收第四缓存数据。

可见,在图4所示的服务器中,服务器的缓存实体可以在缓存数据时针对不同的业务进行数据缓存,即,在缓存数据时区分不同的业务,那么业务对应的计算实体在读取数据时,可以基于计算实体的标识读取对应的数据,从而能够提高在多个计算实体对应一个缓存服务时数据读取的正确率。进一步的,通过逻辑方式对多个计算实体对应一个缓存服务进行隔离,相对于物理隔离来说,能够简化配置,减少维护成本。进一步的,如果其他计算实体需要访问某一计算实体的缓存数据,缓存实体则需要对其他计算实体进行身份认证,认证通过,才会进一步查找对应的缓存数据,从而返回给认证通过的计算实体。可以实现计算实体之间的数据读取,并能够提高数据读取的安全性。

请参见图5,图5是本发明实施例公开的一种数据处理装置。图5所示的装置可以应用于服务器,其中,该服务器可以为即时通信应用的后台服务器,可以为即时通信应用的多个业务提供缓存功能。其中,该服务器可以包括至少两个业务模块和一个缓存模块,数据处理装置可以为该服务器的缓存模块,也可以为该服务器的处理器,本发明实施例不做限定。如图5所示,该装置可以包括以下单元:

接收单元501,用于接收第一业务模块发送的用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一业务模块的标识,第一业务模块为至少两个业务模块中的任意一个业务模块。

缓存单元502,用于根据预定策略将第一业务模块的标识和第一关键字进行组合得到第一目标关键字,根据第一目标关键字查询存储引擎得到原始缓存数据,采用第一缓存数据覆盖该原始缓存数据。

接收单元501,还用于接收第一业务模块发送的用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一业务模块的标识。

查找单元503,用于根据预定策略将第一业务模块的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的第二缓存数据。

发送单元504,用于将第二缓存数据返回给第一业务模块。

作为一种可行的实施方式,该装置还可以包括判断单元505,其中:

接收单元501,还用于接收第二业务模块发送的用以请求读取第一业务模块的与第三关键字对应的缓存数据的第二数据读取请求,第二数据读取请求携带有第一业务模块的标识以及第二业务模块的标识,第二业务模块为至少两个业务模块中除第一业务模块之外的任意一个业务模块。

判断单元505,用于根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限。

查找单元503,还用于在判断单元505判断出第二业务模块具备读取第一业务模块的缓存数据的权限时,根据预定策略将第一业务模块的标识和第三关键字进行组合得到第三目标关键字,根据第三目标关键字查询存储引擎得到对应的第三缓存数据。

发送单元504,还用于将第三缓存数据返回给第二业务模块。

作为另一种可行的实施方式,判断单元505根据第二业务模块的标识判断第二业务模块是否具备读取第一业务模块的缓存数据的权限的具体方式可以为:

判断第二业务模块的标识是否存在于第一业务模块的白名单中;

若存在,则确定第二业务模块具备读取第一业务模块的缓存数据的权限。

作为又一种可行的实施方式,该装置还可以包括认证单元506,其中:

接收单元501,还用于接收第三业务模块发送的用以请求读取第一业务模块的与第四关键字对应的缓存数据的第三数据读取请求,第三数据读取请求携带有第一业务模块的标识以及验证信息,第二业务模块为至少两个业务模块中除第一业务模块之外的任意一个业务模块。

认证单元506,用于根据该验证信息对第三业务模块进行身份认证。

查找单元503,还用于在对第三业务模块的身份认证通过的情况下,根据预定策略将第一业务模块的标识和第四关键字进行组合得到第四目标关键字,根据第四目标关键字查询存储引擎得到对应的第四缓存数据。

发送单元504,还用于将第四缓存数据返回给第三业务模块。

可见,在图5所示的数据处理装置中,数据处理装置可以在缓存数据时针对不同的业务模块进行数据缓存,即,在缓存数据时区分不同的业务模块,那么业务模块在读取数据时,可以基于业务模块的标识读取对应的数据,从而能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。进一步的,通过逻辑方式对多个业务模块对应一个缓存服务进行隔离,相对于物理隔离来说,能够简化配置,减少维护成本。进一步的,如果其他业务模块需要访问第一业务模块中的缓存数据,数据处理装置则需要对其他业务模块进行身份认证,认证通过,才会进一步查找对应的缓存数据,从而返回给认证通过的业务模块。可以实现业务模块之间的数据读取,并能够提高数据读取的安全性。

请参阅图6,图6是本发明实施例公开的又一种服务器的结构示意图。本实施例中所描述的服务器可以为即时通信应用(例如,微信、QQ等)的后台服务器,可以为即时通信应用的多个业务提供缓存功能。其中,服务器可包括但不限于:至少两个业务模块(第一业务模块601、第二业务模块603以及第三业务模块604)和缓存模块602。可以理解的是,服务器可以为集业务功能和缓存功能于一体的服务设备。其中:

第一业务模块601,用于向缓存模块602发送用以请求缓存与第一关键字对应的第一缓存数据的缓存请求,该缓存请求携带有第一业务模块601的标识,第一业务模块601为至少两个计算实体中的任意一个。

缓存模块602,用于接收第一业务模块601的缓存请求,并根据预定策略将第一业务模块601的标识和第一关键字进行组合得到第一目标关键字,根据所述第一目标关键字查询存储引擎得到原始缓存数据,采用缓存数据覆盖该原始缓存数据。

第一业务模块601,还用于向缓存实体402发送用以请求读取与第二关键字对应的缓存数据的第一数据读取请求,该第一数据读取请求携带有第一业务模块601的标识。

缓存模块602,还用于接收第一数据读取请求,根据预定策略将第一业务模块的标识和第二关键字进行组合得到第二目标关键字,根据第二目标关键字查询存储引擎得到对应的第二缓存数据,并将第二缓存数据返回给第一业务模块601。

第一业务模块601,还用于接收第二缓存数据。

作为一种可行的实施方式,第二业务模块603为至少两个业务模块中除第一业务模块601之外的任意一个。

第二业务模块603,用于向缓存模块602发送用以请求读取第一业务模块601的与第三关键字对应的缓存数据的第二数据读取请求,第二数据读取请求携带有第一业务模块601的标识以及第二业务模块603的标识.

缓存模块602,还用于接收第二数据读取请求,并根据第二业务模块603的标识判断第二业务模块603是否具备读取第一业务模块601的缓存数据的权限,在第二业务模块603具备读取第一业务模块601的缓存数据的权限的情况下,根据预定策略将第一业务模块601的标识和第三关键字进行组合得到第三目标关键字,根据第三目标关键字查询存储引擎得到对应的第三缓存数据,并将第三缓存数据返回给第二业务模块603。

第二业务模块603,还用于接收第三缓存数据。

作为另一种可行的实施方式,缓存模块602根据第二业务模块603的标识判断第二业务模块603是否具备读取第一业务模块601的缓存数据的权限的具体方式可以为:

判断第二业务模块603的标识是否存在于第一业务模块601的白名单中;

若存在,则确定第二业务模块603具备读取第一业务模块601的缓存数据的权限。

作为又一种可行的实施方式,第三业务模块604为至少两个业务模块中除第一业务模块601之外的任意一个,可以为第二业务模块603。

第三业务模块604,用于向缓存模块602发送用以请求读取第一业务模块601的与第四关键字对应的缓存数据的第三数据读取请求,第三数据读取请求携带有第一业务模块601的标识以及验证信息。

缓存模块602,还用于接收第三数据读取请求,并根据该验证信息对第三业务模块604进行身份认证,在对第三业务模块604的身份认证通过的情况下,根据预定策略将第一业务模块601的标识和第四关键字进行组合得到第四目标关键字,根据第四目标关键字查询存储引擎得到对应的第四缓存数据,并将第四缓存数据返回给第三业务模块604。

第三业务模块604,还用于接收第四缓存数据。

可见,在图6所示的服务器中,服务器的缓存模块可以在缓存数据时针对不同的业务模块进行数据缓存,即,在缓存数据时区分不同的业务模块,那么业务模块在读取数据时,可以基于业务模块的标识读取对应的数据,从而能够提高在多个业务模块对应一个缓存服务时数据读取的正确率。进一步的,通过逻辑方式对多个业务模块对应一个缓存服务进行隔离,相对于物理隔离来说,能够简化配置,减少维护成本。进一步的,如果其他业务模块需要访问某一业务模块的缓存数据,缓存实体则需要对其他业务模块进行身份认证,认证通过,才会进一步查找对应的缓存数据,从而返回给认证通过的业务模块。可以实现业务模块之间的数据读取,并能够提高数据读取的安全性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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