CN117176743B - 数据处理方法、装置、设备、可读存储介质及程序产品 - Google Patents
数据处理方法、装置、设备、可读存储介质及程序产品 Download PDFInfo
- Publication number
- CN117176743B CN117176743B CN202311456834.9A CN202311456834A CN117176743B CN 117176743 B CN117176743 B CN 117176743B CN 202311456834 A CN202311456834 A CN 202311456834A CN 117176743 B CN117176743 B CN 117176743B
- Authority
- CN
- China
- Prior art keywords
- record
- queue
- synchronous
- service cluster
- user client
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 24
- 238000003672 processing method Methods 0.000 title claims abstract description 19
- 230000001360 synchronised effect Effects 0.000 claims abstract description 193
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims description 84
- 238000004590 computer program Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 13
- 230000006870 function Effects 0.000 claims description 11
- 238000012216 screening Methods 0.000 claims description 9
- 238000004140 cleaning Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 22
- 238000009826 distribution Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 238000013473 artificial intelligence Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 5
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了数据处理方法、装置、设备、可读存储介质及程序产品,涉及云技术、地图等领域,应用场景包括但不限于数据同步场景。该方法由同步客户端执行,包括:通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种数据处理方法、装置、设备、可读存储介质及程序产品。
背景技术
现有技术中,Ceph是分布式的存储系统,Ceph通过Cephfs文件系统提供分布式文件系统服务,允许多个用户同时读写,并保证每个用户看到的数据是一致性的。数据一致性的实现需要进行业务改造;业务改造包括:用户客户端中业务发起一次写请求到主cephfs集群,业务同时发起一次写请求到备用cephfs集群;如此,实现对主cephfs集群和备用cephfs集群的双写,但是,对主cephfs集群和备用cephfs集群的双写会导致请求延时的增加,业务改造也增加了数据同步的成本,从而导致主Cephfs集群和备用Cephfs集群之间数据同步的效率较低。
发明内容
本申请针对现有的方式的缺点,提出一种数据处理方法、装置、设备、计算机可读存储介质及计算机程序产品,用于解决如何提高主Cephfs集群和备用Cephfs集群之间数据同步的效率的问题。
第一方面,本申请提供了一种数据处理方法,由同步客户端执行,包括:
通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;
基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;
基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
在一个实施例中,通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,包括:
从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列,用户客户端集合中一个用户客户端对应对象队列中一个对象,用户客户端集合中每一个用户客户端用于向主服务集群的文件系统发送操作请求,以使文件系统进行相应的操作,同步元数据池用于存储每一个用户客户端向同步元数据池写入的记录;
基于对象队列,通过筛选处理,确定筛选后的对象队列,筛选后的对象队列对应多个用户客户端,筛选后的对象队列中每个对象都包括至少一个记录。
在一个实施例中,基于对象队列,通过筛选处理,确定筛选后的对象队列,包括:
通过预设线程池中任一线程,确定对象队列中任一对象是否存在记录;
若确定任一对象中存在记录,则将任一对象中的记录设置到筛选后的对象队列中。
在一个实施例中,基于各对象包括的至少一个记录,确定同步记录队列,包括:
基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列。
在一个实施例中,各对象中每个记录对应的键值对的键用于表征各对象中每个记录对应的时间戳和各对象中每个记录对应的数据所在的父目录路径名;基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列,包括:
基于各记录对应的时间戳、各记录对应的数据所在的父目录路径名中至少一项,以及预设排序规则,将各记录进行排序,并将排序后的各记录进行分发处理,得到同步记录队列;
其中,各对象中每个记录对应的时间戳用于表征每个记录对应的用户客户端向主服务集群发送操作请求的时间点,键值对的值用于表征各对象中每个记录对应的数据所在的父目录路径名、各对象中每个记录对应的数据的索引节点和操作请求的类型。
在一个实施例中,将排序后的各记录进行分发处理,得到同步记录队列,包括:
基于排序后的各记录,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程,并将与预设同步线程池中任一同步线程相匹配的多个记录构成一个同步记录队列,排序后的各记录中包括多个记录。
在一个实施例中,排序后的各记录包括各记录对应的数据的名称和各记录对应的数据所在的父目录路径名;基于排序后的各记录,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程,包括:
通过哈希函数,确定各记录对应的数据的名称和各记录对应的数据所在的父目录路径名中任一项的哈希值;
基于任一项的哈希值,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程。
在一个实施例中,预设同步线程池中包括多个同步线程,多个同步线程中每一个同步线程对应一个同步记录队列,基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中,包括:
基于每一个同步线程对应的一个同步记录队列中每个记录,通过预设拷贝工具,将一个同步记录队列中每个记录对应的数据从主服务集群的文件系统中读出,并将读出的每个记录对应的数据写入到备用服务集群的文件系统中。
在一个实施例中,在将读出的每个记录对应的数据写入到备用服务集群中之后,还包括:
若将读出的每个记录对应的数据写入到备用服务集群中,则将每个记录设置到记录完成队列中,并依次将每个记录进行记录清理。
在一个实施例中,每个记录对应的数据包括文件、文件目录中的至少一项;操作请求包括创建文件请求、删除文件请求、创建目录请求、写文件请求中任一项。
第二方面,本申请提供了一种数据处理装置,应用于同步客户端,包括:
第一处理模块,用于通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;
第二处理模块,用于基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;
第三处理模块,用于基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
第三方面,本申请提供了一种电子设备,包括:处理器、存储器和总线;
总线,用于连接处理器和存储器;
存储器,用于存储操作指令;
处理器,用于通过调用操作指令,执行本申请第一方面的数据处理方法。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被用于执行本申请第一方面的数据处理方法。
第五方面,本申请提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现本申请第一方面中数据处理方法的步骤。
本申请实施例提供的技术方案,至少具有如下有益效果:
同步客户端通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;同步客户端基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;同步客户端基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中;如此,通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的数据处理系统的架构示意图;
图2为本申请实施例提供的一种数据处理方法的流程示意图;
图3为本申请实施例提供的数据处理的示意图;
图4为本申请实施例提供的数据处理的示意图;
图5为本申请实施例提供的数据处理的示意图;
图6为本申请实施例提供的数据处理的示意图;
图7为本申请实施例提供的数据处理的示意图;
图8为本申请实施例提供的数据处理的示意图;
图9为本申请实施例提供的针对每个记录的数据同步的流程示意图;
图10为本申请实施例提供的一种数据处理方法的流程示意图;
图11为本申请实施例提供的一种数据处理装置的结构示意图;
图12为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或 “耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“B”,或者实现为“A和B”。
可以理解的是,在本申请的具体实施方式中,涉及到数据处理相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例是数据处理系统提供的一种数据处理方法,该数据处理方法涉及云技术、地图等领域。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
智能交通系统(Intelligent Traffic System,ITS)又称智能运输系统(Intelligent Transportation System),是将先进的科学技术(信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输系统。
为了更好的理解及说明本申请实施例的方案,下面对本申请实施例中所涉及到的一些技术用语进行简单说明。
Ceph:Ceph是开源的分布式存储系统,Ceph能同时提供对象、文件和块存储服务。
Cephfs:Ceph提供的文件存储服务,Cephfs为一种文件系统。
MDS:MDS是元数据服务,MDS是Ceph提供文件服务时需要的元数据服务器,用来存储文件系统的目录树结构。
Ceph-fuse:Ceph的客户端中Ceph-fuse可以通过fuse内核模块提供用户态访问。
Rados:Rados为Ceph存储数据的基石,Rados是一个基于对象的存储引擎。
本申请实施例提供的方案涉及云技术,下面以具体的实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
为了更好的理解本申请实施例提供的方案,下面结合具体的一个应用场景对该方案进行说明。
在一个实施例中,图1中示出了本申请实施例所适用的一种数据处理系统的架构示意图,可以理解的是,本申请实施例所提供的数据处理方法可以适用于但不限于应用于如图1所示的应用场景中。
本示例中,如图1所示,该示例中的数据处理系统的架构可以包括但不限于用户客户端、同步客户端、主服务集群、备用服务集群;其中,用户客户端中包括业务和Ceph-fuse,同步客户端中包括同步服务和Ceph-fuse,主服务集群例如主cephfs集群,主服务集群中包括MDS和Rados,备用服务集群例如备用cephfs集群,备用服务集群中包括MDS和Rados。用户客户端、同步客户端、主服务集群和备用服务集群之间可以通过网络进行交互。
同步客户端通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;同步客户端基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;同步客户端基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。用户客户端向主服务集群发送的操作请求例如写请求或读请求。主服务集群对应一个服务器集群,备用服务集群对应另一个服务器集群,同步客户端和同步客户端分别在不同服务器上运行。
可理解,上述仅为一种示例,本实施例在此不作限定。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS(Infrastructure as a Service,基础设施即服务)层上可以部署PaaS(Platform as a Service,平台即服务)层,PaaS层之上再部署SaaS(Software as a Service,软件即服务)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
所谓人工智能云服务,一般也被称作是AIaaS(AI as a Service,中文为“AI即服务”)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。
上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、Wi-Fi及其他实现无线通信的网络。具体也可基于实际应用场景需求确定,在此不作限定。
参见图2,图2示出了本申请实施例提供的一种数据处理方法的流程示意图,其中,该方法可以由任一电子设备执行,如可以是服务器等;作为一可选实施方式,该方法可以由服务器执行,为了描述方便,在下文的一些可选实施例的描述中,将以服务器上运行的同步客户端作为该方法执行主体为例进行说明。如图2所示,本申请实施例提供的数据处理方法包括如下步骤:
S201,通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息。
具体地,例如,如图1所示,一个Ceph包括主服务集群和用户客户端,另一个Ceph包括备用服务集群,第三方为同步客户端;主服务集群例如主cephfs集群,主cephfs集群中包括MDS和Rados;备用服务集群例如备用cephfs集群,备用cephfs集群中包括MDS和Rados;同步客户端中包括同步服务和Ceph-fuse;用户客户端中包括业务和Ceph-fuse,业务例如图片网站的后台服务使用Ceph存储图片。例如,用户发送下载图片请求给用户客户端中业务,业务发送下载图片请求给Ceph-fuse。
对象(object)为Rados的基本存储单元,对象包括对象的名字、对象的omap等,对象的名字例如client.{global id},global id是一个客户端的唯一全局标识,即一个对象对应一个用户客户端,omap用于存储记录,omap中可以存储多个记录,记录以键值对(kv)的方式存入omap中,记录包括文件名、文件所在的父目录路径名、操作请求的类型等,操作请求的类型例如创建文件请求、删除文件请求、创建目录请求、写文件请求等,操作请求的相关信息例如文件名、文件所在的父目录路径名、操作请求的类型等。
S202,基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列。
具体地,预设排序规则例如,基于多个用户客户端向主服务集群的文件系统发送操作请求的时间进行排序;预设排序规则又例如,在多个用户客户端向主服务集群的文件系统发送操作请求的时间相同情况下,基于父目录路径名进行排序;其中,一个操作请求对应一个记录。
S203,基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
具体地,基于同步记录队列中每个记录,通过预设拷贝工具,将每个记录对应的数据从主服务集群的文件系统中读出,并将读出的每个记录对应的数据写入到备用服务集群的文件系统中;如此,基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
本申请实施例中,同步客户端通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;同步客户端基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;同步客户端基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中;如此,通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
在一个实施例中,通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,包括:
从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列,用户客户端集合中一个用户客户端对应对象队列中一个对象,用户客户端集合中每一个用户客户端用于向主服务集群的文件系统发送操作请求,以使文件系统进行相应的操作,同步元数据池用于存储每一个用户客户端向同步元数据池写入的记录;
基于对象队列,通过筛选处理,确定筛选后的对象队列,筛选后的对象队列对应多个用户客户端,筛选后的对象队列中每个对象都包括至少一个记录。
具体地,例如,如图3所示,用户客户端中业务发送操作请求给用户客户端中Ceph-fuse的请求接受模块,Ceph-fuse的请求接受模块将操作请求发送给Ceph-fuse的请求处理模块;Ceph-fuse的请求处理模块基于操作请求,生成操作请求对应的记录,并将记录加入到记录队列中;其中,一个操作请求对应一个记录,操作请求例如创建文件请求、删除文件请求、创建目录请求、写文件请求等;在请求处理模块将记录加入记录队列之后,进入文件处理流程,文件处理流程即请求处理模块通过objecter模块、mdsclient模块和主服务集群(主Cephfs集群)的Cephfs系统文件之间分别进行文件数据和元数据的通信交互,Cephfs系统文件包括fs_data池(数据池)和fs_metadata池(元数据池);例如,请求处理模块通过mdsclient模块向主服务集群的Cephfs系统文件对应的MDS发送创建文件请求,在MDS创建文件成功之后,MDS通过mdsclient模块向请求处理模块返回创建文件成功响应;用户客户端中Ceph-fuse通过Finisher线程从记录队列中取出记录,并将记录写入到主服务集群的Rados中的同步元数据池,写记录使用的Finisher线程为单独异步处理,如此,可以减少数据处理系统的性能损耗。
例如,如图4所示,主服务集群(主Cephfs集群)的Rados中同步元数据池包括对象的名字和对象的omap,对象的名字例如Client.{global id},global id是一个客户端的唯一全局标识,即一个对象对应一个用户客户端,omap用于存储记录,omap中可以存储多个记录,记录以键值对(kv)的方式存入omap中;例如,对象1的名字为Client.id1,对象1的omap中存储了记录1和记录2,对象2的名字为Client.id2,对象2的omap中存储了记录3和记录4,对象3的名字为Client.id3,对象3的omap中存储了记录5和记录6,对象1、对象2和对象3分别对应用户客户端1、用户客户端2和用户客户端3,用户客户端1、用户客户端2和用户客户端3分别将记录写入到对象1的omap、对象2的omap和对象3的omap中。
记录以键值对的方式存入omap中,其中,键值对中key(键)和value(值)如下所示:
(1)key是由记录对应的时间戳timestamp、记录对应的数据所在的父目录路径名dir_path等组成,key如下所示:
key={timestamp}+“./”+{dir_path}
其中,时间戳timestamp用于表征记录对应的用户客户端向主服务集群发送操作请求的时间点,记录对应的数据所在的父目录路径名dir_path例如记录对应的文件所在的父目录路径名。
(2)value是由记录对应的数据所在的父目录路径名dir_path、记录对应的数据的索引节点inode、操作请求的类型op_type等组成,value如下所示:
value={dir_path}+“.”+{inode}+“.”+{op_type}
其中,记录对应的数据所在的父目录路径名dir_path例如记录对应的文件所在的父目录路径名,索引节点inode为元数据信息,元数据信息例如文件或文件夹的元数据,操作请求的类型op_type例如创建文件请求、删除文件请求、创建目录请求、写文件请求等。
需要说明的是,将时间戳和父目录路径名作为key,是为了方便对多个记录进行排序,例如,基于多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)进行排序;又例如,在多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)相同情况下,基于父目录路径名进行排序。
例如,如图5所示,同步客户端中同步服务的列举客户端对象模块从主服务集群(主Cephfs集群)的同步元数据池中,获取用户客户端集合对应的对象队列,对象队列为客户端队列,该对象队列包括客户端集合中所有客户端对应的对象(object);基于对象队列,通过同步客户端中同步服务的获取对象记录模块进行筛选处理,将对象队列中不存在记录的对象筛除掉,得到筛选后的对象队列,筛选后的对象队列为过滤队列,筛选后的对象队列中每个对象都包括至少一个记录。
在一个实施例中,基于对象队列,通过筛选处理,确定筛选后的对象队列,包括:
通过预设线程池中任一线程,确定对象队列中任一对象是否存在记录;
若确定任一对象中存在记录,则将任一对象中的记录设置到筛选后的对象队列中。
具体地,例如,如图6所示,为了加快数据同步,同步客户端中同步服务的获取对象记录模块可以进行多线程操作,获取对象记录模块是为了获取对象队列(客户端队列)中的记录,各对象之间可以并发获取;使用线程池来加速,线程池中的每个线程从对象队列(客户端队列)中取出一个对象进行记录的拉取(例如线程池中线程1、线程2、线程3和线程4分别对不同的对象进行记录的拉取,即这4个线程可以同时对4个对象进行记录的拉取),若拉取的对象中存在记录,则将该对象加入筛选后的对象队列(过滤队列)中,表示该对象中存在记录需要同步,以便后续进行数据同步。
在一个实施例中,基于各对象包括的至少一个记录,确定同步记录队列,包括:
基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列。
具体地,例如,如图5所示,同步客户端中同步服务的收集排序分发模块,基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列(同步队列);同步客户端中同步服务的收集排序分发模块主要完成收集、排序、分发等功能;收集是指收集排序分发模块对所有对象的记录进行收集,即收集排序分发模块对所有对象的记录对应的键值对(kv对)进行收集;排序是指收集排序分发模块对所有收集的记录对应的键值对(kv对)按时间戳、目录中的至少一项进行排序;分发是指收集排序分发模块按照一定的规则将不相关的记录发送给同步客户端中同步服务的同步模块的多个线程进行并发处理,从而加快数据同步的速度。
预设排序规则例如,基于多个用户客户端向主服务集群的文件系统发送操作请求的时间进行排序;预设排序规则又例如,在多个用户客户端向主服务集群的文件系统发送操作请求的时间相同情况下,基于父目录路径名进行排序。例如,将时间戳和父目录路径名作为key,是为了方便对多个记录进行排序,例如,基于多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)进行排序;又例如,在多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)相同情况下,基于父目录路径名进行排序。
在一个实施例中,各对象中每个记录对应的键值对的键用于表征各对象中每个记录对应的时间戳和各对象中每个记录对应的数据所在的父目录路径名;基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列,包括:
基于各记录对应的时间戳、各记录对应的数据所在的父目录路径名中至少一项,以及预设排序规则,将各记录进行排序,并将排序后的各记录进行分发处理,得到同步记录队列;
其中,各对象中每个记录对应的时间戳用于表征每个记录对应的用户客户端向主服务集群发送操作请求的时间点,键值对的值用于表征各对象中每个记录对应的数据所在的父目录路径名、各对象中每个记录对应的数据的索引节点和操作请求的类型。
具体地,基于各记录对应的时间戳timestamp、各记录对应的数据所在的父目录路径名dir_path中至少一项,以及预设排序规则,将各记录进行排序,并将排序后的各记录进行分发处理,得到同步记录队列;记录以键值对的方式存入omap中,其中,键值对中key(键)和value(值)如下所示:
(1)key是由记录对应的时间戳timestamp、记录对应的数据所在的父目录路径名dir_path等组成,key如下所示:
key={timestamp}+“./”+{dir_path}
其中,时间戳timestamp用于表征记录对应的用户客户端向主服务集群发送操作请求的时间点,记录对应的数据所在的父目录路径名dir_path例如记录对应的文件所在的父目录路径名。
(2)value是由记录对应的数据所在的父目录路径名dir_path、记录对应的数据的索引节点inode、操作请求的类型op_type等组成,value如下所示:
value={dir_path}+“.”+{inode}+“.”+{op_type}
其中,记录对应的数据所在的父目录路径名dir_path例如记录对应的文件所在的父目录路径名,索引节点inode为元数据信息,元数据信息例如文件或文件夹的元数据,操作请求的类型op_type例如创建文件请求、删除文件请求、创建目录请求、写文件请求等。
需要说明的是,将时间戳和父目录路径名作为key,是为了方便对多个记录进行排序,例如,基于多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)进行排序;又例如,在多个用户客户端向主服务集群的文件系统发送操作请求的时间(时间戳)相同情况下,基于父目录路径名进行排序。
在一个实施例中,将排序后的各记录进行分发处理,得到同步记录队列,包括:
基于排序后的各记录,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程,并将与预设同步线程池中任一同步线程相匹配的多个记录构成一个同步记录队列,排序后的各记录中包括多个记录。
具体地,例如,如图7所示,在同步客户端中同步服务的收集排序分发模块收集排序完所有记录之后,收集排序分发模块发送记录给同步客户端中同步服务的同步模块,进行数据同步,根据记录中文件名或者目录名进行hash(哈希)并发同步,因为针对不同文件或目录的操作不相互影响;同步线程池中包括多个同步线程,多个同步线程包括同步线程1、同步线程2、同步线程3等;多个同步线程中每个同步线程绑定一个hash队列(同步记录队列),即一个hash队列绑定一个同步线程;收集排序分发模块将各记录通过hash文件名或者目录名,将各记录分发到不同的hash队列中,如此,可以保证针对同一文件或者目录的记录会按时间先后顺序在同一个hash队列中,而与hash队列绑定的同步线程会按照先进先出的顺序从hash队列中取出记录进行数据同步。
例如,收集排序分发模块通过哈希函数,进行hash计算,将一个记录匹配到预设同步线程池中的同步线程1,同步线程1通过rsync工具实现,同步线程1的过程包括将主Cephfs集群的文件系统中文件1进行读取,再将读取的文件1写入到备用Cephfs集群的文件系统中。
在一个实施例中,排序后的各记录包括各记录对应的数据的名称和各记录对应的数据所在的父目录路径名;基于排序后的各记录,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程,包括:
通过哈希函数,确定各记录对应的数据的名称和各记录对应的数据所在的父目录路径名中任一项的哈希值;
基于任一项的哈希值,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程。
具体地,例如,收集排序分发模块通过哈希函数,进行hash计算,将一个记录匹配到预设同步线程池中的同步线程1,同步线程1通过rsync工具实现,同步线程1的过程包括将主Cephfs集群的文件系统中文件1进行读取,再将读取的文件1写入到备用Cephfs集群的文件系统中。
在一个实施例中,预设同步线程池中包括多个同步线程,多个同步线程中每一个同步线程对应一个同步记录队列,基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中,包括:
基于每一个同步线程对应的一个同步记录队列中每个记录,通过预设拷贝工具,将一个同步记录队列中每个记录对应的数据从主服务集群的文件系统中读出,并将读出的每个记录对应的数据写入到备用服务集群的文件系统中。
具体地,预设拷贝工具例如rsync工具。例如,如图8所示,/mnt/src为主Cephfs集群(主服务集群)中的根目录,文件1的父目录在该根目录下;/mnt/dest为备用Cephfs集群(备用服务集群)中的根目录,文件1的父目录在该根目录下;将/mnt/src下的文件1通过rsync工具拷贝到/mnt/dest下,如此,实现将主Cephfs集群中文件1拷贝到备用Cephfs集群中,即:基于个同步线程对应的一个同步记录队列中一个记录,通过rsync工具,将该记录对应的文件1从主Cephfs集群的文件系统(主Cephfs集群的Cephfs文件系统)中读出,并将读出的文件1写入到备用Cephfs集群的文件系统(备用Cephfs集群的Cephfs文件系统)中。
需要说明的是,预设同步线程池中同步线程从hash队列中取出记录,就开始进行数据同步,会根据记录对应的value中操作请求的类型op_type进行相应的数据同步。
在一个实施例中,例如,如图9所示,本申请实施例提供的针对每个记录的数据同步流程包括如下步骤:
S301,从记录中获取文件所在父目录。
需要说明的是,文件也可以替换为目录或文件夹,例如,从记录中获取文件夹所在父目录。
S302,判断父目录是否同时在主Cephfs集群和备用Cephfs集群中,即判断父目录是否在主备集群;若父目录是同时在主Cephfs集群和备用Cephfs集群中,则转到步骤S304处理;若父目录不是同时在主Cephfs集群和备用Cephfs集群中,则转到步骤S303处理。
S303,流程结束。
S304,获取文件所处的父目录路径名。
S305,判断文件是否在主Cephfs集群中,即判断文件是否在主集群;若确定文件是在主Cephfs集群中,则转到步骤S306处理;若确定文件不是在主Cephfs集群中,则转到步骤S307处理。
S306,判断文件是否在备用Cephfs集群中,即判断文件是否在备用集群;若确定文件是在备用Cephfs集群中,则转到步骤S308处理;若确定文件不在备用Cephfs集群中,则转到步骤S309处理。
S307,判断文件是否在备用Cephfs集群中,若确定文件是在备用Cephfs集群中,则转到步骤S310处理;若确定文件不在备用Cephfs集群中,则转到步骤S311处理。
S308,执行sync同步的文件。
具体地,执行sync同步的文件,即通过rsync工具,将文件从主Cephfs集群的Cephfs文件系统中读出,并将读出的文件写入到备用Cephfs集群的Cephfs文件系统中。
S309,判断是否进行删除文件操作,若确定是进行删除文件操作,则转到步骤S312处理;若确定不进行删除文件操作,则转到步骤S308处理。
S310,判断是否进行删除文件操作,若确定是进行删除文件操作,则转到步骤S313处理;若确定不进行删除文件操作,则转到步骤S311处理。
S311,不进行操作。
S312,不进行操作。
S313,同步删除文件操作。
S314,流程结束。
在一个实施例中,在将读出的每个记录对应的数据写入到备用服务集群中之后,还包括:
若将读出的每个记录对应的数据写入到备用服务集群中,则将每个记录设置到记录完成队列中,并依次将每个记录进行记录清理。
具体地,例如,如图5所示,若将读出的记录对应的文件写入到备用服务集群中,即数据同步完成,则通过同步客户端中同步服务的清理记录模块,将该记录设置到记录完成队列(完成队列)中,并依次将该记录进行记录清理。
在一个实施例中,每个记录对应的数据包括文件、文件目录中的至少一项;操作请求包括创建文件请求、删除文件请求、创建目录请求、写文件请求中任一项。
具体地,操作请求的类型包括创建文件请求、删除文件请求、创建目录请求、写文件请求等;文件目录例如文件夹。
应用本申请实施例,至少具有如下有益效果:
通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
为了更好的理解本申请实施例所提供的方法,下面结合具体应用场景的示例对本申请实施例的方案进行进一步说明。
在一个具体应用场景实施例中,例如数据同步场景,参见图10,示出了一种数据处理方法的处理流程,如图10所示,本申请实施例提供的数据处理方法的处理流程包括如下步骤:
S401,用户客户端中业务发送操作请求给用户客户端中Ceph-fuse的请求接受模块。
具体地,例如,如图3所示,用户客户端中业务发送操作请求给用户客户端中Ceph-fuse的请求接受模块。
S402,用户客户端中Ceph-fuse的请求接受模块将操作请求发送给用户客户端中Ceph-fuse的请求处理模块。
具体地,例如,如图3所示,Ceph-fuse的请求接受模块将操作请求发送给Ceph-fuse的请求处理模块。
S403,用户客户端中Ceph-fuse的请求处理模块基于操作请求,生成操作请求对应的记录,并将记录加入到记录队列中。
具体地,例如,如图3所示,Ceph-fuse的请求处理模块基于操作请求,生成操作请求对应的记录,并将记录加入到记录队列中。
S404,用户客户端中Ceph-fuse的请求处理模块和主服务集群的系统文件之间进行数据的通信交互。
具体地,请求处理模块通过objecter模块、mdsclient模块和主服务集群(主Cephfs集群)的Cephfs系统文件之间分别进行文件数据和元数据的通信交互。
S405,用户客户端中Ceph-fuse写记录到主服务集群的同步元数据池中。
具体地,用户客户端中Ceph-fuse通过Finisher线程从记录队列中取出记录,并将记录写入到主服务集群的Rados中的同步元数据池。
例如,如图4所示,主服务集群(主Cephfs集群)的Rados中同步元数据池包括对象的名字和对象的omap,对象的名字例如Client.{global id},global id是一个客户端的唯一全局标识,即一个对象对应一个用户客户端,omap用于存储记录,omap中可以存储多个记录,记录以键值对(kv)的方式存入omap中;例如,对象1的名字为Client.id1,对象1的omap中存储了记录1和记录2,对象2的名字为Client.id2,对象2的omap中存储了记录3和记录4,对象3的名字为Client.id3,对象3的omap中存储了记录5和记录6,对象1、对象2和对象3分别对应用户客户端1、用户客户端2和用户客户端3,用户客户端1、用户客户端2和用户客户端3分别将记录写入到对象1的omap、对象2的omap和对象3的omap中。
S406,同步客户端中同步服务的列举客户端对象模块从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列。
具体地,例如,如图5所示,对象队列为客户端队列,该对象队列包括客户端集合中所有客户端对应的对象(object)。
S407,基于对象队列,通过同步客户端中同步服务的获取对象记录模块进行筛选处理,确定筛选后的对象队列。
具体地,例如,如图5所示,筛选后的对象队列为过滤队列,基于对象队列,通过同步客户端中同步服务的获取对象记录模块进行筛选处理,将对象队列中不存在记录的对象筛除掉,得到筛选后的对象队列。
例如,如图6所示,为了加快数据同步,同步客户端中同步服务的获取对象记录模块可以进行多线程操作,获取对象记录模块是为了获取对象队列(客户端队列)中的记录,各对象之间可以并发获取;使用线程池来加速,线程池中的每个线程从对象队列(客户端队列)中取出一个对象进行记录的拉取(例如线程池中线程1、线程2、线程3和线程4分别对不同的对象进行记录的拉取,即这4个线程可以同时对4个对象进行记录的拉取),若拉取的对象中存在记录,则将该对象加入筛选后的对象队列(过滤队列)中,表示该对象中存在记录需要同步,以便后续进行数据同步。
S408,同步客户端中同步服务的收集排序分发模块,基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列。
具体地,例如,如图5所示,同步客户端中同步服务的收集排序分发模块,基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列(同步队列);同步客户端中同步服务的收集排序分发模块主要完成收集、排序、分发等功能;收集是指收集排序分发模块对所有对象的记录进行收集,即收集排序分发模块对所有对象的记录对应的键值对(kv对)进行收集;排序是指收集排序分发模块对所有收集的记录对应的键值对(kv对)按时间戳、目录中的至少一项进行排序;分发是指收集排序分发模块按照一定的规则将不相关的记录发送给同步客户端中同步服务的同步模块的多个线程进行并发处理,从而加快数据同步的速度。
S409,同步客户端中同步服务的同步模块基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
具体地,例如,如图7所示,在同步客户端中同步服务的收集排序分发模块收集排序完所有记录之后,收集排序分发模块发送记录给同步客户端中同步服务的同步模块,进行数据同步,根据记录中文件名或者目录名进行hash(哈希)并发同步,因为针对不同文件或目录的操作不相互影响;同步线程池中包括多个同步线程,多个同步线程中每个同步线程绑定一个hash队列(同步记录队列),即一个hash队列绑定一个同步线程;收集排序分发模块将各记录通过hash文件名或者目录名,将各记录分发到不同的hash队列中,如此,可以保证针对同一文件或者目录的记录会按时间先后顺序在同一个hash队列中,而与hash队列绑定的同步线程会按照先进先出的顺序从hash队列中取出记录进行数据同步。
例如,基于每一个同步线程对应的一个同步记录队列中每个记录,通过rsync工具,将一个同步记录队列中每个记录对应的数据从主服务集群的文件系统中读出,并将读出的每个记录对应的数据写入到备用服务集群的文件系统中。
S410,同步客户端中同步服务的清理记录模块将每个记录设置到记录完成队列中,并依次将每个记录进行记录清理。
具体地,例如,如图5所示,若将读出的记录对应的文件写入到备用服务集群中,即数据同步完成,则通过同步客户端中同步服务的清理记录模块,将该记录设置到记录完成队列(完成队列)中,并依次将该记录进行记录清理。
应用本申请实施例,至少具有如下有益效果:
通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
本申请实施例还提供了一种数据处理装置,应用于同步客户端,该数据处理装置的结构示意图如图11所示,数据处理装置60,包括第一处理模块601、第二处理模块602和第三处理模块603。
第一处理模块601,用于通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;
第二处理模块602,用于基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;
第三处理模块603,用于基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中。
在一个实施例中,第一处理模块601,具体用于:
从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列,用户客户端集合中一个用户客户端对应对象队列中一个对象,用户客户端集合中每一个用户客户端用于向主服务集群的文件系统发送操作请求,以使文件系统进行相应的操作,同步元数据池用于存储每一个用户客户端向同步元数据池写入的记录;
基于对象队列,通过筛选处理,确定筛选后的对象队列,筛选后的对象队列对应多个用户客户端,筛选后的对象队列中每个对象都包括至少一个记录。
在一个实施例中,第一处理模块601,具体用于:
通过预设线程池中任一线程,确定对象队列中任一对象是否存在记录;
若确定任一对象中存在记录,则将任一对象中的记录设置到筛选后的对象队列中。
在一个实施例中,第二处理模块602,具体用于:
基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列。
在一个实施例中,各对象中每个记录对应的键值对的键用于表征各对象中每个记录对应的时间戳和各对象中每个记录对应的数据所在的父目录路径名;第二处理模块602,具体用于:
基于各记录对应的时间戳、各记录对应的数据所在的父目录路径名中至少一项,以及预设排序规则,将各记录进行排序,并将排序后的各记录进行分发处理,得到同步记录队列;
其中,各对象中每个记录对应的时间戳用于表征每个记录对应的用户客户端向主服务集群发送操作请求的时间点,键值对的值用于表征各对象中每个记录对应的数据所在的父目录路径名、各对象中每个记录对应的数据的索引节点和操作请求的类型。
在一个实施例中,第二处理模块602,具体用于:
基于排序后的各记录,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程,并将与预设同步线程池中任一同步线程相匹配的多个记录构成一个同步记录队列,排序后的各记录中包括多个记录。
在一个实施例中,排序后的各记录包括各记录对应的数据的名称和各记录对应的数据所在的父目录路径名;第二处理模块602,具体用于:
通过哈希函数,确定各记录对应的数据的名称和各记录对应的数据所在的父目录路径名中任一项的哈希值;
基于任一项的哈希值,通过匹配处理,确定与排序后的各记录相匹配的预设同步线程池中同步线程。
在一个实施例中,预设同步线程池中包括多个同步线程,多个同步线程中每一个同步线程对应一个同步记录队列,第三处理模块603,具体用于:
基于每一个同步线程对应的一个同步记录队列中每个记录,通过预设拷贝工具,将一个同步记录队列中每个记录对应的数据从主服务集群的文件系统中读出,并将读出的每个记录对应的数据写入到备用服务集群的文件系统中。
在一个实施例中,第三处理模块603,还用于:
若将读出的每个记录对应的数据写入到备用服务集群中,则将每个记录设置到记录完成队列中,并依次将每个记录进行记录清理。
在一个实施例中,每个记录对应的数据包括文件、文件目录中的至少一项;操作请求包括创建文件请求、删除文件请求、创建目录请求、写文件请求中任一项。
应用本申请实施例,至少具有如下有益效果:
同步客户端通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;同步客户端基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;同步客户端基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中;如此,通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
本申请实施例还提供了一种电子设备,该电子设备的结构示意图如图12所示,图12所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004,收发器4004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本申请实施例的限定。
处理器4001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器4003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器4003用于存储执行本申请实施例的计算机程序,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:服务器等。
应用本申请实施例,至少具有如下有益效果:
同步客户端通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,每个用户客户端对应的对象包括至少一个记录,至少一个记录用于表征每个用户客户端向主服务集群发送的操作请求的相关信息;同步客户端基于各对象包括的至少一个记录,确定同步记录队列,同步记录队列中每个记录按照预设排序规则进行排列;同步客户端基于同步记录队列中每个记录,将每个记录对应的数据从主服务集群中读出,并将读出的每个记录对应的数据写入到备用服务集群中;如此,通过同步客户端来解放用户客户端的操作,用户客户端只和主服务集群(主Cephfs集群)交互,用户客户端不用发送操作请求到备用服务集群(备用Cephfs集群);同步客户端从主服务集群中读取用户客户端写入主服务集群的数据,再将读取的数据写入备用服务集群中;基于同步客户端,在主服务集群和备用服务集群之间实现数据同步,无需业务改造,从而提高主服务集群和备用服务集群之间数据同步的效率。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
基于与本申请实施例提供的方法相同的原理,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述本申请任一可选实施例中提供的方法。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (12)
1.一种数据处理方法,由同步客户端执行,其特征在于,包括:
通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,所述每个用户客户端对应的对象包括至少一个记录,所述至少一个记录用于表征所述每个用户客户端向所述主服务集群发送的操作请求的相关信息;
基于各对象包括的至少一个记录,确定同步记录队列,所述同步记录队列中每个记录按照预设排序规则进行排列;
基于所述同步记录队列中每个记录,将所述每个记录对应的数据从所述主服务集群中读出,并将读出的所述每个记录对应的数据写入到备用服务集群中;
所述通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,包括:
从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列,所述用户客户端集合中一个用户客户端对应所述对象队列中一个对象,所述用户客户端集合中每一个用户客户端用于向所述主服务集群的文件系统发送操作请求,以使所述文件系统进行相应的操作,所述同步元数据池用于存储所述每一个用户客户端通过单独异步处理向所述同步元数据池写入的记录;
基于所述对象队列,通过筛选处理,确定筛选后的对象队列,所述筛选后的对象队列对应多个用户客户端,所述筛选后的对象队列中每个对象都包括至少一个记录。
2.根据权利要求1所述的方法,其特征在于,所述基于所述对象队列,通过筛选处理,确定筛选后的对象队列,包括:
通过预设线程池中任一线程,确定所述对象队列中任一对象是否存在记录;
若确定所述任一对象中存在记录,则将所述任一对象中的记录设置到筛选后的对象队列中。
3.根据权利要求1所述的方法,其特征在于,所述基于各对象包括的至少一个记录,确定同步记录队列,包括:
基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列。
4.根据权利要求3所述的方法,其特征在于,所述各对象中每个记录对应的键值对的键用于表征所述各对象中每个记录对应的时间戳和所述各对象中每个记录对应的数据所在的父目录路径名;所述基于各对象中每个记录对应的键值对和预设排序规则,将各记录进行排序,确定同步记录队列,包括:
基于各记录对应的时间戳、所述各记录对应的数据所在的父目录路径名中至少一项,以及预设排序规则,将所述各记录进行排序,并将排序后的各记录进行分发处理,得到同步记录队列;
其中,所述各对象中每个记录对应的时间戳用于表征所述每个记录对应的用户客户端向所述主服务集群发送操作请求的时间点,所述键值对的值用于表征所述各对象中每个记录对应的数据所在的父目录路径名、所述各对象中每个记录对应的数据的索引节点和所述操作请求的类型。
5.根据权利要求4所述的方法,其特征在于,所述将排序后的各记录进行分发处理,得到同步记录队列,包括:
基于排序后的各记录,通过匹配处理,确定与所述排序后的各记录相匹配的预设同步线程池中同步线程,并将与所述预设同步线程池中任一同步线程相匹配的多个记录构成一个同步记录队列,所述排序后的各记录中包括所述多个记录。
6.根据权利要求5所述的方法,其特征在于,所述排序后的各记录包括所述各记录对应的数据的名称和所述各记录对应的数据所在的父目录路径名;所述基于排序后的各记录,通过匹配处理,确定与所述排序后的各记录相匹配的预设同步线程池中同步线程,包括:
通过哈希函数,确定所述各记录对应的数据的名称和所述各记录对应的数据所在的父目录路径名中任一项的哈希值;
基于所述任一项的哈希值,通过匹配处理,确定与所述排序后的各记录相匹配的预设同步线程池中同步线程。
7.根据权利要求5所述的方法,其特征在于,所述预设同步线程池中包括多个同步线程,所述多个同步线程中每一个同步线程对应一个同步记录队列,所述基于所述同步记录队列中每个记录,将所述每个记录对应的数据从所述主服务集群中读出,并将读出的所述每个记录对应的数据写入到备用服务集群中,包括:
基于所述每一个同步线程对应的一个同步记录队列中每个记录,通过预设拷贝工具,将所述一个同步记录队列中每个记录对应的数据从所述主服务集群的文件系统中读出,并将读出的所述每个记录对应的数据写入到备用服务集群的文件系统中。
8.根据权利要求1所述的方法,其特征在于,在所述将读出的所述每个记录对应的数据写入到备用服务集群中之后,还包括:
若将读出的所述每个记录对应的数据写入到备用服务集群中,则将所述每个记录设置到记录完成队列中,并依次将所述每个记录进行记录清理。
9.根据权利要求1所述的方法,其特征在于,所述每个记录对应的数据包括文件、文件目录中的至少一项;所述操作请求包括创建文件请求、删除文件请求、创建目录请求、写文件请求中任一项。
10.一种数据处理装置,应用于同步客户端,其特征在于,包括:
第一处理模块,用于通过主服务集群,获取多个用户客户端中每个用户客户端对应的对象,所述每个用户客户端对应的对象包括至少一个记录,所述至少一个记录用于表征所述每个用户客户端向所述主服务集群发送的操作请求的相关信息;
第二处理模块,用于基于各对象包括的至少一个记录,确定同步记录队列,所述同步记录队列中每个记录按照预设排序规则进行排列;
第三处理模块,用于基于所述同步记录队列中每个记录,将所述每个记录对应的数据从所述主服务集群中读出,并将读出的所述每个记录对应的数据写入到备用服务集群中;
所述第一处理模块,具体用于:
从主服务集群的同步元数据池中,获取用户客户端集合对应的对象队列,所述用户客户端集合中一个用户客户端对应所述对象队列中一个对象,所述用户客户端集合中每一个用户客户端用于向所述主服务集群的文件系统发送操作请求,以使所述文件系统进行相应的操作,所述同步元数据池用于存储所述每一个用户客户端通过单独异步处理向所述同步元数据池写入的记录;
基于所述对象队列,通过筛选处理,确定筛选后的对象队列,所述筛选后的对象队列对应多个用户客户端,所述筛选后的对象队列中每个对象都包括至少一个记录。
11.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-9中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-9中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311456834.9A CN117176743B (zh) | 2023-11-03 | 2023-11-03 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311456834.9A CN117176743B (zh) | 2023-11-03 | 2023-11-03 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117176743A CN117176743A (zh) | 2023-12-05 |
CN117176743B true CN117176743B (zh) | 2024-02-06 |
Family
ID=88941767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311456834.9A Active CN117176743B (zh) | 2023-11-03 | 2023-11-03 | 数据处理方法、装置、设备、可读存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117176743B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868506B1 (en) * | 2010-06-17 | 2014-10-21 | Evolphin Software, Inc. | Method and apparatus for digital asset management |
CN106341454A (zh) * | 2016-08-23 | 2017-01-18 | 世纪龙信息网络有限责任公司 | 跨机房多活分布式数据库管理系统和方法 |
CN108123976A (zh) * | 2016-11-30 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 集群间的数据备份方法、装置及系统 |
CN108280080A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
CN108958984A (zh) * | 2018-08-13 | 2018-12-07 | 深圳市证通电子股份有限公司 | 基于ceph的双活同步在线热备方法 |
CN109840166A (zh) * | 2019-01-14 | 2019-06-04 | 京东数字科技控股有限公司 | 一种跨集群对象存储异步备份方法、装置和系统 |
CN110175159A (zh) * | 2019-05-29 | 2019-08-27 | 京东数字科技控股有限公司 | 用于对象存储集群的数据同步方法与系统 |
WO2019196889A1 (en) * | 2018-04-11 | 2019-10-17 | Beijing Didi Infinity Technology And Development Co., Ltd. | Systems and methods for data synchronization |
CN111917846A (zh) * | 2020-07-19 | 2020-11-10 | 中信银行股份有限公司 | 一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质 |
CN112468601A (zh) * | 2021-02-03 | 2021-03-09 | 柏科数据技术(深圳)股份有限公司 | 一种分布式存储系统的数据同步方法、访问方法及系统 |
CN113704295A (zh) * | 2020-05-22 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 业务请求的处理方法、系统及电子设备 |
CN114625566A (zh) * | 2021-08-19 | 2022-06-14 | 湖南亚信软件有限公司 | 数据容灾方法、装置、电子设备及存储介质 |
-
2023
- 2023-11-03 CN CN202311456834.9A patent/CN117176743B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8868506B1 (en) * | 2010-06-17 | 2014-10-21 | Evolphin Software, Inc. | Method and apparatus for digital asset management |
CN106341454A (zh) * | 2016-08-23 | 2017-01-18 | 世纪龙信息网络有限责任公司 | 跨机房多活分布式数据库管理系统和方法 |
CN108123976A (zh) * | 2016-11-30 | 2018-06-05 | 阿里巴巴集团控股有限公司 | 集群间的数据备份方法、装置及系统 |
CN108280080A (zh) * | 2017-01-06 | 2018-07-13 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、装置以及电子设备 |
WO2019196889A1 (en) * | 2018-04-11 | 2019-10-17 | Beijing Didi Infinity Technology And Development Co., Ltd. | Systems and methods for data synchronization |
CN108958984A (zh) * | 2018-08-13 | 2018-12-07 | 深圳市证通电子股份有限公司 | 基于ceph的双活同步在线热备方法 |
CN109840166A (zh) * | 2019-01-14 | 2019-06-04 | 京东数字科技控股有限公司 | 一种跨集群对象存储异步备份方法、装置和系统 |
CN110175159A (zh) * | 2019-05-29 | 2019-08-27 | 京东数字科技控股有限公司 | 用于对象存储集群的数据同步方法与系统 |
CN113704295A (zh) * | 2020-05-22 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 业务请求的处理方法、系统及电子设备 |
CN111917846A (zh) * | 2020-07-19 | 2020-11-10 | 中信银行股份有限公司 | 一种Kafka集群切换方法、装置、系统、电子设备及可读存储介质 |
CN112468601A (zh) * | 2021-02-03 | 2021-03-09 | 柏科数据技术(深圳)股份有限公司 | 一种分布式存储系统的数据同步方法、访问方法及系统 |
CN114625566A (zh) * | 2021-08-19 | 2022-06-14 | 湖南亚信软件有限公司 | 数据容灾方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117176743A (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107169083B (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
CN111258978B (zh) | 一种数据存储的方法 | |
CN107391629B (zh) | 集群间数据迁移方法、系统、服务器及计算机存储介质 | |
US9424274B2 (en) | Management of intermediate data spills during the shuffle phase of a map-reduce job | |
US10338958B1 (en) | Stream adapter for batch-oriented processing frameworks | |
US9952940B2 (en) | Method of operating a shared nothing cluster system | |
CN104615606B (zh) | 一种Hadoop分布式文件系统及其管理方法 | |
CN104133867A (zh) | 分布式顺序表片内二级索引方法及系统 | |
CN108334514B (zh) | 数据的索引方法以及装置 | |
US11113155B1 (en) | Archiving and restoration of distributed database log records | |
CN105956123A (zh) | 基于局部更新软件的数据处理方法及装置 | |
CN106970958B (zh) | 一种流文件的查询与存储方法和装置 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
CN106815254A (zh) | 一种数据处理方法和装置 | |
CN102779160B (zh) | 海量数据信息索引系统和索引构建方法 | |
CN110018878A (zh) | 一种分布式系统数据加载方法以及装置 | |
CN106407442A (zh) | 一种海量文本数据处理方法及装置 | |
CN112597348A (zh) | 一种大数据存储优化的方法及装置 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN107566341B (zh) | 一种基于联邦分布式文件存储系统的数据持久化存储方法及系统 | |
CN111444148B (zh) | 基于MapReduce的数据传输方法和装置 | |
CN106682199B (zh) | 一种实现Mongos集群自动化扩容的方法和装置 | |
CN117176743B (zh) | 数据处理方法、装置、设备、可读存储介质及程序产品 | |
KR20160145250A (ko) | 가상 머지를 지원하는 셔플 내장형 분산 스토리지 시스템 및 그 방법 | |
CN115905115A (zh) | 文件存储方法、读取方法及装置、电子设备与存储介质 |
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 |