CN114885007A - 用于实时的强一致性会话同步的方法和电子设备 - Google Patents

用于实时的强一致性会话同步的方法和电子设备 Download PDF

Info

Publication number
CN114885007A
CN114885007A CN202210336487.5A CN202210336487A CN114885007A CN 114885007 A CN114885007 A CN 114885007A CN 202210336487 A CN202210336487 A CN 202210336487A CN 114885007 A CN114885007 A CN 114885007A
Authority
CN
China
Prior art keywords
session
node
nodes
memory
processing core
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.)
Pending
Application number
CN202210336487.5A
Other languages
English (en)
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 CN202210336487.5A priority Critical patent/CN114885007A/zh
Publication of CN114885007A publication Critical patent/CN114885007A/zh
Pending legal-status Critical Current

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/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请提供一种用于实时的强一致性会话同步的方法和电子设备。所述方法应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器。所述方法包括:为每个处理核分别分配用于存储会话信息的内存区域;在每个处理核上将相应内存区域注册到RDMA适配器;在所述会话同步系统中的其他节点上注册所述节点;在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。根据示例实施例的方法可为会话同步的实时性和强一致性提供保证。

Description

用于实时的强一致性会话同步的方法和电子设备
技术领域
本申请涉及数据中心及分布式和云网络技术领域,具体而言,涉及一种用于实时的强一致性会话同步的方法和装置、电子设备和计算机可读介质。
背景技术
在包括多个网元组件节点(如负载均衡组件、具有负载均衡功能的防火墙组件等)的数据中心或者包括多个服务节点的集群中,当客户端请求到达某个节点时,该节点会创建一个会话(session)用于标识当前连接以及该连接的状态,并且基于会话保持机制完成后续通信。例如,在数据中心云网络环境中,客户端发送TCP请求经过负载均衡组件访问后端服务器时,在负载均衡组件上创建会话,用于标识与后端服务器建立的TCP连接,由此来分辨每个请求来自哪个客户端、目的地是哪台服务器。
此外,为了实现高可用性,一般会在多个节点之间进行会话同步。这样,一方面,当某一节点故障时,其他节点能够利用同步过来的会话信息,继续提供服务,保证客户端访问后端服务器的连接不中断,从而保证容灾和/或提高负载均衡系统的可靠性。另一方面,当某一节点达到性能瓶颈时,可以把服务请求分发到其他节点上,其他节点可以利用同步过来的会话信息无缝地为用户提供正常服务,从而拓展系统整体性能。
现有的会话同步技术,考虑到经典网络和内核网络协议栈引入的带宽、延迟等限制,通常选择周期性批量地复制会话同步系统中各节点的会话信息。当某节点在某个同步周期内发生故障时,在该同步周期内该节点上的新建会话由于未及时同步而被断开,导致影响可用性。
因此,需要开发新的会话同步方案,改善系统可用性。
发明内容
本申请旨在提供一种用于实时的强一致性会话同步的方法和装置及编译方法和装置及电子设备,能够提高会话同步的实时性和效率,改善系统高可用性和拓展性。
本申请的其该用户特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请的一方面,提供一种用于实时的强一致性会话同步的方法,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,所述方法包括:为每个处理核分别分配用于存储会话信息的内存区域;在每个处理核上将相应内存区域注册到RDMA适配器;在所述会话同步系统中的其他节点上注册所述节点;在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。
根据本申请的另一方面,提供一种用于实时的强一致性会话同步的方法,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,所述方法包括:接收来自客户端的会话请求;根据所述会话请求建立第一会话,将所述第一会话的会话信息保存在所述节点的内存中;在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
根据本申请的另一方面,提供一种用于实时的强一致性会话同步的节点,配置于会话同步系统,所述节点包括:一个或多个处理核、RDMA适配器,节点控制器、会话控制器以及空闲槽管理元数据模块,其中:所述节点控制器用于维护控制所述会话同步系统中的节点;所述会话控制器用于在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步;所述空闲槽管理元数据模块用于维护空闲内存槽的元数据,其中所述节点控制器包括:分配模块,用于为每个处理核分别分配用于会话信息的内存区域;RDMA注册模块,用于在每个处理核上将相应内存区域注册到RDMA适配器;节点注册模块,用于在所述会话同步系统中的其他节点上注册所述节点;节点信息模块,用于维护会话同步系统中所有节点的相关信息。
根据本申请的另一方面,提供一种用于实时的强一致性会话同步的节点,配置于会话同步系统,所述节点包括:一个或多个处理核、RDMA适配器,节点控制器、会话控制器以及空闲槽管理元数据模块,其中:所述节点控制器用于维护控制所述会话同步系统中的节点;所述会话控制器用于在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步;所述空闲槽管理元数据模块用于维护空闲内存槽的元数据,其中所述会话控制器包括:会话请求模块,用于接收来自客户端的会话请求;会话建立模块,用于根据所述会话请求建立第一会话,所述第一会话的会话信息保存在所述节点的内存中;会话同步模块,用于在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
根据本申请的另一方面,提供一种电子设备,包括:一个或多个处理单元;存储单元,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现前述的方法。
根据本申请的另一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现前述的方法。
根据本申请的一些实施例,提出一种用于实时的强一致性会话同步的方法,在多个节点之间可通过RDMA同步会话信息,减少会话同步时的数据拷贝、降低节点的CPU负载,从而保证会话同步的实时性和强一致性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
通过参照附图详细描述其示例实施例,本申请的上述和其它目标、特征及优点将变得更加显而易见。
图1示出本申请技术方案的一种应用场景的示意图。
图2示出根据本申请实施例的用于实时的强一致性会话同步的方法的流程图。
图3A示出根据示例实施例的多核节点内部内存区域的模型图。
图3B示出通过RDMA进行会话同步的模型图。
图4A示出根据示例实施例的一条会话信息的结构。
图4B示出根据示例实施例的会话同步报文的结构。
图5示出根据示例实施例新节点进行全量会话同步的过程。
图6示出根据示例实施例的用于实时的强一致性会话同步的方法的流程图。
图7示出根据示例实施例避免内存槽冲突的一种锁机制的方法流程图。
图8示出根据示例实施例新建会话时会话同步的时序过程。
图9示出根据示例实施例删除会话时会话同步的时序过程。
图10示出根据本申请示例实施例的同步节点。
图11示出根据本申请示例实施例的电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本申请将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在云计算等包括多个节点的高可用性系统中,为了实现冗余切换等灾备功能或横向拓展,通常采用会话同步技术。目前常用的会话同步方式包括周期批量复制、状态触发复制、组播复制和/或单播复制等方案。但是,这些方案或者由于经典网络和内核网络协议栈引入的带宽、延迟限制而不能满足实时性,或者由于会话同步过程中需要CPU参与计算而降低实时性和效率,或者由于批量操作或触发操作而不满足实时性,从而导致系统高可用性降低。
为此,本申请提出一种用于实时的强一致性会话同步的方法,会话信息保存在会话同步系统各节点的内存中,多个节点之间利用RDMA进行会话同步。发送者将客户端在本地创建的会话信息发送到其他所有接收者,接收者将发送者同步过来的会话信息插入到本地内存槽中。这样,可减少会话同步时的数据拷贝、降低节点的CPU负载,从而为会话同步的实时性和强一致性提供基础保证。
在描述本申请实施例之前,对本申请实施例涉及到的一些术语进行解释说明。
RDMA:远程直接内存访问(Remote Direct Memory Access),是一种绕过通信双方主机操作系统内核和网络协议栈,直接访问远端特定内存区的技术。由于不经过操作系统,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,尤其适合于大规模并行计算机集群。在具体的远程内存读写中,RDMA操作将用于读写操作的远程虚拟内存地址包含在RDMA消息中传送,远程应用程序要做的只是在其本地网卡中注册相应的内存缓冲区。远程节点的CPU除在连接建立、注册调用等之外,在整个RDMA数据传输过程中并不提供服务,因此没有带来任何负载。目前支持RDMA的网络协议有InfiniBand(IB)、RoCE(RDMA over Converged Ethernet基于融合以太网的RDMA)和iWARP(互联网广域RDMA协议,基于TCP)。IB是从一开始就支持RDMA的新一代网络协议,由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。RoCE是一种允许通过以太网执行RDMA的网络协议,该协议允许在标准以太网基础架构(交换机)上使用RDMA,但网卡是支持RoCE的特殊网卡。iWARP允许通过TCP执行RDMA的网络协议,该协议允许在标准以太网基础架构(交换机)上使RDMA,但需要网卡支持iWARP。
会话(session):指网络节点之间的信息交换过程,网络节点之间为完成信息交换需要按一定规则在会话层实体之间建立起来一种暂时的联系,即“会话连接”,例如该会话连接可以是一个TCP连接。
会话同步(Session Synchronize):常用于分布式系统中,使得分布式系统中多个节点能够同时对外提供相同的服务,一方面可以横向拓展集群对外服务能力,另一方面也使得集群可以容忍部分节点宕机,提高分布式系统的可用性和可靠性。
处理核:完成一项或多项报文转发、处理等任务的CPU或CPU核或类似处理器。
下面参照实施例对本申请的技术方案进行详细说明。
图1示出本申请技术方案的一种应用场景的示意图。
如图1所示,在一种计算场景中,整个系统包括多个客户端101a和101b、会话同步系统105、控制节点或控制面107、以及多个后端服务器109a和109b。
参见图1,通过交换机的流量分发,会话同步系统105中的节点A或节点B接收来自多个客户端101a和/或101b的会话请求,根据预定规则选择后端服务器109a或109b,建立会话连接并进行会话保持。后续来自相同客户端的报文都会转发到相同的后端服务器。同时,在节点A与节点B之间进行会话同步,从而在其中一个节点发生故障时,可由另一个节点无缝地提供服务,使得系统服务具有高可靠性和和高可用性,并使得客户几乎感知不到系统故障,提升客户体验。
在图1中,客户端101a和101b可以包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等。此外,根据一些应用场景,客户端101a和101b也可以是其他计算节点或网络节点。
会话同步系统105可以是负载均衡系统,例如包括一般负载均衡组件,也可以包括具有负载均衡功能的防火墙组件。根据另一些实施例,会话同步系统105也可以是包括多个服务节点的集群系统。
后端服务器109a和109b可以是事务处理服务器、Web服务器,也可以是数据库服务器等。
控制节点或控制面107可对会话同步系统105进行管理控制,例如控制引流、摘流、选择主备节点等。
易于理解,图1所示应用场景和架构是示意性的,用于使读者更容易理解本申请的技术方案。下面描述的根据本申请实施例的技术方案可应用于其他类似的需要会话同步的场景和架构。
图2示出根据本申请示例实施例的用于实时的强一致性会话同步的方法的流程图。
图2所示的方法可应用于参照图1所描述的应用场景。根据示例实施例的方法可应用于会话同步系统中的节点,该节点可包括一个或多个处理核。参见图2,会话同步系统中的节点作为新节点添加时,首先经过S201和S203的初始化,然后在其他节点上进行注册,此后可通过RDMA进行会话同步。下面进行详细描述。
如图2所示,在S201,为每个处理核分别分配用于存储会话信息的内存区域MR。
根据示例实施例,所分配的内存区域MR为物理连续内存。
根据一些实施例,每个内存区域MR可进一步地划分为多个内存槽(参见图3A和图3B),并可具有固定大小。每个内存槽用于存储一条会话信息,一条会话信息包含元数据meta和会话内容Session两部分,如后面参照图4A所详细描述的。
根据实施例,该方法还包括对空闲内存槽的元数据进行维护以用于分配内存槽。例如,以一种内存池的方式管理每个处理核上的空闲槽的编号(slot_id)。每次需要分配一个内存槽时,从内存池中取出一个空闲槽的编号(slot_id)(可为int类型的数据)。每次释放一个内存槽时,将对应的槽编号(slot_id)添加到内存池中。
通过为每个处理核分配会话内存区域及进一步细分内存槽,提高内存处理效率,可进一步提高会话同步的实时性和效率,从而实现高可用性的节点容灾和/或节点拓展,提高数据中心网络的可靠性。
在S203,在每个处理核上将相应内存区域注册到RDMA适配器。
S201中为每个处理核分别分配用于会话信息的内存区域MR时,还可同时生成每个处理核的内存区域MR的密钥对(本地密钥lkey和远程密钥rkey),指向需要操作的内存区域MR。通过本地密钥lkey和远程密钥rkey以及内存区域MR的其他属性参数(起始地址、长度等),将相应内存区域注册到RDMA适配器,此后相应内存区域的远程操作即可通过RDMA进行。
在S205,在会话同步系统中的其他节点上注册当前节点。
根据一些实施例,可通过http或rpc服务请求等在所述会话同步系统中的其他节点上注册当前节点,使得其他节点将当前节点加入到其维护的节点列表中。注册信息可包括当前节点上每个处理核的内存区域MR的密钥(包括本地密钥lkey和远程密钥rkey)、当前节点的IP地址、当前节点的状态等。
根据一些实施例,将当前节点的状态置为追加(appending),然后依次在其他节点上将当前节点注册为新节点,并将所注册的新节点状态置为追加(appending)。追加(appending)状态的节点允许接收其他节点同步过来的会话,不向其他节点同步会话。此时其他节点可将新建的会话所在的内存槽,通过RDMA同步到追加(appending)状态的节点的相应位置的内存槽中。
相应地,根据示例实施例,当前节点也可根据请求在其上注册会话同步系统中的其他节点。
在S207,在当前节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。
根据示例实施例,在进行会话同步时,该节点将存储在与处理核对应的内存区域的内存槽中的会话信息通过RDMA同步至其他节点,使得其他节点将同步过来的会话信息保存至对应的处理核上的内存区域的对应内存槽中。此外,该节点还接收其他节点通过RDMA同步过来的会话信息,并保存至该节点中对应的处理核上的内存区域的对应内存槽中。
根据示例实施例,在进行会话同步时,该节点将处理核上相应内存槽存储的会话信息以会话同步报文的形式通过RDMA同步至其他所有节点的相应处理核上的相应内存槽。
根据一些实施例,作为新节点添加的当前节点上的每个处理核通过RDMA向任意现存节点请求对应处理核上全量的会话,并添加到本地内存槽中。此外,当前节点也能够实时同步在其他节点上新建的会话或更新的会话。
根据一些实施例,当前节点被引流后(例如,通过控制面),允许处理用户流量,响应客户端请求建立会话,并通过RDMA向其他节点同步本地新创建或更新的会话。例如,当前节点在所有其他节点上的状态置为running后,处于running状态的当前节点接收用户流量,并通过RDMA向其他节点同步本地新创建或更新的会话。
根据一些实施例,该方法还包括维护会话同步系统中所有节点的信息和状态,包括所有节点上每个处理核的内存区域MR的密钥(包括本地密钥lkey和远程密钥rkey)、所有节点的IP地址、所有节点的状态(运行running、追加appending和退出dying)。基于所维护的节点信息和状态,根据示例实施例的方法可执行向会话同步系统中增加节点或从其中删除节点的操作,实现系统的扩缩容。
图3A示出根据示例实施例的多核节点内部内存区域的模型图,图3B示出通过RDMA进行会话同步的模型图。
如图3A所示,示例节点内部具有多个处理核lcore_1、lcore_2、…、lcore_n,各处理核分别分配有物理连续的内存区域MR_1、MR_2、…、MR_n。每个内存区域MR进一步细分为多个固定大小的内存槽,每个用于存储一条会话信息。
如图3B所示,发送者节点Sender_1中的处理核lcore_1基于客户端请求在本地创建第一会话并将第一会话信息存储于内存区域MR_1的第一内存槽后,将第一会话信息通过RDMA分别同步至其他所有接收者节点Receiver_1和Receriver_2等,接收者节点Receiver_1和Receriver_2等将发送者节点Sender_1同步过来的第一会话信息插入到对应的本地内存区域中,即对应的处理核lcore_1上的内存区域MR_1的第一内存槽中。
继续参见图3B,在发送者节点Sender_1中的处理核lcore_2基于客户端请求在本地更新第二会话并更新存储于内存区域MR_2的第三内存槽的第二会话信息后,将第二会话信息通过RDMA分别同步更新至其他所有接收者节点Receiver_1和Receriver_2等,接收者节点Receiver_1和Receriver_2等将发送者节点Sender_1同步过来的第二会话信息插入到对应的本地内存槽中,即对应的处理核lcore_2上的内存区域MR_2的第三内存槽中。
图4A示出根据示例实施例的一条会话信息的结构,图4B示出根据示例实施例的会话同步报文的结构。
参见图4A,一条会话信息包含元数据meta和会话内容Session两部分。图4A所示的会话信息可存储于内存区域MR的内存槽。
元数据meta包括版本version、处理核编号(ID)和状态state。元数据meta还可包括节点编号和内存槽编号。
处理核编号(ID)用于标识该会话信息位于哪个CPU核的内存槽中。
版本version用于标识最新版本的会话。每次会话状态发生更新时,其相应版本version增加1。
会话状态state为会话连接的状态,例如TCP连接三次握手、四次挥手过程中的连接状态。
节点编号(machine_uuid_x)可唯一表示会话同步系统中的一个节点,内存槽编号(slot_id)可表示会话在节点(machine_uuid_x)上的对应处理核ID上的内存槽位置。
会话内容Session中包含原始流origin_flow、回向流reply_flow、事务类型标签flag和会话创建时间戳create_time。
原始流origin_flow用于标记从客户端到后端服务器的数据流。回向流reply_flow用于标记从后端服务器返回客户端的数据流。每个数据流中均包含IP协议类型、源IP、目的IP、四层协议类型、源端口、目的端口(如果是覆盖网络[Overlay network],则还需要包括隧道ID。
事务类型标签flag用于标识当前会话属于哪种用户自定义的事务。
会话创建时间戳create_timestamp为该会话创建时的时间戳。
由于会话同步系统中的每个节点中的每个处理核都是独立地向用户提供服务,为此,根据另一些实施例,元数据meta还可包括锁lock以及定时器timer,以用于避免不同节点上的同一个处理核在新建会话时使用同一个内存槽而引发冲突,如后面参照图,7所详细描述的。
参见图4B,一条会话同步报文包括头部和会话信息部分。会话同步报文头部中包含目标内存区域编号(ID)、目标远端密钥rkey和目标内存槽编号(ID)。会话同步头部的这几个字段用于向目标节点传递校验信息和目标内存地址。
图5示出根据示例实施例新节点进行全量会话同步的过程。
根据示例实施例,新节点注册到会话同步系统中的其他节点上之后,可进行全量会话同步。
参见图5,在S501,请求全量会话。
根据示例实施例,新节点注册到会话同步系统中的其他节点上之后,新节点上的每个处理核通过RDMA向任意现存节点请求对应处理核上的全量会话信息。
在S503,填充内存槽。
根据示例实施例,在请求全量会话之前,新节点已经在其他节点上注册且为追加(appending)状态,在请求全量会话的时候也能够实时同步同一时刻在其他节点上新建的会话,因而可以为强一致性提供支撑。如果此时某个内存槽中已经存放了其他节点同步过来的新建会话,在请求全量会话的时候可能会对该内存槽进行覆盖。为了保证会话的正确性,根据一些实施例,每个内存槽可按以下规则进行填充。
(1)若当前内存槽为空闲,则写入通过RDMA同步过来对应内存槽的会话信息。
(2)若当前内存槽已经包含有一条会话,则根据该会话信息的版本version判断是否应该写入通过RDMA同步过来的对应内存槽的会话信息。
若当前内存槽会话信息的版本version字段大于等于同步过来的会话信息的版本version字段,则跳过当前内存槽。
若当前内存槽会话信息的版本version字段小于同步过来的会话信息的版本version字段,则写入通过RDMA同步过来的会话信息至对应的内存槽。
在S505,更新节点状态。
根据示例实施例,完成全量会话同步后,可在所有节点上将新节点的状态置为运行running,从而新节点将具备在本地新建会话并将新建的会话同步到其他节点的能力。新节点被引流后,就可以处理用户请求,在本地新建会话并通过RDMA进行会话同步。
图6示出根据本申请示例实施例的用于实时的强一致性会话同步的方法的流程图。
参见图6,在S601,接收来自客户端的会话请求。
会话同步系统中的节点被引流后,就可以接收来自客户端的会话请求。客户端向后端服务器发送新建连接请求时,该请求会先经过所述会话同步系统中命中的节点的处理核。
在S603,根据会话请求建立第一会话,第一会话的会话信息保存在所述节点的内存中。
接收来自客户端的会话请求后,某个处理核在本地新建会话,例如建立第一会话,并根据所维护的空闲槽管理元数据,从相应内存区域确定一个空闲槽,将会话信息存储于该空闲槽。
在S605,在该节点与会话同步系统中的其他节点之间通过RDMA同步第一会话的会话信息。
在将新建的第一会话的会话信息存储于空闲槽之后,通过RDMA可将该会话信息分别同步至其他节点。其他节点将同步过来的会话信息插入到对应的本地内存中,即对应的处理核上的内存区域的对应内存槽中。
相应地,根据示例实施例,该节点还通过RDMA接收其他节点同步过来的会话信息。
根据一些实施例,在所述第一会话的会话状态为建立状态(established)之后,通过RDMA同步所述第一会话的会话信息。这样,在会话连接建立失败时不至于做无效的会话同步,可提高会话同步系统的吞吐能力,例如每秒新建连接的处理能力。
根据一些实施例,当某个处理核上的某个内存槽接收到从多个节点同步过来的会话信息时,可取版本号最大的会话,版本号越大意味着该会话状态越新。
根据一些实施例,当所述第一会话的会话状态发生变化时,将更新后的会话信息通过RDMA同步至所述会话同步系统中的其他节点之后,再进行报文转发。每次会话状态发生改变时将版本version增加(例如加1),然后将更新的会话信息所在的内存槽通过RDMA同步到其他节点中相同位置的内存槽中,然后将用户报文请求转发到后端服务器。也就是说,在其他节点正常完成会话信息的同步更新并确认后,再进行报文的确认转发。这样,可保证在会话同步过程之前或者之后,会话同步系统中各个节点上的相应会话信息保持强一致性。
如果在会话同步过程中当前节点发生故障,此时由于会话同步尚未完成,当前节点不会转发导致会话状态发生改变的报文。这样,报文在超时重传后,将落在其他正常节点上并由该节点进行会话同步和转发报文。
根据一些实施例,在当前节点进行会话同步时,对于发生故障的其他某个节点(例如,第二节点)的会话同步会失败。这时,当前节点会对该第二节点重试会话同步,重试三次未成功之后,认为该第二节点故障,可对该第二节点进行删除处理。首先对该第二节点摘流,从而用户流量不再导入待删除的第二节点。然后,在当前节点中标记该节点为退出(dying),并通知会话同步系统中的其他节点。
图7示出根据示例实施例避免内存槽冲突的一种锁机制的方法流程图。
会话同步系统中的每个节点中的每个处理核都是独立地提供服务,因此,为了避免不同节点上的相应处理核在新建会话时使用同位置的相应内存槽而引发冲突,可采用内存槽分组,或者采用分布式锁机制。常见的分布式锁的实现方式有基于数据库的实现、基于Redis的实现、基于zooKeeper的实现等。
根据本申请的示例实施例,采用一种多核分布式锁机制,可减少对外部系统的依赖以及提高分布式锁的性能。在该实施例中,会话信息的元数据meta中包括锁lock以及定时器timer。在会话同步系统部署阶段或者主节点异常的情况下,上层控制面在会话同步系统中指定或随机选取一个正常节点作为主节点,并将选取的主节点注册到其他节点。
参见图7,在S701,获取主节点空闲槽并加锁和定时器。
在将当前节点的新建会话同步至其他节点时,若当前节点为会话同步系统中的主节点,则直接根据空闲槽管理元数据从处理核K对应的内存区域中获取一个空闲槽,对该空闲槽加锁,并设置定时器,例如可根据TCP协议配置来设置定时器。
若当前节点不是会话同步系统中的主节点,则从主节点中处理核K对应的内存区域中获取一个空闲槽M,主节点上对该空闲槽加锁,并设置定时器,例如可根据TCP协议配置来设置定时器在S703,在当前节点向所获取的对应内存槽M填充会话信息,并将所述会话信息同步至其他节点。如果同步完成,则转到S707;如果同步未完成,则转到S709。
在S707,完成会话同步,重置定时器。
如果当前节点在定时器规定的时间周期内完成会话同步,则会通知主节点重置处理核K上该内存槽M的定时器,例如根据TCP协议配置进行定时器重置。
在S709,未完成会话同步,释放内存槽。
如果节点在定时器规定的时间周期内未完成会话同步,则主节点会解锁并释放处理核K上的该内存槽M,并通知所有节点释放相应的内存槽M,从而避免死锁。
在S711,会话完成,释放内存槽。
会话周期完成后,当前节点通知主节点解锁并释放该内存槽,主节点再通知所有节点释放该内存槽。
图8示出根据示例实施例新建会话时会话同步的时序过程。
图8所示的过程可应用前述根据本申请实施例的会话同步方案,但易于理解,前述根据本申请实施例的会话同步方法不限于图8所示的应用。
(1)参见图8,客户端发送一次握手的Syn包到达会话同步系统中的某个节点N,节点N会根据网卡RSS(receive side scaling,接收端缩放)规则将Syn包通过hash给到某个处理核core_k。该处理核向主节点上的对应处理核(基于空闲槽管理元数据)请求一个空闲槽,并对该空闲槽加锁和设置定时器。
(2)节点N将从主节点中请求的空闲槽编号(slot_id)从当前节点的空闲槽管理元数据中移除,并在该空闲槽中填充会话信息。信息中处理核编号cpu_id为k,版本version为1,会话状态state为接收syn_recv。
(3)节点N将一次握手Syn包转发给后端服务器。
(4)后端服务器回复二次握手的Syn+Ack包给节点N。节点N在处理核core_k上查找并命中该会话后,将二次握手的Syn+Ack包直接转发给客户端。
(5)客户端回复三次握手的Ack包到节点N,节点N再次在处理核core_k上查找并命中该会话,更新该会话信息中的版本version字段为2,会话状态state字段为建立establish状态。
(6)节点N将处理核core_k上该会话信息所在的内存槽,以会话同步报文的形式,通过RDMA同步到其他所有节点中。该会话同步报文会携带目的节点的远程密钥rkey和目标内存槽编号(slot_id)。其他所有节点在对应内存槽同步该会话信息后,返回确认报文给节点N。
(7)节点N等待收到所有其他节点的确认消息之后,将三次握手的Ack包转发给客户端。
(8)节点N重置主节点的处理核core_k上相应内存槽中会话信息的定时器。
图9示出根据示例实施例删除会话时会话同步的时序过程。
图9所示的过程可应用前述根据本申请实施例的会话同步方案,但易于理解,前述根据本申请实施例的会话同步方法不限于图9所示的应用。
(1)客户端发送一次挥手的Fin包到达会话同步系统中的节点N。节点N在处理核core_k上查找并命中相应会话,将该会话信息的版本version字段加1变为3,会话状态state字段更新为挥手等待fin_wait。
(2)节点N将该会话更新的会话信息通过RDMA同步给其他所有节点。其他所有节点比较同步过来的会话信息与本地对应的内存槽位置中的会话信息的版本version字段。发现同步过来的会话信息的版本version字段大于已有的对应会话信息的版本version字段,则更新对应的内存槽,并发送确认消息给节点N。
(3)节点N收到所有其他节点发送过来的确认报文后,将一次挥手的Fin包转发给后端服务器。
(4)后端服务器回复二次挥手的Ack包给节点N。节点N更新对应会话信息,版本version字段加1变为4,会话状态state字段更新为关闭等待close_wait状态。
(5)节点N将更新后的会话以与(2)中相同的方式同步到其他节点,并在收到所有其他节点发送过来的确认报文后,将二次挥手的Ack包转发给客户端。
(6)后端服务器待传输的数据发送完成之后,向节点N发送三次挥手的Fin+Ack包给节点N。此时节点N无需更新会话状态,直接将三次挥手的Fin+Ack包转发给客户端。
(7)客户端发送四次挥手的Ack包给到节点N。节点N收到四次挥手的Ack包之后将该会话信息的版本version字段加1变为5,会话状态state字段更新为时间等待time_wait。
(8)节点N将更新后的会话信息以与(2)中相同的方式同步到其他节点,并在收到所有其他节点发送过来的确认报文后,将四次挥手的Ack包转发给后端服务器。
(9)节点N在等待2倍的报文最大生存时间(2MSL)之后,将该会话信息的版本version字段加1变为6,会话状态state字段更新为关闭close。然后将更新后的会话信息以与(2)中相同的方式同步到其他节点。
(10)节点N通知主节点解锁并释放相应会话信息的内存槽,主节点再通知会话同步系统中其他所有节点释放对应位置的内存槽。
根据实施例,节点会周期性地将状态为关闭close的会话信息释放掉,从而为后续新建的会话腾出对应的内存槽位置。
上面主要从方法的角度对本申请实施例进行了介绍。本领域技术人员应该很容易意识到,结合本文中所公开的实施例所描述的各示例的操作或步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。本领域技术人员可以对每个特定的操作或方法使用不同方式来实现所描述的功能,这种实现不应认为超出本申请的范围。
下面描述本申请的装置实施例。对于本申请装置实施例中未说明的细节,可参照本申请方法实施例。
图10示出根据本申请示例实施例的同步节点。该同步节点实现上述实时的强一致性的会话同步方法。
如图10所示,根据示例实施例的同步节点1000包括节点控制器1010、会话控制器1030、空闲槽管理元数据模块1050。同步节点1000可包括一个或多个处理核,以及RDMA适配器。
节点控制器1010用于维护控制会话同步系统中的节点。根据示例实施例,节点控制器1010维护会话同步系统中所有节点中每个转发核上内存区域的密钥(包括本地密钥lkey和远程密钥rkey)、所有节点的IP地址、所有节点的状态。节点控制器允许向会话同步系统增加/删除节点,实现扩缩容。
根据示例实施例,节点控制器1010可包括分配模块1011、RDMA注册模块1013、节点注册模块1015、节点信息模块1017。
分配模块1011用于为每个处理核分别分配用于会话信息的内存区域。
RDMA注册模块1013用于在每个处理核上将相应内存区域注册到RDMA适配器。
节点注册模块1015用于在所述会话同步系统中的其他节点上注册所述节点。
节点信息模块1017用于维护会话同步系统中所有节点的相关信息。
会话控制器1030用于在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。根据示例实施例,会话控制器1030管理控制向其他节点通过RDMA同步会话信息以及接收处理其他节点通过RDMA同步过来的会话信息。此外,会话控制器1030可提供增、删、改、查会话的接口。
会话控制器1030配置为接收会话同步报文。如前所述,会话同步报文头部中包含校验信息和目标内存地址。
根据一些实施例,会话控制器1030会从节点控制器1010中获取所有其他运行状态和追加状态的节点。当本地某个处理核存在新建的会话或者会话状态发生改变时,会将会话信息通过RDMA同步到其他节点的对应处理核上相同位置的内存槽。
根据一些实施例,当某个处理核上的某个内存槽接收到从多个节点同步过来的会话信息时,会话控制器1030取版本号最大的会话,版本号越大意味着该会话状态越新,每次会话状态发生改变时版本号可加1。
会话控制器1030会周期性地将状态为关闭的会话释放掉,从而为后续新建的会话腾出对应的内存槽位置。
根据一些实施例,会话控制器1030可包括会话请求模块1031、会话建立模块1033、会话同步模块1035。
会话请求模块1031用于接收来自客户端的会话请求。
会话建立模块1033用于根据所述会话请求建立第一会话,所述第一会话的会话信息保存在所述节点的内存中。
会话同步模块1035用于在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
空闲槽管理元数据模块1050用于维护空闲内存槽的元数据。如前面所描述的,空闲槽管理元数据模块1050可以一种内存池的方式管理每个处理核上的空闲内存槽的编号(slot_id),每次需要分配一个内存槽时从内存池中取出一个空闲槽,每次释放一个内存槽时将对应的编号(slot_id)添加到内存池中。
根据该实施例的同步节点可执行与前面提供的方法类似的功能,其他功能可参见前面的描述,此处不再赘述。
图11示出根据本申请示例实施例的电子设备的框图。
下面参照图11来描述根据本申请的这种实施方式的电子设备200。图11显示的电子设备200仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图11所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同系统组件(包括存储单元220和处理单元210)的总线230、显示单元240等。
存储单元220存储有程序代码,程序代码可以被处理单元210执行,使得处理单元210执行本说明书描述的根据本申请各实施例的方法。
存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)2201和/或高速缓存存储单元2202,还可以进一步包括只读存储单元(ROM)2203。
存储单元220还可以包括具有一组(至少一个)程序模块2205的程序/实用工具2204,这样的程序模块2205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序可操作来使计算机执行如上述方法实施例中记载的部分或全部步骤。
本领域的技术人员可以清楚地了解到本申请的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(Field-ProgrammaBLE GateArray,FPGA)、集成电路(Integrated Circuit,IC)等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本申请实施例进行了详细描述和解释。应清楚地理解,本申请描述了如何形成和使用特定示例,但本申请不限于这些示例的任何细节。相反,基于本申请公开的内容的教导,这些原理能够应用于许多其它实施例。
通过对示例实施例的描述,本领域技术人员易于理解,根据本申请实施例的技术方案至少具有以下优点中的一个或多个。
根据一些实施例,通过在多个节点之间利用RDMA同步会话信息,可减少会话同步时的数据拷贝、降低节点的CPU负载,从而为会话同步的实时性和强一致性提供基础和保证。
根据一些实施例,通过为每个处理核分配会话内存区域及进一步细分内存槽,可提高内存处理效率,从而进一步保证会话同步的实时性和效率。
根据一些实施例,在其他节点正常完成会话信息的同步更新并确认后,再进行报文的确认转发。这样,可保证在会话同步过程之前或者之后,会话同步系统中各个节点上的相应会话信息保持强一致性。
根据一些实施例,采用一种多核分布式锁机制,在避免内存槽冲突的同时,可减少对外部系统的依赖以及提高分布式锁的性能。
根据一些实施例,通过会话同步的实时性和强一致性,实现了高可用性的节点容灾和/或节点拓展,提高了数据中心网络的可靠性。
依据以下条款可更好地理解前述内容:
条款1、一种用于实时的强一致性会话同步的方法,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,其特征在于,所述方法包括:
为每个处理核分别分配用于存储会话信息的内存区域;
在每个处理核上将相应内存区域注册到RDMA适配器;
在所述会话同步系统中的其他节点上注册所述节点;
在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。
条款2、如条款1所述的方法,其特征在于,在为每个处理核分别分配用于存储会话信息的内存区域之后,还包括:
将所述内存区域进一步划分为多个内存槽,每个内存槽用于存储一条会话信息。
条款3、如条款2所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
将存储在与所述节点的处理核对应的内存区域的内存槽中的会话信息通过RDMA同步至其他节点,使得其他节点将同步过来的所述会话信息保存至对应的处理核上的内存区域的对应内存槽中;和/或
接收其他节点通过RDMA同步过来的会话信息,并保存至所述节点中对应的处理核上的内存区域的对应内存槽中。
条款4、如条款2所述的方法,其特征在于,所述会话信息包括:元数据和会话内容,所述元数据包括版本、处理核编号及会话状态。
条款5、如条款4所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
将该节点处理核上相应内存区域的内存槽存储的会话信息以会话同步报文的形式通过RDMA同步至其他所有节点的相应处理核上的相应内存槽。
条款6、如条款5所述的方法,其特征在于,所述会话同步报文包括头部和会话信息,所述头部包括目标内存区域编号、目标远端密钥和目标内存槽编号。
条款7、如条款4所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
将其他节点上的全量会话同步到所述节点。
条款8、如条款7所述的方法,其特征在于,所述将其他节点上的全量会话同步到所述节点,包括:
所述节点上的每个处理核通过RDMA向其他节点请求对应处理核上的全量会话信息;
将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽;
完成全量会话同步后,在所有节点上更新所述节点的状态。
条款9、如条款8所述的方法,其特征在于,将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽,包括:
在所述对应内存槽为空闲的情况下,写入通过RDMA同步过来的对应内存槽的会话信息;
在所述对应内存槽已经包含有一条会话的情况下,根据所述会话信息的版本判断是否写入通过RDMA同步过来的对应内存槽的会话信息:
若所述对应内存槽中会话信息的版本大于或等于同步过来的会话信息的版本,则跳过所述对应内存槽;
若所述对应内存槽中会话信息的版本小于同步过来的会话信息的版本,则写入通过RDMA同步过来的会话信息至对应的内存槽。
条款10、如条款4所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
响应客户端请求创建会话,通过RDMA向其他节点同步新创建的所述会话;和/或
响应客户端请求更新已创建的会话,通过RDMA向其他节点同步更新的会话;和/或
接收其他节点通过RDMA同步过来的会话。
条款11、如条款10所述的方法,其特征在于,所述通过RDMA向其他节点同步创建的所述会话,包括:
在所述会话的会话状态为建立状态之后,通过RDMA同步所述会话至其他节点。
条款12、如条款10所述的方法,其特征在于,所述响应客户端请求更新已创建的会话,通过RDMA向所述会话同步系统中的其他节点同步更新的会话,包括:
当所述会话的会话状态发生变化时,将更新后的会话信息通过RDMA同步至所述会话同步系统中的其他节点之后,再进行会话更新过程中的报文转发。
条款13、如条款10所述的方法,其特征在于,
所述元数据还包括:锁和定时器;
所述会话同步系统中的一节点被确定为主节点。
条款14、如条款13所述的方法,其特征在于,所述响应客户端请求创建会话,通过RDMA向其他节点同步新创建的所述会话,包括:
从所述主节点中对应处理核的内存区域中获取空闲的内存槽并设置锁和定时器,若所述节点为主节点,则直接从所述处理核对应的内存区域中获取空闲的内存槽;
在所述节点向所获取的对应内存槽填充会话信息,并将所述会话信息同步至其他节点;
如果所述节点在定时器规定的时间周期内完成会话同步,则所述主节点重置对应处理核上相应内存槽的定时器;
如果所述节点在定时器规定的时间周期内未完成会话同步,则所述主节点重置对应处理核上相应内存槽的定时器,并通知所有节点释放相应的内存槽;
会话周期完成后,所述节点通知所述主节点解锁并释放该内存槽,所述主节点通知其他节点释放相应内存槽。
条款15、如条款1所述的方法,其特征在于,所述为每个处理核分别分配用于存储会话信息的内存区域,包括:
在为每个处理核分配用于存储会话信息的内存区域时,同时生成每个处理核的内存区域的密钥对,所述密钥对包括本地密钥和远程密钥。
条款16、如条款15所述的方法,其特征在于,在所述会话同步系统中的其他节点上注册所述节点,包括:
设置所述节点的状态以用于注册到其他节点;
向其他节点提供注册信息,所述注册信息包括:所述节点上每个处理核的内存区域的本地密钥和远程密钥、所述节点的IP地址、所述节点的状态。
条款17、如条款1所述的方法,其特征在于,还包括:
根据注册请求在所述节点上注册会话同步系统中的其他节点;
维护所述会话同步系统中所有节点的信息和状态;
条款18、如条款2所述的方法,其特征在于,还包括:
对空闲内存槽的元数据进行维护以用于为新创建的会话分配内存槽,且采用锁机制以避免内存槽冲突。
条款19、一种用于实时的强一致性会话同步的方法,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,其特征在于,所述方法包括:接收来自客户端的会话请求;
根据所述会话请求建立第一会话,将所述第一会话的会话信息保存在所述节点的内存中;
在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
条款20、如条款19所述的方法,其特征在于,还包括:当所述第一会话的会话状态发生变化时,将更新后的会话信息通过RDMA同步至所述会话同步系统中的其他节点之后,再进行会话更新过程中的报文转发。
条款21、如条款19所述的方法,其特征在于,在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息,包括:
在所述第一会话的会话状态为建立状态之后,通过RDMA同步所述第一会话至其他节点。
条款22、如条款19所述的方法,其特征在于,在接收来自客户端的会话请求之前,还包括:
为每个处理核分别分配用于存储会话信息的内存区域;
将所述内存区域进一步划分为多个内存槽,每个内存槽用于存储一条会话信息;
在每个处理核上将相应内存区域注册到RDMA适配器;
在所述会话同步系统中的其他节点上注册所述节点。
条款23、如条款22所述的方法,其特征在于,
所述会话信息包括:元数据和会话内容,所述元数据包括版本、处理核编号、会话状态、锁和定时器;
所述会话同步系统中的一节点被确定为主节点。
条款24、如条款23所述的方法,其特征在于,根据所述会话请求建立第一会话,将所述第一会话的会话信息保存在所述节点的内存中,包括:
请求命中的处理核从所述主节点中对应处理核的内存区域中获取空闲的内存槽并设置锁和定时器,若所述节点为主节点,则直接从所述处理核对应的内存区域中获取空闲的内存槽;
在所述节点向所获取的对应内存槽填充所述第一会话的会话信息。
条款25、如条款24所述的方法,其特征在于,在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息,包括:
所述请求命中的处理核将存储在所述对应内存槽中的所述第一会话的会话信息通过RDMA同步至其他节点,使得其他节点将同步过来的所述会话信息保存至对应的处理核上的内存区域的对应内存槽中。
条款26、如条款25所述的方法,其特征在于,还包括:
如果所述第一会话的同步在定时器规定的时间周期内完成,则所述主节点重置对应处理核上相应内存槽的定时器;
如果所述第一会话的同步在定时器规定的时间周期内未完成,则所述主节点重置对应处理核上相应内存槽的定时器,并通知所有节点释放相应的内存槽;
所述第一会话的周期完成后,所述节点通知所述主节点解锁并释放所述内存槽,所述主节点通知其他节点释放相应内存槽。
条款27、如条款22所述的方法,其特征在于,在所述会话同步系统中的其他节点上注册所述节点之后,还包括:
将其他节点上的全量会话同步到所述节点。
条款28、如条款22所述的方法,其特征在于,在所述会话同步系统中的其他节点上注册所述节点之后,还包括:
所述节点上的每个处理核通过RDMA向其他节点请求对应处理核上的全量会话信息;
将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽;
完成全量会话同步后,在所有节点上更新所述节点的状态。
条款29、如条款28所述的方法,其特征在于,将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽,包括:
在所述对应内存槽为空闲的情况下,写入通过RDMA同步过来的对应内存槽的会话信息;
在所述对应内存槽已经包含有一条会话的情况下,根据所述会话信息的版本判断是否写入通过RDMA同步过来的对应内存槽的会话信息:
若所述对应内存槽中会话信息的版本大于或等于同步过来的会话信息的版本,则跳过所述对应内存槽;
若所述对应内存槽中会话信息的版本小于同步过来的会话信息的版本,则写入通过RDMA同步过来的会话信息至对应的内存槽。
条款30、一种用于实时的强一致性会话同步的节点,配置于会话同步系统,其特征在于,所述节点包括:一个或多个处理核、RDMA适配器,节点控制器、会话控制器以及空闲槽管理元数据模块,其中:
所述节点控制器用于维护控制所述会话同步系统中的节点;
所述会话控制器用于在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步;
所述空闲槽管理元数据模块用于维护空闲内存槽的元数据,
其中所述节点控制器包括:
分配模块,用于为每个处理核分别分配用于会话信息的内存区域;
RDMA注册模块,用于在每个处理核上将相应内存区域注册到RDMA适配器;
节点注册模块,用于在所述会话同步系统中的其他节点上注册所述节点;
节点信息模块,用于维护会话同步系统中所有节点的相关信息。
条款31、一种用于实时的强一致性会话同步的节点,配置于会话同步系统,其特征在于,所述节点包括:一个或多个处理核、RDMA适配器,节点控制器、会话控制器以及空闲槽管理元数据模块,其中:
所述节点控制器用于维护控制所述会话同步系统中的节点;
所述会话控制器用于在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步;
所述空闲槽管理元数据模块用于维护空闲内存槽的元数据,
其中所述会话控制器包括:
会话请求模块,用于接收来自客户端的会话请求;
会话建立模块,用于根据所述会话请求建立第一会话,所述第一会话的会话信息保存在所述节点的内存中;
会话同步模块,用于在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
条款32、一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理单元;
存储单元,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据条款1-29中任一所述的方法。
以上具体地示出和描述了本申请的示例性实施例。应可理解的是,本申请不限于这里描述的详细结构、设置方式或实现方法;相反,本申请意图涵盖包含在所附条款的精神和范围内的各种修改和等效设置。

Claims (10)

1.一种用于实时的强一致性会话同步的方法,其特征在于,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,所述方法包括:
为每个处理核分别分配用于存储会话信息的内存区域;
在每个处理核上将相应内存区域注册到RDMA适配器;
在所述会话同步系统中的其他节点上注册所述节点;
在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步。
2.如权利要求1所述的方法,其特征在于,在为每个处理核分别分配用于存储会话信息的内存区域之后,还包括:
将所述内存区域进一步划分为多个内存槽,每个内存槽用于存储一条会话信息。
3.如权利要求2所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
将存储在与所述节点的处理核对应的内存区域的内存槽中的会话信息通过RDMA同步至其他节点,使得其他节点将同步过来的所述会话信息保存至对应的处理核上的内存区域的对应内存槽中;和/或
接收其他节点通过RDMA同步过来的会话信息,并保存至所述节点中对应的处理核上的内存区域的对应内存槽中。
4.如权利要求2所述的方法,其特征在于,
所述会话信息包括:元数据和会话内容,所述元数据包括版本、处理核编号、会话状态、锁和定时器;
所述会话同步系统中的一节点被确定为主节点。
5.如权利要求4所述的方法,其特征在于,在所述节点的处理核与其他节点需会话同步的相应处理核之间通过RDMA进行会话同步,包括:
响应客户端请求创建会话,通过RDMA向其他节点同步新创建的所述会话,包括:
从所述主节点中对应处理核的内存区域中获取空闲的内存槽并设置锁和定时器,若所述节点为主节点,则直接从所述处理核对应的内存区域中获取空闲的内存槽;
在所述节点向所获取的对应内存槽填充会话信息,并将所述会话信息同步至其他节点;
如果所述节点在定时器规定的时间周期内完成会话同步,则所述主节点重置对应处理核上相应内存槽的定时器;
如果所述节点在定时器规定的时间周期内未完成会话同步,则所述主节点重置对应处理核上相应内存槽的定时器,并通知所有节点释放相应的内存槽;
会话周期完成后,所述节点通知所述主节点解锁并释放该内存槽,所述主节点通知其他节点释放相应内存槽。
6.一种用于实时的强一致性会话同步的方法,应用于会话同步系统中的节点,所述节点包括一个或多个处理核以及RDMA适配器,其特征在于,所述方法包括:
接收来自客户端的会话请求;
根据所述会话请求建立第一会话,将所述第一会话的会话信息保存在所述节点的内存中;
在所述节点与所述会话同步系统中的其他节点之间通过RDMA同步所述第一会话的会话信息。
7.如权利要求6所述的方法,其特征在于,在接收来自客户端的会话请求之前,还包括:
为每个处理核分别分配用于存储会话信息的内存区域;
将所述内存区域进一步划分为多个内存槽,每个内存槽用于存储一条会话信息;
在每个处理核上将相应内存区域注册到RDMA适配器;
在所述会话同步系统中的其他节点上注册所述节点。
8.如权利要求7所述的方法,其特征在于,在所述会话同步系统中的其他节点上注册所述节点之后,还包括:
所述节点上的每个处理核通过RDMA向其他节点请求对应处理核上的全量会话信息;
将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽;
完成全量会话同步后,在所有节点上更新所述节点的状态。
9.如权利要求8所述的方法,其特征在于,将所述全量会话信息填充至所述节点上对应处理核的内存区域的对应内存槽,包括:
在所述对应内存槽为空闲的情况下,写入通过RDMA同步过来的对应内存槽的会话信息;
在所述对应内存槽已经包含有一条会话的情况下,根据所述会话信息的版本判断是否写入通过RDMA同步过来的对应内存槽的会话信息:
若所述对应内存槽中会话信息的版本大于或等于同步过来的会话信息的版本,则跳过所述对应内存槽;
若所述对应内存槽中会话信息的版本小于同步过来的会话信息的版本,则写入通过RDMA同步过来的会话信息至对应的内存槽。
10.一种电子设备,其特征在于,所述电子设备包括:
一个或多个处理单元;
存储单元,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现根据权利要求1-9中任一所述的方法。
CN202210336487.5A 2022-03-31 2022-03-31 用于实时的强一致性会话同步的方法和电子设备 Pending CN114885007A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210336487.5A CN114885007A (zh) 2022-03-31 2022-03-31 用于实时的强一致性会话同步的方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210336487.5A CN114885007A (zh) 2022-03-31 2022-03-31 用于实时的强一致性会话同步的方法和电子设备

Publications (1)

Publication Number Publication Date
CN114885007A true CN114885007A (zh) 2022-08-09

Family

ID=82669714

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210336487.5A Pending CN114885007A (zh) 2022-03-31 2022-03-31 用于实时的强一致性会话同步的方法和电子设备

Country Status (1)

Country Link
CN (1) CN114885007A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302618A (zh) * 2023-05-17 2023-06-23 上海云脉芯联科技有限公司 一种会话信息处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090030986A1 (en) * 2007-07-27 2009-01-29 Twinstrata, Inc. System and method for remote asynchronous data replication
CN106844048A (zh) * 2017-01-13 2017-06-13 上海交通大学 基于硬件特性的分布式共享内存方法及系统
WO2017097011A1 (zh) * 2015-12-09 2017-06-15 国家电网公司 基于集群节点间即时拷贝的会话同步方法
CN112769959A (zh) * 2021-03-04 2021-05-07 北京字节跳动网络技术有限公司 会话同步方法、装置、第一节点、第二节点、系统及介质
CN113360577A (zh) * 2021-06-18 2021-09-07 苏州浪潮智能科技有限公司 一种mpp数据库数据处理方法、装置、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090030986A1 (en) * 2007-07-27 2009-01-29 Twinstrata, Inc. System and method for remote asynchronous data replication
WO2017097011A1 (zh) * 2015-12-09 2017-06-15 国家电网公司 基于集群节点间即时拷贝的会话同步方法
CN106844048A (zh) * 2017-01-13 2017-06-13 上海交通大学 基于硬件特性的分布式共享内存方法及系统
CN112769959A (zh) * 2021-03-04 2021-05-07 北京字节跳动网络技术有限公司 会话同步方法、装置、第一节点、第二节点、系统及介质
CN113360577A (zh) * 2021-06-18 2021-09-07 苏州浪潮智能科技有限公司 一种mpp数据库数据处理方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116302618A (zh) * 2023-05-17 2023-06-23 上海云脉芯联科技有限公司 一种会话信息处理方法及装置
CN116302618B (zh) * 2023-05-17 2023-09-12 上海云脉芯联科技有限公司 一种会话信息处理方法及装置

Similar Documents

Publication Publication Date Title
CN108268208B (zh) 一种基于rdma的分布式内存文件系统
US10289338B2 (en) Multi-class heterogeneous clients in a filesystem
CN106657365B (zh) 一种基于rdma的高并发数据传输方法
US7363346B2 (en) Reliably storing information across multiple computers such as in a hive of computers
US7512673B2 (en) Rule based aggregation of files and transactions in a switched file system
US7383288B2 (en) Metadata based file switch and switched file system
JP5016063B2 (ja) 整合性のとれた耐障害性分散ハッシュテーブル(dht)オーバレイネットワーク
US7765329B2 (en) Messaging between heterogeneous clients of a storage area network
US20090240705A1 (en) File switch and switched file system
US20130145105A1 (en) Data Storage Systems and Methods
US11841781B2 (en) Methods and systems for a non-disruptive planned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
US10826812B2 (en) Multiple quorum witness
Cassell et al. Nessie: A decoupled, client-driven key-value store using RDMA
US20190370376A1 (en) High-availability network device database synchronization
JP4208506B2 (ja) 高性能記憶装置アクセス環境
CN114885007A (zh) 用于实时的强一致性会话同步的方法和电子设备
CN101827088A (zh) 基于cpu总线互联的底层通信协议实现方法
JP2010044553A (ja) データ処理方法、クラスタシステム、及びデータ処理プログラム
CN111066339B (zh) 用于分布式移动网络的系统和方法
CN115834263A (zh) 一种分布式存储系统副本复制在网多播方法
KR20190035592A (ko) 분산 클라우드 환경에서의 분산 브로커 코디네이터 시스템 및 방법
WO2012046585A1 (ja) 分散ストレージシステム、その制御方法、およびプログラム
WO2024021746A1 (zh) 数据处理方法、通信系统和相关设备
CN115174498B (zh) 锁服务处理方法、装置和数据处理系统
CN114756388B (zh) 一种基于rdma的集群系统节点间按需共享内存的方法

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