CN111309796B - 一种数据处理方法、装置以及计算机可读存储介质 - Google Patents
一种数据处理方法、装置以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111309796B CN111309796B CN202010082700.5A CN202010082700A CN111309796B CN 111309796 B CN111309796 B CN 111309796B CN 202010082700 A CN202010082700 A CN 202010082700A CN 111309796 B CN111309796 B CN 111309796B
- Authority
- CN
- China
- Prior art keywords
- service node
- data storage
- node
- list
- data
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、装置以及计算机可读存储介质,该数据处理方法由第一服务节点所执行,该方法包括:获取用户客户端发送的针对第一数据存储列表的数据写入请求;第一数据存储列表是由第一服务节点创建的与用户客户端相关联的列表;数据写入请求为用户客户端根据从第一服务节点处所获取到的对第一数据存储列表的访问权限所生成的请求;数据写入请求携带目标数据;根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。采用本申请,可在访问第一数据存储列表时,减少对网络带宽的消耗。
Description
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种数据处理方法、装置以及计算机可读存储介质。
背景技术
随着数据量的指数式增长,针对分布式文件系统对元数据的处理能力的需求日益增长,使用多个元数据服务器来存储和处理元数据成了必然的选择。
现有技术中,一个用户可以在分布式文件系统中拥有一个文件列表,每次当用户需要在其所拥有的文件列表中存储文件时,都需要在分布式文件系统中选择一个合适的元数据服务器来管理用户所存储的文件的元数据。由此可见,一个用户所对应的文件列表中的文件的元数据将被分散存储在多个元数据服务器中。其中,可以将元数据理解为是用于获取用户所存储的真实数据的向导数据。因此,当后续用户需要同时获取所属列表中的多个文件时,也需要生成多个数据获取指令以向多个元数据服务器请求分别获取到对应的文件,这会增加网络的带宽消耗。
发明内容
本申请提供了一种数据处理方法、装置以及计算机可读存储介质,可在访问第一数据存储列表时,减少对网络带宽的消耗。
本申请一方面提供了一种数据处理方法,由第一服务节点所执行,包括:
获取用户客户端发送的针对第一数据存储列表的数据写入请求;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;数据写入请求为用户客户端根据对第一数据存储列表的访问权限所生成的请求;用户客户端对第一数据存储列表的访问权限,是由用户客户端从创建第一数据存储列表的第一服务节点中获取到的;数据写入请求携带目标数据;
根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。
其中,还包括:
获取第一列表创建请求;第一列表创建请求携带列表名称信息;第一列表创建请求为管理客户端所生成的;
根据列表名称信息,创建过渡数据存储列表,生成针对过渡数据存储列表的第一创建成功信息;
发送第一创建成功信息至管理客户端,以使管理客户端根据第一创建成功信息获取用户客户端的客户端地址;
根据客户端地址对过渡数据存储列表的访问权限进行设置,得到第一数据存储列表;客户端地址具有针对第一数据存储列表的访问权限。
其中,还包括:
第一服务节点获取转发器发送的挂载指令;挂载指令为用户客户端生成的用于获取第一数据存储列表的指令;挂载指令是由用户客户端发送给转发器的;挂载指令为用户客户端初次生成的针对第一数据存储列表的操作指令;
根据挂载指令,将第一服务节点的节点地址以及第一数据存储列表对应的根目录信息,发送至用户客户端,以使用户客户端根据第一服务节点的节点地址向第一服务节点获取针对第一数据存储列表的访问权限;
则,第一服务节点获取用户客户端发送的针对第一数据存储列表的数据写入请求,包括:
获取用户客户端发送的数据写入请求;数据写入请求是由用户客户端根据根目录信息向第一服务节点所发起的请求。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第二服务节点中存储有第一服务节点的节点负载量;第二服务节点持有管理客户端所发送的第一列表创建请求;还包括:
当第一服务节点的节点负载量小于第二服务节点的节点负载量时,获取第二服务节点发送的第一列表创建请求。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;还包括:
获取第二服务节点发送的第一心跳信息,存储第一心跳信息中所携带的第二服务节点的节点负载量;
当第一服务节点获取到第二列表创建请求,且检测到所存储的第二服务节点的节点负载量小于第一服务节点的节点负载量时,将第二列表创建请求发送至第二服务节点,以使第二服务节点根据第二列表创建请求创建第二数据存储列表。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;还包括:
发送第二心跳信息至第二服务节点,以使第二服务节点存储第二心跳信息所携带的第一服务节点的节点负载量。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第一服务节点中存储有第二服务节点的节点负载量;还包括:
获取数据迁移指令,根据数据迁移指令获取第一服务节点的节点负载量和第二服务节点的节点负载量所对应的节点平均负载量;
根据第一服务节点的节点负载量与节点平均负载量,得到超量负载量;
根据节点平均负载量以及负载量衡量比例,确定衡量负载量;
当比对出第一服务节点的节点负载量大于或者等于负载量阈值,且超量负载量大于或者等于衡量负载量时,将第一数据存储列表迁移至第二服务节点。
其中,获取数据迁移指令,包括:
获取第一服务节点的节点负载量与第二服务节点的节点负载量之间的节点负载量差值;
当节点负载量差值大于负载量差值阈值时,生成数据迁移指令。
其中,将第一数据存储列表迁移至第二服务节点,包括:
将第一数据存储列表对应的列表框架信息发送至第二服务节点,以使第二服务节点通过列表框架信息创建初始数据存储列表,生成针对初始数据存储列表的第二创建成功信息;
获取第二服务节点发送的第二创建成功信息,根据第二创建成功信息将第一数据存储列表中的列表详情信息发送至第二服务节点,以使第二服务节点将列表详情信息添加至初始数据存储列表中,得到第三数据存储列表,向用户客户端发送第二服务节点的节点地址;第二服务节点的节点地址用于用户客户端向第二服务节点获取针对第三数据存储列表的访问权限;第三数据存储列表与第一数据存储列表相同;
删除第一数据存储列表。
其中,将目标元数据添加至第一数据存储列表中,包括:
将目标元数据添加至第一数据存储列表中,将目标元数据对应的目标数据发送至数据存储节点,以使数据存储节点存储目标数据;
删除目标数据;
则,还包括:
获取用户客户端发送的针对目标数据的数据访问请求;
根据数据访问请求将目标数据对应的目标元数据发送至用户客户端,以使用户客户端根据目标元数据向数据存储节点拉取目标数据。
其中,第一服务节点所在的服务节点集群中包括多个服务节点;多个服务节点之间具备链式连接关系;多个服务节点中的每个服务节点均具有两个相邻的服务节点;还包括:
当检测到第一服务节点处于节点异常状态时,将第一服务节点中的第一数据存储列表导入邻居服务节点,以使邻居服务节点存储第一数据存储列表,向用户客户端发送邻居服务节点的节点地址;邻居服务节点的节点地址用于用户客户端向邻居服务节点获取针对第一数据存储列表的访问权限;邻居服务节点为与第一服务节点相邻的两个服务节点中的任意一个服务节点。
其中,还包括:
删除与邻居服务节点之间的链式连接关系,添加与目标服务节点之间的链式连接关系;邻居服务节点中也添加有与目标服务节点之间的链式连接关系;目标服务节点为在服务节点集群中新增的服务节点。
本申请一方面提供了一种数据处理装置,应用于第一服务节点,包括:
第一请求获取模块,用于获取用户客户端发送的针对第一数据存储列表的数据写入请求;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;数据写入请求为用户客户端根据对第一数据存储列表的访问权限所生成的请求;用户客户端对第一数据存储列表的访问权限,是由用户客户端从创建第一数据存储列表的第一服务节点中获取到的;数据写入请求携带目标数据;
元数据添加模块,用于根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。
其中,数据处理装置,还包括:
第二请求获取模块,用于获取第一列表创建请求;第一列表创建请求携带列表名称信息;第一列表创建请求为管理客户端所生成的;
创建模块,用于根据列表名称信息,创建过渡数据存储列表,生成针对过渡数据存储列表的第一创建成功信息;
第二地址发送模块,用于发送第一创建成功信息至管理客户端,以使管理客户端根据第一创建成功信息获取用户客户端的客户端地址;
权限设置模块,用于根据客户端地址对过渡数据存储列表的访问权限进行设置,得到第一数据存储列表;客户端地址具有针对第一数据存储列表的访问权限。
其中,数据处理装置,还包括:
指令获取单元,用于获取转发器发送的挂载指令;挂载指令为用户客户端生成的用于获取第一数据存储列表的指令;挂载指令是由用户客户端发送给转发器的;挂载指令为用户客户端初次生成的针对第一数据存储列表的操作指令;
地址发送单元,用于根据挂载指令,将第一服务节点的节点地址以及第一数据存储列表对应的根目录信息,发送至用户客户端,以使用户客户端根据第一服务节点的节点地址向第一服务节点获取针对第一数据存储列表的访问权限;
则,第一请求获取模块,还用于:
获取用户客户端发送的数据写入请求;数据写入请求是由用户客户端根据根目录信息向第一服务节点所发起的请求。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第二服务节点中存储有第一服务节点的节点负载量;第二服务节点持有管理客户端所发送的第一列表创建请求;数据处理装置,还用于:
当第一服务节点的节点负载量小于第二服务节点的节点负载量时,获取第二服务节点发送的第一列表创建请求。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;数据处理装置,还包括:
心跳获取模块,用于获取第二服务节点发送的第一心跳信息,存储第一心跳信息中所携带的第二服务节点的节点负载量;
请求发送模块,用于当第一服务节点获取到第二列表创建请求,且检测到所存储的第二服务节点的节点负载量小于第一服务节点的节点负载量时,将第二列表创建请求发送至第二服务节点,以使第二服务节点根据第二列表创建请求创建第二数据存储列表。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;数据处理装置,还用于:
发送第二心跳信息至第二服务节点,以使第二服务节点存储第二心跳信息所携带的第一服务节点的节点负载量。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第一服务节点中存储有第二服务节点的节点负载量;数据处理装置,还包括:
指令获取模块,用于获取数据迁移指令,根据数据迁移指令获取第一服务节点的节点负载量和第二服务节点的节点负载量所对应的节点平均负载量;
超量获取模块,用于根据第一服务节点的节点负载量与节点平均负载量,得到超量负载量;
衡量获取模块,用于根据节点平均负载量以及负载量衡量比例,确定衡量负载量;
迁移模块,用于当比对出第一服务节点的节点负载量大于或者等于负载量阈值,且超量负载量大于或者等于衡量负载量时,将第一数据存储列表迁移至第二服务节点。
其中,指令获取模块,包括:
差值获取单元,用于获取第一服务节点的节点负载量与第二服务节点的节点负载量之间的节点负载量差值;
指令生成单元,用于当节点负载量差值大于负载量差值阈值时,生成数据迁移指令。
其中,迁移模块,包括:
框架发送单元,用于将第一数据存储列表对应的列表框架信息发送至第二服务节点,以使第二服务节点通过列表框架信息创建初始数据存储列表,生成针对初始数据存储列表的第二创建成功信息;
详情发送单元,用于获取第二服务节点发送的第二创建成功信息,根据第二创建成功信息将第一数据存储列表中的列表详情信息发送至第二服务节点,以使第二服务节点将列表详情信息添加至初始数据存储列表中,得到第三数据存储列表,向用户客户端发送第二服务节点的节点地址;第二服务节点的节点地址用于用户客户端向第二服务节点获取针对第三数据存储列表的访问权限;第三数据存储列表与第一数据存储列表相同;
列表删除单元,用于删除第一数据存储列表。
其中,元数据添加模块,包括:
数据发送单元,用于将目标元数据添加至第一数据存储列表中,将目标元数据对应的目标数据发送至数据存储节点,以使数据存储节点存储目标数据;
数据删除单元,用于删除目标数据;
则,数据处理装置,还包括:
访问模块,用于获取用户客户端发送的针对目标数据的数据访问请求;
数据发送模块,用于根据数据访问请求将目标数据对应的目标元数据发送至用户客户端,以使用户客户端根据目标元数据向数据存储节点拉取目标数据。
其中,第一服务节点所在的服务节点集群中包括多个服务节点;多个服务节点之间具备链式连接关系;多个服务节点中的每个服务节点均具有两个相邻的服务节点;数据处理装置,还用于:
当检测到第一服务节点处于节点异常状态时,将第一服务节点中的第一数据存储列表导入邻居服务节点,以使邻居服务节点存储第一数据存储列表,向用户客户端发送邻居服务节点的节点地址;邻居服务节点的节点地址用于用户客户端向邻居服务节点获取针对第一数据存储列表的访问权限;邻居服务节点为与第一服务节点相邻的两个服务节点中的任意一个服务节点。
其中,数据处理装置,还用于:
删除与邻居服务节点之间的链式连接关系,添加与目标服务节点之间的链式连接关系;邻居服务节点中也添加有与目标服务节点之间的链式连接关系;目标服务节点为在服务节点集群中新增的服务节点。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行如本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述一方面中的方法。
本申请第一服务节点可以向用户客户端提供针对第一数据存储列表的访问权限;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;获取用户客户端通过针对第一数据存储列表的访问权限所发送的数据写入请求;数据写入请求携带目标数据;根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。由此可见,本申请提出的方法,当在第一服务节点中创建了用户客户端所对应的数据存储列表之后,在用户客户端需要在所对应的数据存储列表中导入目标数据时,用户客户端依旧是向创建其数据存储列表的第一服务节点发送携带目标数据的数据写入请求,进而通过第一服务节点将目标数据对应的目标元数据导入至数据存储列表,而无需再重新选择另外的服务节点来导入目标数据。因此,保证了用户客户端针对数据存储列表的访问局部性(即控制到对第一服务节点的访问,上述在数据存储列表中请求导入目标数据的过程即是访问数据存储列表的过程),减少了对网络带宽的消耗。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种系统架构示意图;
图2是本申请提供的一种数据处理的场景示意图;
图3是本申请提供的一种数据处理方法的流程示意图;
图4是本申请提供的一种数据交互的场景示意图;
图5是本申请提供的一种数据添加的场景示意图;
图6是本申请提供的另一种数据添加的场景示意图;
图7是本申请的提供的一种数据迁移的场景示意图;
图8是本申请提供的一种数据处理的场景示意图;
图9是本申请提供的一种新增服务节点的场景示意图;
图10是本申请提供的另一种数据处理方法的流程示意图;
图11是本申请提供的一种数据处理装置的结构示意图;
图12是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请提供的一种系统架构示意图。如图1所示,该系统架构示意图包括服务节点集群300中的多个服务节点,该多个服务节点分别为服务节点100a、服务节点100b和服务节点100c。其中,1个服务节点可以对应于一个或者多个元数据服务器MDS(MetaData Server),因此可以将服务节点称之为MDS节点。具体的,该元数据服务器是文件存储系统中管理和提供元数据服务的核心组件。元数据服务器主要在存储系统上构建文件系统层级结构,负责目录和文件的创建、删除、限额管理和访问控制等服务,并通过分布式锁机制来确保一致性。换句话说,元数据服务器是用于存储元数据并提供针对元数据的访问服务和写入服务的服务器。其中,元数据(Meta data),又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能,元数据为一种电子式目录。上述系统架构示意图还包括管理设备200a,其中,管理设备200a指运行有管理客户端的设备,管理员可以通过管理设备200a中的管理客户端实现对服务节点集群300中的服务节点(包括服务节点100a、服务节点100b和服务节点100c)的管理操作。该架构示意图还包括用户设备200c,其中,用户设备200c指运行有用户客户端的设备,用户可以通过用户设备200c中的用户客户端实现对存储系统的访问。需要进行说明的是,可以理解为是上述服务节点集群300和存储服务器100d构成了一个存储系统。该存储服务器100d用于存储服务节点集群300中的服务节点所存储的元数据对应的真实数据,实际上,一个存储系统中可以包括多个存储服务器,此处仅以存储服务器100d为例进行说明。
可以理解的是,下述中管理设备200a作为执行主体所执行的操作都是通过管理客户端所完成的,下述中用户设备200c作为执行主体所执行的操作都是通过用户客户端所完成的。上述管理设备和用户设备均可以是但不限于是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)。如图1所示,首先,管理设备200a可以在服务节点集群300中为用户设备200c中的用户客户端创建一个子树,该子树即是一个列表,该列表可以称之为是一个数据存储列表。其中,该数据存储列表可以是由服务节点集群300中负载最小的那一个节点所创建的,例如,此处以数据存储列表是由服务节点100c所创建的为例进行说明。该数据存储列表创建完成之后,管理员可以通过管理设备200a告知用户设备200c转发器200b的地址(即转发器的IP地址),其中,转发器200b可以理解为是存储系统的入口。接着用户设备200c可以通过转发器200b的地址发起挂载指令,该挂载指令是用于获取用户客户端对应的数据存储列表的指令。转发器200b接收到用户设备200c发送的挂载指令之后,可以将该挂载指令发送给服务节点集群300中的任意一个服务节点,例如,转发器200b将该挂载指令发送给了服务节点100a。需要进行说明的是,服务节点集群中的服务节点之间是相互知道每个服务节点创建了什么数据存储列表以及每个数据存储列表与用户客户端之间的对应关系的,因此,服务节点100a在接收到转发器200b发送的挂载指令之后,可以将该挂载指令发送给服务节点100c(因为数据存储列表是由服务节点100c所创建的)。上述挂载指令可以携带有用户设备200c中的用户客户端的客户端地址,接着,服务节点100c会根据该客户端地址向用户客户端(即向用户设备200c)发送自己的地址(即服务节点100c的IP地址)以及创建的数据存储列表的根目录信息。用户设备200c可以根据接收到的服务节点100c的地址建立用户客户端与服务节点100c之间的连接,后续,用户客户端可以直接与服务节点100c进行数据交互,而无需再通过转发器进行数据交互。用户设备200c中的用户客户端可以通过获取到的数据存储列表的根目录信息来发起对数据存储列表的访问。
其中,由于服务节点集群300中的服务节点只是维护和存储所创建的数据存储列表,而不存储数据存储列表所包含的实际数据,可以理解为,服务节点只存储列表信息(包括文件名和文件夹名),实际上,列表信息所包含的实际数据(包括文件名对应的文件,即具体文件内容)是由存储服务器100d来存储和维护的。数据存储列表中的文件名和文件夹名可以理解为就是元数据。举个例子,当上述数据存储列表为一个音乐列表时,服务节点相当于只存储了音乐列表中的歌曲名称,而存储服务器存储了音乐列表中的歌曲名称对应的实际的歌曲。因此,可以有下述的过程,用户设备200c可以根据根目录信息向服务节点100c发起针对数据存储列表的数据写入操作,通过该数据写入操作是需要在数据存储列表中添加文件s,因此,该数据写入操作中携带该文件s,服务节点100c可以根据该文件s生成一个元数据(可以理解为是文件s的文件名)。服务节点100c可以将该文件s对应的元数据添加至用户客户端对应的数据存储列表中,之后,服务节点100c就可以将文件s发送给存储服务器100d,存储服务器100d可以存储接收到的文件s。服务节点100c在将文件s发送给了存储服务器100d之后,就可以将文件s删除了。后续,当用户设备中的用户客户端向服务节点100c发起针对文件s的获取请求时,服务节点100c可以将文件s对应的元数据发送给用户终端200c,进而用户终端200c可以通过获取到的文件s对应的元数据向存储服务器100d获取到对应的文件s。
请参见图2,是本申请提供的一种数据处理的场景示意图。如图2所示,服务节点集群中包括服务节点1、服务节点2、服务节点3和服务节点4。与上述图1对应的实施例中相同的原理,①指:管理客户端可以随机向服务节点集群中的任意一个服务节点发送列表创建请求,根据该列表创建请求可以创建用户客户端对应的数据存储列表,假设管理客户端是向服务节点2发送的节点创建请求。②指:服务节点集群中的每个服务节点之间相互知道其他服务节点的节点负载量,并且,新的数据存储列表可以由节点负载量最小的那一个服务节点来创建。此处假设服务节点集群中节点负载量最小的服务节点是服务节点4,因此,服务节点2可以将列表创建请求发送给服务节点4,服务节点4可以根据该列表创建请求创建数据存储列表。③指:用户客户端可以向转发器发送挂载指令。④指:转发器可以将挂载指令发送给服务节点4。⑤指:服务节点4可以将自己的节点地址以及所创建的用户客户端对应的数据存储列表的根目录信息发送给用户客户端。之后用户客户端可以通过服务节点4的节点地址建立与服务节点4之间的连接关系,并通过根目录信息向服务节点4发起针对数据存储列表的访问权限。
用户客户端向服务节点4发起针对数据存储列表的访问权限的过程可以包括:如图2所示,用户客户端可以向服务节点4发送文件a2(即图2中的“S1,发送文件a2”)。用户客户端向服务节点4发送文件a2的具体场景可以是场景100a。此处,假设用户客户端承载在终端设备z1中,终端设备z1的终端页面y1为用户客户端的页面,终端页面y1中包括文件夹A,这个文件夹A即是用户通过用户客户端可视化的数据存储列表。当用户点击终端页面y1中的文件夹A时,终端设备z1可以跳转显示到终端页面y2,终端页面y2即是文件夹A的展开页面。从终端页面y2可以看出,文件夹A中原本已经有文件a1了,该文件a1可以是用户之前(在用户客户端与服务节点4建立连接之后)通过用户客户端向数据存储列表中存储的文件。终端页面y2中还包括按钮104a(即“文件导入”的按钮),当用户点击终端页面y2中的按钮104a时,支持用户通过用户客户端进行选择需要导入的数据是什么,此处,为用户选中文件a2并确认导入,终端设备就可以将用户选择导入的文件a2发送至服务节点4。服务节点4可以根据获取到的文件a2生成文件a2对应的元数据(可以理解为是文件a2对应的文件名称),服务节点4可以将生成的文件a2对应的元数据添加至用户客户端对应的数据存储列表中。如图2所示,服务节点4所维护的用户客户端对应的数据存储列表可以是子树102a(也可以称之为数据存储列表102a),子树102a中的文件夹A即是数据存储列表的根目录,该根目录中包括文件目录(即文件a1和文件a2),后续,用户还可以在文件夹A中添加子文件夹。其中,当用户通过点击按钮104a向文件夹A导入文件a2之后,终端设备z1也会跳转显示到终端页面y3。从终端页面y3可以看出,文件夹A中也新增加了文件a2。当服务节点4将文件a2的元数据添加至用户客户端对应的数据存储列表之后,服务节点可以将该文件a2发送给存储节点(即图2中的“S2,发送文件a2”),存储节点可以存储该文件a2(例如将该文件a2存储在内存101a中,内存101a中还包括用户之前通过用户客户端向数据存储列表中导入的文件a1),服务节点在将文件a2发送给存储节点之后,也可以将文件a2丢弃(即删除)。此外,服务节点4可以将所生成的元数据发送给存储节点进行存储,例如,服务节点4可以将数据存储列表102a(包含实际数据对应的元数据)发送给存储节点,存储节点可以在内存101a中存储数据存储列表102a。其中,服务节点4所创建的数据存储列表102a可以被永久地存储在存储节点中,而服务节点4中所存储的数据存储列表102a为临时缓存的列表。可以理解为,服务节点4可以将数据存储列表发送至存储节点进行备份存储,后续,当服务节点4出现断电的情况时,服务节点4中临时缓存的数据存储列表102a会被删除,那么,在服务节点4重新供电之后,服务节点4可以向存储节点重新获取到自己所创建的数据存储列表102a。可选的,还可以使用不同的存储节点来存储实际数据(例如文件a1和文件a2)以及实际数据对应的元数据(例如数据存储列表102a)。具体的,由于在实际应用场景中,需要提供更快的获取速度来获取数据存储列表102a中的元数据,因此,服务节点4可以将数据存储列表102a发送至高速存储节点(可以包含一个或者多个高速存储服务器)进行存储,使得后续可以通过该高速存储节点更快速地获取到数据存储列表102a中的元数据。而数据存储列表102a中的元数据所对应的实际数据(即文件a1和文件a2)则可以选择由另外一个低速存储节点进行存储。
之后,当用户想通过终端设备z1中的用户客户端访问文件a2时,访问文件a2的场景可以是场景103a,如图2所示,在场景103a中,用户可以点击终端设备z1的终端页面y5(终端页面y5为与终端页面y3相同位置的终端页面)中的“文件a2”,对终端页面y5中的“文件a2”的点击操作即是用户客户端向服务节点4发起了数据访问指令(即访问文件a2的指令,如图2中的“S3,访问文件a2”)。服务节点4可以根据该数据访问指令中所携带的文件a2的标识信息获取到文件a2对应的元数据(该元数据可以是服务节点在自己临时缓存的数据存储列表102a中获取到的,也可以是在存储数据存储列表102a的存储节点处所获取到的),服务节点4可以将获取到的文件a2对应的元数据发送至用户客户端(如图2中的“S4,发送文件a2的元数据”)。接着,用户客户端可以向存储节点发送用于拉取文件a2的数据获取指令(如图2中的“S5,拉取文件a2”),该数据获取指令携带文件a2对应的元数据。可以理解为,文件a2对应的元数据包含了文件a2在存储节点中的存储路径信息,因此存储节点可以根据数据获取指令中所携带的文件a2的元数据在内存101a中获取到文件a2,存储节点可以将获取到的文件a2发送给终端设备z1,即发送给用户客户端(即图2中的“S6,发送文件a2”),终端设备z1可以在终端页面y6中显示获取到的文件a2的具体内容,如图2中的终端页面y6所示,文件a2的具体内容即是“学习雷锋好榜样,好好学习,天天向上。”。从用户的感知中,当用户点击终端页面y5中的“文件a2”之后,终端设备z1就从终端页面y5跳转显示为了终端页面y6。
通过本申请所提供的方法,其一,每次创建一个新的子树(即一个新的数据存储列表,也就是一个新的负载)都可以选择服务节点集群中节点负载量最小的服务节点来创建。其二,对于一个用户客户端对应的数据存储列表而言,后续在该数据存储列表中添加子文件夹、导入文件、删除文件以及删除子文件夹的任务都可以由创建该数据存储列表的服务节点来实现,而无需再重新选择另外的服务节点来执行,因此,减少了服务节点之间的交互过程。通过上述两方面,都可以对服务节点集群中的各个服务节点之间的负载达到均衡的目的。
请参见图3,是本申请提供的一种数据处理方法的流程示意图,如图3所示,方法可以包括:
步骤S101,获取用户客户端发送的针对第一数据存储列表的数据写入请求;
具体的,首先,需要对两个客户端进行说明,一个是用户客户端,另一个是管理客户端,此外,还需要对服务节点集群进行说明。其中,服务节点集群是由MDS(meta dataserver,元数据服务器)节点所构成的集群。一个服务节点又可以由一个或者多个元数据服务器组成。服务节点集群中的每个服务节点均可以创建数据存储列表,该数据存储列表中所存储的数据为元数据。服务节点用于为用户客户端提供访问服务,即服务节点中所创建的数据存储列表可以是用户客户端对应的列表,用户客户端可以通过服务节点在所对应的数据存储列表中执行存储数据以及添加子文件夹等各种访问操作。需要进行说明的是,服务节点不会存储用户在数据存储列表中所存储的实际的数据,而是存储用户所存储的数据对应的元数据。用户实际存储的数据会由服务节点发送至数据存储节点(由存储服务器组成,可以包括一个或者多个存储服务器)进行存储,后续,服务节点可以通过数据的元数据向数据存储节点拉取到对应的实际的数据。换句话说,通过服务节点和数据存储节点可以将元数据的处理与对元数据对应的数据的存储分离开来。服务节点用于与用户客户端进行交互,为用户客户端提供针对数据存储列表中的数据的各种读写服务,数据存储节点用于存储用户在数据存储列表中导入的数据,并针对用户客户端通过服务节点发起的针对数据存储列表中的数据的各种读写服务进行相应的数据处理。上述管理客户端具有在服务节点集群中的服务节点中创建用户客户端对应的数据存储列表。
其中,服务节点集群中包括第一服务节点,本实施例中以第一服务节点作为执行主体为例进行说明。可以将管理客户端通过服务节点集群中的第一服务节点所创建的用户客户端对应的数据存储列表称之为第一数据存储列表。则管理客户端在第一服务节点中创建用户客户端对应的第一数据存储列表的过程可以是:
第一服务节点可以获取第一列表创建请求;第一列表创建请求携带列表名称信息;第一列表创建请求为管理客户端所生成的;根据列表名称信息,创建过渡数据存储列表,生成针对过渡数据存储列表的第一创建成功信息;发送第一创建成功信息至管理客户端,以使管理客户端根据第一创建成功信息获取用户客户端的客户端地址;根据客户端地址对过渡数据存储列表的访问权限进行设置,得到第一数据存储列表;客户端地址具有针对第一数据存储列表的访问权限:管理客户端可以响应管理员的列表生成操作(例如可以在管理客户端提供一个生成列表的按钮,管理员针对该按钮的点击操作即是该列表生成操作),获取管理员录入的列表名称信息,并根据该列表名称信息生成第一列表创建请求。第一列表创建请求中携带该列表名称信息。管理客户端可以将所生成的第一列表创建请求发送给服务节点集群中的任意一个服务节点,假设第一服务节点所在的服务节点集群中还包括第二服务节点,并假设管理客户端是将第一列表创建请求发送给第二服务节点的。此处,需要进行说明的是,服务节点集群中的每个服务节点之间会相互发送自己的节点负载量,该节点负载量即是服务节点中的负载,服务节点中的负载通常由对服务节点的访问产生,对某个服务节点的访问越多越频繁,则该个服务节点的节点负载量就越大。由于每个服务节点之间会相互发送节点负载量,因此,每个服务节点都相互知道对方的节点负载量。每当需要创建一个数据存储列表时,都可以让服务节点集群中节点负载量最小的服务节点来创建。例如,上述第一数据存储列表可以由服务节点集群中节点负载量最小的服务节点创建。因此,上述第二服务节点在接收到第一列表创建请求之后,可以将该第一列表创建请求发送给服务节点集群中节点负载量最小的服务节点。例如,若服务节点集群中只包括第一服务节点和第二服务节点,并且第一服务节点的节点负载量要小于第二服务节点的节点负载量,则第二服务节点可以将第一列表创建请求转发给第一服务节点。第一服务节点在获取到第一列表创建请求之后,就可以根据该第一列表创建请求中的列表名称信息创建过渡数据存储列表,该过渡数据存储列表的列表名称即为第一列表创建请求中的列表名称信息所包含的列表名称。第一服务节点在对过渡数据存储列表创建完成之后,可以生成针对过渡数据存储列表的第一创建成功信息,该第一创建成功信息用于提示管理客户端已经成功创建过渡数据存储列表。第一服务节点可以将该第一创建成功信息发送给管理客户端。管理客户端接收到该第一创建成功信息之后,可以获取管理员录入的用户客户端的客户端地址,管理客户端可以将获取到的客户端地址发送给第一服务节点。第一服务节点可以根据获取到的客户端地址对过渡数据存储列表的访问权限进行设置,当通过用户客户端的客户端地址对过渡数据存储列表的访问权限设置完成之后,即可得到第一数据存储列表。只有被设置有访问权限的客户端地址所对应的用户客户端才能访问该第一数据存储列表,该第一数据存储列表即是由第一服务节点所创建的与用户客户端相关联的列表。
举个例子,假设服务节点集群中只有第一服务节点和第二服务节点,那么第一服务节点和第二服务节点之间可以相互发送心跳信息,以使得第一服务节点和第二服务节点之间相互知道对方的节点负载量。具体为:第二服务节点可以向第一服务节点发送第一心跳信息,该第一心跳信息中包括第二服务节点的节点负载量。第一服务节点可以将获取到的第一心跳信息中的第二服务节点的节点负载量存储下来。第一服务节点可以向第二服务节点发送第二心跳信息,该第二心跳信息中包括第一服务节点的节点负载量。第二服务节点可以将获取到的第二心跳信息中的第一服务节点的节点负载量存储下来。这样第一服务节点和第二服务节点之间就可以相互知道对方的节点负载量了。当后续,第一服务节点获取到管理客户端发送的第二列表创建请求,并且第一服务节点检测到自己的节点负载量要大于第一服务节点的节点负载量时,第一服务节点可以将获取到的第二列表创建请求发送给第二服务节点,让第二服务节点来创建这个新的数据存储列表,即让第二服务节点根据第二列表创建请求创建第二数据存储列表。
请参见图4,是本申请提供的一种数据交互的场景示意图。如图4所示,假设服务节点集群中包括服务节点1、服务节点2和服务节点3,服务节点1、服务节点2和服务节点3之间可以定期相互发送心跳信息(例如每隔10分钟相互发送一次心跳信息),该心跳信息中包括每个服务节点自己的节点负载量(即图4中的节点负载)。例如,服务节点1向服务器2和服务节点发送的心跳信息中包括服务节点1的节点负载量,服务节点2向服务节点1和服务节点3发送的心跳信息中包括服务节点2的节点负载量,服务节点3向服务节点1和服务节点2发送的心跳信息中包括服务节点3的节点负载量。每个服务节点可以将获取到的心跳信息中的其他服务节点的节点负载量存储下来。通过服务节点1、服务节点2和服务节点3之间相互定期发送心跳信息,可以使得服务节点集群中的每个服务节点均知道其他服务节点的节点负载量。
再举个例子,请参见图5,是本申请提供的一种数据添加的场景示意图。如图5所示,服务节点集群中包括服务节点100e、服务节点106e和服务节点110e。其中,每个服务节点中均包括两个元数据服务器,该两个元数据服务器包括主服务器和备用服务器。其中,通常是使用服务节点中的主服务器来执行业务事项的处理,当服务节点中的主服务器发生异常情况,例如主服务器宕机坏掉了,则可以自动调用服务节点中的备用服务器来接替主服务器的工作。如图5所示,服务节点100e中包括主服务器101e和备用服务器102e,服务节点106e中包括主服务器105e和备用服务器107e,服务节点110e中包括主服务器108e和备用服务器109e。如图5所示,假设现在服务节点100e中的节点负载量为一个单位的负载103e,服务节点106e中的负载为1个单位的负载104e,服务节点110e中的负载为0,即没有负载。其中,一个单位的负载中的“单位”可以根据实际应用场景自行设置,该单位只是用来衡量服务节点中的负载量的单位。举个例子,该单位可以指,某个服务节点在1分钟内被访问了10次,就该服务节点的节点负载量对应于一个单位的负载,那么,如果某个服务节点在1分钟内被访问了100次,则该个服务节点的节点负载量对应于10个单位的负载。则可以判定服务节点集群中服务节点110e的负载最低,因此,当生成了一个新的子树(即有新的数据存储列表需要创建时)时,可以让服务节点集群中节点负载量最小的服务节点来创建这个新的数据存储列表。此处,由上可知,节点负载量最小的服务节点为服务节点110e。因此可以让服务节点110e来创建这个新的数据存储列表。由图2可知,当服务节点110e创建好此新的数据存储列表之后,服务节点110e中的节点负载量即是由该新的数据存储列表所带来的负载111e。
当第一服务节点已经创建好第一数据存储列表之后,用户客户端可以通过挂载的操作从第一服务节点处获取到第一数据存储列表。具体为:用户客户端具有转发器的地址,该转发器可以理解为是上述服务节点集群所构成的存储系统的入口。在用户客户端还未与服务节点之间建立连接之前,只会向用户客户端公开转发器的地址,而不会向用户客户端公开服务节点的地址,保证了服务节点集群中的服务节点的安全性。因此,用户客户端可以向转发器发送挂载指令,该挂载指令是用户客户端用于获取第一数据存储列表的指令。转发器可以将该挂载指令随机发送给服务节点集群中的任意一个服务节点。需要进行说明的是,服务节点集群中的各个服务节点之间也是相互知道其他服务节点都创建了哪一个用户客户端对应的数据存储列表。因此,获取到上述挂载指令的服务节点知道是第一服务节点创建了第一数据存储列表,因此,获取到挂载指令的服务节点可以将该挂载指令发送给第一服务节点(也有可能就是第一服务节点获取到了转发器发送的挂载指令)。第一服务节点在获取到挂载指令(该挂载指令中可以包括用户客户端的客户端地址)之后,可以将自己的节点地址以及第一数据存储列表的根目录信息通过挂载指令中的客户端地址发送给对应的用户客户端。用户客户端可以通过获取到的第一服务节点的节点地址向第一服务节点发送连接请求,该连接请求中也可以包括用户客户端的客户端地址。第一服务节点接收到连接请求之后,对连接请求中的客户端地址进行验证,即验证连接请求中所携带的客户端地址是否具备针对第一数据存储列表的访问请求。若验证成功,则第一服务节点可以确认建立与对应的用户客户端之间的连接,也就是表明了用户客户端成功向第一服务节点获取到的针对第一数据存储列表的访问权限。因此,后续,用户客户端可以直接向已经建立连接的第一服务节点发起针对第一数据存储列表的访问请求,该访问请求是用户客户端通过所获取到的第一数据存储列表的根目录信息(即第一数据存储列表的根节点)所发起的。该访问请求可以指上述用户客户端向第一服务节点发送的数据写入请求。
具体的,该数据写入请求可以是用户客户端用于请求在第一数据存储列表中添加子文件夹的请求,还可以是用户客户端请求在第一数据存储列表中添加文件的请求。用户客户端可以响应用户在第一数据存储列表中的数据添加操作,获取用户录入的目标数据(该目标数据可以是用户想要在第一数据存储列表中添加的子文件夹的名称,也可以是用户想要在第一数据存储列表中添加的文件)。用户客户端可以根据该目标数据生成上述数据写入请求,该数据写入请求中携带目标数据。用户客户端可以将该数据写入请求发送给创建第一数据存储列表的第一服务节点。第一服务节点在获取到该数据写入请求时,可以从该数据写入请求中获取到目标数据。即用户客户端在发起针对第一数据存储列表的访问请求时,都是向创建第一数据存储列表的第一服务节点发起的,而无需在每次发起针对第一数据存储列表的访问请求时,都要在服务节点集群中重新选择一个服务节点来执行,保持了针对第一数据存储列表的访问局部性,减少了服务节点集群中各个服务节点之间的数据交互,同时减少了对网络带宽的消耗。
步骤S102,根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;
具体的,第一服务节点可以生成上述目标数据对应的目标元数据,并将该目标元数据添加至第一数据存储列表中。可以将第一服务节点在第一数据存储列表中添加目标元数据理解为在第一数据存储列表中添加目标数据的数据命名。即第一服务节点只维护第一数据存储列表这一个列表信息,而不会存储第一数据存储列表中所包含的实质的数据(例如不会存储目标数据)。若上述目标数据为用户想要在第一数据存储列表中添加的文件,则第一服务节点可以在将目标元数据添加至数据存储列表之后,将目标数据发送至数据存储节点(可以是上述图2对应的实施例中的存储节点)。数据存储节点可以存储获取到的目标数据。之后,第一服务节点就可以将目标数据丢弃,即将目标数据删除。
后续,用户客户端可以响应用户针对目标数据的访问请求,生成针对目标数据的数据访问请求。用户客户端可以将该数据访问请求发送给第一服务节点,第一服务节点在接收到该数据访问请求之后,可以将目标数据对应的目标元数据发送给用户客户端。之后,用户客户端可以通过获取到的目标数据对应的目标元数据向数据存储节点获取到目标数据。可以理解为目标元数据包含目标数据在数据存储节点中的存储路径信息,因此,数据存储节点可以通过目标数据对应的目标元数据获取到目标数据。数据存储节点可以将获取到的目标数据发送给用户客户端,用户客户端可以在客户端界面中显示目标数据的具体内容,以供用户查看。
其中,第一服务节点可以将所创建的第一数据存储列表也发送至数据存储节点进行存储。后续,每当第一服务节点在数据存储列表中添加新的元数据时,第一服务节点都可以将新添加的元数据发送至数据存储节点进行存储。可以理解的是,第一服务节点中所存储的第一数据存储列表为临时动态缓存的列表,当第一服务节点断电时,第一服务节点中的第一数据存储列表就会被删除,而在数据存储节点中所存储的第一数据存储列表则为永久存储的列表。因此,当后续第一服务节点断电时,第一服务节点可以向数据存储节点重新获取到第一数据存储列表。可以理解为,第一服务节点可以将第一数据存储列表发送至数据存储列表进行备份存储。
更多的,还可以通过对服务节点之间进行数据迁移(即数据存储列表的迁移)达到负载均衡的目的,具体请参见下述:
请参见图6,是本申请提供的另一种数据添加的场景示意图。如图6所示,假设服务节点集群中包括服务节点100f、服务节点106f和服务节点110f。服务节点100f中包括主服务器101f(主要使用的元数据服务器)和备用服务器102f(当主服务器101f出故障时,可以接管主服务器101f的功能),服务节点106f中包括主服务器105f和备用服务器107f,服务节点110f中包括主服务器108f和备用服务器109f。由图6可知,服务节点100f中包括2个单位的负载(一个小黑点代表一个单位的负载),可以将服务节点100f的节点负载量记为2。服务节点106f中包括3个单位的负载,可以将服务节点106f的节点负载量记为3。服务节点110f中包括2个单位的负载,可以讲服务节点110f的节点负载量记为2。当有一个新的子树需要添加(即当有一个新的数据存储列表需要创建时)时,可以找到服务节点集群中节点负载量最小的服务节点来创建,此处,节点负载量最小的服务节点为服务节点100f和服务节点110f。由于服务节点100f和服务节点110f的节点负载量相同,因此,可以在服务节点100f和服务节点110f中任意选择一个服务节点来创建新的数据存储列表,假设此处选择服务节点100f来创建这个新的数据存储列表。因此,创建这个新的数据存储列表之后,服务节点100f中的节点负载量就由2个单位的负载变为3个单位的负载。其中,服务节点中的节点负载通常是对服务节点进行访问所带来的(例如用户客户端对服务节点中的数据存储列表发起的访问),当上述服务节点106f中的3个单位的负载,是由于在某个时间段内对服务节点106f进行了频繁访问而引起的,即通常情况下,服务节点106f的节点负载量达不到3个单位的负载,而在这个时间段内服务节点106f中的节点负载量突增到3。当这个时间段过去之后,对服务节点106f的访问热度逐渐降低,服务节点106f的节点负载量也降下去,逐渐趋于平稳,例如降低到1,此时服务节点100f与服务节点106f之间的差异就变大了,长期这样,会使得服务节点集群中的各个服务节点之间的负载非常不均衡。因此,需要使服务节点集群中的各个服务节点之间进行数据迁移,即将某个服务节点中的数据存储列表迁移到另一个服务节点中。
请参见图7,是本申请的提供的一种数据迁移的场景示意图。图7对应的实施例描述的是,在图6中服务节点100f创建了新的数据存储列表节点负载量达到3,且服务节点106f的访问热度降低节点负载量从3变为1之后,如何在服务节点100f、服务节点106f和服务节点110f之间进行数据迁移(子树均衡,也就是对子树进行迁移)。即图7对应的实施例描述的是在图6对应的实施例完成之后服务节点100f、服务节点106f和服务节点110f之间可以进行数据迁移(就迁移数据存储列表)。其中,可以在管理客户端提供一个迁移按钮,并且在管理客户端提供一个可视化的曲线图(也可以是折线图或者点状图)。该可视化的曲线图为针对服务节点集群中的服务节点的节点负载量的曲线图,即该曲线图中包括每个服务节点的节点负载量。该曲线图是实时动态变化的,即根据服务节点集群中的每个服务节点的节点负载量的变化而变化。管理员可以通过该曲线图快速查看到服务节点集群中的各个服务节点对应的节点负载量、各个服务节点之间的节点负载量的差距以及各个服务节点的节点负载量的实时变化。当管理员发现服务节点集群中的各个服务节点之间的节点负载量的差距较大,则管理员可以点击上述迁移按钮,触发服务节点集群中的各个服务节点进行数据迁移。如图7所示,服务节点100f可以响应管理员针对迁移按钮的点击操作,由于服务节点100f与服务节点106f之间的节点负载量之间的差距较大,因此服务节点100f可以将自己所创建的某个数据存储列表迁移到服务节点106f。假设迁移的数据存储列表对应的负载为1个单位的负载,因此,进行数据迁移之后服务节点106f的节点负载量就从1变为了2。通过上述子树均衡操作,即使得服务节点集群中的服务节点100f(节点负载量为2)、服务节点106f(节点负载量为2)和服务节点110f(节点负载量为2)之间的节点负载量达到均衡。由于服务节点之间的数据迁移是需要触发而不是实时动态进行的,因此,不会使得服务节点之间持续进行大量数据的迁移,从而引起服务节点集群的动荡。
更多的,服务节点之间进行数据迁移的过程可以是:第一服务节点可以获取数据迁移指令,根据数据迁移指令获取第一服务节点的节点负载量和第二服务节点的节点负载量所对应的节点平均负载量;根据第一服务节点的节点负载量与节点平均负载量,得到超量负载量;根据节点平均负载量以及负载量衡量比例,确定衡量负载量;当比对出第一服务节点的节点负载量大于或者等于负载量阈值,且超量负载量大于或者等于衡量负载量时,将第一数据存储列表迁移至第二服务节点:
此处,假设服务节点集群中就只有第一服务节点和第二服务节点。其中,上述第一服务节点获取到的数据迁移指令可以是管理客户端生成并向服务节点集群所发送的,例如,管理客户端可以响应管理员针对上述迁移按钮的点击操作,生成数据迁移指令,管理客户端可以将生成的数据迁移指令发送到服务节点集群,可以理解为服务节点集群中的每个服务节点都会接收到该数据迁移指令。可选的,该数据迁移指令还可以是当第一服务节点检测到第一服务节点的节点负载量与第二服务节点的节点负载量之间的节点负载量差值大于负载量差值阈值时,由第一服务节点自己所生成的。当第一服务节点获取到该数据迁移指令时,第一服务节点可以获取服务节点集群中的所有服务节点(此处包括第一服务节点和第二服务节点)的节点负载量对应的平均值(该平均值即是上述节点平均负载量)。第一服务节点还可以计算出第一服务节点的节点负载量超过节点平均负载量的负载量是多少(即计算超量负载量,也就是用第一服务节点的节点负载量减去节点平均负载量所得到的负载量)。举个例子,当第一服务节点的节点负载量为40,平均负载量为20,那么超量负载量就为40减去20得到的20。可以设置负载量衡量比例,可以将节点平均负载量与负载量衡量比例的乘积作为衡量负载量。举个例子,若平均负载量为60,负载量衡量比例为50%,则衡量负载量就为60乘以50%得到30。此外,还可以设置负载量阈值,当第一服务节点的节点负载量大于或者等于该负载量阈值,并且上述超量负载量大于或者等于衡量负载量时,第一服务节点就可以向其他服务节点迁移数据存储列表,此处假设第一服务节点向第二服务节点迁移自己所创建的第一数据存储列表。换句话说,当服务节点集群中某个服务节点的节点负载量达到节点负载量阈值,并且该服务节点的节点负载量超过平均负载量的部分达到该服务节点集群中所有服务节点对应的平均负载量与负载量衡量比例之间的乘积,则可以将该服务节点中的数据存储列表迁移至服务节点集群中的其他服务节点。此处,第一服务节点可以将第一数据存储列表迁移至第二数据存储列表。
其中,第一服务节点将第一数据存储列表迁移至数据存储列表的过程可以是:将第一数据存储列表对应的列表框架信息发送至第二服务节点,以使第二服务节点通过列表框架信息创建初始数据存储列表,生成针对初始数据存储列表的第二创建成功信息;获取第二服务节点发送的第二创建成功信息,根据第二创建成功信息将第一数据存储列表中的列表详情信息发送至第二服务节点,以使第二服务节点将列表详情信息添加至初始数据存储列表中,得到第三数据存储列表,向用户客户端发送第二服务节点的节点地址;第二服务节点的节点地址用于用户客户端向第二服务节点获取针对第三数据存储列表的访问权限;第三数据存储列表与第一数据存储列表相同;删除第一数据存储列表:
首先,第一服务节点可以将第一数据存储列表的列表框架信息发送至第二服务节点,该列表框架信息可以指第一数据存储列表的根目录和子目录之间的层级关系信息,列表框架信息不包括第一数据存储列表中的其他元数据。第二服务节点可以根据获取到的列表框架信息创建初始数据存储列表,该初始数据存储列表的列表框架(即根目录与子目录之间的层级关系)与第一数据存储列表的列表框架相同。在第二服务节点对初始数据存储列表创建完成之后,第二服务节点可以生成第二创建成功信息,该第二创建成功信息用于提示第一服务节点初始数据存储列表已经创建完成。第二服务节点可以将该第二创建成功信息发送至第一服务节点。第一服务节点获取到该第二创建成功信息之后,可以向第二服务节点发送第一数据存储列表中的列表详情信息。该列表详情信息可以包括用户在第一数据存储列表中所添加的数据对应的元数据,该列表详情信息可以理解为是第一数据存储列表中所包含的文件的信息。第二服务节点可以将获取到的列表详情信息添加到所生成的初始数据存储列表中,得到第三数据存储列表。第二服务节点所得到的第三数据存储列表与第一服务节点中的第一数据存储列表相同。第一服务节点在向第二服务节点发送上述列表详情信息之后,就可以将第一数据存储列表删除。通过上述过程即实现了第一服务节点将第一数据存储列表迁移至第二服务节点,即可以理解为在第二服务节点中重新创建得到了与第一数据存储列表相同的第三数据存储列表之后,第一服务节点删除了第一数据存储列表。在第二服务节点创建好第三数据存储列表之后,第二服务节点可以将自己的节点地址发送给用户客户端,因为用户客户端所持有的第一数据存储列表已经从第一服务节点迁移至了第二服务节点,因此,用户客户端需要重新建立与第二服务节点之间的连接,即向第二服务节点获取针对第三数据存储列表的访问权限。用户客户端在接收到第二服务节点的节点地址之后,可以向第二服务节点发送一个连接请求,该连接请求中携带有用户客户端的客户端地址,第二服务节点可以对连接请求中所携带的用户客户端的客户端地址进行验证当验证出该用户客户端地址是对第四数据存储列表具有访问权限的客户端地址,则确认建立与用户客户端之间的连接。用户客户端之后就可以向第二服务节点发起针对第四数据存储列表的访问请求。上述用户客户端重新建立与第二服务节点之间的连接的过程是在后台完成的,即用户感知不到上述这个列表迁移的过程。
更多的,假设一个服务节点集群中包括多个服务节点,该多个服务节点可以是第一服务节点、第二服务节点、第三服务节点、第四服务节点和第五服务节点,当管理员通过管理客户端触发了针对服务节点集群中服务节点之间的数据迁移(即列表迁移)时,可以有以下情况:若第一服务节点中创建了用户客户端1对应的数据存储列表、用户客户端2对应的数据存储列表和用户客户端3对应的数据存储列表,那么,第一服务节点中可以包括用户客户端1对应的负载(由对用户客户端1对应的数据存储列表的访问产生)为10、用户客户端2对应的负载为20(由对用户客户端2对应的数据存储列表的访问产生)和用户客户端3对应的负载为30(由对用户客户端3对应的数据存储列表的访问产生)。由于一个服务节点的节点负载量等于其所创建的所有用户客户端对应的负载之和,那么可以得到第一服务节点的节点负载量等于10加上20再加上30等于60。若第二服务节点的节点负载量为20,第三服务节点的节点负载量为30,那么该个服务节点集群的节点平均负载量为30。用第一服务节点的节点负载量60减去节点平均负载量30,得到超量负载量为30。假设负载量衡量比例为20%,则衡量负载量为节点平均负载量30与负载量衡量比例10%之间的乘积为6。假设负载量阈值为50,则可以判定出第一服务节点的节点负载量60大于负载量阈值50,并且超量负载量30大于衡量负载量6,则判定第一服务节点的节点负载量达到过载,需要迁移部分列表至其他服务节点。此处,由于第一服务节点对应的超量负载量为30,因此,第一服务节点可以将自己所创建的数据存储列表中数据存储列表对应的负载与超量负载量最接近的数据存储列表,迁移至其他服务节点。此处,第一服务节点可以将负载与超量负载量30最接近的用户客户端3对应的数据存储列表迁移至其他服务节点,例如第一服务节点可以将用户客户端3对应的数据存储列表迁移至第一服务节点。
本申请第一服务节点可以向用户客户端提供针对第一数据存储列表的访问权限;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;获取用户客户端通过针对第一数据存储列表的访问权限所发送的数据写入请求;数据写入请求携带目标数据;根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。由此可见,本申请提出的方法,当在第一服务节点中创建了用户客户端所对应的数据存储列表之后,在用户客户端需要在所对应的数据存储列表中导入目标数据时,用户客户端依旧是向创建其数据存储列表的第一服务节点发送携带目标数据的数据写入请求,进而通过第一服务节点将目标数据对应的目标元数据导入至数据存储列表,而无需再重新选择另外的服务节点来导入目标数据。因此,保证了用户客户端针对数据存储列表的访问局部性(即控制到对第一服务节点的访问,上述在数据存储列表中请求导入目标数据的过程即是访问数据存储列表的过程),减少了对网络带宽的消耗。
更多的,当第一服务节点检测到自己处于节点异常状态(即出现故障)时,第一服务节点可以将第一服务节点中的第一数据存储列表导入邻居服务节点(由于服务节点集群中的服务节点是链式连接关系,因此每个服务节点均可以有两个相邻的服务节点,该邻居服务节点可以是与第一服务节点相邻的两个服务节点之中的任意一个服务节点),可选的,邻居服务节点获取到的第一数据存储列表还可以是在存储第一数据存储列表的数据存储节点处所获取到的。邻居服务节点可以存储第一数据存储列表,并向用户客户端发送自己的节点地址。用户客户端可以根据接收到的邻居服务节点的节点地址建立与邻居服务节点之间的连接关系,后续,用户客户端可以向邻居服务节点发起针对第一数据存储列表的访问请求,通过此过程,即实现了当第一服务节点出故障(即处于节点异常状态,例如宕机)时,由邻居服务节点来接替第一服务节点的工作。举个例子,请参见图8,是本申请提供的一种数据处理的场景示意图。如图8所示,假设服务节点集群中包括服务节点100h、服务节点101h和服务节点102h,当服务节点100h出故障不能用了,此时可以由该服务节点100h的前一个服务节点101h来暂时接管服务节点100h的工作(即图8中的“服务接管1”)。即若服务节点100h坏掉了,则可以将服务节点100h中所创建并存储的数据存储列表导入服务节点101h。此处假如服务节点100h中包括第一数据存储列表,则导入服务节点101h的即为第一数据存储列表。若第一数据存储列表为用户客户端所持有的数据存储列表,即第一数据存储列表是通过用户客户端的客户端地址所生成的,该客户端地址可以向第一数据存储列表发起访问请求。由于第一数据存储列表已经从服务节点100h中导入到服务节点101h中了,因此,需要用户客户端重新建立与服务节点101h之间的连接,即用户客户端需要向服务节点101h重新获取针对第一数据存储列表的访问权限。具体为:服务节点101h在导入第一数据存储列表之后,可以向用户客户端发送自己的节点地址。用户客户端可以根据接收到的服务节点101h的节点地址向服务节点101h发起连接请求,该连接请求中携带用户客户端的客户端地址。服务节点101h可以对连接请求中的客户端地址进行验证,当验证出连接请求中的客户端地址即是第一数据存储列表对应的客户端地址(即用于生成第一数据存储列表的客户端地址)时,服务节点101h可以确认与用户客户端之间连接,之后,用户客户端可以向服务节点101h发起针对第一数据存储列表的访问请求。之后,当重新在服务节点100h的位置处重新接入了一个新的服务节点103h时,只需要对服务节点101h进行手动重启,即可将服务节点101h暂时接管的服务(即第一数据存储列表)添加到新的服务节点103h中(即图8中的服务接管2)。之后,又需要用户客户端建立与服务节点103h之间的连接关系,即需要用户客户端重新向服务节点103h获取针对第一数据存储列表的访问权限,这个过程与用户客户端向服务节点101h获取针对第一数据存储列表的访问权限的过程相同,此处不再赘述。之后,用户客户端就可以向服务节点103h发起针对第一数据存储列表的访问权限了。
更多的,当需要在服务节点集群中添加新的服务节点(即扩容)时,可以在服务节点集群中相互连接的任意两个服务节点之间添加这个新的服务节点。例如可以在第一服务节点与其邻居服务节点之间添加这个新的服务节点,这个新的服务节点假设是目标服务节点。第一服务节点可以删除与邻居服务节点之间的链式连接关系(即断开第一服务节点与其邻居服务节点之间的连接,可以在第一服务节点的链接信息中删除与邻居服务节点之间的链式链接关系),并添加与目标服务节点之间的链式连接关系(即建立第一服务节点与目标服务节点之间的连接,可以在第一服务节点的链接信息中添加与目标服务节点之间的链式链接关系)。同时邻居服务节点中也可以用相同的方式添加与目标服务节点之间的链式连接关系。同时,目标服务节点中也可以添加与第一服务节点和上述邻居服务节点之间的链式链接关系。通过上述过程,即实现了在第一服务节点和邻居服务节点之间新增了目标服务节点。举个例子,请参见图9,是本申请提供的一种新增服务节点的场景示意图。如图9所示,假设服务节点集群q1中包括服务节点100j、服务节点101j和服务节点102j。服务节点100j、服务节点101j和服务节点102j之间为双向的链式连接关系,可以将该链式连接关系理解为服务节点100j、服务节点101j和服务节点102j之间是串联的,每个服务节点均与服务节点集群q1中的另外两个服务节点连接(即相邻),服务节点100j、服务节点101j和服务节点102j相互连接形成一个圈。当需要在服务节点集群q1中添加新的服务节点时,可以在服务节点集群q1中相连的任意两个服务节点之间添加新的服务节点。例如,可以在服务节点100j与服务节点101j之间添加新的服务节点,也可以在服务节点100j与服务节点102j之间添加新的服务节点,还可以在服务节点101j与服务节点102j之间添加新的服务节点。此处,假设是在服务节点100j和服务节点102j之间添加新的服务节点103j,则可以修改服务节点100j的链接信息和服务节点102j的链接信息,即在服务节点100j的链接信息中将服务节点102j的节点信息修改为服务节点103j的节点信息,并在服务节点102j的链接信息中将服务节点100j的节点信息修改为服务节点103j的节点信息。其中,一个服务节点的链接信息记录了该个服务节点与其他哪个服务节点具备连接关系(即相连)。此外,还需要在服务节点103j中的链接信息中添加服务节点100j的节点信息和服务节点102j的节点信息。通过上述过程,即完成在服务节点集群q1中添加新的服务节点103j,得到新的服务节点集群q2。服务节点集群q2中的4个服务节点之间也是通过双向链式连接形成一个圈。在本申请所提供的方法中,由于服务节点集群中的服务节点之间为双向链式连接(即所有的服务节点构成一个双向链表),因此,当需要在服务节点集群中添加新的服务节点时,只需要改动新添加的服务节点的前后两个服务节点(即相邻的两个服务节点)的链接信息(即配置信息),而不会影响服务节点集群中的服务节点原有的业务。随着时间的流逝,分布式存储系统(即服务节点集群构成的分布式存储系统,数据在服务节点集群中是由各个服务节点进行分布存储和提供访问服务)承载的业务量会越来越多,对服务节点集群进行扩容是必要操作,通过上述可以知道,通过本申请提供的方法,可以提高针对服务节点集群扩容的便捷性。
请参见图10,是本申请提供的另一种数据处理方法的流程示意图。如图10所示,该方法可以包括:
步骤S201,创建共享;
具体的,管理客户端可以响应管理员的子树生成操作,生成一个子树,并将生成的子树发送至服务节点集群中任意一个服务节点。其中,生成子树即是生成一个新的需要创建的数据存储列表,也就是创建共享。例如,管理客户端可以获取到管理员录入的列表名称,并响应针对数据存储列表的创建操作,根据该列表名称生成一个子树。举个例子,可以在管理客户端提供一个列表创建菜单,管理员可以在该列表创建菜单的页面中输入需要创建的数据存储列表的列表名称。在该列表创建菜单中还包括一个确认按钮,当管理员在列表创建菜单的页面中录入列表名称之后,管理客户端可以响应管理员针对该确认按钮的点击操作,生成一个子树。可以将生成子树理解为是生成一个列表创建请求,该列表创建请求中携带该子树对应的列表名称。
步骤S202,服务节点之间找到最小负载的服务节点创建;
具体的,由于服务节点会定期相互发送心跳信息,因此,服务节点之间相互知道对方的节点负载量是多少。因此,假设接收到上述列表创建请求的服务节点为服务节点a,服务节点a可以将该列表创建请求发送给其所记录的其他每个服务节点的节点负载量中节点负载量最小的服务节点。假设,节点负载量最小的服务节点为服务节点b,即服务节点a将列表创建请求发送给了服务节点b。服务节点b可以根据该列表创建请求中的列表名称创建一个数据存储列表。
步骤S203,创建成功;
具体的,当服务节点b成功创建了数据存储列表之后,服务节点b可以生成针对所创建的数据存储列表的列表创建成功的提示信息,服务节点b可以将该列表创建成功的提示信息发送给管理客户端。该提示信息中可以携带服务节点b的节点地址。
步骤S204,设置权限;
具体的,当管理客户端接收到该列表创建成功的提示信息之后,管理客户端可以获取管理员录入的权限设置信息,该权限设置信息中包括可以对服务节点b所创建的数据存储列表进行访问的用户客户端的客户端地址,换句话说,只有该权限设置信息中的客户端地址所对应的客户端才能发起针对上述服务节点b所创建的数据存储列表的访问请求。管理客户端可以将根据提示信息中的服务节点b的节点地址将该权限设置信息发送给服务节点b。
步骤S205,权限设置;
具体的,服务节点b可以根据该权限设置信息中的客户端地址对所生成的数据存储列表的访问权限进行设置,设置之后,后续只有该客户端地址对应的用户客户端能够访问对应的数据存储列表。
步骤S206,权限设置成功;
具体的,当服务节点b通过上述权限设置信息成功对所生成的数据存储列表的访问权限进行设置之后,服务节点b可以生成设置成功的提示信息。服务节点b可以将给设置成功的提示信息发送给管理客户端。至此,创建一个新的数据存储列表的过程完成。
步骤S207,挂载;
具体的,管理员可以将转发器的地址告知用户,用户可以通过用户客户端向转发器发送挂载指令。其中,挂载指令为用户客户端用于获取对应的数据存储列表的指令,在用户客户端第一次获取对应的数据存储列表时,才需要向转发器发送挂载指令。其中,转发器对应的地址为存储系统(即服务节点集群所构成的系统)的一个网络地址,每个存储系统都有一个入口IP(即入口的地址),因此,可以将转发器理解为存储系统的入口。
步骤S208,挂载;
具体的,上述挂载指令可以携带用户客户端的客户端地址,转发器可以将上述挂载指令转发给服务节点集群中的任意一个服务节点,假设发送给了服务节点c。其中,服务节点集群中的每个服务节点之间也是相互知道哪一个服务节点创建了哪一个用户客户端对应的数据存储列表的。可以理解为,每个服务节点中都记录了其他服务节点与其所创建的数据存储列表所对应的用户客户端的客户端地址之间的映射关系。因此,服务节点c可以将接收到的挂载指令发送给服务节点b。
步骤S209,返回第一服务节点的节点地址和根目录信息;
具体的,服务节点b获取到挂载指令之后,可以向用户客户端发送自己的节点地址和所创建的该用户客户端对应的数据存储列表的根目录信息。用户客户端在获取到服务节点b对应的节点地址之后,可以向该服务节点b对应的节点地址发送连接请求,该连接请求中携带用户客户端的客户端地址。服务节点b获取到该连接请求之后,就可以对该连接请求中的客户端地址进行验证,即验证该用户客户端地址是否为对所创建的数据存储列表具有访问权限的客户端地址。当对连接请求中的客户端地址验证成功之后,服务节点b即可确认与该用户客户端之间建立连接关系(可以理解为用户客户端成功向服务节点b获取到了针对所对应的数据存储列表的访问权限)。服务节点b与用户客户端之间建立连接关系之后,用户客户端就可以通过获取到的数据存储列表的根目录信息向服务节点b发起针对所对应的数据存储列表的访问请求,并访问该数据存储列表中所包含的数据了。
本申请第一服务节点可以向用户客户端提供针对第一数据存储列表的访问权限;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;获取用户客户端通过针对第一数据存储列表的访问权限所发送的数据写入请求;数据写入请求携带目标数据;根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。由此可见,本申请提出的方法,当在第一服务节点中创建了用户客户端所对应的数据存储列表之后,在用户客户端需要在所对应的数据存储列表中导入目标数据时,用户客户端依旧是向创建其数据存储列表的第一服务节点发送携带目标数据的数据写入请求,进而通过第一服务节点将目标数据对应的目标元数据导入至数据存储列表,而无需再重新选择另外的服务节点来导入目标数据。因此,保证了用户客户端针对数据存储列表的访问局部性(即控制到对第一服务节点的访问,上述在数据存储列表中请求导入目标数据的过程即是访问数据存储列表的过程),减少了对网络带宽的消耗。
请参见图11,是本申请提供的一种数据处理装置的结构示意图。如图11所示,该数据处理装置可以执行上述图3对应的实施例中所描述的数据处理方法,该数据处理装置1可以包括:第一请求获取模块101和元数据添加模块102;
第一请求获取模块101,用于获取用户客户端发送的针对第一数据存储列表的数据写入请求;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;数据写入请求为用户客户端根据对第一数据存储列表的访问权限所生成的请求;用户客户端对第一数据存储列表的访问权限,是由用户客户端从创建第一数据存储列表的第一服务节点中获取到的;数据写入请求携带目标数据;
元数据添加模块102,用于根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。
其中,第一请求获取模块101和元数据添加模块102的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S102,这里不再进行赘述。
其中,数据处理装置1,还包括:第二请求获取模块103、创建模块104、第二地址发送模块105和权限设置模块106;
第二请求获取模块103,用于获取第一列表创建请求;第一列表创建请求携带列表名称信息;第一列表创建请求为管理客户端所生成的;
创建模块104,用于根据列表名称信息,创建过渡数据存储列表,生成针对过渡数据存储列表的第一创建成功信息;
第二地址发送模块105,用于发送第一创建成功信息至管理客户端,以使管理客户端根据第一创建成功信息获取用户客户端的客户端地址;
权限设置模块106,用于根据客户端地址对过渡数据存储列表的访问权限进行设置,得到第一数据存储列表;客户端地址具有针对第一数据存储列表的访问权限。
其中,第二请求获取模块103、创建模块104、第二地址发送模块105和权限设置模块106的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,数据处理装置1,还包括:第一挂载模块107和第二挂载模块108;
第一挂载模块107,用于获取转发器发送的挂载指令;挂载指令为用户客户端生成的用于获取第一数据存储列表的指令;挂载指令是由用户客户端发送给转发器的;挂载指令为用户客户端初次生成的针对第一数据存储列表的操作指令;
第二挂载模块108,用于根据挂载指令,将第一服务节点的节点地址以及第一数据存储列表对应的根目录信息,发送至用户客户端,以使用户客户端根据第一服务节点的节点地址向第一服务节点获取针对第一数据存储列表的访问权限;
则,第一请求获取模块101,还用于:
获取用户客户端发送的数据写入请求;数据写入请求是由用户客户端根据根目录信息向第一服务节点所发起的请求。
其中,第一挂载模块107和第二挂载模块108的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第二服务节点中存储有第一服务节点的节点负载量;第二服务节点持有管理客户端所发送的第一列表创建请求;数据处理装置1,还用于:
当第一服务节点的节点负载量小于第二服务节点的节点负载量时,获取第二服务节点发送的第一列表创建请求。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;数据处理装置1,还包括:心跳获取模块109和请求发送模块110;
心跳获取模块109,用于获取第二服务节点发送的第一心跳信息,存储第一心跳信息中所携带的第二服务节点的节点负载量;
请求发送模块110,用于当第一服务节点获取到第二列表创建请求,且检测到所存储的第二服务节点的节点负载量小于第一服务节点的节点负载量时,将第二列表创建请求发送至第二服务节点,以使第二服务节点根据第二列表创建请求创建第二数据存储列表。
其中,心跳获取模块109和请求发送模块110的具体功能实现方式请参见图3对应的实施例中的步骤S101,这里不再进行赘述。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;数据处理装置1,还用于:
发送第二心跳信息至第二服务节点,以使第二服务节点存储第二心跳信息所携带的第一服务节点的节点负载量。
其中,第一服务节点所在的服务节点集群中还包括第二服务节点;第一服务节点中存储有第二服务节点的节点负载量;数据处理装置1,还包括:指令获取模块111、超量获取模块112、衡量获取模块113和迁移模块114;
指令获取模块111,用于获取数据迁移指令,根据数据迁移指令获取第一服务节点的节点负载量和第二服务节点的节点负载量所对应的节点平均负载量;
超量获取模块112,用于根据第一服务节点的节点负载量与节点平均负载量,得到超量负载量;
衡量获取模块113,用于根据节点平均负载量以及负载量衡量比例,确定衡量负载量;
迁移模块114,用于当比对出第一服务节点的节点负载量大于或者等于负载量阈值,且超量负载量大于或者等于衡量负载量时,将第一数据存储列表迁移至第二服务节点。
其中,指令获取模块111、超量获取模块112、衡量获取模块113和迁移模块114的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,指令获取模块111,包括:差值获取单元1111和指令生成单元1112;
差值获取单元1111,用于获取第一服务节点的节点负载量与第二服务节点的节点负载量之间的节点负载量差值;
指令生成单元1112,用于当节点负载量差值大于负载量差值阈值时,生成数据迁移指令。
其中,差值获取单元1111和指令生成单元1112的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,迁移模块114,包括:框架发送单元1141、详情发送单元1142和列表删除单元1143;
框架发送单元1141,用于将第一数据存储列表对应的列表框架信息发送至第二服务节点,以使第二服务节点通过列表框架信息创建初始数据存储列表,生成针对初始数据存储列表的第二创建成功信息;
详情发送单元1142,用于获取第二服务节点发送的第二创建成功信息,根据第二创建成功信息将第一数据存储列表中的列表详情信息发送至第二服务节点,以使第二服务节点将列表详情信息添加至初始数据存储列表中,得到第三数据存储列表,向用户客户端发送第二服务节点的节点地址;第二服务节点的节点地址用于用户客户端向第二服务节点获取针对第三数据存储列表的访问权限;第三数据存储列表与第一数据存储列表相同;
列表删除单元1143,用于删除第一数据存储列表。
其中,框架发送单元1141、详情发送单元1142和列表删除单元1143的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,元数据添加模块102,包括:数据发送单元1021和数据删除单元1022;
数据发送单元1021,用于将目标元数据添加至第一数据存储列表中,将目标元数据对应的目标数据发送至数据存储节点,以使数据存储节点存储目标数据;
数据删除单元1022,用于删除目标数据;
则,数据处理装置1,还包括:访问模块115和数据发送模块116;
访问模块115,用于获取用户客户端发送的针对目标数据的数据访问请求;
数据发送模块116,用于根据数据访问请求将目标数据对应的目标元数据发送至用户客户端,以使用户客户端根据目标元数据向数据存储节点拉取目标数据。
其中,数据发送单元1021和数据删除单元1022的具体功能实现方式请参见图3对应的实施例中的步骤S103,访问模块115和数据发送模块116的具体功能实现方式请参见图3对应的实施例中的步骤S103,这里不再进行赘述。
其中,第一服务节点所在的服务节点集群中包括多个服务节点;多个服务节点之间具备链式连接关系;多个服务节点中的每个服务节点均具有两个相邻的服务节点;数据处理装置1,还用于:
当检测到第一服务节点处于节点异常状态时,将第一服务节点中的第一数据存储列表导入邻居服务节点,以使邻居服务节点存储第一数据存储列表,向用户客户端发送邻居服务节点的节点地址;邻居服务节点的节点地址用于用户客户端向邻居服务节点获取针对第一数据存储列表的访问权限;邻居服务节点为与第一服务节点相邻的两个服务节点中的任意一个服务节点。
其中,数据处理装置1,还用于:
删除与邻居服务节点之间的链式连接关系,添加与目标服务节点之间的链式连接关系;邻居服务节点中也添加有与目标服务节点之间的链式连接关系;目标服务节点为在服务节点集群中新增的服务节点。
本申请第一服务节点可以向用户客户端提供针对第一数据存储列表的访问权限;第一数据存储列表是由第一服务节点所创建的与用户客户端相关联的列表;获取用户客户端通过针对第一数据存储列表的访问权限所发送的数据写入请求;数据写入请求携带目标数据;根据数据写入请求生成目标数据对应的目标元数据,将目标元数据添加至第一数据存储列表中;第一数据存储列表中的目标元数据用于用户客户端通过第一服务节点访问目标数据。由此可见,本申请提出的方法,当在第一服务节点中创建了用户客户端所对应的数据存储列表之后,在用户客户端需要在所对应的数据存储列表中导入目标数据时,用户客户端依旧是向创建其数据存储列表的第一服务节点发送携带目标数据的数据写入请求,进而通过第一服务节点将目标数据对应的目标元数据导入至数据存储列表,而无需再重新选择另外的服务节点来导入目标数据。因此,保证了用户客户端针对数据存储列表的访问局部性(即控制到对第一服务节点的访问,上述在数据存储列表中请求导入目标数据的过程即是访问数据存储列表的过程),减少了对网络带宽的消耗。
请参见图12,是本申请提供的一种计算机设备的结构示意图。如图12所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图12所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图12所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3和图10中任一个所对应实施例中对数据处理方法的描述。应当理解,本申请中所描述的计算机设备1000也可执行前文图11所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3和图10中任一个所对应实施例中对数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖范围。
Claims (14)
1.一种数据处理方法,由第一服务节点所执行,其特征在于,包括:
获取用户客户端发送的针对第一数据存储列表的数据写入请求;所述第一数据存储列表是由所述第一服务节点所创建的与所述用户客户端相关联的列表;所述数据写入请求为所述用户客户端根据对所述第一数据存储列表的访问权限所生成的请求;所述用户客户端对所述第一数据存储列表的访问权限,是由所述用户客户端从创建所述第一数据存储列表的所述第一服务节点中获取到的;所述数据写入请求携带目标数据;
根据所述数据写入请求生成所述目标数据对应的目标元数据,将所述目标元数据添加至所述第一数据存储列表中;所述第一数据存储列表中的所述目标元数据用于所述用户客户端通过所述第一服务节点访问所述目标数据;
所述方法还包括:
获取第一列表创建请求;所述第一列表创建请求携带列表名称信息;所述第一列表创建请求为管理客户端所生成的;
根据所述列表名称信息,创建过渡数据存储列表,生成针对所述过渡数据存储列表的第一创建成功信息;以及,发送所述第一创建成功信息至所述管理客户端,以使所述管理客户端根据所述第一创建成功信息获取所述用户客户端的客户端地址;
根据所述客户端地址对所述过渡数据存储列表的访问权限进行设置,得到所述第一数据存储列表;所述客户端地址具有针对所述第一数据存储列表的访问权限。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述第一服务节点获取转发器发送的挂载指令;所述挂载指令为所述用户客户端生成的用于获取所述第一数据存储列表的指令;所述挂载指令是由所述用户客户端发送给所述转发器的;所述挂载指令为所述用户客户端初次生成的针对所述第一数据存储列表的操作指令;
根据所述挂载指令,将所述第一服务节点的节点地址以及所述第一数据存储列表对应的根目录信息,发送至所述用户客户端,以使所述用户客户端根据所述第一服务节点的节点地址向所述第一服务节点获取针对所述第一数据存储列表的访问权限;
则,所述第一服务节点获取用户客户端发送的针对第一数据存储列表的数据写入请求,包括:
获取所述用户客户端发送的所述数据写入请求;所述数据写入请求是由所述用户客户端根据所述根目录信息向所述第一服务节点所发起的请求。
3.根据权利要求1所述的方法,其特征在于,所述第一服务节点所在的服务节点集群中还包括第二服务节点;所述第二服务节点中存储有所述第一服务节点的节点负载量;所述第二服务节点持有管理客户端所发送的第一列表创建请求;还包括:
当所述第一服务节点的节点负载量小于所述第二服务节点的节点负载量时,获取所述第二服务节点发送的所述第一列表创建请求。
4.根据权利要求3所述的方法,其特征在于,所述第一服务节点所在的服务节点集群中还包括第二服务节点;还包括:
获取所述第二服务节点发送的第一心跳信息,存储所述第一心跳信息中所携带的所述第二服务节点的节点负载量;
当所述第一服务节点获取到第二列表创建请求,且检测到所存储的所述第二服务节点的节点负载量小于所述第一服务节点的节点负载量时,将所述第二列表创建请求发送至所述第二服务节点,以使所述第二服务节点根据所述第二列表创建请求创建第二数据存储列表。
5.根据权利要求3所述的方法,其特征在于,所述第一服务节点所在的服务节点集群中还包括第二服务节点;还包括:
发送第二心跳信息至所述第二服务节点,以使所述第二服务节点存储所述第二心跳信息所携带的所述第一服务节点的节点负载量。
6.根据权利要求1所述的方法,其特征在于,所述第一服务节点所在的服务节点集群中还包括第二服务节点;所述第一服务节点中存储有所述第二服务节点的节点负载量;还包括:
获取数据迁移指令,根据所述数据迁移指令获取所述第一服务节点的节点负载量和第二服务节点的节点负载量所对应的节点平均负载量;
根据所述第一服务节点的节点负载量与所述节点平均负载量,得到超量负载量;
根据所述节点平均负载量以及负载量衡量比例,确定衡量负载量;
当比对出所述第一服务节点的节点负载量大于或者等于负载量阈值,且所述超量负载量大于或者等于所述衡量负载量时,将所述第一数据存储列表迁移至所述第二服务节点。
7.根据权利要求6所述的方法,其特征在于,所述获取数据迁移指令,包括:
获取所述第一服务节点的节点负载量与所述第二服务节点的节点负载量之间的节点负载量差值;
当所述节点负载量差值大于负载量差值阈值时,生成所述数据迁移指令。
8.根据权利要求6所述的方法,其特征在于,所述将所述第一数据存储列表迁移至所述第二服务节点,包括:
将所述第一数据存储列表对应的列表框架信息发送至所述第二服务节点,以使所述第二服务节点通过所述列表框架信息创建初始数据存储列表,生成针对所述初始数据存储列表的第二创建成功信息;
获取所述第二服务节点发送的所述第二创建成功信息,根据所述第二创建成功信息将所述第一数据存储列表中的列表详情信息发送至所述第二服务节点,以使所述第二服务节点将所述列表详情信息添加至所述初始数据存储列表中,得到第三数据存储列表,向所述用户客户端发送所述第二服务节点的节点地址;所述第二服务节点的节点地址用于所述用户客户端向所述第二服务节点获取针对所述第三数据存储列表的访问权限;所述第三数据存储列表与所述第一数据存储列表相同;
删除所述第一数据存储列表。
9.根据权利要求1所述的方法,其特征在于,所述将所述目标元数据添加至所述第一数据存储列表中,包括:
将所述目标元数据添加至所述第一数据存储列表中,将所述目标元数据对应的所述目标数据发送至数据存储节点,以使所述数据存储节点存储所述目标数据;
删除所述目标数据;
则,还包括:
获取所述用户客户端发送的针对所述目标数据的数据访问请求;
根据所述数据访问请求将所述目标数据对应的所述目标元数据发送至所述用户客户端,以使所述用户客户端根据所述目标元数据向所述数据存储节点拉取所述目标数据。
10.根据权利要求1所述的方法,其特征在于,所述第一服务节点所在的服务节点集群中包括多个服务节点;所述多个服务节点之间具备链式连接关系;所述多个服务节点中的每个服务节点均具有两个相邻的服务节点;还包括:
当检测到所述第一服务节点处于节点异常状态时,将所述第一服务节点中的所述第一数据存储列表导入邻居服务节点,以使所述邻居服务节点存储所述第一数据存储列表,向所述用户客户端发送所述邻居服务节点的节点地址;所述邻居服务节点的节点地址用于所述用户客户端向所述邻居服务节点获取针对所述第一数据存储列表的访问权限;所述邻居服务节点为与所述第一服务节点相邻的两个服务节点中的任意一个服务节点。
11.根据权利要求10所述的方法,其特征在于,还包括:
删除与所述邻居服务节点之间的所述链式连接关系,添加与目标服务节点之间的所述链式连接关系;所述邻居服务节点中也添加有与所述目标服务节点之间的所述链式连接关系;所述目标服务节点为在所述服务节点集群中新增的服务节点。
12.一种数据处理装置,应用于第一服务节点,其特征在于,包括:
第一请求获取模块,用于获取用户客户端发送的针对第一数据存储列表的数据写入请求;所述第一数据存储列表是由所述第一服务节点所创建的与所述用户客户端相关联的列表;所述数据写入请求为所述用户客户端根据对所述第一数据存储列表的访问权限所生成的请求;所述用户客户端对所述第一数据存储列表的访问权限,是由所述用户客户端从创建所述第一数据存储列表的所述第一服务节点中获取到的;所述数据写入请求携带目标数据;
元数据添加模块,用于根据所述数据写入请求生成所述目标数据对应的目标元数据,将所述目标元数据添加至所述第一数据存储列表中;所述第一数据存储列表中的所述目标元数据用于所述用户客户端通过所述第一服务节点访问所述目标数据;
所述装置还用于:
获取第一列表创建请求;所述第一列表创建请求携带列表名称信息;所述第一列表创建请求为管理客户端所生成的;
根据所述列表名称信息,创建过渡数据存储列表,生成针对所述过渡数据存储列表的第一创建成功信息;以及,发送所述第一创建成功信息至所述管理客户端,以使所述管理客户端根据所述第一创建成功信息获取所述用户客户端的客户端地址;
根据所述客户端地址对所述过渡数据存储列表的访问权限进行设置,得到所述第一数据存储列表;所述客户端地址具有针对所述第一数据存储列表的访问权限。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1-11中任一项所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082700.5A CN111309796B (zh) | 2020-02-07 | 2020-02-07 | 一种数据处理方法、装置以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082700.5A CN111309796B (zh) | 2020-02-07 | 2020-02-07 | 一种数据处理方法、装置以及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309796A CN111309796A (zh) | 2020-06-19 |
CN111309796B true CN111309796B (zh) | 2023-09-26 |
Family
ID=71159929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010082700.5A Active CN111309796B (zh) | 2020-02-07 | 2020-02-07 | 一种数据处理方法、装置以及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309796B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131046B (zh) * | 2020-09-04 | 2022-11-08 | 苏州浪潮智能科技有限公司 | 一种数据缓存方法、系统、设备以及介质 |
CN117130692B (zh) * | 2023-10-23 | 2024-01-23 | 成都赛力斯科技有限公司 | 应用管理方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567003A (zh) * | 2009-05-27 | 2009-10-28 | 清华大学 | 并行文件系统中资源的管理和分配方法 |
CN102012933A (zh) * | 2010-12-02 | 2011-04-13 | 清华大学 | 分布式文件系统及利用其存储数据和提供服务的方法 |
CN102158546A (zh) * | 2011-02-28 | 2011-08-17 | 中国科学院计算技术研究所 | 一种集群文件系统及其文件服务方法 |
CN102185900A (zh) * | 2011-04-18 | 2011-09-14 | 北京新媒传信科技有限公司 | 一种应用服务平台系统和一种开发应用服务的方法 |
CN102546782A (zh) * | 2011-12-28 | 2012-07-04 | 北京奇虎科技有限公司 | 一种分布式系统及其数据操作方法 |
CN104113587A (zh) * | 2014-06-23 | 2014-10-22 | 华中科技大学 | 一种分布式文件系统客户端元数据缓存优化方法 |
CN107092564A (zh) * | 2017-04-21 | 2017-08-25 | 深信服科技股份有限公司 | 一种数据处理方法及装置 |
WO2018177106A1 (zh) * | 2017-03-31 | 2018-10-04 | 腾讯科技(深圳)有限公司 | 文件共享方法及装置、存储介质 |
CN110169040A (zh) * | 2018-07-10 | 2019-08-23 | 深圳花儿数据技术有限公司 | 基于多层一致性哈希的分布式数据存储方法与系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160112508A1 (en) * | 2014-10-16 | 2016-04-21 | Centrallo LLC | System and method for creating, managing, sharing, and publishing a hierarchical list structure |
-
2020
- 2020-02-07 CN CN202010082700.5A patent/CN111309796B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567003A (zh) * | 2009-05-27 | 2009-10-28 | 清华大学 | 并行文件系统中资源的管理和分配方法 |
CN102012933A (zh) * | 2010-12-02 | 2011-04-13 | 清华大学 | 分布式文件系统及利用其存储数据和提供服务的方法 |
CN102158546A (zh) * | 2011-02-28 | 2011-08-17 | 中国科学院计算技术研究所 | 一种集群文件系统及其文件服务方法 |
CN102185900A (zh) * | 2011-04-18 | 2011-09-14 | 北京新媒传信科技有限公司 | 一种应用服务平台系统和一种开发应用服务的方法 |
CN102546782A (zh) * | 2011-12-28 | 2012-07-04 | 北京奇虎科技有限公司 | 一种分布式系统及其数据操作方法 |
CN104113587A (zh) * | 2014-06-23 | 2014-10-22 | 华中科技大学 | 一种分布式文件系统客户端元数据缓存优化方法 |
WO2018177106A1 (zh) * | 2017-03-31 | 2018-10-04 | 腾讯科技(深圳)有限公司 | 文件共享方法及装置、存储介质 |
CN107092564A (zh) * | 2017-04-21 | 2017-08-25 | 深信服科技股份有限公司 | 一种数据处理方法及装置 |
CN110169040A (zh) * | 2018-07-10 | 2019-08-23 | 深圳花儿数据技术有限公司 | 基于多层一致性哈希的分布式数据存储方法与系统 |
Non-Patent Citations (2)
Title |
---|
Meta-data snapshotting: a simple mechanism for file system consistency;Livio B Soares ,;ACM;第1-12页 * |
基于事物内存的分布式编程环境中缓存一致性维护机制;余林琛;廖小飞;;微电子学与计算机(第03期);第59-62页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111309796A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102392944B1 (ko) | 데이터 백업 방법, 저장 매체 및 컴퓨팅 기기 | |
US10484456B2 (en) | Sharing a content item | |
JP6621543B2 (ja) | ハイブリッドアプリケーションの自動更新 | |
JP6797290B2 (ja) | メッセージングサービス向けのコンテンツ管理機能 | |
CN109739815B (zh) | 文件处理方法、系统、装置、设备及存储介质 | |
US20240031316A1 (en) | Managing message attachments | |
US20210011884A1 (en) | Storage organization system with associated storage utilization values | |
JP7074745B2 (ja) | 共有コンテンツアイテムに関連するプレゼンス情報を提供するグラフィカルユーザインタフェースの提示 | |
CN111966633B (zh) | 用于查询目录下子节点的方法、装置、电子设备及介质 | |
CN111651418B (zh) | 一种文档内容下载方法、装置、计算机设备和存储介质 | |
CN111309796B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
JP7355964B2 (ja) | 外部ロケーションの同期 | |
US11500518B2 (en) | Contact cards with dynamic interaction information | |
EP3384384A1 (en) | Methods and devices for acquiring data using virtual machine and host machine | |
US10078433B2 (en) | Sharing a template file | |
KR101666064B1 (ko) | 분산 파일 시스템에서 url정보를 이용한 데이터 관리 장치 및 그 방법 | |
CN113590027B (zh) | 数据存储方法、数据获取方法、系统、设备和介质 | |
US9432238B2 (en) | Communicating large amounts of data over a network with improved efficiency | |
CN110347656B (zh) | 文件存储系统中请求的管理方法和装置 | |
JP2013077079A (ja) | ストレージシステム、ストレージサーバ、ユーザデータ共有方法、及びプログラム | |
CN114676093B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
JP2004199307A (ja) | セッション識別子管理装置及びセッション識別子管理方法並びにプログラム | |
JP2023107766A (ja) | 外部ロケーションの同期 | |
CN116489174A (zh) | 一种共享目录操作指令信息确定方法、装置、设备及介质 | |
JP2024519643A (ja) | リンクプラットフォーム・アズ・ア・サービス |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40025264 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |