CN110874382B - 一种数据写入方法、装置及其设备 - Google Patents

一种数据写入方法、装置及其设备 Download PDF

Info

Publication number
CN110874382B
CN110874382B CN201810994734.4A CN201810994734A CN110874382B CN 110874382 B CN110874382 B CN 110874382B CN 201810994734 A CN201810994734 A CN 201810994734A CN 110874382 B CN110874382 B CN 110874382B
Authority
CN
China
Prior art keywords
data
group identifier
node
written
group
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
Application number
CN201810994734.4A
Other languages
English (en)
Other versions
CN110874382A (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN201810994734.4A priority Critical patent/CN110874382B/zh
Priority to EP19856128.4A priority patent/EP3844635A4/en
Priority to JP2021507465A priority patent/JP7371087B2/ja
Priority to PCT/US2019/048317 priority patent/WO2020046916A1/en
Priority to US16/553,077 priority patent/US10893098B2/en
Publication of CN110874382A publication Critical patent/CN110874382A/zh
Application granted granted Critical
Publication of CN110874382B publication Critical patent/CN110874382B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据写入方法、装置及其设备,该方法包括:获取第一待写入数据;确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。通过本申请的技术方案,分布式一致性协议支持数据的多点写入,提高用户的业务体验,使得分布式一致性协议支持用户的就近写入和动态迁移。

Description

一种数据写入方法、装置及其设备
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据写入方法、装置及其设备。
背景技术
分布式一致性协议(如Paxos)是分布式数据库的核心组成部分,分布式一致性协议用于保证分布式数据库的多副本数据的一致性、容灾切换等能力,其性能影响整个分布式数据库的性能。目前,分布式一致性协议只支持单点写入,而不支持多点写入。例如,分布式数据库包括位于区域A的节点A和位于区域B的节点B,Paxos组1的主节点为节点A,Paxos组1的从节点为节点B。当用户1位于区域A时,则可以将用户1添加到Paxos组1;当用户1在区域A请求写入数据X时,则数据X被发送给节点A,由于节点A是Paxos组1的主节点,因此,可以在本地写入数据X,并将数据X同步到节点B。当用户1移动到区域B请求写入数据Y时,则数据Y被发送给节点B,由于节点B是Paxos组1的从节点,因此,无法在本地写入数据Y,从而导致数据Y写入失败。
随着分布式数据库技术的快速发展,跨区域、国际化部署的分布式数据库已经普遍存在,使得数据的多点写入成为一种普遍需求。由于分布式一致性协议不支持数据的多点写入,因此,对于跨区域的用户来说,就无法基于分布式一致性协议将数据写入到当前区域的节点,从而导致用户的业务体验较差。
发明内容
本申请提供一种数据写入方法,所述方法包括:
获取第一待写入数据;
确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;
若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;
接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
本申请提供一种数据写入方法,应用于分布式数据库中的任一节点,所述节点对应至少一个组,所述节点是所述组的主节点,所述方法包括:
获取第一待写入数据,并确定所述第一待写入数据对应的第一数据行,所述第一数据行包括所述第一待写入数据对应的组标识;
将所述第一数据行包括的组标识修改为所述节点对应的组的组标识,以将所述第一数据行与所述节点对应的组进行动态绑定。
本申请提供一种数据写入装置,所述装置包括:
获取模块,用于获取第一待写入数据;
确定模块,用于确定所述第一待写入数据对应的第一组标识,并确定所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识;其中,所述第二组标识对应的主节点是本节点;
发送模块,用于将所述第二组标识发送给所述第一节点,以使所述第一节点将所述第一待写入数据对应的第一组标识修改为第二组标识;
处理模块,用于接收所述第一节点发送的更新消息,根据所述更新消息将所述第一待写入数据对应的第一组标识修改为所述第二组标识,并执行所述第一待写入数据的写入过程。
本申请提供一种数据写入装置,应用于分布式数据库中的任一节点,所述节点对应至少一个组,所述节点是所述组的主节点,所述装置包括:
获取模块,用于获取第一待写入数据;
确定模块,用于确定所述第一待写入数据对应的第一数据行,所述第一数据行包括所述第一待写入数据对应的组标识;
处理模块,用于将所述第一数据行包括的组标识修改为所述节点对应的组的组标识,以将所述第一数据行与所述节点对应的组进行动态绑定。
本申请提供一种数据写入设备,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取第一待写入数据;
确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;
若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;
接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
基于上述技术方案,本申请实施例中,提出一种支持多点写入的分布式一致性协议,由于分布式一致性协议支持数据的多点写入,因此,对于跨区域的用户来说,能够基于分布式一致性协议将数据写入到当前区域的节点,提高用户的业务体验,使得分布式一致性协议支持用户的就近写入和动态迁移,并实现行级和用户级的多点写入,能够保证分布式数据库的数据一致性,实现跨区域的分布式事务,解决用户纬度的数据跨区域问题,支撑业务实现就近写入。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的数据写入方法的流程图;
图2是本申请另一种实施方式中的数据写入方法的流程图;
图3A是本申请一种实施方式中的应用场景示意图;
图3B-图3D是分布式数据库的数据逻辑架构的示意图;
图4是本申请另一种实施方式中的数据写入方法的流程图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请实施例提出一种数据写入方法,可以应用于分布式数据库中的任一节点(称为本节点),参见图1所示,为该方法的流程图,该方法可以包括:
步骤101,获取第一待写入数据。
步骤102,确定该第一待写入数据对应的第一组标识。
其中,确定该第一待写入数据对应的第一组标识,可以包括但不限于:确定该第一待写入数据对应的第一数据表、该第一数据表中与该第一待写入数据对应的第一数据行,且该第一数据行可以包括该第一待写入数据对应的组标识。进一步的,可以将该第一数据行中记录的组标识确定为第一组标识。
步骤103,确定该第一组标识对应的主节点。
其中,确定该第一组标识对应的主节点,可以包括但不限于:通过该第一组标识查询映射表,以得到该第一组标识对应的主节点。
在一个例子中,可以存储一个映射表,该映射表用于记录组标识和主节点的对应关系。基于此,在得到第一待写入数据对应的第一组标识后,可以通过该第一组标识查询该映射表,从而得到该第一组标识对应的主节点。
步骤104,若主节点是本节点之外的第一节点,则确定第二组标识,该第二组标识对应的主节点是本节点,并将该第二组标识发送给第一节点,以使第一节点将该第一待写入数据对应的第一组标识修改为该第二组标识。
其中,确定第二组标识,可以包括但不限于:获取映射表中记录的组标识;若该组标识对应的主节点是本节点,则将该组标识确定为第二组标识。
在一个例子中,可以存储一个映射表,该映射表可以用于记录组标识和主节点的对应关系。基于此,针对该映射表中记录的每个组标识,若该组标识对应的主节点是本节点,则可以将该组标识确定为第二组标识。
其中,将该第二组标识发送给第一节点,以使第一节点将该第一待写入数据对应的第一组标识修改为该第二组标识,可以包括但不限于:向第一节点发送通知消息,该通知消息携带该第二组标识和该第一待写入数据的索引信息。
其中,该通知消息用于使第一节点根据该索引信息确定该第一待写入数据对应的第二数据行,并将该第二数据行中记录的第一组标识修改为第二组标识。
步骤105,接收该第一节点发送的更新消息,并根据该更新消息将该第一待写入数据对应的第一组标识修改为该第二组标识。
其中,根据该更新消息将该第一待写入数据对应的第一组标识修改为该第二组标识,可以包括但不限于:若该更新消息还携带该第一待写入数据的索引信息,则可以根据该索引信息确定该第一待写入数据在第一数据表中对应的第一数据行;然后,将该第一数据行中记录的第一组标识修改为第二组标识。
步骤106,在根据该更新消息将该第一待写入数据对应的第一组标识修改为该第二组标识之后,由本节点执行该第一待写入数据的写入过程。
在上述实施例中,本节点与第一节点可以位于不同的区域;而且,第一待写入数据可以是用户从第一节点所在区域迁移到本节点所在区域后发送的。
在一个例子中,该数据写入方法还包括以下步骤(在图1中未示出):
步骤107,获取第二待写入数据。其中,该第二待写入数据的索引信息与上述第一待写入数据的索引信息可以相同或者不同,以二者相同为例。
步骤108,确定该第二待写入数据对应的组标识。
其中,确定该第二待写入数据对应的组标识,可以包括但不限于:确定该第二待写入数据对应的第二数据表、该第二数据表中与该第二待写入数据对应的第三数据行,且该第三数据行可以包括第二待写入数据对应的组标识。进一步的,可以将第三数据行中记录的组标识确定为第二待写入数据对应的组标识。
步骤109,若该第二待写入数据对应的组标识与上述第二组标识不同,则确定该第二待写入数据对应的组标识对应的主节点。
其中,确定该第二待写入数据对应的组标识对应的主节点,可以包括但不限于:通过该第二待写入数据对应的组标识查询映射表,得到该第二待写入数据对应的组标识对应的主节点。在一个例子中,可以存储一个映射表,该映射表可以用于记录组标识和主节点的对应关系。基于此,在得到该第二待写入数据对应的组标识后,可以通过该第二待写入数据对应的组标识查询该映射表,从而得到该第二待写入数据对应的组标识对应的主节点。
步骤110,若主节点是本节点之外的第三节点,则将第二组标识发送给第三节点,以使第三节点将该第二待写入数据对应的组标识修改为第二组标识。
其中,将第二组标识发送给第三节点,以使第三节点将该第二待写入数据对应的组标识修改为第二组标识,可以包括但不限于:向第三节点发送通知消息,该通知消息携带该第二组标识和该第二待写入数据的索引信息。
其中,该通知消息用于使第三节点根据该索引信息确定该第二待写入数据对应的数据行,并将该数据行中记录的组标识修改为第二组标识。
步骤111,接收该第三节点发送的更新消息,并根据该更新消息将该第二待写入数据对应的组标识修改为该第二组标识。
其中,根据该更新消息将该第二待写入数据对应的组标识修改为该第二组标识,可以包括但不限于:若该更新消息还携带该第二待写入数据的索引信息,则可以根据该索引信息确定该第二待写入数据在第二数据表中对应的第三数据行;然后,可以将该第三数据行中记录的组标识修改为第二组标识。
步骤112,在根据该更新消息将该第二待写入数据对应的组标识修改为该第二组标识之后,由本节点执行该第二待写入数据的写入过程。
在一个例子中,针对步骤109,在确定该第二待写入数据对应的组标识对应的主节点之后,若主节点是本节点,则可以由本节点将该第二待写入数据对应的组标识修改为第二组标识,并由本节点执行第二待写入数据的写入过程。
进一步的,还可以向本节点之外的其它节点发送更新消息,以使其它节点根据该更新消息将该第二待写入数据对应的组标识修改为第二组标识。
在一个例子中,针对步骤108,在确定该第二待写入数据对应的组标识之后,若该第二待写入数据对应的组标识与上述第二组标识相同,则可以由本节点执行第二待写入数据的写入过程,而不再执行上述步骤109-步骤112。
在上述实施例中,组标识可以包括但不限于分布式一致性协议的组标识。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,提出一种支持多点写入的分布式一致性协议,由于分布式一致性协议支持数据的多点写入,因此,对于跨区域的用户来说,能够基于分布式一致性协议将数据写入到当前区域的节点,提高用户的业务体验,使得分布式一致性协议支持用户的就近写入和动态迁移,并实现行级和用户级的多点写入,能够保证分布式数据库的数据一致性,实现跨区域的分布式事务,解决用户纬度的数据跨区域问题,支撑业务实现就近写入。
本申请实施例提出一种数据写入方法,可以应用于分布式数据库中的任一节点(称为本节点),参见图2所示,为该方法的流程图,该方法可以包括:
步骤201,获取第一待写入数据。
步骤202,确定该第一待写入数据对应的第一组标识。
步骤203,确定该第一组标识对应的主节点。
其中,步骤201-步骤203,可以参见步骤101-步骤103,在此不再赘述。
步骤204,若主节点是本节点,则由本节点执行第一待写入数据的写入过程。
在一个例子中,该数据写入方法还包括以下步骤(在图2中未示出):
步骤205,获取第二待写入数据。其中,该第二待写入数据的索引信息与上述第一待写入数据的索引信息可以相同或者不同,以二者相同为例。
步骤206,确定该第二待写入数据对应的组标识。
其中,确定该第二待写入数据对应的组标识,可以包括但不限于:确定该第二待写入数据对应的第二数据表、该第二数据表中与该第二待写入数据对应的第三数据行,且该第三数据行可以包括第二待写入数据对应的组标识。进一步的,可以将第三数据行中记录的组标识确定为第二待写入数据对应的组标识。
步骤207,若该第二待写入数据对应的组标识与上述第一组标识不同,则确定该第二待写入数据对应的组标识对应的主节点。
其中,确定该第二待写入数据对应的组标识对应的主节点,可以包括但不限于:通过该第二待写入数据对应的组标识查询映射表,得到该第二待写入数据对应的组标识对应的主节点。在一个例子中,可以存储一个映射表,该映射表可以用于记录组标识和主节点的对应关系。基于此,在得到该第二待写入数据对应的组标识后,可以通过该第二待写入数据对应的组标识查询该映射表,从而得到该第二待写入数据对应的组标识对应的主节点。
步骤208,若主节点是本节点之外的第二节点,则将第一组标识发送给第二节点,以使第二节点将该第二待写入数据对应的组标识修改为第一组标识。
其中,将第一组标识发送给第二节点,以使第二节点将该第二待写入数据对应的组标识修改为第一组标识,可以包括但不限于:向第二节点发送通知消息,该通知消息可以携带该第一组标识和该第二待写入数据的索引信息。
其中,该通知消息用于使第二节点根据该索引信息确定该第二待写入数据对应的数据行,并将该数据行中记录的组标识修改为第一组标识。
步骤209,接收该第二节点发送的更新消息,并根据该更新消息将该第二待写入数据对应的组标识修改为该第一组标识。
其中,根据该更新消息将该第二待写入数据对应的组标识修改为该第一组标识,可以包括但不限于:若该更新消息还携带该第二待写入数据的索引信息,则可以根据该索引信息确定该第二待写入数据在第二数据表中对应的第三数据行;然后,可以将该第三数据行中记录的组标识修改为第一组标识。
步骤210,在根据该更新消息将该第二待写入数据对应的组标识修改为该第一组标识之后,由本节点执行该第二待写入数据的写入过程。
在一个例子中,针对步骤207,在确定该第二待写入数据对应的组标识对应的主节点之后,若主节点是本节点,则可以由本节点将该第二待写入数据对应的组标识修改为第一组标识,并由本节点执行第二待写入数据的写入过程。
进一步的,还可以向本节点之外的其它节点发送更新消息,以使其它节点根据该更新消息将该第二待写入数据对应的组标识修改为第一组标识。
在一个例子中,针对步骤206,在确定该第二待写入数据对应的组标识之后,若该第二待写入数据对应的组标识与上述第一组标识相同,则可以由本节点执行第二待写入数据的写入过程,而不再执行上述步骤207-步骤210。
在上述实施例中,组标识可以包括但不限于分布式一致性协议的组标识。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
基于上述技术方案,本申请实施例中,提出一种支持多点写入的分布式一致性协议,由于分布式一致性协议支持数据的多点写入,因此,对于跨区域的用户来说,能够基于分布式一致性协议将数据写入到当前区域的节点,提高用户的业务体验,使得分布式一致性协议支持用户的就近写入和动态迁移,并实现行级和用户级的多点写入,能够保证分布式数据库的数据一致性,实现跨区域的分布式事务,解决用户纬度的数据跨区域问题,支撑业务实现就近写入。
本申请实施例提出另一种数据写入方法,该方法可以应用于分布式数据库中的任一节点(称为本节点),本节点对应至少一个组,本节点是该组的主节点,所述方法可以包括:获取第一待写入数据,并确定该第一待写入数据对应的第一数据行,该第一数据行可以包括该第一待写入数据对应的组标识。
然后,可以将该第一数据行包括的组标识,修改为本节点对应的组的组标识,以将该第一数据行与本节点对应的组进行动态绑定。
其中,针对确定该第一待写入数据对应的第一数据行的方式,可以参见上述步骤102,在此不再赘述。针对将该第一数据行包括的组标识,修改为本节点对应的组的组标识的方式,可以参见上述步骤103-步骤106,在此不再赘述。
基于上述技术方案,本申请实施例中,通过将第一数据行与本节点对应的组进行动态绑定,从而支持数据的多点写入,对于跨区域的用户来说,能够基于分布式一致性协议将数据写入到当前区域的节点,提高用户的业务体验,使得分布式一致性协议支持用户的就近写入和动态迁移,并实现行级和用户级的多点写入,能够保证分布式数据库的数据一致性,实现跨区域的分布式事务。
以下结合具体应用场景,对数据写入方法进行说明。参见图3A所示,为本实施例的应用场景示意图,以分布式数据库包括三个节点为例,在实际应用中,分布式数据库包括的节点数量还可以更多,对此节点的数量不做限制。
参见图3A所示,节点301可以部署在区域A(如杭州等),节点302可以部署在区域B(如上海等),节点303可以部署在区域C(如北京等)。
本实施例中,分布式数据库可以采用分布式一致性协议(如Paxos等)保证多副本数据的一致性、容灾切换等能力,为了使分布式一致性协议支持多点写入,可以设置多个组(如分布式一致性协议组),且每个组具有唯一的组标识(如分布式一致性协议的组标识)。为了方便描述,以分布式一致性协议是Paxos为例,则可以设置多个Paxos组,且每个Paxos组具有唯一的Paxos组标识。
在一个例子中,Paxos组的数量可以与节点数量有关,如Paxos组的数量是节点数量的正整数倍,如节点数量为3时,则Paxos组的数量可以为3、6、9等;Paxos组的数量也可以与节点数量无关,如Paxos组的数量是任意值,如3、4、5、6、7等;对此Paxos组的数量不做限制,后续以6个Paxos组为例。
其中,Paxos组1的组标识可以为AA,Paxos组2的组标识可以为BB,Paxos组3的组标识可以为CC,Paxos组4的组标识可以为DD,Paxos组5的组标识可以为EE,Paxos组6的组标识可以为FF。而且,每个节点均可以存储表1所示的映射表,该映射表用于记录组标识、主节点和从节点的对应关系。
表1
组标识 主节点 从节点
AA 节点301 节点302和节点303
BB 节点302 节点301和节点303
CC 节点303 节点301和节点302
DD 节点301 节点302和节点303
EE 节点302 节点301和节点303
FF 节点303 节点301和节点302
其中,表1所示的映射表可以是根据经验配置的,对于每个Paxos组来说,该Paxos组对应一个主节点(也可以称为LEADER节点),其余节点均为从节点(也可以称为FOLLOWER节点)。从表1可以看出,对于所有的Paxos组来说,每个节点作为主节点的次数相同,每个节点作为从节点的次数也相同。
为了方便描述,图3A中只示出Paxos组1、Paxos组2和Paxos组3,对于Paxos组4、Paxos组5和Paxos组6,与Paxos组1、Paxos组2和Paxos组3类似。从图3A可以看出,节点301是Paxos组1的主节点,是Paxos组2和Paxos组3的从节点。节点302是Paxos组2的主节点,是Paxos组1和Paxos组3的从节点。节点303是Paxos组3的主节点,是Paxos组1和Paxos组2的从节点。
参见图3B所示,为分布式数据库的数据逻辑架构的一个示意图,第一层是表族(Table Family),用于表示存在事务关联的表的集合;第二层是表(Table),用于存储数据,也可以称为数据总表;第三层是表分区(Table Partition),表示按照分区规则,将一张表分为多个物理分区,每个物理分区是数据总表的一个数据子表,且同一个表族下的所有表的分区规则可以相同;第四层是表分区组(Partition Group),表示同一个表族中的所有表的相同分区;第5层是Paxos组,表示一个Paxos分区,且一个Paxos分区内的数据可以实现本地事务。
参见图3B所示,由于一个表分区组只能对应一个Paxos组,因此,同一个表分区组的数据行只能在同一个节点写入,这样,当数据需要在Paxos组之间迁移时,只能以表分区组为最小单位进行迁移,从而导致单个表分区内的多行数据无法在不同节点写入,继而导致分布式一致性协议无法支持多点写入。
以下结合具体应用场景,对上述过程进行说明。表族包括数据总表A和数据总表B,参见表2所示,为数据总表A的示例,参见表3所示,为数据总表B的示例。由于数据总表A内容较多,为减少数据总表A的空间占用,可以按照分区规则1(如姓氏拼音首字母、姓氏笔画数等)将数据总表A拆分成数据子表A1和数据子表A2,参见表4和表5所示,以2个数据子表为例,数据子表的数量可以大于2个。由于数据总表B内容较多,为减少数据总表B的空间占用,可以按照该分区规则1将数据总表B拆分成数据子表B1和数据子表B2,参见表6和表7所示,以2个数据子表为例,数据子表的数量可以大于2个。
表2
用户名 身份数据
李二 数据A11
吕三 数据A12
张二 数据A13
赵三 数据A14
...
表3
用户名 消费数据
李二 数据B11
吕三 数据B12
张二 数据B13
赵三 数据B14
...
表4
Figure BDA0001781596180000121
Figure BDA0001781596180000131
表5
用户名 身份数据
张二 数据A13
赵三 数据A14
...
表6
用户名 消费数据
李二 数据B11
吕三 数据B12
...
表7
用户名 消费数据
张二 数据B13
赵三 数据B14
...
进一步的,针对数据子表A1、数据子表A2、数据子表B1和数据子表B2来说,由于数据子表A1和数据子表B1的姓氏拼音首字母为L,因此,将数据子表A1和数据子表B1添加到同一个表分区组1,且表分区组1对应Paxos组1,由于Paxos组1的主节点为节点301,因此,将数据子表A1和数据子表B1存储到节点301,由节点301实现数据子表A1和数据子表B1的数据写入。
由于数据子表A2和数据子表B2的姓氏拼音首字母为Z,因此,将数据子表A2和数据子表B2添加到同一个表分区组2,且表分区组2对应Paxos组2,由于Paxos组2的主节点为节点302,因此,将数据子表A2和数据子表B2存储到节点302,由节点302实现数据子表A2和数据子表B2的数据写入。
其中,将数据子表A1和数据子表B1存储到同一节点(如节点301)的原因在于:由于“李二”的身份数据和消费数据均存储在节点301,因此,若一个写事务需要同时写入“李二”的身份数据和消费数据,就可以由节点301进行写入,提高写入效率。若“李二”的身份数据存储在节点301,“李二”的消费数据存储在节点302,当一个写事务需要同时写入“李二”的身份数据和消费数据时,则节点301和节点302之间的写入会变得很复杂,甚至是写入失败。
显然,通过将数据子表A1和数据子表B1添加到表分区组1,并将表分区组1绑定Paxos组1,可以由节点301实现数据子表A1和数据子表B1的数据写入。通过将数据子表A2和数据子表B2添加到表分区组2,并将表分区组2绑定Paxos组2,可以由节点302实现数据子表A2和数据子表B2的数据写入。
但是,在上述方式中,针对数据子表A1和数据子表B1内的所有用户,需要在同一个区域接入,如“李二”和“吕三”均在节点301所在的区域A接入,一旦“李二”迁移到区域B,就会导致节点301无法对“李二”的数据进行写入。
针对上述发现,本实施例中,分布式数据库的数据逻辑架构可以参见图3C或者图3D所示。在图3C中可以包括表族,因此,可以采用相同的分区规则(如分区规则1)将数据总表A拆分成多个数据子表,将数据总表B拆分成多个数据子表。在图3D中可以不包括表族,因此,可以采用相同的分区规则或者不同的分区规则,将数据总表A拆分成多个数据子表,并将数据总表B拆分成多个数据子表。例如,可以采用分区规则1将数据总表A拆分成多个数据子表,将数据总表B拆分成多个数据子表;或者,可以采用分区规则1将数据总表A拆分成多个数据子表,并采用分区规则2将数据总表B拆分成多个数据子表。
为方便描述,以采用分区规则1将数据总表A拆分成数据子表A1和数据子表A2,采用分区规则1将数据总表B拆分成数据子表B1和数据子表B2为例。针对表2和表3所示的数据总表A和数据总表B,数据子表A1和数据子表A2参见表8和表9所示,数据子表B1和数据子表B2参见表10和表11所示。
表8
用户名 组标识 身份数据
李二 AA 数据A11
吕三 AA 数据A12
...
表9
用户名 组标识 身份数据
张二 BB 数据A13
赵三 BB 数据A14
...
表10
用户名 组标识 消费数据
李二 AA 数据B11
吕三 AA 数据B12
...
表11
用户名 组标识 消费数据
张二 BB 数据B13
赵三 BB 数据B14
...
进一步的,针对数据子表A1、数据子表A2、数据子表B1和数据子表B2来说,不需要将数据子表A1和数据子表B1添加到表分区组1,也不需要将数据子表A2和数据子表B2添加到表分区组2,即可以不涉及表分区组的特征,而是针对每个数据行增加一个组标识,表示这个数据行所属的Paxos组1。
例如,在数据子表A1和数据子表B1中的“李二”对应的数据行,增加一个组标识AA,使得“李二”对应的数据行对应Paxos组1,由于Paxos组1的主节点为节点301,因此,由节点301实现数据子表A1和数据子表B1中的“李二”对应的数据行的数据写入。显然,在上述方式中,由于“李二”的身份数据和消费数据均存储在节点301,因此,若一个写事务需要同时写入“李二”的身份数据和消费数据,就可以由节点301进行数据的写入,提高写入效率。
而且,在上述方式中,针对数据子表A1和数据子表B1内的所有用户,不需要在同一个区域接入,如“吕三”在节点301所在的区域A接入,而“李二”从区域A迁移到区域B,则可以将数据子表A1和数据子表B1中的“李二”对应的数据行,从组标识AA修改为组标识BB,参见表12和表13所示,这样,“李二”对应的数据行对应Paxos组2,由于Paxos组2的主节点为节点302,因此,由节点302实现数据子表A1和数据子表B1中的“李二”对应的数据行的数据写入。显然,在上述方式中,由于“李二”的身份数据和消费数据均存储在节点302,因此,若一个写事务需要同时写入“李二”的身份数据和消费数据,就可以由节点302进行数据的写入,提高写入效率,并实现用户的迁移。
表12
用户名 组标识 身份数据
李二 BB 数据A11
吕三 AA 数据A12
...
表13
用户名 组标识 消费数据
李二 BB 数据B11
吕三 AA 数据B12
...
综上所述,本实施例中,通过消除表分区组,并在数据行中添加Paxos组的组标识,从而可以解耦表分区组与Paxos组,打破了表分区组的限制,避免一个表分区组内的所有数据对应同一个Paxos组,并只能从一个节点写入的限制,而且,可以使数据行直接与Paxos组耦合,实现数据行和Paxos组的动态绑定。
在上述实施例中,数据子表中的组标识也可以称为PGID(Paxos Group ID,Paxos分组标识),通过在数据行中增加组标识,可以通过该组标识表示该数据行所属的Paxos分组,实现数据行和Paxos分组的动态绑定,由数据行的Paxos分组对应的主节点写入该数据行的数据,当用户发生迁移时,可以通过修改数据行关联的Paxos分组,来改变数据行的写入节点,从而实现用户的迁移。而且,上述方式中的最小数据单位是数据行,实现了基于流量的行级写入,同时通过事务级动态迁移的方法,实现了单节点的多个Paxos分组的分布式事务,是业务实现用户纬度就近接入的基础,是对分布式数据库甚至是关联业务架构的革新性改变,可以彻底解决用户纬度的数据切流问题,支撑业务实现就近写入。
以下结合几个具体实施例,对上述基于组标识的数据写入过程进行说明。
实施例一:用户“李二”在区域A接入,并发送数据写入请求1和数据写入请求2,数据写入请求1携带数据子表A1的表名称、用户名“张二”和数据A15,数据写入请求2携带数据子表B1的表名称、用户名“张二”和数据B15。
由于用户“李二”在区域A接入,因此,节点301可以接收到数据写入请求1,并从该数据写入请求1中获取数据子表A1的表名称、用户名“张二”和数据A15,并可以根据该表名称确定数据表是数据子表A1,参见表8所示。
然后,以用户名“张二”为索引,从数据子表A1中查询到数据行,即表8中的第一行,且该数据行中包括的组标识AA就是数据A15对应的组标识。
然后,通过该组标识AA查询表1所示的映射表,得到主节点是节点301。由于主节点是本节点(即节点301是组标识AA对应的Paxos组1的主节点),因此,由节点301执行数据A15的写入过程。具体的,节点301可以将表8中的数据A11修改为数据A15,并将从节点(对于Paxos组1来说,从节点是节点302和节点303)的数据子表A1(从节点的数据子表A1与主节点的数据子表A1完全相同,其内容是主节点同步的)中的数据A11修改为数据A15。
此外,由于数据写入请求1对应的组标识是组标识AA,因此,还可以记录事务组标识是组标识AA,表示针对当前的写事务,是针对组标识AA的写事务。
由于用户“李二”在区域A接入,因此,节点301可以接收到数据写入请求2。假设数据写入请求2与数据写入请求1是不同写事务,则数据写入请求2的处理流程与数据写入请求1的处理流程相同,在此不再赘述。假设数据写入请求2与数据写入请求1是相同写事务,则数据写入请求2的处理可以使用数据写入请求1的处理结果,即基于事务组标识进行处理,以下对此进行说明。
首先,节点301从数据写入请求2中获取数据子表B1的表名称、用户名“张二”和数据B15,并可以根据该表名称确定数据表是数据子表B1,参见表10所示。然后,以用户名“张二”为索引,从数据子表B1中查询到数据行,即表10中的第一行,且该数据行中包括的组标识就是数据B15对应的组标识。
进一步的,针对该组标识的不同情况,则还可以区分为如下情况:
情况一、假设该数据行中包括的组标识是组标识AA,由于组标识AA与事务组标识(即组标识AA)相同,因此,可以由节点301执行数据B15的写入过程。具体的,节点301可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15,对此数据写入过程不再赘述。
情况二、假设该数据行中包括的组标识是组标识DD,由于组标识DD与事务组标识(即组标识AA)不同,因此,节点301通过该组标识DD查询表1所示的映射表,得到主节点是节点301。由于主节点是本节点(即节点301是组标识DD对应的Paxos组4的主节点),因此,节点301可以将该数据行中的组标识DD修改为事务组标识(即组标识AA),并向Paxos组4的从节点发送更新消息,而Paxos组4的从节点(如节点302和节点303)在接收到该更新消息后,根据更新消息将数据子表B1中相应数据行的组标识DD修改为组标识AA。
节点301将该数据行中的组标识DD修改为事务组标识(即组标识AA)之后,则这个数据行对应的Paxos组是从Paxos组4切换到Paxos组1,且可以由节点301执行数据B15的写入过程。具体的,节点301可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15。
情况三、假设该数据行中包括的组标识是组标识BB,由于组标识BB与事务组标识(即组标识AA)不同,因此,节点301通过该组标识BB查询表1所示的映射表,得到主节点是节点302。由于主节点是节点302(即节点302是组标识BB对应的Paxos组2的主节点),而不是本节点301,因此,节点301向节点302发送通知消息,该通知消息可以携带事务组标识(即组标识AA)、索引信息“张二”、数据子表B1的表名称,对此通知消息的内容不做限制。
节点302在接收到该通知消息后,根据该表名称确定数据表是数据子表B1,以索引信息“张二”为索引,从数据子表B1中查询到数据行,并将该数据行中包括的组标识BB修改为该通知消息中携带的事务组标识(即组标识AA)。
节点302将该数据行中的组标识BB修改为组标识AA后,可以向Paxos组2的从节点发送更新消息,而Paxos组2的从节点(如节点301和节点303)在接收到该更新消息后,可以根据该更新消息将数据子表B1中相应数据行的组标识BB修改为组标识AA。具体的,以节点301的处理为例,该更新消息可以携带组标识AA、索引信息“张二”、数据子表B1的表名称,对此更新消息的内容不做限制;节点301在接收到该更新消息后,根据该表名称确定数据表是数据子表B1,以索引信息“张二”为索引,从数据子表B1中查询到数据行,并将该数据行中包括的组标识BB修改为该更新消息中携带的组标识AA。
经过上述处理,则节点301可以将该数据行中的组标识BB修改为事务组标识(即组标识AA),从而可以将这个数据行对应的Paxos组从Paxos组2切换到Paxos组1,又由于Paxos组1的主节点是节点301,因此,可以由节点301执行数据B15的写入过程。具体的,节点301可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15。
实施例二:用户“李二”从区域B接入,并发送数据写入请求1和数据写入请求2,数据写入请求1携带数据子表A1的表名称、用户名“张二”和数据A15,数据写入请求2携带数据子表B1的表名称、用户名“张二”和数据B15。
由于用户“李二”从区域A切换到区域B接入,因此,节点302接收数据写入请求1,并从数据写入请求1中获取数据子表A1的表名称、用户名“张二”和数据A15,并可以根据该表名称确定数据表是数据子表A1,参见表8所示。
然后,以用户名“张二”为索引,从数据子表A1中查询到数据行,即表8中的第一行,且该数据行中包括的组标识AA就是数据A15对应的组标识。
然后,通过组标识AA查询表1所示的映射表,得到主节点是节点301。由于主节点是节点301(节点301是组标识AA对应的Paxos组1的主节点),而不是节点302,因此,节点302确定主节点是节点302的组标识,如组标识BB。
然后,节点302向节点301发送通知消息,该通知消息可以携带组标识BB、索引信息“张二”、数据子表A1的表名称,对此通知消息的内容不做限制。
进一步的,节点301在接收到该通知消息后,可以根据该表名称确定数据表是数据子表A1,以索引信息“张二”为索引,从数据子表A1中查询到数据行,并将该数据行中包括的组标识AA修改为该通知消息中携带的组标识BB。
节点301将该数据行中的组标识AA修改为组标识BB后,可以向Paxos组1的从节点发送更新消息,而Paxos组1的从节点(如节点302和节点303)在接收到该更新消息后,可以根据该更新消息将数据子表A1中相应数据行的组标识AA修改为组标识BB。具体的,以节点302的处理为例,该更新消息可以携带组标识BB、索引信息“张二”、数据子表A1的表名称,对此更新消息的内容不做限制;节点302在接收到该更新消息后,根据该表名称确定数据表是数据子表A1,以索引信息“张二”为索引,从数据子表A1中查询到数据行,并将该数据行中包括的组标识AA修改为该更新消息中携带的组标识BB。
经过上述处理,节点302将数据行中的组标识AA修改为组标识BB,从而将数据行对应的Paxos组从Paxos组1切换到Paxos组2,由于Paxos组2的主节点是节点302,因此由节点302执行数据A15的写入过程。具体的,节点302可以将表8中的数据A11修改为数据A15,并将从节点(对于Paxos组2来说,从节点是节点301和节点303)的数据子表A1中的数据A11修改为数据A15。
此外,由于数据写入请求1对应的组标识是组标识BB,因此,还可以记录事务组标识是组标识BB,表示针对当前的写事务,是针对组标识BB的写事务。
由于用户“李二”在区域B接入,因此,节点302可以接收到数据写入请求2。假设数据写入请求2与数据写入请求1是不同写事务,则数据写入请求2的处理流程与数据写入请求1的处理流程相同,在此不再赘述。假设数据写入请求2与数据写入请求1是相同写事务,则数据写入请求2的处理可以使用数据写入请求1的处理结果,即基于事务组标识进行处理,以下对此进行说明。
首先,节点302从数据写入请求2中获取数据子表B1的表名称、用户名“张二”和数据B15,并可以根据该表名称确定数据表是数据子表B1,参见表10所示。然后,以用户名“张二”为索引,从数据子表B1中查询到数据行,即表10中的第一行,且该数据行中包括的组标识就是数据B15对应的组标识。
进一步的,针对该组标识的不同情况,则还可以区分为如下情况:
情况一、假设该数据行中包括的组标识是组标识BB,由于组标识BB与事务组标识(即组标识BB)相同,因此,可以由节点302执行数据B15的写入过程。具体的,节点302可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15,对此数据写入过程不再赘述。
情况二、假设该数据行中包括的组标识是组标识EE,由于组标识EE与事务组标识(即组标识BB)不同,因此,节点302通过该组标识EE查询表1所示的映射表,得到主节点是节点302。由于主节点是本节点,因此,节点302可以将该数据行中的组标识EE修改为事务组标识(即组标识BB),并向Paxos组5的从节点发送更新消息,而Paxos组5的从节点在接收到该更新消息后,根据更新消息将数据子表B1中相应数据行的组标识EE修改为组标识BB。
节点302将该数据行中的组标识EE修改为事务组标识(即组标识BB)之后,则这个数据行对应的Paxos组是从Paxos组5切换到Paxos组2,且可以由节点302执行数据B15的写入过程。具体的,节点302可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15。
情况三、假设该数据行中包括的组标识是组标识AA,由于组标识AA与事务组标识(即组标识BB)不同,则节点302通过组标识AA查询表1所示的映射表,得到主节点是节点301。由于主节点是节点301,不是本节点302,因此节点302向节点301发送通知消息,该通知消息携带事务组标识(组标识BB)、索引信息“张二”、数据子表B1的表名称,对此通知消息的内容不做限制。
节点301在接收到该通知消息后,根据该表名称确定数据表是数据子表B1,以索引信息“张二”为索引,从数据子表B1中查询到数据行,并将该数据行中包括的组标识AA修改为该通知消息中携带的事务组标识(即组标识BB)。
节点301将该数据行中的组标识AA修改为组标识BB后,可以向Paxos组1的从节点发送更新消息,而Paxos组1的从节点(如节点302和节点303)在接收到该更新消息后,可以根据该更新消息将数据子表B1中相应数据行的组标识AA修改为组标识BB。经过上述处理,则节点302可以将该数据行中的组标识AA修改为事务组标识(即组标识BB),从而将这个数据行对应的Paxos组从Paxos组1切换到Paxos组2,又由于Paxos组2的主节点是节点302,因此,由节点302执行数据B15的写入过程。具体的,节点302可以将表10中的数据B11修改为数据B15,并将从节点的数据子表B1中的数据B11修改为数据B15。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据写入装置,如图4所示,为所述数据写入装置的结构图,所述装置可以包括:
获取模块401,用于获取第一待写入数据;确定模块402,用于确定所述第一待写入数据对应的第一组标识,并确定所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识;其中,所述第二组标识对应的主节点是本节点;发送模块403,用于将所述第二组标识发送给所述第一节点,以使所述第一节点将所述第一待写入数据对应的第一组标识修改为第二组标识;处理模块404,用于接收所述第一节点发送的更新消息,根据所述更新消息将所述第一待写入数据对应的第一组标识修改为所述第二组标识,并执行所述第一待写入数据的写入过程。
在一个例子中,所述确定模块402确定所述第一待写入数据对应的第一组标识时具体用于:确定第一待写入数据对应的第一数据表、所述第一数据表中与第一待写入数据对应的第一数据行,所述第一数据行包括第一待写入数据对应的组标识;将所述第一数据行中记录的组标识确定为所述第一组标识。
在一个例子中,若所述第一组标识对应的主节点是本节点;所述获取模块401,还用于获取第二待写入数据,所述第二待写入数据的索引信息与所述第一待写入数据的索引信息相同;所述确定模块402,还用于确定所述第二待写入数据对应的组标识;若所述第二待写入数据对应的组标识与所述第一组标识不同,则确定所述第二待写入数据对应的组标识对应的主节点;所述发送模块403,还用于若所述第二待写入数据对应的组标识对应的主节点是本节点之外的第二节点,则将所述第一组标识发送给所述第二节点,以使所述第二节点将所述第二待写入数据对应的组标识修改为第一组标识;所述处理模块404,还用于接收所述第二节点发送的更新消息,根据所述更新消息将所述第二待写入数据对应的组标识修改为所述第一组标识,并执行所述第二待写入数据的写入过程。
若所述第一组标识对应的主节点是本节点之外的第一节点;所述获取模块401,还用于获取第二待写入数据,所述第二待写入数据的索引信息与所述第一待写入数据的索引信息相同;所述确定模块402,还用于确定所述第二待写入数据对应的组标识;若所述第二待写入数据对应的组标识与所述第二组标识不同,则确定所述第二待写入数据对应的组标识对应的主节点;所述发送模块403,还用于若所述第二待写入数据对应的组标识对应的主节点是本节点之外的第三节点,则将所述第二组标识发送给所述第三节点,以使所述第三节点将所述第二待写入数据对应的组标识修改为第二组标识;所述处理模块404,还用于接收所述第三节点发送的更新消息,根据所述更新消息将所述第二待写入数据对应的组标识修改为所述第二组标识,并执行所述第二待写入数据的写入过程。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据写入设备,包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取第一待写入数据;确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:获取第一待写入数据;确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识,第二组标识对应的主节点是本节点,并将第二组标识发送给所述第一节点,以使第一节点将第一待写入数据对应的第一组标识修改为第二组标识;接收第一节点发送的更新消息,根据更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据写入装置,应用于分布式数据库中的任一节点,所述节点对应至少一个组,所述节点是所述组的主节点,所述装置包括:获取模块,用于获取第一待写入数据;确定模块,用于确定所述第一待写入数据对应的第一数据行,所述第一数据行包括所述第一待写入数据对应的组标识;处理模块,用于将所述第一数据行包括的组标识修改为所述节点对应的组的组标识,以将所述第一数据行与所述节点对应的组进行动态绑定。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (19)

1.一种数据写入方法,其特征在于,应用于分布式数据库中的任一节点,所述方法包括:
获取第一待写入数据;
确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;其中,所述确定第一待写入数据对应的第一组标识,包括:确定第一待写入数据对应的第一数据表、所述第一数据表中与第一待写入数据对应的第一数据行,所述第一数据行包括第一待写入数据对应的组标识;将所述第一数据行中记录的组标识确定为所述第一组标识;所述确定所述第一组标识对应的主节点,包括:通过所述第一组标识查询映射表,得到所述第一组标识对应的主节点;其中,所述映射表用于记录组标识和主节点的对应关系;
若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;
接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
2.根据权利要求1所述的方法,其特征在于,
所述确定所述第一组标识对应的主节点之后,所述方法还包括:
若所述主节点是本节点,则由本节点执行第一待写入数据的写入过程。
3.根据权利要求1所述的方法,其特征在于,所述确定第二组标识,包括:
获取映射表中记录的组标识;
若所述组标识对应的主节点是本节点,将所述组标识确定为第二组标识;
其中,所述映射表用于记录组标识和主节点的对应关系。
4.根据权利要求1所述的方法,其特征在于,
所述将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识,包括:
向所述第一节点发送通知消息,所述通知消息携带所述第二组标识和所述第一待写入数据的索引信息;其中,所述通知消息用于使所述第一节点根据所述索引信息确定所述第一待写入数据对应的第二数据行,将所述第二数据行中记录的所述第一组标识修改为所述第二组标识。
5.根据权利要求1所述的方法,其特征在于,所述根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,包括:
若所述更新消息还携带所述第一待写入数据的索引信息,则根据所述索引信息确定所述第一待写入数据在第一数据表中对应的第一数据行;
将所述第一数据行中记录的所述第一组标识修改为所述第二组标识。
6.根据权利要求2所述的方法,其特征在于,
若所述第一组标识对应的主节点是本节点,所述方法还包括:获取第二待写入数据,第二待写入数据的索引信息与第一待写入数据的索引信息相同;
确定第二待写入数据对应的组标识;若第二待写入数据对应的组标识与所述第一组标识不同,则确定第二待写入数据对应的组标识对应的主节点;
若所述主节点是本节点之外的第二节点,则将所述第一组标识发送给所述第二节点,以使第二节点将第二待写入数据对应的组标识修改为第一组标识;
接收第二节点发送的更新消息,根据所述更新消息将第二待写入数据对应的组标识修改为第一组标识,由本节点执行第二待写入数据的写入过程。
7.根据权利要求6所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识对应的主节点之后,还包括:
若所述主节点是本节点,则由本节点将第二待写入数据对应的组标识修改为第一组标识,由本节点执行第二待写入数据的写入过程;
向本节点之外的其它节点发送更新消息,以使其它节点根据所述更新消息将第二待写入数据对应的组标识修改为第一组标识。
8.根据权利要求6所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识之后,所述方法还包括:
若所述第二待写入数据对应的组标识与所述第一组标识相同,则由本节点执行所述第二待写入数据的写入过程。
9.根据权利要求1所述的方法,其特征在于,若所述第一组标识对应的主节点是本节点之外的第一节点,所述方法还包括:获取第二待写入数据,所述第二待写入数据的索引信息与所述第一待写入数据的索引信息相同;
确定第二待写入数据对应的组标识;若第二待写入数据对应的组标识与所述第二组标识不同,则确定第二待写入数据对应的组标识对应的主节点;
若所述主节点是本节点之外的第三节点,则将所述第二组标识发送给所述第三节点,以使第三节点将第二待写入数据对应的组标识修改为第二组标识;
接收第三节点发送的更新消息,根据所述更新消息将第二待写入数据对应的组标识修改为第二组标识,由本节点执行第二待写入数据的写入过程。
10.根据权利要求9所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识对应的主节点之后,还包括:
若所述主节点是本节点,则由本节点将第二待写入数据对应的组标识修改为第二组标识,由本节点执行第二待写入数据的写入过程;
向本节点之外的其它节点发送更新消息,以使其它节点根据所述更新消息将第二待写入数据对应的组标识修改为第二组标识。
11.根据权利要求9所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识之后,所述方法还包括:
若所述第二待写入数据对应的组标识与所述第二组标识相同,则由本节点执行所述第二待写入数据的写入过程。
12.根据权利要求6或9所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识,包括:
确定第二待写入数据对应的第二数据表、所述第二数据表中与第二待写入数据对应的第三数据行,所述第三数据行包括第二待写入数据对应的组标识;
将所述第三数据行中记录的组标识确定为第二待写入数据对应的组标识。
13.根据权利要求6或9所述的方法,其特征在于,
所述确定第二待写入数据对应的组标识对应的主节点,包括:
通过第二待写入数据对应的组标识查询映射表,得到第二待写入数据对应的组标识对应的主节点;所述映射表用于记录组标识和主节点的对应关系。
14.根据权利要求1-11任一项所述的方法,其特征在于,
所述组标识包括分布式一致性协议的组标识。
15.根据权利要求1所述的方法,其特征在于,
本节点与所述第一节点位于不同的区域;所述第一待写入数据是用户从所述第一节点所在区域迁移到本节点所在区域后发送的。
16.一种数据写入装置,其特征在于,应用于分布式数据库中的任一节点,所述装置包括:
获取模块,用于获取第一待写入数据;
确定模块,用于确定所述第一待写入数据对应的第一组标识,并确定所述第一组标识对应的主节点;若所述主节点是本节点之外的第一节点,则确定第二组标识;其中,所述第二组标识对应的主节点是本节点;
发送模块,用于将所述第二组标识发送给所述第一节点,以使所述第一节点将所述第一待写入数据对应的第一组标识修改为第二组标识;
处理模块,用于接收所述第一节点发送的更新消息,根据所述更新消息将所述第一待写入数据对应的第一组标识修改为所述第二组标识,并执行所述第一待写入数据的写入过程;
其中,所述确定模块确定所述第一待写入数据对应的第一组标识时具体用于:确定第一待写入数据对应的第一数据表、所述第一数据表中与第一待写入数据对应的第一数据行,所述第一数据行包括第一待写入数据对应的组标识;将所述第一数据行中记录的组标识确定为所述第一组标识;
所述确定模块确定所述第一组标识对应的主节点时具体用于:通过所述第一组标识查询映射表,得到所述第一组标识对应的主节点;其中,所述映射表用于记录组标识和主节点的对应关系。
17.根据权利要求16所述的装置,其特征在于,
若所述第一组标识对应的主节点是本节点;
所述获取模块,还用于获取第二待写入数据,所述第二待写入数据的索引信息与所述第一待写入数据的索引信息相同;
所述确定模块,还用于确定所述第二待写入数据对应的组标识;若所述第二待写入数据对应的组标识与所述第一组标识不同,则确定所述第二待写入数据对应的组标识对应的主节点;
所述发送模块,还用于若所述第二待写入数据对应的组标识对应的主节点是本节点之外的第二节点,则将所述第一组标识发送给所述第二节点,以使所述第二节点将所述第二待写入数据对应的组标识修改为第一组标识;
所述处理模块,还用于接收所述第二节点发送的更新消息,根据所述更新消息将所述第二待写入数据对应的组标识修改为所述第一组标识,并执行所述第二待写入数据的写入过程。
18.根据权利要求16所述的装置,其特征在于,
若所述第一组标识对应的主节点是本节点之外的第一节点;
所述获取模块,还用于获取第二待写入数据,所述第二待写入数据的索引信息与所述第一待写入数据的索引信息相同;
所述确定模块,还用于确定所述第二待写入数据对应的组标识;若所述第二待写入数据对应的组标识与所述第二组标识不同,则确定所述第二待写入数据对应的组标识对应的主节点;
所述发送模块,还用于若所述第二待写入数据对应的组标识对应的主节点是本节点之外的第三节点,则将所述第二组标识发送给所述第三节点,以使所述第三节点将所述第二待写入数据对应的组标识修改为第二组标识;
所述处理模块,还用于接收所述第三节点发送的更新消息,根据所述更新消息将所述第二待写入数据对应的组标识修改为所述第二组标识,并执行所述第二待写入数据的写入过程。
19.一种数据写入设备,其特征在于,所述数据写入设备为分布式数据库中的任一节点,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取第一待写入数据;
确定第一待写入数据对应的第一组标识、所述第一组标识对应的主节点;其中,所述确定第一待写入数据对应的第一组标识,包括:确定第一待写入数据对应的第一数据表、所述第一数据表中与第一待写入数据对应的第一数据行,所述第一数据行包括第一待写入数据对应的组标识;将所述第一数据行中记录的组标识确定为所述第一组标识;所述确定所述第一组标识对应的主节点,包括:通过所述第一组标识查询映射表,得到所述第一组标识对应的主节点;其中,所述映射表用于记录组标识和主节点的对应关系;
若所述主节点是本节点之外的第一节点,则确定第二组标识,所述第二组标识对应的主节点是本节点,并将所述第二组标识发送给所述第一节点,以使所述第一节点将第一待写入数据对应的第一组标识修改为第二组标识;
接收第一节点发送的更新消息,根据所述更新消息将第一待写入数据对应的第一组标识修改为第二组标识,由本节点执行第一待写入数据的写入过程。
CN201810994734.4A 2018-08-29 2018-08-29 一种数据写入方法、装置及其设备 Active CN110874382B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN201810994734.4A CN110874382B (zh) 2018-08-29 2018-08-29 一种数据写入方法、装置及其设备
EP19856128.4A EP3844635A4 (en) 2018-08-29 2019-08-27 DATA WRITE METHOD AND APPARATUS
JP2021507465A JP7371087B2 (ja) 2018-08-29 2019-08-27 データ書き込みのための方法及び装置
PCT/US2019/048317 WO2020046916A1 (en) 2018-08-29 2019-08-27 Method and apparatus for data writing
US16/553,077 US10893098B2 (en) 2018-08-29 2019-08-27 Method and apparatus for data writing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810994734.4A CN110874382B (zh) 2018-08-29 2018-08-29 一种数据写入方法、装置及其设备

Publications (2)

Publication Number Publication Date
CN110874382A CN110874382A (zh) 2020-03-10
CN110874382B true CN110874382B (zh) 2023-07-04

Family

ID=69640552

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810994734.4A Active CN110874382B (zh) 2018-08-29 2018-08-29 一种数据写入方法、装置及其设备

Country Status (5)

Country Link
US (1) US10893098B2 (zh)
EP (1) EP3844635A4 (zh)
JP (1) JP7371087B2 (zh)
CN (1) CN110874382B (zh)
WO (1) WO2020046916A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11759460B2 (en) * 2020-08-14 2023-09-19 Devie Medical Gmbh Method of local antibiotic treatment of infective endocarditis

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130048093A (ko) * 2011-11-01 2013-05-09 한국전자통신연구원 분산 데이터 베이스 장치 및 그 장치에서의 스트림 데이터 처리 방법
CN104866584A (zh) * 2015-05-28 2015-08-26 交通银行股份有限公司 一种基于业务规则的数据分区方法及装置
CN107153660A (zh) * 2016-03-04 2017-09-12 福建天晴数码有限公司 分布式数据库***的故障检测处理方法及其***
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器
CN107544869A (zh) * 2017-05-27 2018-01-05 新华三技术有限公司 一种数据恢复方法和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165693A (ja) * 1991-12-17 1993-07-02 Fujitsu Ltd 分散情報処理装置
JP2005004474A (ja) * 2003-06-11 2005-01-06 Digital Dream:Kk 意味づけされた情報要素を分散管理する情報ストレージシステムの構成方法
WO2008076134A1 (en) 2006-12-21 2008-06-26 Otis Elevator Company Passenger conveyor handrail drive device
JP5557840B2 (ja) 2008-10-03 2014-07-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 分散データベースの監視メカニズム
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US8732140B2 (en) * 2011-05-24 2014-05-20 Red Lambda, Inc. Methods for storing files in a distributed environment
JP5701398B2 (ja) 2011-11-16 2015-04-15 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US9230000B1 (en) * 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US8965921B2 (en) * 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
JP6028641B2 (ja) 2013-03-21 2016-11-16 富士通株式会社 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
US9569513B1 (en) 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
CN106062717B (zh) 2014-11-06 2019-05-03 华为技术有限公司 一种分布式存储复制***和方法
JP2016177578A (ja) 2015-03-20 2016-10-06 株式会社日立製作所 管理システム、サーバ装置、およびデータ管理方法
US10623486B2 (en) * 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
EP3193256B1 (en) * 2016-01-12 2018-08-01 Politechnika Poznanska A fault-tolerant data processing computer system and method for implementing a distributed two-tier state machine
US20200019476A1 (en) * 2018-07-11 2020-01-16 EMC IP Holding Company LLC Accelerating Write Performance for Microservices Utilizing a Write-Ahead Log

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130048093A (ko) * 2011-11-01 2013-05-09 한국전자통신연구원 분산 데이터 베이스 장치 및 그 장치에서의 스트림 데이터 처리 방법
CN104866584A (zh) * 2015-05-28 2015-08-26 交通银行股份有限公司 一种基于业务规则的数据分区方法及装置
CN107153660A (zh) * 2016-03-04 2017-09-12 福建天晴数码有限公司 分布式数据库***的故障检测处理方法及其***
CN107544869A (zh) * 2017-05-27 2018-01-05 新华三技术有限公司 一种数据恢复方法和装置
CN107295080A (zh) * 2017-06-19 2017-10-24 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
储佳佳 ; 郭进伟 ; 刘柏众 ; 张晨东 ; 钱卫宁 ; .高可用数据库***中的分布式一致性协议.华东师范大学学报(自然科学版).2016,(第05期),全文. *

Also Published As

Publication number Publication date
US20200076890A1 (en) 2020-03-05
CN110874382A (zh) 2020-03-10
EP3844635A1 (en) 2021-07-07
JP7371087B2 (ja) 2023-10-30
EP3844635A4 (en) 2022-05-18
JP2021535468A (ja) 2021-12-16
US10893098B2 (en) 2021-01-12
WO2020046916A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
CN104598459B (zh) 数据库处理、数据访问方法及***
WO2020134615A1 (zh) 跨链存证方法及访问方法、装置、电子设备
US11070979B2 (en) Constructing a scalable storage device, and scaled storage device
US20110153570A1 (en) Data replication and recovery method in asymmetric clustered distributed file system
CN103714097A (zh) 一种访问数据库的方法和装置
CN102955845A (zh) 数据访问方法、装置与分布式数据库***
CN106534308B (zh) 一种分布式存储***中解决数据块访问热点的方法及装置
US20180293257A1 (en) Method for accessing distributed database and distributed data service apparatus
CN107391033B (zh) 数据迁移方法及装置、计算设备、计算机存储介质
CN112417036A (zh) 分布式存储***中处理对象的元数据的方法及装置
TW201248418A (en) Distributed caching and cache analysis
WO2011107040A2 (zh) 数据访问处理方法和设备
US20150169623A1 (en) Distributed File System, File Access Method and Client Device
US10534765B2 (en) Assigning segments of a shared database storage to nodes
CN107493309B (zh) 一种分布式***中的文件写入方法及装置
CN111475099B (zh) 一种数据存储方法、装置及其设备
CN108153759B (zh) 一种分布式数据库的数据传输方法、中间层服务器及***
CN110874382B (zh) 一种数据写入方法、装置及其设备
CN110928943B (zh) 一种分布式数据库及数据写入方法
WO2014190700A1 (zh) 一种内存访问的方法、缓冲调度器和内存模块
CN106302374A (zh) 一种用于提高表项访问带宽和原子性操作的装置及方法
CN110837499B (zh) 数据访问处理方法、装置、电子设备和存储介质
CN110879748B (zh) 一种共享资源分配方法、装置和设备
US10848549B1 (en) Leaderless, parallel, and topology-aware protocol for achieving consensus
WO2023024656A1 (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210907

Address after: Room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Alibaba (China) Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: ALIBABA GROUP HOLDING Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211119

Address after: No.12 Zhuantang science and technology economic block, Xihu District, Hangzhou City, Zhejiang Province

Applicant after: Aliyun Computing Co.,Ltd.

Address before: 310052 room 508, 5th floor, building 4, No. 699 Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: Alibaba (China) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant