掌桥专利:专业的专利平台
掌桥专利
首页

基于Redis的数据处理方法、数据分发系统及电子设备

文献发布时间:2024-01-17 01:14:25


基于Redis的数据处理方法、数据分发系统及电子设备

技术领域

本申请涉及计算机领域,具体而言,涉及一种基于Redis的数据处理方法、数据分发系统及电子设备。

背景技术

ratecontrol是为全行提供实时市场金融数据(即期、掉期、利率、波动率)查询接口的服务,为了满足并发量,服务为多机集群部署。产品原有的数据交互方式为多写多读,即集群里所有应用同时连接上游接收实时市场数据,写在内存里;接收到下游的查询请求后,再读取自身内存里的最新市场数据,返回给下游。此交互方式存在数据不一致的缺陷,若集群内某台机器与上游之间的连接出现问题时,那么下游从此机器查询到数据就有可能和从其他机器查询到的数据不一致。

另外,由于市场数据只写在各自机器的内存中,没有去对各自的数据进行对比、以及实时性监测,故当某台机器写数据发生故障时,下游会查询到错误的数据,此时可能没办法及时的发现问题,甚至忽略已发生的问题。

发明内容

本申请实施例的目的在于提供一种基于Redis的数据处理方法、数据分发系统及电子设备,用以解决现有技术中存在的问题发现不及时系统稳定性差的问题。

第一方面,本发明提供一种基于Redis的数据处理方法,应用于数据分发系统,数据分发系统包括查询服务器集群以及Redis中间件,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据;

方法包括:

目标查询接口服务器接收上游数据源发送的新的数据;

目标查询接口服务器将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

查询服务器集群中的任意查询接口服务器接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;

查询服务器集群中的任意查询接口服务器基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;

查询服务器集群中的任意查询接口服务器向下游设备发送响应,响应包括最新的待请求数据。

在可选的实施方式中,在查询服务器集群中确定目标查询接口服务器包括:

查询服务器集群中的多个查询接口服务器向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

在可选的实施方式中,还包括:

当当前目标查询接口服务器出现服务异常时,释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;

查询服务器集群中其他的查询接口服务器向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在可选的实施方式中,数据分发系统还包括网关,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

在可选的实施方式中,数据标识为路由的标识符代码RIC(Routing IdentifierCode)。

在可选的实施方式中,还包括:

网关接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求,网关将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

在可选的实施方式中,还包括:

Redis中间件接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;

Redis中间件确定待请求数据的数据标识对应的最新的待请求数据;

Redis中间件将最新的待请求数据发送至第一查询接口服务器。

第二方面,本发明提供一种基于Redis的数据处理装置,应用于数据分发系统,数据分发系统包括查询服务器集群以及Redis中间件,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据;

装置包括:

第一接收模块,用于接收上游数据源发送的新的数据;

第一发送模块,用于将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

第二接收模块,用于接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;

第二接收模块还用于,基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;

第二发送模块,用于向下游设备发送响应,响应包括最新的待请求数据。

在可选的实施方式中,还包括:

竞争模块,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

在可选的实施方式中,还包括:释放模块,用于当当前目标查询接口服务器出现服务异常时,释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;

竞争模块还用于,向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在可选的实施方式中,数据分发系统还包括网关,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

在可选的实施方式中,数据标识为路由的标识符代码RIC(Routing IdentifierCode)。

在可选的实施方式中,还包括:

第三接收模块,用于接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求;

负载模块,用于将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

在可选的实施方式中,还包括:

第四接收模块,用于接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;

确定模块,用于确定待请求数据的数据标识对应的最新的待请求数据;

第四发送模块,用于将最新的待请求数据发送至第一查询接口服务器。

第三方面,本发明提供一种数据分发系统,该数据分发系统包括查询服务器集群以及Redis中间件,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据;

目标查询接口服务器,用于接收上游数据源发送的新的数据;将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

查询服务器集群中的任意查询接口服务器,用于接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;向下游设备发送响应,响应包括最新的待请求数据。

在可选的实施方式中,查询服务器集群中的多个查询接口服务器,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

在可选的实施方式中,还包括:

目标查询接口服务器,还用于当当前目标查询接口服务器出现服务异常时,释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;

查询服务器集群中其他的查询接口服务器,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在可选的实施方式中,数据分发系统还包括网关,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

在可选的实施方式中,数据标识为路由的标识符代码RIC(Routing IdentifierCode)。

在可选的实施方式中,网关还用于,接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求,网关将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

在可选的实施方式中,Redis中间件用于,接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;确定待请求数据的数据标识对应的最新的待请求数据;将最新的待请求数据发送至第一查询接口服务器。

第四方面,本发明提供一种电子设备,电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存储的程序时,实现前述实施方式任一的方法步骤。

第五方面,本发明提供一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现前述实施方式任一的方法步骤。

本发明提供一种基于Redis的数据处理方法、数据分发系统及电子设备。通过目标查询接口服务器接收上游数据源发送的新的数据;目标查询接口服务器将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;查询服务器集群中的任意查询接口服务器接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;查询服务器集群中的任意查询接口服务器基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;查询服务器集群中的任意查询接口服务器向下游设备发送响应,响应包括最新的待请求数据。以此,有效的避免因集群内某台服务器发生故障,导致下游从集群查询到数据不一致的情况;当服务器发生故障时,可以有效的停止服务,避免下游错误使用数据的情况,提升了系统的稳定性。

附图说明

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

图1为本申请实施例提供的一种基于Redis的数据处理方法流程示意图;

图2为本申请实施例提供的一种基于Redis的数据处理方法场景示意图;

图3为本申请实施例提供的一种基于Redis的数据处理装置结构示意图;

图4为本申请实施例提供的一种数据分发系统结构示意图;

图5为本申请实施例提供的一种电子设备结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

图1为本申请实施例提供的一种基于Redis的数据处理方法流程示意图。该方法应用于数据分发系统,数据分发系统包括查询服务器集群以及Redis中间件,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据。

例如,查询服务器集群中的多个查询接口服务器向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

如图1所示,该方法包括:

S110,目标查询接口服务器接收上游数据源发送的新的数据;

数据被订阅后,上游数据源可以在有新数据更新时,向订阅者发送新的数据。也可以是订阅者主动请求新的数据,例如可以采用轮训的方式。

S120,目标查询接口服务器将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

该数据标识为路由的标识符代码(RIC,Routing Identifier Code)。

其中,Redis中间件可以为键值对内存数据库,该键值对中的关键字为RIC,值为数据。

S130,查询服务器集群中的任意查询接口服务器接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识。

该下游设备可以为下游服务器或者下游终端。

S140,查询服务器集群中的任意查询接口服务器基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;

其中,该任意查询接口服务器可以为第一查询接口服务器。Redis中间件可以接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;Redis中间件确定待请求数据的数据标识对应的最新的待请求数据;Redis中间件将最新的待请求数据发送至第一查询接口服务器。

S150,查询服务器集群中的任意查询接口服务器向下游设备发送响应,响应包括该最新的待请求数据。

在一些实施例中,当当前目标查询接口服务器出现服务异常时,可以释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;查询服务器集群中其他的查询接口服务器向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在一些实施例中,该数据分发系统还包括网关,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

该网关可以接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求,网关将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

通过本申请实施例,可以有效的避免因集群内某台服务器发生故障,导致下游从集群查询到数据不一致的情况;当服务器发生故障时,可以有效的停止服务,避免下游错误使用数据的情况。

另外,由于写数据的压力要大于读数据,当交互流程由多写多读改为一写多读后,机器写支出的性能成本得到了显著的节约,同时也减少了多写对于上游数据源的压力,提高了产品的可拓展性,避免了因上游压力导致的无法拓展读性能的情况发生。

作为一个示例,如图2所示,数据分发系统包括ratecontrol服务器集群、网关以及Redis中间件,该ratecontrol服务器集群即为查询服务器集群。

ratecontrol服务器集群在启动过程中,各个服务器会尝试自动连接redis中间件获取分布式锁,ratecontrol服务器集群有且最多只有一台服务器能抢到该分布式锁。当抢到锁的服务器发生故障时,会释放掉该锁,其他未抢到锁的机器会定时去尝试获取锁。

到锁的服务器A,会去连接上游数据源,订阅需要的数据并接收已订阅数据的实时更新。当A与上游数据源的连接存在问题时,A也会释放抢到的锁。

当A接收到数据的实时更新后,会把数据的唯一标识Ric作为数据的key写入Redis中间件中,即每份数据的最新更新都会保存在Redis中间件里。

当下游要查询某个Ric的数据时,请求就会被网关均匀的负载到ratecontrol服务器集群的所有服务器上,接收到请求的服务器就会根据Ric去Redis中查询最新的数据。

此时,当有多个下游同时在不同的服务器上请求同一Ric的数据时,也能保证数据的一致性,都是来源于Redis中间件。即使某台机器发生故障,也只会导致本次查询失败,下游也可以重新从集群其他的服务器中重新请求到正确的数据,不会出现数据不一致和错误使用数据的问题,也不会出现因服务器故障,导致最新市场数据丢失的情况。

图3为本申请实施例提供的一种基于Redis的数据处理装置结构示意图。应用于数据分发系统,数据分发系统包括查询服务器集群以及Redis中间件,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据;

其中,目标查询接口服务器可以包括第一接收模块301、第一发送模块302、竞争模块309以及释放模块310;

任意查询接口服务器可以包括第二接收模块303、第二发送模块304以及竞争模块309;

网关可以包括第三接收模块305以及负载模块306。

Redis中间件可以包括第四接收模块307、确定模块311以及第四发送模块308。

在一些实施例中,该第一接收模块301用于接收上游数据源发送的新的数据;

第一发送模块302用于将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

第二接收模块303用于接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;

第二接收模块303还用于基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;

第二发送模块304用于向下游设备发送响应,响应包括最新的待请求数据。

在一些实施例中,竞争模块309,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

在一些实施例中,释放模块310,用于当当前目标查询接口服务器出现服务异常时,释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;

竞争模块309还用于,向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在一些实施例中,数据分发系统还包括网关,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

在一些实施例中,第三接收模块305,用于接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求;

负载模块306,用于将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

在一些实施例中,第四接收模块307,用于接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;

确定模块311,用于确定待请求数据的数据标识对应的最新的待请求数据;

第四发送模块308,用于将最新的待请求数据发送至第一查询接口服务器。

图4为本申请实施例提供的一种数据分发系统结构示意图。如图4所示,该数据分发系统包括查询服务器集群401以及Redis中间件402,查询服务器集群包括多个查询接口服务器,在查询服务器集群中确定目标查询接口服务器,通过目标查询接口服务器向上游数据源订阅数据;

目标查询接口服务器,用于接收上游数据源发送的新的数据;将新的数据的数据标识以及新的数据以键值对的形式存储在Redis中间件中,新的数据的数据标识为关键字;

查询服务器集群中的任意查询接口服务器,用于接收到下游设备发送的数据请求,数据请求包括待请求数据的数据标识;基于待请求数据的数据标识从Redis中间件中获取最新的待请求数据;向下游设备发送响应,响应包括最新的待请求数据。

在一些实施例中,查询服务器集群中的多个查询接口服务器,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器为目标查询接口服务器。

在一些实施例中,目标查询接口服务器,还用于当当前目标查询接口服务器出现服务异常时,释放分布式锁,服务异常包括自身故障或者与上游数据源之间的数据连接出现故障;

查询服务器集群中其他的查询接口服务器,用于向Redis中间件对分布式锁进行竞争,竞争到分布式锁的查询接口服务器作为新的目标查询接口服务器。

在一些实施例中,数据分发系统还包括网关403,网关位于查询服务器集群以及下游设备之间,用于对下游设备的请求在查询服务器集群中进行负载均衡。

在一些实施例中,网关403还用于,接收到来自多个不同下游设备的多个针对同一目标数据的数据获取请求,网关将针对同一目标数据的数据获取请求均匀负载到查询服务器集群中。

在一些实施例中,Redis中间件402用于,接收第一查询接口服务器发送的数据查询请求,数据查询请求包括待请求数据的数据标识;确定待请求数据的数据标识对应的最新的待请求数据;将最新的待请求数据发送至第一查询接口服务器。

本申请实施例还提供了一种电子设备,如图5所示,包括处理器810、通信接口820、存储器830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。

存储器830,用于存放计算机程序;

处理器810,用于执行存储器830上所存放的程序时,实现如下上述图1所示的方法步骤。

上述提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

由于上述实施例中电子设备的各器件解决问题的实施方式以及有益效果可以参见图1所示的实施例中的各步骤来实现,因此,本申请实施例提供的电子设备的具体工作过程和有益效果,在此不复赘述。

在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一的基于Redis的数据处理方法。

在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一的基于Redis的数据处理方法。

本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。

显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。

技术分类

06120116075689