数据处理和节点部署的方法、装置、电子设备及介质与流程

    专利查询2023-06-20  122



    1.本公开涉及存储技术领域,尤其涉及一种数据处理和节点部署的方法、装置、电子设备及介质。


    背景技术:

    2.随着各种应用的不断开发和更新,用户数据、运维数据、运营数据等相关的数据量呈指数级增加,存储容量和存储可靠性成为衡量存储系统的关键指标。为了提升存储系统的可靠性、可用性和存取效率,分布式存储系统应运而生。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了存储系统的可靠性、可用性和存取效率,还易于扩展。
    3.然而,目前的存储系统在多副本管理层面,基于日志一致性的相关共识算法/协议(例如paxos共识算法,raft共识算法等)能够实现副本存储的一致性,但是应用场景局限,仅支持在存储系统中的各个节点存储数据一致的情况,数据冗余度较高。


    技术实现要素:

    4.为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种数据处理和节点部署的方法、装置、电子设备及介质。
    5.第一方面,本公开的实施例提供了一种数据处理的方法,上述方法应用于服务集群的主节点。上述方法包括:接收携带有待存储数据的数据提交请求;对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志;根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段;以及根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    6.根据本公开的实施例,上述根据预定义的节点存储角色,将上述目标日志和匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令,包括:根据预定义的节点存储角色,在上述目标数据中确定匹配于上述主节点的数据段和匹配于各个从节点的数据段;将上述目标日志存储于日志文件存储区域,将上述匹配于上述主节点的数据段存储至上述主节点的存储引擎;以及向上述服务集群中的从节点发送日志复制指令,上述日志复制指令用于指示每个从节点来存储上述目标日志和对应存储各自匹配的数据段。
    7.根据本公开的实施例,上述服务集群包括用于存储的t个节点,t为正整数。上述对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志,包括:根据预设分段个数k,将上述待存储数据划分为k个原始数据段,k为正整数;根据预设校验个数m,对上述k个原始数据段进行纠删码编码计算,
    得到m个校验数据段,m为自然数;其中上述k个原始数据段和上述m个校验数据段构成目标数据,节点个数t满足:t=k+m;为上述目标数据分配对应的数据标识;以及在上述主节点的日志序列的末尾追加一条与上述目标数据的数据标识相关的目标日志。
    8.根据本公开的实施例,以键-值对的形式存储上述匹配于上述主节点的数据段,上述目标数据的数据标识作为键-值对中的键进行存储,上述目标数据中匹配于上述主节点的数据段对应作为键-值对中的值进行存储。
    9.根据本公开的实施例,上述根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果,包括:根据上述从节点的执行反馈结果是否满足预设的提交共识条件,确定是否将上述目标日志提交至状态机;以及根据上述目标日志的提交状态,生成针对上述数据提交请求的响应结果。
    10.根据本公开的实施例,上述原始数据段的个数为预设的k个,上述校验数据段的个数为预设的m个,k为正整数,m为自然数;上述提交共识条件包括:当上述主节点和上述从节点中至少有k

    +f个节点将目标日志存储成功时,将上述目标日志提交至状态机;其中,k

    表示原始数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    ,m

    表示校验数据段对应的节点个数,k

    的值与k的值相等,m

    的值与m的值相等。
    11.根据本公开的实施例,在上述服务集群中,上述主节点的产生条件为:在本轮任期内,在上述服务集群中存在目标候选节点接收到其余候选节点的投票个数值超过:max(t/2+1,k

    +f)的情况下,将上述目标节点作为本轮任期内的主节点,其中,t为服务集群中用于存储的节点总个数,t=k

    +m

    ,k

    表示原始数据段对应的节点个数,m

    表示校验数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m


    12.第二方面,本公开的实施例提供了一种数据处理的方法,上述方法应用于服务集群的从节点。针对每个从节点,上述方法包括:接收上述服务集群中的主节点发送的日志复制指令,上述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中上述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段;将上述目标数据中匹配于当前从节点的数据段和上述目标日志进行存储;监测上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态;根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果。
    13.根据本公开的实施例,根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果,包括:在上述第一存储状态和上述第二存储状态均为存储成功的情况下,生成目标日志存储成功的执行反馈结果;在上述第一存储状态和上述第二存储状态中至少有一个为存储失败的情况下,生成目标日志存储失败的执行反馈结果。
    14.根据本公开的实施例,以键-值对的形式存储上述匹配于上述从节点的数据段,上述目标数据的数据标识作为键-值对中的键进行存储,上述目标数据中匹配于上述从节点的数据段对应作为键-值对中的值进行存储。
    15.第三方面,本公开的实施例提供了一种服务集群的节点部署的方法。上述方法包括:接收对服务集群中的节点进行存储定义的定义信息,其中,上述定义信息用于限定上述节点与数据段序号之间的存储映射关系;根据上述定义信息,为各个节点配置节点存储角
    色;以及根据主节点的产生条件,在上述服务集群中生成主节点和从节点,上述主节点和上述从节点各自具有对应的节点存储角色。其中,上述数据段序号的总个数为预设分段个数和预设校验个数的总和,上述预设分段个数用于划分待存储数据以得到原始数据段,上述预设校验个数用于限定上述原始数据段进行编码后得到的校验数据段的个数。
    16.第四方面,本公开的实施例提供了一种数据处理的装置。上述装置包括:服务集群的主节点,上述主节点包括:请求接收模块、数据处理模块、日志存储和日志复制模块、以及响应结果生成模块。上述请求接收模块用于接收携带有待存储数据的数据提交请求。上述数据处理模块用于对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志。上述日志存储和日志复制模块用于根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段。上述响应结果生成模块用于根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    17.第五方面,本公开的实施例提供了一种数据处理的装置。上述装置包括:服务集群的从节点,上述从节点包括:指令接收模块、存储模块、状态监测模块和反馈结果生成模块。上述指令接收模块用于接收上述服务集群中的主节点发送的日志复制指令,上述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中上述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段。上述存储模块用于将上述目标数据中匹配于当前从节点的数据段和上述目标日志进行存储。上述状态监测模块用于监测上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态。上述反馈结果生成模块用于根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果。
    18.第六方面,本公开的实施例提供了一种用于部署服务集群的节点的装置。上述装置包括:信息接收模块、配置模块和选主模块。上述信息接收模块用于接收对服务集群中的节点进行存储定义的定义信息,其中,上述定义信息用于限定上述节点与数据段序号之间的存储映射关系;上述数据段序号的总个数为预设分段个数和预设校验个数的总和,上述预设分段个数用于划分待存储数据以得到原始数据段,上述预设校验个数用于限定上述原始数据段进行编码后得到的校验数据段的个数。上述配置模块用于根据上述定义信息,为各个节点配置节点存储角色。上述选主模块用于根据主节点的产生条件,在上述服务集群中生成主节点和从节点,上述主节点和上述从节点各自具有对应的节点存储角色。
    19.第七方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的任一种数据处理的方法或节点部署的方法。
    20.第八方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的任一种数据处理的方法或节点部署的方法。
    21.本公开实施例提供的上述技术方案至少具有如下优点的部分或全部:
    22.服务集群中的各个节点具有预定义的节点存储角色,主节点通过对待存储数据进行分段和编码处理后,得到包含预设个数原始数据段和校验数据段的目标数据,并生成对应的目标日志,主节点能够根据预定义的节点存储角色进行匹配数据段的存储,而且在主节点向从节点发送日志复制指令时,能够根据预定义的节点存储角色将匹配的数据段对应分配至各个从节点分别进行存储,同时各个从节点存储的目标日志与主节点是一致的,实现了日志复制一致性和纠错码(ec)存储的有机结合,使得共识算法能够支持ec存储,各个节点存储的数据可以不同,拓展了日志复制一致性和ec存储的应用场景,在分布式存储领域具有广泛的应用前景,能够有效降低数据冗余度,提升存储利用率。
    附图说明
    23.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
    24.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
    25.图1示意性地示出了适用于本公开实施例的数据处理的方法和装置的系统架构;
    26.图2示意性地示出了根据本公开实施例的应用于主节点的数据处理的方法的流程图;
    27.图3示意性地示出了根据本公开实施例的操作s202的详细实施过程和得到的目标数据的组成示例;
    28.图4示意性地示出了根据本公开实施例的操作s203的详细实施流程图;
    29.图5示意性地示出了根据本公开实施例的操作s401的详细实施过程图;
    30.图6示意性地示出了根据本公开实施例的操作s204的详细实施流程图;
    31.图7示意性地示出了根据本公开实施例的应用于从节点的数据处理的方法的流程图;
    32.图8示意性地示出了根据本公开实施例的由服务集群进行数据处理的过程示例;
    33.图9示意性地示出了根据本公开实施例的服务集群的节点部署的方法的流程图;
    34.图10示意性地示出了根据本公开一实施例的数据处理的装置的结构框图;
    35.图11示意性地示出了根据本公开另一实施例的数据处理的装置的结构框图;
    36.图12示意性地示出了根据本公开实施例的用于部署服务集群的节点的装置的结构框图;以及
    37.图13示意性示出了本公开实施例提供的电子设备的结构框图。
    具体实施方式
    38.本公开的实施例提供了一种数据处理和节点部署的方法、装置、电子设备及介质,实现了日志复制一致性和纠错码(ec)存储的有机结合,使得共识算法能够支持ec存储,各个节点存储的数据可以不同,拓展了日志复制一致性和ec存储的应用场景,在分布式存储领域具有广泛的应用前景,能够有效降低数据冗余度。
    39.在本公开的实施例中,当上述数据处理的方法应用于服务集群的主节点时,上述
    方法包括:接收携带有待存储数据的数据提交请求;对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志;根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段;以及根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    40.在本公开的实施例中,当上述数据处理的方法应用于服务集群的从节点时,针对每个从节点,上述方法包括:接收上述服务集群中的主节点发送的日志复制指令,上述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中上述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段;将上述目标数据中匹配于当前从节点的数据段和上述目标日志进行存储;监测上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态;根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果。
    41.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
    42.图1示意性地示出了适用于本公开实施例的数据处理的方法和装置的系统架构。
    43.参照图1所示,适用于本公开实施例的数据处理的方法和装置的系统架构100包括:具有数据存储需求的电子设备110和服务集群120,上述服务集群120与电子设备110之间通过网络进行连接,服务集群120包括t个用于为电子设备110提供存储服务的服务节点,t为正整数,即,t≥1。
    44.在图1中以t=6来进行示例,该服务集群120中用于为电子设备110提供数据存储服务的服务节点(后续简称为节点)分别为:节点n1、节点n2、节点n3、节点n4、节点n5和节点n6。
    45.上述节点n1~n6具有双重身份,分别为用于执行日志复制一致性共识算法/协议中的身份a和用于进行纠错码编码存储的身份b,这里将身份b描述为:节点存储角色。
    46.上述身份a中包括:主节点和从节点,当t≥2时,主节点和从节点为不同的节点,该服务集群120可以是分布式存储的架构。当t=1时,对应的服务集群中只有一个服务节点,属于主节点和从节点为同一个节点的特例情况。
    47.参照图1所示,以节点n1为主节点,其他节点n2~n6均为从节点作为示例。
    48.参照图1所示,上述身份b对应的节点存储角色用于表征上述服务集群中用于存储的各个节点与数据段序号之间的存储映射关系,例如在对服务集群120中的各个节点部署时,预先定义了节点n1的节点存储角色c1用于存储目标数据中的第1段数据段(part1),节点n2的节点存储角色c2用于存储目标数据中的第2段数据段(part2),节点n3的节点存储角色c3用于存储目标数据中的第3段数据段(part3),节点n4的节点存储角色c4用于存储目标数据中的第4段数据段(part4),节点n5的节点存储角色c5用于存储目标数据中的第5段数据段(part5),节点n6的节点存储角色c6用于存储目标数据中的第6段数据段(part6)。
    49.网络是在上述电子设备110和服务集群120之间提供通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
    50.上述服务集群120中的节点n1~n6可以是提供数据存储服务的服务端,包括传统的数据库服务器、云服务器等等。
    51.以终端设备作为具有数据存储需求的电子设备110的一种示例,上述终端设备上安装有各种通讯客户端应用,包括但不限于是:购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。上述终端设备包括但不限于是智能手机、平板电脑、笔记本电脑、台式计算机、智能手表、无人驾驶汽车、智能机器人等等。用户可以使用终端设备通过网络与服务集群120进行数据交互,以接收或发送消息等。上述服务集群120对用户利用终端设备所浏览的应用或网站进行数据处理提供数据存储服务支持。
    52.需要说明的是,本公开实施例所提供的应用于服务集群的主节点的数据处理的方法一般可以由上述服务集群120中的主节点来执行,应用于服务集群的从节点的数据处理的方法一般可以由上述服务集群120中的从节点来执行,相应的,数据处理的装置对应于包含主节点或从节点的装置。
    53.示例性的,上述服务集群120中的主节点接收来自电子设备110的数据存储请求,执行相应的数据处理的方法,对接收到的数据存储请求进行分析和处理,并将处理结果反馈给电子设备110。上述服务集群120中的从节点接收来自主节点的日志复制指令,执行相应的数据处理的方法,进行日志复制操作,并将生成的执行反馈结果发送给主节点。
    54.尽管以图1示例的终端设备110和服务集群120构成的系统架构100来示例本公开可以应用的场景,本公开实施例提供的数据处理的方法和装置不局限于上述示例的场景,在其他应用场景中,具有数据存储需求的除了是终端设备之外,还可以是应用服务器,或者其他具有存储服务需求的电子设备。
    55.应该理解,图1中的电子设备、服务集群和服务节点的数目仅仅是示意性的。根据实现需要,可以具有任意数目的电子设备、服务集群和服务节点。
    56.本公开的第一个示例性实施例提供了一种数据处理的方法,本实施例的数据处理的方法应用至服务集群的主节点。
    57.图2示意性地示出了根据本公开实施例的应用于主节点的数据处理的方法的流程图。
    58.根据本公开的实施例,参照图1所示,服务集群包括t个节点,当t≥2时,主节点和从节点为不同的节点,该服务集群120可以是分布式存储的架构。当t=1时,对应的服务集群中只有一个服务节点,属于主节点和从节点为同一个节点的特例情况。
    59.参照图2所示,本公开实施例的数据处理的方法包括以下操作:s201、s202、s203和s204。上述操作s201~s204由服务集群中的主节点(例如在图1中以节点n1来示例主节点,后续描述为主节点n1)来执行。服务集群中的主节点和从节点构成了一套存储系统。
    60.在操作s201,接收携带有待存储数据的数据提交请求。
    61.在示例性的实施场景中,可以是主节点n1接收到具有数据储需求的电子设备(可以是终端设备或者应用服务器等)对用户数据进行的数据提交请求,该数据提交请求中携带有待存储数据,上述待存储数据包括各种类型的用于进行存储的数据,诸如但不限于是:
    用户登录数据、用户权限数据、对用户请求进行处理后的数据、用户浏览记录等等。
    62.在操作s202,对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志。
    63.生成的目标日志与上述目标数据相关,例如可以是记录上述目标数据的数据标识,例如上述数据提交请求(例如为put请求)对应的用户标识为:userkey_1,并且上述目标数据的数据标识为bid_1,则上述目标日志例如为:“put(userkey_1,bid_1)”。
    64.上述预设个数根据存储系统中主节点和从节点的总个数t来进行设置,可以预设k个原始数据段和m个校验数据段,则需要满足:k+m=t。例如参照图1所示,服务集群120中用于存储的主节点为1个(图1中示例为节点n1),从节点为5个(图1中示例为n2~n6),一共有6(t的一种示例)个节点,则需要满足k+m=6。示例性的,以k=4,m=2作为预设个数的示例,相应的,用于存储k个原始数据段的节点个数k

    =4,用于存储m个校验数据段的节点个数m

    =2。
    65.在操作s203,根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段。
    66.基于预定义的节点存储角色,上述目标日志所引用的数据段在不同的节点具有不同的存储映射关系,那么主节点在读取目标日志时,能够通过目标数据的数据标识(例如bid_1)和节点存储角色定位至各个节点自身对应的数据段(原始数据段或校验数据段)进行引用。例如,主节点n1在读取目标日志:“put(userkey_1,bid_1)”时,能够基于目标数据的身份标识“bid_1”和从节点n2~n6各自预定义的节点存储角色,得到n2~n6各自对应匹配的数据段,并对应向各个从节点n2~n6进行日志复制指令的下发,即,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段。
    67.从服务集群整体来看,能够根据预定义的节点存储角色,对目标日志实施主节点和从节点的一致性复制操作,其中,在日志的一致性复制操作过程中,在主节点和从节点存储与各自的节点存储角色相匹配的数据段。
    68.在操作s204,根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    69.由于上述日志复制指令中携带有目标日志的信息和与各个从节点自身对应匹配的数据段,那么各个从节点对上述日志复制指令进行执行包括两个方面,一方面是目标日志的复制,一方面是对与各自匹配的数据段进行存储。
    70.基于上述操作s201~s204,服务集群中的各个节点具有预定义的节点存储角色,主节点通过对待存储数据进行分段和编码处理后,得到包含预设个数原始数据段和校验数据段的目标数据,并生成对应的目标日志,主节点能够根据预定义的节点存储角色进行匹配数据段的存储,而且在主节点向从节点发送日志复制指令时,能够根据预定义的节点存储角色将匹配的数据段对应分配至各个从节点分别进行存储,同时各个从节点存储的目标日志与主节点是一致的,实现了日志复制一致性和纠错码(ec)存储的有机结合,使得共识算法能够支持ec存储,各个节点存储的数据可以不同,拓展了日志复制一致性和ec存储的
    应用场景,在分布式存储领域具有广泛的应用前景,能够有效降低数据冗余度,提升存储利用率。
    71.下面结合图3来对操作s202的实施过程进行详细描述。
    72.图3示意性地示出了根据本公开实施例的操作s202的详细实施过程和得到的目标数据的组成示例。
    73.在一实施例中,上述服务集群包括用于存储的t个节点,t为正整数。上述操作s202中,对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志,包括以下子操作:s2021、s2022、s2023和s2024。
    74.在子操作s2021,根据预设分段个数k,将上述待存储数据划分为k个原始数据段,k为正整数。
    75.在图3中以k=4作为示例。通常而言,预设分段个数k可以设置为2或者大于2的数值,对应将待存储数据划分为至少两个以上的原始数据段;在一些实施特例下,预设分段个数k也可以被设置为1,这种情况下的执行逻辑为整段数据为一原始数据段。
    76.在子操作s2022,根据预设校验个数m,对上述k个原始数据段进行纠删码(ec)编码计算,得到m个校验数据段,m为自然数;其中上述k个原始数据段和上述m个校验数据段构成目标数据,节点个数t满足:t=k+m。
    77.在图3中以m=2作为示例。通常而言,预设校验个数可以被设置为大于等于1的任意整数,对应于存在校验数据段的场景,本公开实施例提供的服务集群对应的存储系统可以支持同时包括原始数据段和校验数据段的目标数据组成模式,也可以支持单纯存在原始数据段的目标数据组成模式,因此预设校验个数也可以被设置为0,当预设校验个数k=0时,对应进入到目标数据只含原始数据段的目标数据组成模式即可。
    78.从实际应用的角度上而言,本公开实施例提供的数据处理的方法针对的海量的待存储数据,因此预设个数k和m会根据服务集群的规模、节点个数的可用性和资源分配情况进行对应设置。
    79.示例性的,参照图3所示,将4m(兆,1024b(bit,位)等于1kb,1024kb等于1m)待存储数据310进行分段,划分为4个原始数据段,每个原始数据段各自包含1m数据,对上述4个原始数据段进行纠删码(ec)编码处理,上述ec编码例如可以通过采用rs算法来进行编码计算,通过对4个1m的原始数据段进行rs编码,得到2个分别为1m的校验数据段。数据段序号part1、part2、part3、part4、part5、part6依次对应的数据段(包含数据内容)分别为:原始数据段321、原始数据段322、原始数据段323、原始数据段324、校验数据段325、校验数据段326,上述原始数据段321、原始数据段322、原始数据段323、原始数据段324、校验数据段325、校验数据段326构成目标数据320。
    80.在子操作s2023,为上述目标数据分配对应的数据标识。
    81.例如,参照图3所示,为上述目标数据320分配对应的数据标识为bid_1。
    82.在子操作s2024,在上述主节点的日志序列的末尾追加一条与上述目标数据的数据标识相关的目标日志。
    83.参照图3所示,主节点的日志序列包括:日志1、日志2、日志3、
    ……
    、日志x(x对应的个数不做限定,仅作为示例),在最后一条日志x之后追加一条与上述目标数据320相关的目标日志,例如上述目标日志为“put(userkey_1,bid_1)”。
    84.图4示意性地示出了根据本公开实施例的操作s203的详细实施流程图。
    85.根据本公开的实施例,参照图4所示,上述操作s203中,根据预定义的节点存储角色,将上述目标日志和匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令,包括以下操作:s401、s402和s403。
    86.在操作s401,根据预定义的节点存储角色,在上述目标数据中确定匹配于上述主节点的数据段和匹配于各个从节点的数据段。
    87.图5示意性地示出了根据本公开实施例的操作s401的详细实施过程图。
    88.由前述关于系统架构100的描述可知,预定义的节点存储角色中,节点n1、n2、n3、n4、n5、n6分别依次对应用于存储的数据段序号为第1段(part1)、第2段(part2)、第3段(part3)、第4段(part4)、第5段(part5)、第6段(part6),则根据预定义的节点存储角色和上述操作s202中得到的目标数据的组成形式,能够得到匹配于主节点n1的数据段为:原始数据段321,匹配于从节点n2的数据段为:原始数据段322,匹配于从节点n3的数据段为:原始数据段323,匹配于从节点n4的数据段为:原始数据段324,匹配于从节点n5的数据段为:校验数据段325,匹配于从节点n6的数据段为:校验数据段326,如图5所示。
    89.需要说明的是,各个节点预定义的节点存储角色用于存储的part1~part6是数据段序号,具体数据段里面的内容是不固定的,在后续接收到待存储数据后,将待存储数据进行分段和编码之后,才会有包含具体存储内容的数据段。
    90.例如,待存储数据可以是不同容量大小,例如分别为4m、6m等,将待存储数据进行分段和编码后,可以划分为预设个数的数据段,例如划分为4个原始数据段和2个校验数据段,则对于4m待存储数据而言,可以得到4个1m的原始数据段和2个1m的校验数据段;对于6m待存储数据而言,可以得到4个1.5m的原始数据段和2个1.5m的校验数据段。
    91.在操作s402,将上述目标日志存储于日志文件存储区域,将上述匹配于上述主节点的数据段存储至上述主节点的存储引擎。
    92.例如,在一实施例中,主节点n1将目标日志“put(userkey_1,bid_1)”存储于log文件区域(日志文件存储区域的一种示例),将匹配于主节点n1的数据段:原始数据段321,存储于主节点的blob storage(存储引擎的一种示例)。
    93.根据本公开的实施例,以键-值对的形式存储上述匹配于上述主节点(例如主节点为节点n1)的数据段,上述目标数据(例如对应为目标数据320)的数据标识(例如为bid_1)作为键-值对中的键(key)进行存储,上述目标数据中匹配于上述主节点的数据段(例如为匹配于主节点n1的原始数据段321)对应作为键-值对中的值(value)进行存储。
    94.在操作s403,向上述服务集群中的从节点发送日志复制指令,上述日志复制指令用于指示每个从节点来存储上述目标日志和对应存储各自匹配的数据段。
    95.主节点向服务集群的存储系统中的从节点发送日志复制指令。
    96.与此同时,在主节点的任期内,主节点会向服务集群的存储系统中的所有从节点定时/按照预设规则发送心跳信息,以表明自身的主节点身份。在具体实施场景下,心跳信息和日志复制指令依照各自发生的时序先后执行,也可以存在一个心跳信息中同时携带日志复制指令的实施场景。
    97.图6示意性地示出了根据本公开实施例的操作s204的详细实施流程图。
    98.根据本公开的实施例,参照图6所示,上述操作s204中,根据从节点对上述日志复
    制指令的执行反馈结果,生成针对上述数据提交请求的响应结果,包括以下操作:s601和s602。
    99.在操作s601,根据上述从节点的执行反馈结果是否满足预设的提交共识条件,确定是否将上述目标日志提交至状态机。
    100.根据本公开的实施例,上述原始数据段的个数为预设的k个,上述校验数据段的个数为预设的m个,k为正整数,m为自然数。
    101.上述提交共识条件包括:当上述主节点和上述从节点中至少有k

    +f个节点将目标日志存储成功时,将上述目标日志提交至状态机;其中,k

    表示原始数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    ,m

    表示校验数据段对应的节点个数,k

    的值与k的值相等,m

    的值与m的值相等。
    102.例如,k=k

    =4,m=m

    =2,f=1,那么,提交共识条件为:主节点和从节点中至少有5(k

    +f=4+1=5)个节点将目标日志存储成功时,将上述目标日志提交至状态机。
    103.在一些实施例中,主节点接收来自从节点的执行反馈结果,主节点在操作s202中存储目标日志的过程中会生成存储成功的存储结果,在一实施例中,主节点在存储成功的情况下才向从节点发送日志复制指令,那么当至少接收到4(k

    +f-1=4+1-1)个从节点反馈的目标日志存储成功的执行反馈结果时,主节点将目标日志提交至状态机。
    104.在另一些实施例中,主节点实施目标日志的写入/存储操作,不论成功与否,向从节点发送日志复制指令,在主节点发生写入/存储失败的情况下,只要从节点和主节点整体的个数满足不少于k

    +f个的条件,即在这种情况下,主节点至少接收到5(k

    +f=4+1=5)个从节点反馈的目标日志存储成功的执行反馈结果时,主节点将目标日志提交至状态机。
    105.在一实施场景中,当从节点的执行反馈结果不满足预设的提交共识条件时,例如上述主节点接收到只有3个从节点反馈的目标日志存储成功的执行反馈结果,这种情况下,主节点会向尚未反馈执行反馈结果或者反馈的执行反馈结果为目标日志存储失败的从节点再次发布日志复制指令,如果在预设响应时段内,从节点的执行反馈结果满足提交共识条件,则将目标日志提交至状态机;否则,不进行目标日志的提交,并得到目标日志为提交失败的提交状态。
    106.当从节点的执行反馈结果满足预设的提交共识条件,确定将上述目标日志提交至状态机。当主节点将目标日志向状态机提交/确认(commit)之后,将提交/确认后的共识结果广播至所有从节点,这里的共识结果为:包含有目标日志的日志序列(例如图3中示例的日志序列);所有的节点(包括主节点和从节点)的状态机(例如,状态机里面包含用户相关的元数据)基于提交的包含目标日志的日志序列来执行(apply)日志序列,在日志序列执行成功的情况下,生成目标日志提交成功的提交状态;否则,生成目标日志提交失败的提交状态。
    107.在操作s602,根据上述目标日志的提交状态,生成针对上述数据提交请求的响应结果。
    108.当目标日志为提交成功的提交状态时,对应生成数据提交成功的响应结果;当目标日志为提交失败的提交状态时,对应生成数据提交失败的响应结果。
    109.主节点根据多个从节点对日志复制指令的执行反馈结果,可以得到服务集群的存储系统中所有节点(例如示例的6个节点)的共识结果,根据共识结果来确定是否进行目标
    日志向状态机的提交/确认(commit),在向状态机提交/确认了目标日志的情况下,各个节点(包括主节点和从节点)会按照提交的日志序列执行(apply),生成目标日志的提交状态,进而基于上述提交状态来生成针对数据提交请求的响应结果。
    110.基于上述提交共识条件的设置,当主节点和从节点中至少有k

    +f个节点将目标日志存储成功时,主节点才会将目标日志向状态机进行提交/确认(commit),由于f满足:0≤f≤m

    ,当f设置为0时,进行目标日志向状态机提交要求达到共识的节点个数至少为k

    个,基于纠错码编码与日志复制一致性的结合,能够有效确保任意m个节点的日志数据发生丢失/错误的情况下,确保所有节点在基于纠错码编码后并执行日志复制的过程中,能够基于剩余k

    个节点的数据得到正确的存储数据,并确保日志复制的一致性;当f设置为0<f≤m

    的任意数值时,基于相同的原理,能够确保各个节点的存储数据的正确性、一致性和对存储空间的高效利用,降低数据冗余度。
    111.根据本公开的实施例,在上述服务集群中,上述主节点的产生条件为:在本轮(当前)任期内,在上述服务集群中存在目标候选节点接收到其余候选节点的投票个数值超过:max(t/2+1,k

    +f)的情况下,将上述目标节点作为本轮任期内的主节点,其中,t为服务集群中用于存储的节点总个数,t=k

    +m

    ,k

    表示原始数据段对应的节点个数,m

    表示校验数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m


    112.通过将主节点的产生条件设置为:max(t/2+1,k

    +f),通过选择t/2+1和k

    +f中相对较大的数值作为选主产生的投票最低值,以上设置是出于以下两个方面的综合考虑,并具有对应的有益效果:一方面,可以确保同一个时刻只有唯一的一个节点被选为主节点,即确保产生的主节点为唯一的主节点,不会产生多个主节点同时被选出的情况;另一方面,同时可以确保被选出的主节点具有所有已经提交(committed)的日志信息;同时还可以保证被选出的主节点具有实现提交共识条件的可能性。这与常规raft共识算法/协议中的半数以上的设定条件具有差异。
    113.下面结合具体实例来说明。例如,当t=13,其中,k=k

    =3,m=m

    =10,f=1时,如果仅设置t/2+1=7作为选主条件,尽管可以选出唯一的主节点,但是由于提交共识条件为:k

    +f=4,那么至少有4个节点实现目标日志的成功存储,便将目标日志向状态机提交/确认(commit),那么,在上一次执行提交时对应满足提交共识条件的4个节点如果不在本次满足提交共识条件的那7个节点中的话,会导致已经返回给用户提交成功的已提交数据的丢失;因此本公开的实施例通过设置选主条件为:t/2+1和k

    +f中相对较大的数值作为选主产生的投票最低值,在这种情况下会将7作为投票最低值,在存在主节点的情况下确保主节点的唯一性,同时还可以确保被选出的主节点具有所有已经提交的日志信息。
    114.可以理解的是,在服务集群进行投票选主的过程中,可以出现在某个选期内选不出主节点的情况,此时由超时机制触发节点进行新一轮的投票选举。
    115.本公开的第二个示例性实施例提供了一种数据处理的方法,上述方法应用于服务集群的从节点,可以由每个从节点来执行本实施例的数据处理的方法。可以结合第一个实施例和第二个实施例来理解服务集群进行数据处理的整体信息流,以及主节点和从节点之间的交互过程。
    116.图7示意性地示出了根据本公开实施例的应用于从节点的数据处理的方法的流程图。
    117.参照图7所示,本公开实施例提供的由每个从节点执行的数据处理的方法,包括以下操作:s701、s702、s703和s704。
    118.在操作s701,接收上述服务集群中的主节点发送的日志复制指令,上述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段。
    119.其中上述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段。
    120.在一实施例中,服务集群的主节点执行上述操作s201和s202,然后执行操作s203,根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;相应的,从节点执行操作s701,接收主节点发送的上述日志复制指令。
    121.在操作s702,将上述目标数据中匹配于当前从节点的数据段和上述目标日志进行存储。
    122.在当前从节点接收到日志复制指令的情况下,当前从节点将目标日志进行存储,并将与自身匹配的数据段进行存储;例如,参照图3和图5所示,针对各个从节点:n2、n3、n4、n5、n6,依次对应匹配的数据段分别为:原始数据段322、原始数据段323、原始数据段324、校验数据段325、校验数据段326。
    123.根据本公开的实施例,以键-值对的形式存储上述匹配于上述从节点的数据段,上述目标数据的数据标识(例如为bid_1)作为键-值对中的键进行存储,上述目标数据中匹配于上述从节点的数据段对应作为键-值对中的值进行存储。
    124.在一实施例中,将目标日志存储于从节点的log文件区域(日志文件存储区域的一种示例),将匹配于各个从节点的数据段存储于各个从节点对应的blob storage(存储引擎的一种示例)。
    125.在操作s703,监测上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态。
    126.在操作s704,根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果。
    127.从节点执行操作s701之后,执行操作s702~s703,然后再执行操作s704,根据第一存储状态和第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果。例如,从节点还可以进一步包括将执行反馈结果发送给主节点的步骤,相应的,主节点接收从节点反馈的执行反馈结果(从节点和主节点之间的通信过程)。之后主节点执行操作s204,根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    128.根据本公开的实施例,根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果,包括:在上述第一存储状态和上述第二存储状态均为存储成功的情况下,生成目标日志存储成功的执行反馈结果;在上述第一存储状态和上述第二存储状态中至少有一个为存储失败的情况下,生成目标日志存储失败的执行反馈结果。
    129.基于上述操作s701~s704,各个从节点能够存储同一个目标数据中的不同的数据段,并且能够基于共识算法/协议实现日志复制的一致性,实现了ec编码存储和日志复制一致性的有机结合,在确保数据存储正确性的基础上提升了服务集群的存储空间利用率,减
    少了数据冗余量。
    130.本实施例中,与第一个实施例相同,在上述服务集群中,上述主节点的产生条件为:在本轮(当前)任期内,在上述服务集群中存在目标候选节点接收到其余候选节点的投票个数值超过:max(t/2+1,k

    +f)的情况下,将上述目标节点作为本轮任期内的主节点,其中,t为服务集群中用于存储的节点总个数,t=k

    +m

    ,k

    表示原始数据段对应的节点个数,m

    表示校验数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    。详细描述可以参照第一个实施例,这里不再赘述。
    131.图8示意性地示出了根据本公开实施例的由服务集群进行数据处理的过程示例。
    132.假设服务集群中已经产生了主节点和从节点,在图8中,以该服务集群包括1个主节点和5个从节点进行示例,在图8中仅以其中一个从节点作为详细示例,其他从节点大体逻辑类似,相同之处进行了省略,只有各自对应存储的匹配数据段之间的差异进行了示意。
    133.参照图8所示,在操作步骤a(对应于前述第一个实施例描述的操作s201)中,主节点接收到来自电子设备的携带有4m待存储数据的数据提交请求,该数据提交请求为关于用户1的数据提交请求,用户1的身份标识为:userkey_1。
    134.然后,主节点执行操作步骤b(对应于前述第一个实施例描述的操作s202),对上述4m待存储数据进行分段和编码处理,得到包含4个1m的原始数据段和2个1m的校验数据段的目标数据,并生成对应的目标日志:“put(userkey_1,bid_1)”;在本实施例中,对待存储数据进行分段和编码处理的过程在缓存中进行,得到的目标数据和目标日志先在缓存中放置。
    135.接着,主节点执行操作步骤c1、c2和d(对应于前述第一个实施例描述的操作s203)。操作步骤c1、c2和d的执行顺序和执行状态不做限定;在一些实施例中,可以是在步骤c1和c2执行完之后再执行d;在另一些实施例中,可以在c1、c2执行过程中同步执行d;在又一些实施例中,还可以是先执行d,然后执行c1和c2;另外,可以是在c1和c2都执行成功的情况下才执行d,也可以是不论c1和c2的结果如何都执行d。c1和c2二者的执行顺序不做限定。
    136.在操作步骤c1中,根据预定义的节点存储角色,将上述目标数据中匹配于上述主节点的数据段进行存储,例如图8中中以6个矩形框示意目标数据,以目标数据中填充的矩形框示意与主节点匹配的数据段,并示例了将与主节点匹配的part1(第1段)数据段存储至主节点的存储引擎blob storage中。
    137.在操作步骤c2中,将上述目标日志进行存储,例如图8中示例的将目标日志“put(userkey_1,bid_1)”存储至主节点的log(日志存储区域)中。
    138.在操作步骤d中,向从节点1~5发送日志复制指令,针对从节点1,发送的日志复制指令中携带有:目标日志的信息“put(userkey_1,bid_1)”和与从节点1匹配的数据段:part2(第2段)数据段;类似的,针对从节点2、3、4、5,发送的日志复制指令中携带有:目标日志的信息“put(userkey_1,bid_1)”和与从节点2、3、4、5各自对应匹配的数据段:part3(第3段)数据段、part4(第4段)数据段、part5(第5段)数据段、part6(第6段)数据段,如图8所示。
    139.相应的,从节点1~5接收日志复制指令(对应于第二个实施例描述的操作s701)。
    140.这里以从节点1作为示例,当从节点1接收到携带有目标日志的信息和匹配于从节点1的数据段(part2数据段)之后,执行操作步骤d1和d2(对应于第二个实施例描述的操作
    s702)。d1和d2的执行顺序不做限定。
    141.在操作步骤d1中,将上述目标数据中匹配于当前从节点1的数据段:part2数据段进行存储,例如在图8中示例的将part2数据段存储至从节点1的存储引擎blob storage中。
    142.在操作步骤d2中,将目标日志进行存储,例如在图8中示例的将目标日志“put(userkey_1,bid_1)”存储至从节点1的log(日志存储区域)中。
    143.接着,各个从节点1~5还对上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态进行监测,并根据上述第一存储状态和上述第二存储状态,生成用于向上述服务集群的主节点反馈的执行反馈结果(对应于第二个实施例中的操作s703和s704),这里为了简化,并未在图8中进行示意。
    144.最后,各个从节点1~5将各自得到的执行反馈结果发送给主节点。在图8中以操作步骤e来示例从节点1将自身的执行反馈结果发送给主节点。
    145.主节点在接收到从节点的执行反馈结果之后,根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。具体实施过程可以参照前述关于操作s601和s602的描述过程,这里在图8中示例了在满足提交共识条件,主节点向状态机提交/确认了目标日志的情况下,各个节点(图8中示例了主节点和从节点1)会按照提交的日志序列执行(apply)的过程,以f1示例主节点的日志序列执行过程,以f2示例从节点1的日志序列执行过程,f1和f2的执行时序具有差异。
    146.在各个节点执行日志序列后,对应生成目标日志的提交状态;进而主节点可以基于上述提交状态来生成针对数据提交请求的响应结果,在图8中以状态机输出的提交响应结果来进行描述。
    147.类似的,针对多个数据提交请求,每个数据提交请求都可以基于本公开实施例提供的数据处理的方法进行处理,例如关于用户2的数据提交请求,用户2的身份标识为:userkey_2,对应生成的目标日志形如图8中示例的“put(userkey_2,bid_2)”。
    148.基于相同的技术构思,本公开的第三个示例性实施例提供了一种服务集群的节点部署的方法。
    149.图9示意性地示出了根据本公开实施例的服务集群的节点部署的方法的流程图。
    150.参照图9所示,本公开实施例提供的服务集群的节点部署的方法,包括以下操作:s901、s902和s903。
    151.在操作s901,接收对服务集群中的节点进行存储定义的定义信息,其中,上述定义信息用于限定上述节点与数据段序号之间的存储映射关系。
    152.其中,上述数据段序号的总个数(例如第一个实施例中示例的part1~6中的序号1~6)为预设分段个数(例如第一个实施例中示例的k,k=4)和预设校验个数(例如第一个实施例中示例的m,m=2)的总和,上述预设分段个数用于划分待存储数据以得到原始数据段,上述预设校验个数用于限定上述原始数据段进行编码后得到的校验数据段的个数。
    153.在操作s902,根据上述定义信息,为各个节点配置节点存储角色。
    154.上述节点存储角色用于表征服务集群中各个节点与数据段序号之间的存储映射关系。
    155.在操作s903,根据主节点的产生条件,在上述服务集群中生成主节点和从节点,上述主节点和上述从节点各自具有对应的节点存储角色。
    156.基于上述操作s901~s903,为服务集群中用于存储的节点(例如描述为存储系统中的节点)部署双重身份:节点存储角色(基于ec编码的存储身份)和日志复制一致性执行的主从身份,实现了日志复制一致性和纠错码(ec)存储的有机结合,使得共识算法能够支持ec存储,各个节点存储的数据可以不同,拓展了日志复制一致性和ec存储的应用场景,在分布式存储领域具有广泛的应用前景,能够有效降低数据冗余度,提升存储利用率。
    157.本实施例中,与第一个实施例相同,在上述服务集群中,上述主节点的产生条件为:在本轮(当前)任期内,在上述服务集群中存在目标候选节点接收到其余候选节点的投票个数值超过:max(t/2+1,k

    +f)的情况下,将上述目标节点作为本轮任期内的主节点,其中,t为服务集群中用于存储的节点总个数,t=k

    +m

    ,k

    表示原始数据段对应的节点个数,m

    表示校验数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    。详细描述可以参照第一个实施例,这里不再赘述。
    158.本公开的第四个示例性实施例提供了一种数据处理的装置。
    159.图10示意性地示出了根据本公开一实施例的数据处理的装置的结构框图。
    160.参照图10所示,本实施例提供的数据处理的装置1000包括:服务集群的主节点,上述主节点包括:请求接收模块1001、数据处理模块1002、日志存储和日志复制模块1003、以及响应结果生成模块1004。
    161.上述请求接收模块1001用于接收携带有待存储数据的数据提交请求。
    162.上述数据处理模块1002用于对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志。
    163.上述日志存储和日志复制模块1003用于根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段。
    164.上述响应结果生成模块1004用于根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。
    165.本公开的第五个示例性实施例提供了一种数据处理的装置。
    166.图11示意性地示出了根据本公开另一实施例的数据处理的装置的结构框图;
    167.参照图11所示,本实施例提供的数据处理的装置1100包括:服务集群的从节点,上述从节点包括:指令接收模块1101、存储模块1102、状态监测模块1103和反馈结果生成模块1104。
    168.上述指令接收模块1101用于接收上述服务集群中的主节点发送的日志复制指令,上述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中上述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段。
    169.上述存储模块1102用于将上述目标数据中匹配于当前从节点的数据段和上述目标日志进行存储。
    170.上述状态监测模块1103用于监测上述匹配于当前从节点的数据段的第一存储状态和上述目标日志的第二存储状态。
    171.上述反馈结果生成模块1104用于根据上述第一存储状态和上述第二存储状态,生
    成用于向上述服务集群的主节点反馈的执行反馈结果。
    172.本公开的第六个示例性实施例提供了一种用于部署服务集群的节点的装置。
    173.图12示意性地示出了根据本公开实施例的用于部署服务集群的节点的装置的结构框图。
    174.参照图12所示,本实施例提供的用于部署服务集群的节点的装置1200包括:信息接收模块1201、配置模块1202和选主模块1203。
    175.上述信息接收模块1201用于接收对服务集群中的节点进行存储定义的定义信息,其中,上述定义信息用于限定上述节点与数据段序号之间的存储映射关系;上述数据段序号的总个数为预设分段个数和预设校验个数的总和,上述预设分段个数用于划分待存储数据以得到原始数据段,上述预设校验个数用于限定上述原始数据段进行编码后得到的校验数据段的个数。
    176.上述配置模块1202用于根据上述定义信息,为各个节点配置节点存储角色。
    177.上述选主模块1203用于根据主节点的产生条件,在上述服务集群中生成主节点和从节点,上述主节点和上述从节点各自具有对应的节点存储角色。
    178.上述装置1000、1100和1200中提及的模块(例如装置1000中的请求接收模块1001、数据处理模块1002、日志存储和日志复制模块1003、以及响应结果生成模块1004,装置1100中的指令接收模块1101、存储模块1102、状态监测模块1103和反馈结果生成模块1104,装置1200中的信息接收模块1201、配置模块1202和选主模块1203)中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。上述装置1000、1100和1200中提及的模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(fpga)、可编程逻辑阵列(pla)、片上系统、基板上的系统、封装上的系统、专用集成电路(asic),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,上述装置1000、1100和1200中提及的模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
    179.本公开的第七个示例性实施例提供了一种电子设备。
    180.图13示意性示出了本公开实施例提供的电子设备的结构框图。
    181.参照图13所示,本公开实施例提供的电子设备1300包括处理器1301、通信接口1302、存储器1303和通信总线1304,其中,处理器1301、通信接口1302和存储器1303通过通信总线1304完成相互间的通信;存储器1303,用于存放计算机程序;处理器1301,用于执行存储器上所存放的程序时,实现如上所述的数据处理的方法或节点部署的方法。
    182.本公开的第八个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的数据处理的方法或节点部署的方法。
    183.该计算机可读存储介质可以是上述实施例中描述的设备/装置中所包含的;也可以是单独存在,而未装配入该设备/装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
    184.根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
    185.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
    ……”
    限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
    186.以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

    技术特征:
    1.一种数据处理的方法,其特征在于,应用于服务集群的主节点,所述方法包括:接收携带有待存储数据的数据提交请求;对所述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志;根据预定义的节点存储角色,将所述目标日志和所述目标数据中匹配于所述主节点的数据段进行存储,并向所述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,所述日志复制指令中携带有所述目标日志的信息和所述目标数据中匹配于当前从节点的数据段;以及根据从节点对所述日志复制指令的执行反馈结果,生成针对所述数据提交请求的响应结果。2.根据权利要求1所述的方法,其特征在于,所述根据预定义的节点存储角色,将所述目标日志和匹配于所述主节点的数据段进行存储,并向所述服务集群中的从节点发送日志复制指令,包括:根据预定义的节点存储角色,在所述目标数据中确定匹配于所述主节点的数据段和匹配于各个从节点的数据段;将所述目标日志存储于日志文件存储区域,将所述匹配于所述主节点的数据段存储至所述主节点的存储引擎;以及向所述服务集群中的从节点发送日志复制指令,所述日志复制指令用于指示每个从节点来存储所述目标日志和对应存储各自匹配的数据段。3.根据权利要求1所述的方法,其特征在于,所述服务集群包括用于存储的t个节点,t为正整数;所述对所述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志,包括:根据预设分段个数k,将所述待存储数据划分为k个原始数据段,k为正整数;根据预设校验个数m,对所述k个原始数据段进行纠删码编码计算,得到m个校验数据段,m为自然数;其中所述k个原始数据段和所述m个校验数据段构成目标数据,节点个数t满足:t=k+m;为所述目标数据分配对应的数据标识;以及在所述主节点的日志序列的末尾追加一条与所述目标数据的数据标识相关的目标日志。4.根据权利要求3所述的方法,其特征在于,以键-值对的形式存储所述匹配于所述主节点的数据段,所述目标数据的数据标识作为键-值对中的键进行存储,所述目标数据中匹配于所述主节点的数据段对应作为键-值对中的值进行存储。5.根据权利要求1所述的方法,其特征在于,所述根据从节点对所述日志复制指令的执行反馈结果,生成针对所述数据提交请求的响应结果,包括:根据所述从节点的执行反馈结果是否满足预设的提交共识条件,确定是否将所述目标日志提交至状态机;以及根据所述目标日志的提交状态,生成针对所述数据提交请求的响应结果。6.根据权利要求5所述的方法,其特征在于,所述原始数据段的个数为预设的k个,所述
    校验数据段的个数为预设的m个,k为正整数,m为自然数;所述提交共识条件包括:当所述主节点和所述从节点中至少有k

    +f个节点将目标日志存储成功时,将所述目标日志提交至状态机;其中,k

    表示原始数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    ,m

    表示校验数据段对应的节点个数,k

    的值与k的值相等,m

    的值与m的值相等。7.根据权利要求1所述的方法,其特征在于,在所述服务集群中,所述主节点的产生条件为:在本轮任期内,在所述服务集群中存在目标候选节点接收到其余候选节点的投票个数值超过:max(t/2+1,k

    +f)的情况下,将所述目标节点作为本轮任期内的主节点,其中,t为服务集群中用于存储的节点总个数,t=k

    +m

    ,k

    表示原始数据段对应的节点个数,m

    表示校验数据段对应的节点个数,f为预设的整数值,用于表征容错可靠性,f满足以下条件:0≤f≤m

    。8.一种数据处理的方法,其特征在于,应用于服务集群的从节点,针对每个从节点,所述方法包括:接收所述服务集群中的主节点发送的日志复制指令,所述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中所述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段;将所述目标数据中匹配于当前从节点的数据段和所述目标日志进行存储;监测所述匹配于当前从节点的数据段的第一存储状态和所述目标日志的第二存储状态;根据所述第一存储状态和所述第二存储状态,生成用于向所述服务集群的主节点反馈的执行反馈结果。9.根据权利要求8所述的方法,其特征在于,根据所述第一存储状态和所述第二存储状态,生成用于向所述服务集群的主节点反馈的执行反馈结果,包括:在所述第一存储状态和所述第二存储状态均为存储成功的情况下,生成目标日志存储成功的执行反馈结果;在所述第一存储状态和所述第二存储状态中至少有一个为存储失败的情况下,生成目标日志存储失败的执行反馈结果。10.根据权利要求8所述的方法,其特征在于,以键-值对的形式存储所述匹配于所述从节点的数据段,所述目标数据的数据标识作为键-值对中的键进行存储,所述目标数据中匹配于所述从节点的数据段对应作为键-值对中的值进行存储。11.一种服务集群的节点部署的方法,其特征在于,所述方法包括:接收对服务集群中的节点进行存储定义的定义信息,其中,所述定义信息用于限定所述节点与数据段序号之间的存储映射关系;所述数据段序号的总个数为预设分段个数和预设校验个数的总和,所述预设分段个数用于划分待存储数据以得到原始数据段,所述预设校验个数用于限定所述原始数据段进行编码后得到的校验数据段的个数;根据所述定义信息,为各个节点配置节点存储角色;以及根据主节点的产生条件,在所述服务集群中生成主节点和从节点,所述主节点和所述从节点各自具有对应的节点存储角色。12.一种数据处理的装置,其特征在于,所述装置包括:服务集群的主节点,所述主节点
    包括:请求接收模块,用于接收携带有待存储数据的数据提交请求;数据处理模块,用于对所述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志;日志存储和日志复制模块,用于根据预定义的节点存储角色,将所述目标日志和所述目标数据中匹配于所述主节点的数据段进行存储,并向所述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,所述日志复制指令中携带有所述目标日志的信息和所述目标数据中匹配于当前从节点的数据段;以及响应结果生成模块,用于根据从节点对所述日志复制指令的执行反馈结果,生成针对所述数据提交请求的响应结果。13.一种数据处理的装置,其特征在于,所述装置包括:服务集群的从节点,所述从节点包括:指令接收模块,用于接收所述服务集群中的主节点发送的日志复制指令,所述日志复制指令中携带有:目标日志的信息,目标数据中匹配于当前从节点的数据段;其中所述目标数据包含待存储数据经过分段和编码处理后得到的预设个数的原始数据段和校验数据段;存储模块,用于将所述目标数据中匹配于当前从节点的数据段和所述目标日志进行存储;状态监测模块,用于监测所述匹配于当前从节点的数据段的第一存储状态和所述目标日志的第二存储状态;反馈结果生成模块,用于根据所述第一存储状态和所述第二存储状态,生成用于向所述服务集群的主节点反馈的执行反馈结果。14.一种用于部署服务集群的节点的装置,其特征在于,所述装置包括:信息接收模块,用于接收对服务集群中的节点进行存储定义的定义信息,其中,所述定义信息用于限定所述节点与数据段序号之间的存储映射关系;所述数据段序号的总个数为预设分段个数和预设校验个数的总和,所述预设分段个数用于划分待存储数据以得到原始数据段,所述预设校验个数用于限定所述原始数据段进行编码后得到的校验数据段的个数;配置模块,用于根据所述定义信息,为各个节点配置节点存储角色;以及选主模块,用于根据主节点的产生条件,在所述服务集群中生成主节点和从节点,所述主节点和所述从节点各自具有对应的节点存储角色。15.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现权利要求1-11中任一项所述的方法。16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11中任一项所述的方法。

    技术总结
    本公开涉及一种数据处理和节点部署的方法、装置、电子设备及介质,应用于服务集群的主节点的数据处理的方法包括:接收携带有待存储数据的数据提交请求;对上述待存储数据进行分段和编码处理,得到包含预设个数的原始数据段和校验数据段的目标数据,并生成对应的目标日志;根据预定义的节点存储角色,将上述目标日志和上述目标数据中匹配于上述主节点的数据段进行存储,并向上述服务集群中的从节点发送日志复制指令;其中,针对每个从节点,上述日志复制指令中携带有上述目标日志的信息和上述目标数据中匹配于当前从节点的数据段;以及根据从节点对上述日志复制指令的执行反馈结果,生成针对上述数据提交请求的响应结果。生成针对上述数据提交请求的响应结果。生成针对上述数据提交请求的响应结果。


    技术研发人员:郝敬龙
    受保护的技术使用者:京东科技信息技术有限公司
    技术研发日:2022.02.11
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-17079.html

    最新回复(0)