CN113687964A - 数据处理方法、装置、电子设备、存储介质及程序产品 - Google Patents

数据处理方法、装置、电子设备、存储介质及程序产品 Download PDF

Info

Publication number
CN113687964A
CN113687964A CN202111057423.3A CN202111057423A CN113687964A CN 113687964 A CN113687964 A CN 113687964A CN 202111057423 A CN202111057423 A CN 202111057423A CN 113687964 A CN113687964 A CN 113687964A
Authority
CN
China
Prior art keywords
cache
data
target
determining
processed
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.)
Granted
Application number
CN202111057423.3A
Other languages
English (en)
Other versions
CN113687964B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111057423.3A priority Critical patent/CN113687964B/zh
Publication of CN113687964A publication Critical patent/CN113687964A/zh
Application granted granted Critical
Publication of CN113687964B publication Critical patent/CN113687964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据处理方法、装置、电子设备、存储介质及程序产品,基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,通过多个形成序列化结构的缓存单元来进行数据处理,利用游标快速地定位数据的存储位置,从而减少数据的编码和解码操作,有利于提高数据处理效率,并且,根据缓存单元的存储空闲状态来进行数据的写入,可以提高数据写入的成功率以及缓存单元的空间利用率,上述数据处理方法可以广泛应用于数据处理、数据库、云计算等技术领域。

Description

数据处理方法、装置、电子设备、存储介质及程序产品
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据处理方法、装置、电子设备、存储介质及程序产品。
背景技术
随着互联网技术的发展,各种应用程序的使用者的数量变得越来越多,因此,目前各种应用程序在运行或者维护时均需要对海量的数据进行处理。在相关技术中,可以采用分桶的方式来处理数据,然而,基于分桶的方式处理数据,需要反复在结构化数据和字节数组之间来回转换数据的结构,相应地需要对数据进行编码和解码,从而降低了数据处理效率。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提供了一种数据处理方法、装置、电子设备、存储介质及程序产品,通过多个形成序列化结构的缓存单元对数据进行处理,可以减少数据的编码和解码操作,有利于提高数据处理效率。
一方面,本发明实施例提供了一种数据处理方法,包括:
获取待处理数据;
在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
确定所述第一缓存单元和所述第二缓存单元的存储空闲状态,根据所述存储空闲状态从所述第一缓存单元和所述第二缓存单元中确定目标缓存单元,将所述待处理数据写入所述目标缓存单元中。
另一方面,本发明实施例还提供了一种数据处理方法,包括:
获取待处理数据;
在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
从所述第一缓存单元中获取第一参考数据,从所述第二缓存单元中获取第二参考数据,将所述待处理数据与第一参考数据、所述第二参考数据进行比对,当所述待处理数据与所述第一参考数据、所述第二参考数据中的任意一个相匹配,剔除所述待处理数据。
另一方面,本发明实施例还提供了一种数据处理装置,包括:
第一数据获取模块,用于获取待处理数据;
第一缓存块确定模块,用于在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
第一游标确定模块,用于确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
第一缓存单元确定模块,用于根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
数据写入模块,用于确定所述第一缓存单元和所述第二缓存单元的存储空闲状态,根据所述存储空闲状态从所述第一缓存单元和所述第二缓存单元中确定目标缓存单元,将所述待处理数据写入所述目标缓存单元中。
进一步,所述共享内存区中设置有多个相互隔离的缓存区,每个所述缓存区配置有对应的区域标识,上述第一缓存块确定模块具体用于:
确定所述待处理数据对应的业务类型;
根据所述业务类型和所述区域标识的匹配关系从多个所述缓存区中确定目标缓存区;
在所述目标缓存区中确定目标缓存块。
进一步,所述共享内存区中设置有多个缓存块,上述第一缓存块确定模块具体用于:
按照预设顺序依次确定多个所述缓存块中每个所述缓存块剩余的存储空间;
将当前确定的所述缓存块作为候选缓存块,若所述候选缓存块剩余的存储空间大于或者等于第一阈值,将所述候选缓存块作为目标缓存块。
进一步,多个所述缓存块依次连接成环形链表,上述数据处理装置还包括数据删除模块,数据删除模块具体用于:
从所述环形链表中确定作为首节点的第一缓存块和作为尾节点的第二缓存块;
确定所述第二缓存块剩余的存储空间;
当所述第二缓存块剩余的存储空间小于或者等于第二阈值,删除所述第一缓存块中存储的数据。
进一步,上述第一游标确定模块具体用于:
确定第一散列函数和第二散列函数;
根据所述第一散列函数计算所述待处理数据对应的第一散列值,根据所述第二散列函数计算所述待处理数据对应的第二散列值;
将所述第一散列值和所述第二散列值进行异或操作,得到第三散列值;
将所述第一散列值作为所述待处理数据在所述目标缓存块中对应的第一游标,将所述第三散列值作为所述待处理数据在所述目标缓存块中对应的第二游标。
进一步,所述共享内存区的数量为多个,每个所述共享内存区被配置于不同的缓存设备;
上述数据处理装置还包括路由信息获取模块,上述路由信息获取模块具体用于:
获取目标路由信息,所述目标路由信息用于确定所述待处理数据的写入路径;
上述第一缓存块确定模块具体用于:
根据所述目标路由信息从多台所述缓存设备中确定目标缓存设备,访问所述目标缓存设备,从所述目标缓存设备的共享内存区中确定目标缓存块。
进一步,上述路由信息获取模块具体用于:
确定第三散列函数,根据所述第三散列函数计算所述待处理数据对应的第四散列值;
获取散列槽,所述散列槽包括多个用于存储路由信息的槽位,每个所述槽位配置有对应的槽位标识;
根据所述第四散列值与所述槽位标识的匹配关系从多个所述槽位中确定第一目标槽位,从所述第一目标槽位中获取目标路由信息。
进一步,所述数据处理装置还包括同步模块,上述同步模块具体用于:
向第一缓存设备发送同步指令,以使所述第一缓存设备从所述目标缓存设备中复制所述待处理数据,所述第一缓存设备为所述目标缓存设备以外的缓存设备;
获取所述目标缓存设备的运行状态信息,所述运行状态信息用于表征所述目标缓存设备运行正常或者运行异常;
当所述运行状态信息表征所述目标缓存设备运行异常,生成所述第一缓存设备对应的第一路由信息,将所述第一路由信息写入所述第一目标槽位,并将所述第一目标槽位中的所述目标路由信息删除。
进一步,上述同步模块具体用于:
确定所述待处理数据对应的业务类型;
根据所述业务类型确定所述待处理数据的同步方式;
根据所述同步方式生成同步指令,将所述同步指令发送至第一缓存设备。
进一步,所述数据处理装置还包括迁移模块,上述迁移模块具体用于:
对第二路由信息进行锁定处理,所述第二路由信息用于确定待迁移数据的写入路径,所述待迁移数据存储于第二缓存设备中,所述第二缓存设备为多台所述缓存设备中的其中一台缓存设备;
向所述第二缓存设备发送数据迁移指令,以使所述第二缓存设备将所述待迁移数据迁移至第三缓存设备;
当所述待迁移数据迁移至所述第三缓存设备之后,生成第三路由信息,所述第三路由信息用于确定所述待迁移数据迁移后的写入路径;
确定所述第二路由信息在所述散列槽中对应的第二目标槽位,将所述第二目标槽位中的所述第二路由信息删除,将所述第三路由信息写入所述第二目标槽位。
另一方面,本发明实施例还提供了一种数据处理装置,包括:
第二数据获取模块,用于获取待处理数据;
第二缓存块确定模块,用于在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
第二游标确定模块,用于确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
第二缓存单元确定模块,用于根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
数据剔除模块,用于从所述第一缓存单元中获取第一参考数据,从所述第二缓存单元中获取第二参考数据,将所述待处理数据与第一参考数据、所述第二参考数据进行比对,当所述待处理数据与所述第一参考数据、所述第二参考数据中的任意一个相匹配,剔除所述待处理数据。
另一方面,本发明实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的数据处理方法。
另一方面,本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现上述的数据处理方法。
另一方面,本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的数据处理方法。
本发明实施例至少包括以下有益效果:本发明实施例通过获取待处理数据,在共享内存区中确定目标缓存块,基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,并且,目标缓存块中设置有多个形成序列化结构的缓存单元,每个缓存单元配置有对应的位置标识,通过多个形成序列化结构的缓存单元来进行数据处理,利用游标快速地定位数据的存储位置,从而减少数据的编码和解码操作,有利于提高数据处理效率;接着,确定待处理数据在目标缓存块中对应的第一游标和第二游标,根据位置标识和第一游标的匹配关系从多个缓存单元中确定第一缓存单元,根据位置标识和第二游标的匹配关系从多个缓存单元中确定第二缓存单元,确定第一缓存单元和第二缓存单元的存储空闲状态,根据存储空闲状态从第一缓存单元和第二缓存单元中确定目标缓存单元,将待处理数据写入目标缓存单元中,并且,根据缓存单元的存储空闲状态来进行数据的写入,可以提高数据写入的成功率以及缓存单元的空间利用率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例提供的数据处理方法的一种实施环境的示意图;
图2为本发明实施例提供的数据处理方法的流程图;
图3为本发明实施例提供的缓存块的结构示意图;
图4为本发明实施例提供的待处理数据写入至目标缓存单元的流程示意图;
图5为本发明实施例提供的数据结构示意图;
图6为本发明实施例提供的数据库分片的整体架构图;
图7为本发明实施例提供的路由代理单元中散列槽与缓存设备的关系示意图;
图8为本发明实施例提供的待处理数据的同步示意图;
图9为本发明实施例提供的数据迁移示意图;
图10为本发明实施例提供的数据处理方法的另一种流程图;
图11为本发明实施例提供的数据处理的一个实际例子的流程示意图;
图12为本发明实施例提供的数据处理的另一个实际例子的流程示意图;
图13为本发明实施例提供的数据处理装置的结构示意图;
图14为本发明实施例提供的数据处理装置的另一种结构示意图;
图15为本发明实施例提供的服务器的部分的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释:
共享内存:是指在一段允许多个内核访问的物理空间。
元数据:描述表/视图等基本数据库元素的数据,简单来说就是用来描述数据属性的数据。
散列值:又称为Hash值或者哈希值,是把任意长度的输入通过散列函数转换得到的固定长度的输出值。
分布式:计算机科学中一个研究方向,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式网络存储技术是将数据分散地存储于多台独立的机器设备上,通过一定的网络策略互相连接通信。
云计算(cloud computing)指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。云计算是网格计算(Grid Computing)、分布式计算(DistributedComputing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(NetworkStorageTechnologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。随着互联网、实时数据流、连接设备多样化的发展,以及搜索服务、社会网络、移动商务和开放协作等需求的推动,云计算迅速发展起来。不同于以往的并行分布式计算,云计算的产生从理念上将推动整个互联网模式、企业管理模式发生革命性的变革。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。例如,服务器提供的在终端之间的互动资源传递功能即实现为应用服务层中的业务服务。
针对相关技术中基于分桶的方式处理数据的效率较低的问题,本发明实施例提供了一种数据处理方法、装置、电子设备、存储介质及程序产品,通过多个形成序列化结构的缓存单元对数据进行处理,可以减少数据的编码和解码操作,有利于提高数据处理效率,本发明实施例提供的数据处理方法可以应用在数据库技术中。
参照图1,图1为本发明实施例提供的数据处理方法的一种实施环境的示意图,该实施环境中包括终端101和服务器102,其中,终端101和服务器102之间通过通信网络103连接。
终端101可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。终端101中可以安装有各种应用程序,应用程序在运行过程中可以产生业务数据并发送至服务器102。
服务器102用于进行数据处理,包括但不限于写入、查询、剔除等操作。其中,上述服务器102可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一些实施例中,上述服务器102还可以实现为区块链系统中的节点。
基于图1所示的实施环境,参照图2,本发明实施例提供了一种数据处理方法,以数据写入处理为例,示例性地应用于图1所示的服务器102中,该数据处理方法包括但不限于以下步骤201至步骤205。
步骤201:获取待处理数据;
其中,待处理数据可以是终端101中的应用程序在运行过程中产生的业务数据,例如,终端101在浏览页面时的页面浏览(PV,Page View)数量,或者某个页面的访客(UV,Unique visitor)数量,或者浏览过的历史内容,或者是游戏中玩家的战斗力数据,等等,本发明实施例不做限定。
或者,待处理数据也可以是上述业务数据的元数据,例如,终端101在浏览页面时的页面浏览数量所对应的索引,或者某个页面的访客数量所对应的索引,或者浏览过的历史内容对应的索引,或者是游戏中玩家的战斗力数据对应的索引,等等,本发明实施例不做限定。其中,在元数据的基础上来进行数据处理,有利于提高数据处理的效率。
又或者,待处理数据也可以是上述元数据对应的指纹数据,其中,可以利用指纹算法得到元数据对应的指纹数据,本发明实施例不对具体的指纹算法进行限定。其中,通过指纹数据来进行数据处理,对于数据表示比较复杂的原始数据,可以通过指纹数据来达到简化数据表示的效果,使得数据处理过程变得相对简单,有利于提高数据处理的效率,并且能够降低待处理数据占用的空间。
另外,为便于描述本发明实施例提供的数据处理方法的原理,本发明实施例以指纹数据的大小为一个字节作为例子进行说明,但本发明实施例不对指纹数据的具体大小进行限定。
步骤202:在共享内存区中确定目标缓存块;
其中,缓存块为共享内存中用于缓存数据的部分物理空间,共享内存中可以设置有多个缓存块,因此,可以先从共享内存的多个缓存块中确定目标缓存块,并且,目标缓存块中设置有多个形成序列化结构的缓存单元,每个缓存单元配置有对应的位置标识,基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率。
例如,参照图3,图3为本发明实施例提供的缓存块的结构示意图,其中,序列化结构的缓存单元即代表多个缓存单元基于字节序列的数据结构来存储数据,实现多字节序列数据的平铺使用,在数据处理时可以减少数据的编码和解码操作。并且,由于多个缓存单元形成序列化结构,因此可以更加方便地进行缓存块的容量调整,达到弹性容量伸缩的效果。
其中,缓存单元的位置标识用于确定数据处理的具体位置,位置标识可以按照缓存单元在缓存块中的排列顺序来确定,例如某个缓存单元是缓存块中排列第一,则该缓存单元的位置标识可以是1。
步骤203:确定待处理数据在目标缓存块中对应的第一游标和第二游标;
其中,游标用于指示待处理数据在目标缓存块中的处理位置。由于多个缓存单元形成序列化结构,因此在处理数据时可以相应地通过游标来定位具体的缓存单元,在一种可能的实现方式中,可以利用散列函数来计算待处理数据对应的游标,而本发明实施例中,确定的游标数量为两个,包括第一游标和第二游标,因此后续可以通过第一游标和第二游标确定两个缓存单元,提高数据处理的容错率以及稳定性。
步骤204:根据位置标识和第一游标的匹配关系从多个缓存单元中确定第一缓存单元,根据位置标识和第二游标的匹配关系从多个缓存单元中确定第二缓存单元;
例如,计算出来的第一游标为4,第二游标为10,则根据第一游标可以从多个缓存单元中确定位置标识为4的第一缓存单元,同理,可以根据第二游标从多个缓存单元中确定位置标识为10的第二缓存单元。相应地,单个缓存单元的存储空间大小可以为一个字节。
步骤205:确定第一缓存单元和第二缓存单元的存储空闲状态,根据存储空闲状态从第一缓存单元和第二缓存单元中确定目标缓存单元,将待处理数据写入目标缓存单元中。
其中,存储空闲状态包括已写入数据和未写入数据,根据存储空闲状态从第一缓存单元和第二缓存单元中确定目标缓存单元,可以是从第一缓存单元和第二缓存单元中确定未写入数据的缓存单元,将未写入数据的缓存单元作为目标缓存单元。
若第一缓存单元和第二缓存单元均未写入数据,则可以从第一缓存单元和第二缓存单元中随机选取一个缓存单元作为目标缓存单元。
若第一缓存单元和第二缓存单元均已写入数据,则可以从第一缓存单元和第二缓存单元中随机选取一个缓存单元,将该缓存单元中的数据删除,将删除数据后的该缓存单元作为目标缓存单元。
另外,由于步骤203中确定了两个游标,因此被删除的数据可以利用在写入时未使用的游标再次写入到其他缓存单元中,并且,类似地,当待写入被删除的数据的缓存单元中已写入数据,则把该缓存单元中的数据删除后再进行写入,然后不断重复上述过程。
可以理解的是,为了避免处理循环次数过多,可以设置一个删除阈值,当数据的删除次数超过该删除阈值,则表明缓存块中的剩余空间不足,此时可以对缓存块进行扩容处理。此时,由于缓存块中多个缓存单元形成序列化结构,因此可以快捷地进行扩容处理,并且扩容处理后不影响原有的数据的存储,从而提高扩容的效率。需要补充说明的是,上述删除阈值可以根据实际情况设置,例如50次、100次等,本发明实施例不做限定。
下面以一具体例子详细说明上述待处理数据的写入原理。参照图4,图4为本发明实施例提供的待处理数据写入至目标缓存单元的流程示意图,假设数据X对应游标4和游标10,当游标4对应的缓存单元中已写入数据Y1,游标10对应的缓存单元中未写入数据,则数据X写入游标10对应的缓存单元中;当游标4对应的缓存单元和游标10对应的缓存单元中均已写入数据,则随机选择游标4对应的缓存单元和游标10对应的缓存单元中的其中一个进行数据删除,例如删除游标10对应的缓存单元中的数据Y2,然后将数据X写入至游标10对应的缓存单元中,接着,数据Y2在写入时对应游标3和游标10,则将数据Y2写入至游标3对应的缓存单元中,当游标3对应的缓存单元中已经写入数据时,将游标3对应的缓存单元中的数据Y3删除后写入数据Y2,然后数据Y3重复上述操作,直至删除数据的累计次数达到删除阈值。
上述步骤201至步骤205基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,通过多个形成序列化结构的缓存单元来进行数据处理,利用游标快速地定位数据的存储位置,从而减少数据的编码和解码操作,有利于提高数据处理效率,并且,根据缓存单元的存储空闲状态来进行数据的写入,可以提高数据写入的成功率以及缓存单元的空间利用率。
参照图5,图5为本发明实施例提供的数据结构示意图,其中,共享内存区中设置有多个相互隔离的缓存区,每个缓存区配置有对应的区域标识,上述步骤202中,在共享内存区中确定目标缓存块,具体可以是确定待处理数据对应的业务类型,根据业务类型和区域标识的匹配关系从多个缓存区中确定目标缓存区,在目标缓存区中确定目标缓存块。
具体地,业务类型可以是根据应用程序的类型来划分,例如游戏类业务、即时通讯类业务、新闻类业务等等,或者,业务类型可以根据数据自身的属性来划分,例如推荐内容、游戏结果数据、页面点击量等等。业务类型和区域标识之间的对应关系可以预先设置好,例如参照图5,业务索引G1对应业务类型一,业务索引G2对应业务类型二,而可以预先设置业务类型一对应缓存区H1,业务类型二对应缓存区H2,因此在确定业务索引G1对应的目标缓存块时,直接从缓存区H1中确定,同理,直接从缓存区H2中确定业务索引G2对应的目标缓存块。通过业务类型划分缓存区,可以利用共享内存进行多业务服务,并且不同业务类型的数据可以进行隔离存储,避免不同业务类型的数据之间产生干扰,提高数据存储的可靠性和稳定性。
在一种可能的实现方式中,共享内存区中设置有多个缓存块,例如图5所示的数据结构中,每个缓存区中均设置有多个缓存块,上述步骤202中,在共享内存区中确定目标缓存块,具体也可以是按照预设顺序依次确定多个缓存块中每个缓存块剩余的存储空间,将当前确定的缓存块作为候选缓存块,若候选缓存块剩余的存储空间大于或者等于第一阈值,将候选缓存块作为目标缓存块。
例如,以图5所示的缓存区H1作为例子进行说明,缓存区H1中设置有n个缓存块,n为正整数,其中,可以对每个缓存块进行编号,例如缓存块1、缓存块2...缓存块n,预设顺序可以是缓存块的编号顺序,即按照缓存块的编号顺序依次确定每个缓存块中剩余的存储空间,剩余的存储空间可以用占比来表示,相应地,第一阈值可以是25%、30%或者35%等,本发明实施例不对第一阈值做限定。例如,缓存块1、缓存块2和缓存块3剩余的存储空间为20%、22%和50%,第一阈值设置为25%,则候选缓存块依次为缓存块1、缓存块2和缓存块3,目标缓存块为缓存块3,可以理解,当首次确定出目标缓存块之后便不会继续确定后续编号的缓存块,基于上述例子,当确定缓存块3剩余的存储空间大于或者等于第一阈值后,可以不再确定缓存块4剩余的存储空间。
如前所述,在写入数据时某个缓存单元中若已写入数据,则需要将该缓存单元中原本的数据删除并写入至其他位置,上述操作的重复次数取决于每次写入数据时某个缓存单元中是否已写入数据,因此,通过确定缓存块剩余的存储空间,当将数据写入剩余的存储空间较多的缓存块,可以剩余更多的缓存单元,因而可以降低写入数据时的删除次数,有利于提高数据处理的效率。
可见,缓存块可以根据存储空间情况按照编号顺序来使用,其中,每个缓存块的存储空间总量可以互不相同,在确定某个缓存块的存储空间总量时,可以获取不同存储空间总量对应的剩余存储空间与删除次数的历史数据进行分析,分析得到合适的存储空间总量,例如可以构建模型进行分析。在一种可能的实现方式中,当前缓存块的存储空间总量可以是前一个编号的缓存块的存储空间总量的2倍至3倍,从而可以优化多个缓存块的存储空间分配,使得多个缓存块的整体存储空间的利用率得到一定程度的提升。
可以理解,当不同的缓存块的存储空间总量不相同时,上述第一阈值也可以根据每个缓存块存储空间总量来对应设置,即不同的缓存块所对应的第一阈值可以不相同,从而使得第一阈值的设置更加合理。
在一种可能的实现方式中,多个缓存块可以依次连接成环形链表,上述数据处理方法还可以从环形链表中确定作为首节点的第一缓存块和作为尾节点的第二缓存块,确定第二缓存块剩余的存储空间,当第二缓存块剩余的存储空间小于或者等于第二阈值,删除第一缓存块中存储的数据,因此,可以利用环形链表的结构实现多个缓存块中的数据的定期删除,以腾出一定的存储空间,有利于提高运行稳定性,保障数据的安全性。其中,第二阈值可以是25%、20%或者15%等,本发明实施例不做限定,可以理解的是,第二阈值与第一阈值的设置之间可以具有关联性,可以根据实际情况来对第一阈值和第二阈值进行设置。
例如,参照图5所示的数据结构,缓存块1可以是环形链表中的第一缓存块,缓存块n可以是环形链表中的第二缓存块,第二阈值为20%,当缓存块n剩余的存储空间小于或者等于20%时,可以删除缓存块1中的数据,相应地,将缓存块1设置为环形链表中的第二缓存块,缓存块2设置为环形链表中的第一缓存块,以此类推。
另外,多个缓存块除了可以连接成环形链表的结构以外,也可以采用结构体(struct)或者栈结构等形式来连接多个缓存块。并且,可以根据数据对应的业务类型来选择缓存块之间的连接方式,提高数据处理的合理性。
在一种可能的实现方式中,上述步骤203中,确定待处理数据在目标缓存块中对应的第一游标和第二游标,具体可以是确定第一散列函数和第二散列函数,根据第一散列函数计算待处理数据对应的第一散列值,根据第二散列函数计算待处理数据对应的第二散列值,将第一散列值和第二散列值进行异或操作,得到第三散列值,将第一散列值作为待处理数据在目标缓存块中对应的第一游标,将第三散列值作为待处理数据在目标缓存块中对应的第二游标。
具体地,以待处理数据为元数据对应的指纹数据作为例子,待处理数据对应的第一散列值,可以利用指纹数据对应的元数据来进行计算得到,假设元数据为y,指纹数据为f,第一散列函数为hash1,第二散列函数为hash2,则第一散列值可以表示为hash1(y),进一步,待处理数据对应的第二散列值,可以利用指纹数据来进行计算得到,第二散列之可以表示为hash2(f),基于此,第三散列值可以表示为hash1(y)⊕hash2(f),然后,第一游标即为hash1(y),第二游标即为hash1(y)⊕hash2(f)。其中,由于异或操作的自反性,可以无须对第一游标和第二游标进行明确的区分,只需要计算出其中一个游标,即可得出另一个游标,有利于提高数据处理的效率。
可以理解的是,也可以利用第一散列函数和第二散列函数分别计算得到第一散列值和第二散列值后,直接将第一散列值作为第一游标,将第二散列值作为第二游标。
参照图6,图6为本发明实施例提供的数据库分片的整体架构图,其中,共享内存区的数量为多个,每个共享内存区被配置于不同的缓存设备,并且,该数据库分片架构中还设置有管理单元(Controller)、服务发现单元(ETCD)和路由代理单元(Proxy),其中,管理单元用于生成路由信息或者相关的控制指令,路由信息用于确定数据的写入路径;服务发现单元用于将路由信息发送至路由代理单元,以及接受缓存设备的服务注册请求;路由代理单元用于处理并确定数据对应的路由信息;路由代理单元监控服务发现单元的消息通知,当有新的缓存设备上线或者下线时,路由代理单元可以立刻感知并对路由信息进行相应的处理。
其中,不同的缓存设备均采用图5所示的数据结构,当然,不同的缓存设备之间的缓存块的数量可以不相同。
管理单元(Controller)、服务发现单元(ETCD)和路由代理单元(Proxy)可以设置于服务器中,管理单元(Controller)、服务发现单元(ETCD)和路由代理单元(Proxy)可以是从软件架构层面进行划分,也可以从物理硬件层面进行划分。
可见,上述多个缓存设备可以形成分布式的架构,从而可以提升数据存储的量级,提高数据的扩展性,并且提高数据处理的可靠性与稳定性。并且,每台缓存设备均是基于共享内存来存储数据,从而可以实现进程级别的容灾。
基于图6所示的数据库分片的架构,在共享内存区中确定目标缓存块之前,可以先获取目标路由信息,其中,该目标路由信息用于确定待处理数据的写入路径,相应地,在共享内存区中确定目标缓存块,具体可以根据目标路由信息从多台缓存设备中确定目标缓存设备,访问目标缓存设备,从目标缓存设备的共享内存区中确定目标缓存块。由于图6所示的数据库分片架构中设置有多台缓存设备,因此可以通过对应的目标路由信息来确定待处理数据即将写入的目标缓存设备。
其中,路由信息可以包括缓存设备的ip地址,可以根据路由信息确定目标缓存设备后,通过业务类型、剩余的存储空间等参数来确定目标缓存块。
或者,当缓存设备对应的共享内存区中设置有多个缓存块时,路由信息也可以包括缓存设备的ip地址以及缓存块编号,因此,可以通过路由信息确定对应的缓存设备以及该缓存设备中的缓存块,在写入待处理数据时,可以直接通过对应的目标路由信息确定目标缓存块。
在一种可能的实现方式中,路由代理单元通过散列槽来存储路由信息,散列槽包括多个用于存储路由信息的槽位,每个槽位配置有对应的槽位标识,槽位标识可以根据槽位的顺序来配置,例如图6所示的架构中,槽位标识可以是0、1、2....999等。
另外,散列槽的数量可以为多个,每个散列槽可以通过槽标识来区分,路由代理单元在将路由信息存储至散列槽中时,可以便于将路由信息进行分类存储至不同的散列槽中,然后通过相应的槽标识来获取路由信息,从而可以提高路由信息的管理效率。
基于此,在获取目标路由信息时,具体可以确定第三散列函数,根据第三散列函数计算待处理数据对应的第四散列值,获取散列槽,根据第四散列值与槽位标识的匹配关系从多个槽位中确定第一目标槽位,从第一目标槽位中获取目标路由信息。
例如,参照图7,图7为本发明实施例提供的路由代理单元中散列槽与缓存设备的关系示意图,散列槽中不同的槽位可以对应到不同的缓存设备,或者不同的槽位可以对应同一个缓存设备中不同的缓存块,例如槽位标识为0的槽位对应缓存设备A,槽位标识为2的槽位和槽位标识为4的槽位均对应缓存设备B,槽位标识为6的槽位对应缓存设备D,槽位标识为N-1的槽位对应缓存设备C,其中N为大于1的正整数,待处理数据X通过第三散列函数可以计算得到第四散列值,若该第四散列值为2,则第一目标槽位即为槽位标识为2的槽位,然后从槽位标识为2的槽位中获取的路由信息即为目标路由信息。
通过具有一定数量的槽位的散列槽来存储路由信息,相比于使用一致性散列分布的方式,每个槽位的数据量大小更加可控,数据处理的灵活性和安全性更高,并且缓存设备的分布可以更加均匀。
为了提高数据的安全性和可靠性,在将待处理数据写入缓存设备的缓存块中时,可以对待处理数据进行同步,具体地,可以向第一缓存设备发送同步指令,以使第一缓存设备从目标缓存设备中复制待处理数据,其中,第一缓存设备为目标缓存设备以外的缓存设备,即待处理数据写入目标缓存设备后可以通过同步指令同步至第一缓存设备中。
接着,可以获取目标缓存设备的运行状态信息,运行状态信息用于表征目标缓存设备运行正常或者运行异常,达到监控目标缓存设备的运行状态的目的。
当运行状态信息表征目标缓存设备运行异常,生成第一缓存设备对应的第一路由信息,将第一路由信息写入第一目标槽位,并将第一目标槽位中的目标路由信息删除。
例如,参照图8,图8为本发明实施例提供的待处理数据的同步示意图,目标缓存设备为缓存设备A,第一缓存设备为缓存设备A1,待处理数据X写入至缓存设备A中以后,缓存设备A1会接收到管理单元发送的同步指令,缓存设备A1会从缓存设备A中复制待处理数据,当后续缓存设备A出现故障时,路由代理单元会将槽位标识为0的槽位中缓存设备A的路由信息删除,然后管理单元生成缓存设备A1的路由信息并同步至服务发现单元,服务发现单元将缓存设备A1的路由信息下发至路由代理单元,路由代理单元将缓存设备A1的路由信息写入槽位标识为0的槽位,后续需要查询待处理数据X的时候可以根据对应的路由信息访问缓存设备A1。可以理解,除了缓存设备A1以外,也可以设置缓存设备A2,即同步待处理数据X的缓存设备可以是多台,从而进一步提高待处理数据X写入的稳定性。
可见,通过同步指令将待处理数据同步至目标缓存设备以外的第一缓存设备,当目标缓存设备出现故障时,可以从第一缓存设备中获取待处理数据,从而可以降低待处理数据丢失所带来的影响,有利于提高数据处理的可靠性与稳定性。
进一步,向第一缓存设备发送同步指令时,可以确定待处理数据对应的业务类型,根据业务类型确定待处理数据的同步方式,根据同步方式生成同步指令,将同步指令发送至第一缓存设备。例如,当待处理数据为银行数据这类对数据一致性较高的数据时,同步方式可以是强同步,当待处理数据为游戏数据这种泛娱乐类的数据时,同步方式可以是异步同步。
可见,通过待处理数据的业务类型来确定同步方式,可以使得同步操作更加合理化,进一步提高待处理数据同步的稳定性。
在一种可能的实现方式中,某个缓存设备中的数据可能需要迁移至新的缓存设备中,例如当某个缓存设备剩余的存储空间不多需要扩容时,在一种可能的实现方式中,在进行数据迁移时,可以对第二路由信息进行锁定处理,向第二缓存设备发送数据迁移指令,以使第二缓存设备将待迁移数据迁移至第三缓存设备,当待迁移数据迁移至第三缓存设备之后,生成第三路由信息,确定第二路由信息在散列槽中对应的第二目标槽位,将第二目标槽位中的第二路由信息删除,将第三路由信息写入第二目标槽位。
其中,第二路由信息用于确定待迁移数据的写入路径,待迁移数据存储于第二缓存设备中,第二缓存设备为多台缓存设备中的其中一台缓存设备;第三路由信息用于确定待迁移数据迁移后的写入路径。
例如,参照图9,图9为本发明实施例提供的数据迁移示意图,第二缓存设备为缓存设备E,第三缓存设备为缓存设备F,第二路由信息为缓存设备E的路由信息,第二目标槽位为散列槽中槽位标识为3的槽位,第三路由信息为缓存设备F的路由信息,待迁移数据为缓存设备E中的数据,管理单元先向缓存设备F发送准备迁移指令,缓存设备F向管理单元回复就绪消息,然后,管理单元控制路由代理单元将第二路由信息进行锁定处理,接着,管理单元向缓存设备E发送数据迁移指令,缓存设备E以缓存块作为基准将待迁移数据迁移至缓存设备F,待迁移数据迁移至缓存设备F后,缓存设备F对数据完整性进行校验,缓存设备E通知管理单元数据迁移完成,管理单元生成缓存设备F的路由信息同步至服务发现单元,服务发现单元将缓存设备F的路由信息下发至路由代理单元,路由代理单元将缓存设备F的路由信息写入槽位标识为3的槽位,并将槽位标识为3的槽位中缓存设备E的路由信息删除。
另外,当待迁移数据迁移至缓存设备F后,管理单元可以向路由代理单元发送启用指令,以使路由代理单元启用缓存设备F的路由信息。
可以理解,当不同的槽位对应同一个缓存设备中不同的缓存块时,可以仅针对缓存设备中某个缓存块的数据进行迁移。
上述数据迁移方式与散列槽进行了结合,可以快速灵活地对待迁移数据进行迁移,提高了数据迁移的效率。
另外,基于图1所示的实施环境,参照图10,以数据剔除处理为例,本发明实施例还提供了一种数据处理方法,示例性地应用于图1所示的服务器102中,该数据处理方法包括但不限于以下步骤1001至步骤1005。
步骤1001:获取待处理数据;
步骤1002:在共享内存区中确定目标缓存块,目标缓存块中设置有多个形成序列化结构的缓存单元,每个缓存单元配置有对应的位置标识;
步骤1003:确定待处理数据在目标缓存块中对应的第一游标和第二游标;
步骤1004:根据位置标识和第一游标的匹配关系从多个缓存单元中确定第一缓存单元,根据位置标识和第二游标的匹配关系从多个缓存单元中确定第二缓存单元;
其中,步骤1001与步骤1004的原理前面已经详细描述,在此不再赘述。
步骤1005:从第一缓存单元中获取第一参考数据,从第二缓存单元中获取第二参考数据,将待处理数据与第一参考数据、第二参考数据进行比对,当待处理数据与第一参考数据、第二参考数据中的任意一个相匹配,剔除待处理数据。
其中,步骤1005中,第一参考数据为存储于第一缓存单元中的数据,例如可以是通过上述步骤201至步骤205写入至第一缓存单元的数据,第二参考数据同理。确定与待处理数据对应的第一缓存单元和第二缓存单元后,可以从第一缓存单元和第二缓存单元分别获取第一参考数据和第二参考数据,当第一参考数据和第二参考数据中的任意一个与待处理数据相匹配,表明该待处理数据已经进行过存储,此时可以剔除待处理数据;而当第一参考数据和第二参考数据均与待处理数据不匹配时,可以执行上述实施例中的数据写入流程写入该待处理数据。
其中,上述剔除待处理数据可以应用于内容推荐场景,具体地,第一参考数据和第二参考数据可以是用户浏览过的内容,待处理数据可以是待推荐内容,当第一参考数据和第二参考数据中的任意一个与待处理数据匹配时,表明该用户已经浏览过待推荐内容,此时可以将待处理数据剔除掉,即用户不再接收到该待推荐内容,从而提升用户体验,提高业务运营的合理性。
又例如,上述剔除待处理数据可以应用于游戏内的对话场景,具体地,第一参考数据和第二参考数据可以是异常文本,待处理数据可以是用户待发送的聊天文本,当第一参考数据和第二参考数据中的任意一个与待处理数据匹配时,表明该用户的聊天文本出现异常,此时可以将待处理数据剔除掉,即游戏内不再显示该待发送的聊天文本,从而提升用户体验,提高业务运营的合理性。
类似地,上述步骤1001至步骤1005基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,通过多个形成序列化结构的缓存单元来进行数据处理,可以减少数据的编码和解码操作,有利于提高数据处理效率。
参照图11,图11为本发明实施例提供的数据处理的一个实际例子的流程示意图,具体地,需要存储用户在某个游戏对局的结果数据时,将该结果数据转化为对应的指纹数据,调用写入接口,通过散列函数确定该指纹数据在散列槽中对应槽位标识为3的槽位,从槽位标识为3的槽位中获取路由信息,该路由信息指向缓存设备A的缓存块3,通过散列函数确定该指纹数据在缓存块3中对应游标2和游标6,其中游标2对应的缓存单元中已写入数据,而游标6对应的缓存单元处于空闲状态,将该指纹数据写入游标6对应的缓存单元中。
参照图12,图12为本发明实施例提供的数据处理的另一个实际例子的流程示意图,需要向用户推送推荐内容时,将该推荐内容转化为对应的指纹数据,调用查询接口,通过散列函数确定该指纹数据在散列槽中对应槽位标识为5的槽位,从槽位标识为5的槽位中获取路由信息,该路由信息指向缓存设备B的缓存块5,通过散列函数确定该指纹数据在缓存块5中对应游标3和游标7,获取游标3对应的缓存单元中的数据以及游标7对应的缓存单元中的数据,将上述两个数据分别与该指纹数据进行比对,确定游标7对应的缓存单元中的数据与该指纹数据相匹配,表明该指纹数据对应的推荐内容已经向用户推送过,此时可以将该指纹数据剔除。
其中,对于图11和图12所示的例子来说,缓存单元通过环形链表的形式连接,因此可以定期自动对历史数据进行删除,数据安全性高。
可以理解的是,虽然上述各个流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本实施例中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时间执行完成,而是可以在不同的时间执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
参照图13,本发明实施例还提供了一种数据处理装置1300,包括:
第一数据获取模块1301,用于获取待处理数据;
第一缓存块确定模块1302,用于在共享内存区中确定目标缓存块,目标缓存块中设置有多个形成序列化结构的缓存单元,每个缓存单元配置有对应的位置标识;
第一游标确定模块1303,用于确定待处理数据在目标缓存块中对应的第一游标和第二游标;
第一缓存单元确定模块1304,用于根据位置标识和第一游标的匹配关系从多个缓存单元中确定第一缓存单元,根据位置标识和第二游标的匹配关系从多个缓存单元中确定第二缓存单元;
数据写入模块1305,用于确定第一缓存单元和第二缓存单元的存储空闲状态,根据存储空闲状态从第一缓存单元和第二缓存单元中确定目标缓存单元,将待处理数据写入目标缓存单元中。
进一步,共享内存区中设置有多个相互隔离的缓存区,每个缓存区配置有对应的区域标识,上述第一缓存块确定模块1302具体用于:
确定待处理数据对应的业务类型;
根据业务类型和区域标识的匹配关系从多个缓存区中确定目标缓存区;
在目标缓存区中确定目标缓存块。
进一步,共享内存区中设置有多个缓存块,上述第一缓存块确定模块1302具体用于:
按照预设顺序依次确定多个缓存块中每个缓存块剩余的存储空间;
将当前确定的缓存块作为候选缓存块,若候选缓存块剩余的存储空间大于或者等于第一阈值,将候选缓存块作为目标缓存块。
进一步,多个缓存块依次连接成环形链表,上述数据处理装置1300还包括数据删除模块1306,数据删除模块1306具体用于:
从环形链表中确定作为首节点的第一缓存块和作为尾节点的第二缓存块;
确定第二缓存块剩余的存储空间;
当第二缓存块剩余的存储空间小于或者等于第二阈值,删除第一缓存块中存储的数据。
进一步,上述第一游标确定模块1303具体用于:
确定第一散列函数和第二散列函数;
根据第一散列函数计算待处理数据对应的第一散列值,根据第二散列函数计算待处理数据对应的第二散列值;
将第一散列值和第二散列值进行异或操作,得到第三散列值;
将第一散列值作为待处理数据在目标缓存块中对应的第一游标,将第三散列值作为待处理数据在目标缓存块中对应的第二游标。
进一步,共享内存区的数量为多个,每个共享内存区被配置于不同的缓存设备;
上述数据处理装置还包括路由信息获取模块1307,上述路由信息获取模块1307具体用于:
获取目标路由信息,目标路由信息用于确定待处理数据的写入路径;
上述第一缓存块确定模块1302具体用于:
根据目标路由信息从多台缓存设备中确定目标缓存设备,访问目标缓存设备,从目标缓存设备的共享内存区中确定目标缓存块。
进一步,上述路由信息获取模块1307具体用于:
确定第三散列函数,根据第三散列函数计算待处理数据对应的第四散列值;
获取散列槽,散列槽包括多个用于存储路由信息的槽位,每个槽位配置有对应的槽位标识;
根据第四散列值与槽位标识的匹配关系从多个槽位中确定第一目标槽位,从第一目标槽位中获取目标路由信息。
进一步,数据处理装置还包括同步模块1308,上述同步模块1308具体用于:
向第一缓存设备发送同步指令,以使第一缓存设备从目标缓存设备中复制待处理数据,第一缓存设备为目标缓存设备以外的缓存设备;
获取目标缓存设备的运行状态信息,运行状态信息用于表征目标缓存设备运行正常或者运行异常;
当运行状态信息表征目标缓存设备运行异常,生成第一缓存设备对应的第一路由信息,将第一路由信息写入第一目标槽位,并将第一目标槽位中的目标路由信息删除。
进一步,上述同步模块1308具体用于:
确定待处理数据对应的业务类型;
根据业务类型确定待处理数据的同步方式;
根据同步方式生成同步指令,将同步指令发送至第一缓存设备。
进一步,数据处理装置还包括迁移模块1309,上述迁移模块1309具体用于:
对第二路由信息进行锁定处理,第二路由信息用于确定待迁移数据的写入路径,待迁移数据存储于第二缓存设备中,第二缓存设备为多台缓存设备中的其中一台缓存设备;
向第二缓存设备发送数据迁移指令,以使第二缓存设备将待迁移数据迁移至第三缓存设备;
当待迁移数据迁移至第三缓存设备之后,生成第三路由信息,第三路由信息用于确定待迁移数据迁移后的写入路径;
确定第二路由信息在散列槽中对应的第二目标槽位,将第二目标槽位中的第二路由信息删除,将第三路由信息写入第二目标槽位。
图13所示的数据处理装置与图2所示的数据处理方法基于相同的发明构思,因此该数据处理装置基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,通过多个形成序列化结构的缓存单元来进行数据处理,利用游标快速地定位数据的存储位置,从而减少数据的编码和解码操作,有利于提高数据处理效率,并且,根据缓存单元的存储空闲状态来进行数据的写入,可以提高数据写入的成功率以及缓存单元的空间利用率。
参照图14,本发明实施例还提供了一种数据处理装置1400,包括:
第二数据获取模块1401,用于获取待处理数据;
第二缓存块确定模块1402,用于在共享内存区中确定目标缓存块,目标缓存块中设置有多个形成序列化结构的缓存单元,每个缓存单元配置有对应的位置标识;
第二游标确定模块1403,用于确定待处理数据在目标缓存块中对应的第一游标和第二游标;
第二缓存单元确定模块1404,用于根据位置标识和第一游标的匹配关系从多个缓存单元中确定第一缓存单元,根据位置标识和第二游标的匹配关系从多个缓存单元中确定第二缓存单元;
数据剔除模块1405,用于从第一缓存单元中获取第一参考数据,从第二缓存单元中获取第二参考数据,将待处理数据与第一参考数据、第二参考数据进行比对,当待处理数据与第一参考数据、第二参考数据中的任意一个相匹配,剔除待处理数据。
图14所示的数据处理装置与图10所示的数据处理方法基于相同的发明构思,因此该数据处理装置基于共享内存能够进行进程级别的数据处理,有利于提高数据处理效率,通过多个形成序列化结构的缓存单元来进行数据处理,利用游标快速地定位数据的存储位置,从而减少数据的编码和解码操作,有利于提高数据处理效率。
本发明实施例提供的用于执行上述数据处理方法的电子设备可以是服务器,参照图15,图15为本发明实施例提供的服务器的部分的结构示意图,服务器1500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central ProcessingUnits,简称CPU)1522(例如,一个或一个以上处理器)和存储器1532,一个或一个以上存储应用程序1542或数据1544的存储介质1530(例如一个或一个以上海量存储装置)。其中,存储器1532和存储介质1530可以是短暂存储或持久存储。存储在存储介质1530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器1500中的一系列指令操作。更进一步地,中央处理器1522可以设置为与存储介质1530通信,在服务器1500上执行存储介质1530中的一系列指令操作。
服务器1500还可以包括一个或一个以上电源1526,一个或一个以上有线或无线网络接口1550,一个或一个以上输入输出接口1558,和/或,一个或一个以上操作系统1541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
服务器1500中的处理器可以用于执行数据处理方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行前述各个实施例的数据处理方法。
本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行实现上述的数据处理方法。
本发明的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。
应当理解,在本发明中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
应了解,在本发明实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
还应了解,本发明实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。
以上是对本发明的较佳实施进行了具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的共享条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本发明权利要求所限定的范围内。

Claims (15)

1.一种数据处理方法,其特征在于,包括:
获取待处理数据;
在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
确定所述第一缓存单元和所述第二缓存单元的存储空闲状态,根据所述存储空闲状态从所述第一缓存单元和所述第二缓存单元中确定目标缓存单元,将所述待处理数据写入所述目标缓存单元中。
2.根据权利要求1所述的数据处理方法,其特征在于,所述共享内存区中设置有多个相互隔离的缓存区,每个所述缓存区配置有对应的区域标识,所述在共享内存区中确定目标缓存块,包括:
确定所述待处理数据对应的业务类型;
根据所述业务类型和所述区域标识的匹配关系从多个所述缓存区中确定目标缓存区;
在所述目标缓存区中确定目标缓存块。
3.根据权利要求1所述的数据处理方法,其特征在于,所述共享内存区中设置有多个缓存块,所述在共享内存区中确定目标缓存块,包括:
按照预设顺序依次确定多个所述缓存块中每个所述缓存块剩余的存储空间;
将当前确定的所述缓存块作为候选缓存块,若所述候选缓存块剩余的存储空间大于或者等于第一阈值,将所述候选缓存块作为目标缓存块。
4.根据权利要求3所述的数据处理方法,其特征在于,多个所述缓存块依次连接成环形链表,所述数据处理方法还包括:
从所述环形链表中确定作为首节点的第一缓存块和作为尾节点的第二缓存块;
确定所述第二缓存块剩余的存储空间;
当所述第二缓存块剩余的存储空间小于或者等于第二阈值,删除所述第一缓存块中存储的数据。
5.根据权利要求1所述的数据处理方法,其特征在于,所述确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标,包括:
确定第一散列函数和第二散列函数;
根据所述第一散列函数计算所述待处理数据对应的第一散列值,根据所述第二散列函数计算所述待处理数据对应的第二散列值;
将所述第一散列值和所述第二散列值进行异或操作,得到第三散列值;
将所述第一散列值作为所述待处理数据在所述目标缓存块中对应的第一游标,将所述第三散列值作为所述待处理数据在所述目标缓存块中对应的第二游标。
6.根据权利要求1所述的数据处理方法,其特征在于,所述共享内存区的数量为多个,每个所述共享内存区被配置于不同的缓存设备;
所述在共享内存区中确定目标缓存块之前,所述数据处理方法还包括:
获取目标路由信息,所述目标路由信息用于确定所述待处理数据的写入路径;
所述在共享内存区中确定目标缓存块,包括:
根据所述目标路由信息从多台所述缓存设备中确定目标缓存设备,访问所述目标缓存设备,从所述目标缓存设备的共享内存区中确定目标缓存块。
7.根据权利要求6所述的数据处理方法,其特征在于,所述获取目标路由信息,包括:
确定第三散列函数,根据所述第三散列函数计算所述待处理数据对应的第四散列值;
获取散列槽,所述散列槽包括多个用于存储路由信息的槽位,每个所述槽位配置有对应的槽位标识;
根据所述第四散列值与所述槽位标识的匹配关系从多个所述槽位中确定第一目标槽位,从所述第一目标槽位中获取目标路由信息。
8.根据权利要求7所述的数据处理方法,其特征在于,所述数据处理方法还包括:
向第一缓存设备发送同步指令,以使所述第一缓存设备从所述目标缓存设备中复制所述待处理数据,所述第一缓存设备为所述目标缓存设备以外的缓存设备;
获取所述目标缓存设备的运行状态信息,所述运行状态信息用于表征所述目标缓存设备运行正常或者运行异常;
当所述运行状态信息表征所述目标缓存设备运行异常,生成所述第一缓存设备对应的第一路由信息,将所述第一路由信息写入所述第一目标槽位,并将所述第一目标槽位中的所述目标路由信息删除。
9.根据权利要求7或8所述的数据处理方法,其特征在于,所述数据处理方法还包括:
对第二路由信息进行锁定处理,所述第二路由信息用于确定待迁移数据的写入路径,所述待迁移数据存储于第二缓存设备中,所述第二缓存设备为多台所述缓存设备中的其中一台缓存设备;
向所述第二缓存设备发送数据迁移指令,以使所述第二缓存设备将所述待迁移数据迁移至第三缓存设备;
当所述待迁移数据迁移至所述第三缓存设备之后,生成第三路由信息,所述第三路由信息用于确定所述待迁移数据迁移后的写入路径;
确定所述第二路由信息在所述散列槽中对应的第二目标槽位,将所述第二目标槽位中的所述第二路由信息删除,将所述第三路由信息写入所述第二目标槽位。
10.一种数据处理方法,其特征在于,包括:
获取待处理数据;
在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
从所述第一缓存单元中获取第一参考数据,从所述第二缓存单元中获取第二参考数据,将所述待处理数据与第一参考数据、所述第二参考数据进行比对,当所述待处理数据与所述第一参考数据、所述第二参考数据中的任意一个相匹配,剔除所述待处理数据。
11.一种数据处理装置,其特征在于,包括:
第一数据获取模块,用于获取待处理数据;
第一缓存块确定模块,用于在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
第一游标确定模块,用于确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
第一缓存单元确定模块,用于根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
数据写入模块,用于确定所述第一缓存单元和所述第二缓存单元的存储空闲状态,根据所述存储空闲状态从所述第一缓存单元和所述第二缓存单元中确定目标缓存单元,将所述待处理数据写入所述目标缓存单元中。
12.一种数据处理装置,其特征在于,包括:
第二数据获取模块,用于获取待处理数据;
第二缓存块确定模块,用于在共享内存区中确定目标缓存块,所述目标缓存块中设置有多个形成序列化结构的缓存单元,每个所述缓存单元配置有对应的位置标识;
第二游标确定模块,用于确定所述待处理数据在所述目标缓存块中对应的第一游标和第二游标;
第二缓存单元确定模块,用于根据所述位置标识和所述第一游标的匹配关系从多个所述缓存单元中确定第一缓存单元,根据所述位置标识和所述第二游标的匹配关系从多个所述缓存单元中确定第二缓存单元;
数据剔除模块,用于从所述第一缓存单元中获取第一参考数据,从所述第二缓存单元中获取第二参考数据,将所述待处理数据与第一参考数据、所述第二参考数据进行比对,当所述待处理数据与所述第一参考数据、所述第二参考数据中的任意一个相匹配,剔除所述待处理数据。
13.一种电子设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10任意一项所述的数据处理方法。
14.一种计算机可读存储介质,所述存储介质存储有程序,其特征在于,所述程序被处理器执行时实现权利要求1至10任意一项所述的数据处理方法。
15.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任意一项所述的数据处理方法。
CN202111057423.3A 2021-09-09 2021-09-09 数据处理方法、装置、电子设备、存储介质及程序产品 Active CN113687964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111057423.3A CN113687964B (zh) 2021-09-09 2021-09-09 数据处理方法、装置、电子设备、存储介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111057423.3A CN113687964B (zh) 2021-09-09 2021-09-09 数据处理方法、装置、电子设备、存储介质及程序产品

Publications (2)

Publication Number Publication Date
CN113687964A true CN113687964A (zh) 2021-11-23
CN113687964B CN113687964B (zh) 2024-02-02

Family

ID=78586195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111057423.3A Active CN113687964B (zh) 2021-09-09 2021-09-09 数据处理方法、装置、电子设备、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN113687964B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114205654A (zh) * 2021-12-15 2022-03-18 中国电信股份有限公司 数据处理系统、方法、装置、计算机可读存储介质及设备
CN116881026A (zh) * 2023-09-06 2023-10-13 成都谐盈科技有限公司 一种基于corba中间件的共享内存传输系统及方法
WO2024041165A1 (zh) * 2022-08-23 2024-02-29 深圳市中兴微电子技术有限公司 上报信息存储方法、电子设备、计算机可读介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122885A (zh) * 2007-09-11 2008-02-13 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
US20100228914A1 (en) * 2007-12-03 2010-09-09 Tencent Technology (Shenzhen) Company, Ltd. Data caching system and method for implementing large capacity cache
CN102436421A (zh) * 2010-09-29 2012-05-02 腾讯科技(深圳)有限公司 缓存数据的方法
US20170103068A1 (en) * 2015-10-08 2017-04-13 International Business Machines Corporation Data deduplication using a small hash table
US20200133869A1 (en) * 2018-10-31 2020-04-30 EMC IP Holding Company LLC Method, electronic device and computer program product for data storage
CN111930740A (zh) * 2020-06-28 2020-11-13 腾讯科技(成都)有限公司 一种游戏数据的处理方法、装置、服务器及存储介质
CN112702446A (zh) * 2020-12-16 2021-04-23 互联网域名系统北京市工程研究中心有限公司 Dns缓存在边缘网络中的分布式存储系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101122885A (zh) * 2007-09-11 2008-02-13 腾讯科技(深圳)有限公司 一种数据缓存处理方法、系统及数据缓存装置
US20100228914A1 (en) * 2007-12-03 2010-09-09 Tencent Technology (Shenzhen) Company, Ltd. Data caching system and method for implementing large capacity cache
CN102436421A (zh) * 2010-09-29 2012-05-02 腾讯科技(深圳)有限公司 缓存数据的方法
US20170103068A1 (en) * 2015-10-08 2017-04-13 International Business Machines Corporation Data deduplication using a small hash table
US20200133869A1 (en) * 2018-10-31 2020-04-30 EMC IP Holding Company LLC Method, electronic device and computer program product for data storage
CN111930740A (zh) * 2020-06-28 2020-11-13 腾讯科技(成都)有限公司 一种游戏数据的处理方法、装置、服务器及存储介质
CN112702446A (zh) * 2020-12-16 2021-04-23 互联网域名系统北京市工程研究中心有限公司 Dns缓存在边缘网络中的分布式存储系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114205654A (zh) * 2021-12-15 2022-03-18 中国电信股份有限公司 数据处理系统、方法、装置、计算机可读存储介质及设备
WO2024041165A1 (zh) * 2022-08-23 2024-02-29 深圳市中兴微电子技术有限公司 上报信息存储方法、电子设备、计算机可读介质
CN116881026A (zh) * 2023-09-06 2023-10-13 成都谐盈科技有限公司 一种基于corba中间件的共享内存传输系统及方法
CN116881026B (zh) * 2023-09-06 2023-11-21 成都谐盈科技有限公司 一种基于corba中间件的共享内存传输系统及方法

Also Published As

Publication number Publication date
CN113687964B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
Lakshman et al. Cassandra: a decentralized structured storage system
CN113687964B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
EP3376393B1 (en) Data storage method and apparatus
CN113168652B (zh) 区块链交易处理系统和方法
CN109857710A (zh) 文件存储方法及终端设备
Jeong et al. Anomaly teletraffic intrusion detection systems on hadoop-based platforms: A survey of some problems and solutions
CN110784498B (zh) 一种个性化数据容灾方法及装置
CN105827678B (zh) 一种基于高可用架构下的通信方法和节点
Elagib et al. Big data analysis solutions using MapReduce framework
WO2021027331A1 (zh) 基于图数据的全量关系计算方法、装置、设备及存储介质
CN113454597A (zh) 区块链交易处理系统和方法
CN113254424B (zh) 数据服务迁移方法、装置及设备
Hendawi et al. Distributed NoSQL data stores: Performance analysis and a case study
EP3349416B1 (en) Relationship chain processing method and system, and storage medium
CN110362590A (zh) 数据管理方法、装置、系统、电子设备及计算机可读介质
CN111209263A (zh) 数据存储方法、装置、设备及存储介质
CN116842012A (zh) 一种Redis集群的分片存储方法、装置、设备及存储介质
Zhang et al. HDCache: a distributed cache system for real-time cloud services
US20040103138A1 (en) Multi-leader distributed system
US10949322B2 (en) Collecting performance metrics of a device
CN114817344A (zh) 一种数据获取方法和装置
Shin et al. Parqua: Online reconfigurations in virtual ring-based nosql systems
CN115398397A (zh) 区块链交易处理系统和方法
Nakagawa et al. Jobcast—Parallel and distributed processing framework Data processing on a cloud style KVS database
Zhou Fuzzy rules based efficient event-driven simulation of blockchain-based applications

Legal Events

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