基于容错FPGA的事务系统的正好一次事务语义技术方案

技术编号:22238051 阅读:22 留言:0更新日期:2019-10-09 17:57
本公开一般涉及用于为基于容错FPGA的事务系统提供正好一次事务语义的方法和系统。该系统包括服务器中的中间件组件以及客户端。服务器包括主机和FPGA。该FPGA控制事务执行(应用程序处理逻辑也驻留在FPGA中),并借由改进式TCP实施方式提供高性能的容错。主机缓冲并持久化事务记录以进行故障恢复并实现正好一次事务语义。监视和故障检测组件跨FPGA和主机分布。通过取决于组件故障而在高性能模式和保守模式之间切换,可以在不牺牲性能的情况下实现正好一次事务语义。用于FPGA和主机之间连接的PCIE交换机确保即使主机发生故障FPGA也是可用的。当FPGA提供更高的处理元件和存储器时,可以消除主机。

Just-once transaction semantics of transaction system based on fault-tolerant FPGA

【技术实现步骤摘要】
基于容错FPGA的事务系统的正好一次事务语义优先权要求本申请要求于2018年3月22日提交的印度专利申请号201821010571的优先权。上述申请的全部内容通过引用结合在此。
本文的公开内容一般涉及事务系统,并且更具体地,涉及为基于容错现场可编程门阵列(FieldProgrammableGateArray(FPGA))的事务系统提供正好一次(exactly-once)事务语义的框架。
技术介绍
期望事务应用程序响应来自客户端或消息源的传入消息。数据库服务器系统是事务处理的主要示例。当数据库服务器在其内部实现方式(基于行到基于列、自定义数据结构、键值存储器)以及甚至技术(基于磁盘的存储到存储器中的存储(in-memorystorage))上不断发展时,因此其应用程序也在不断发展。从纯客户端-服务器系统到多层到实时流分析-所有这些应用程序都需要与数据库服务器进行事务处理。无论应用程序如何发展,对事务数据库的需求仍然存在。并且当应用程序发展时,可能会有许多类别的应用程序,其需要处理速度、高吞吐量、高可用性而同时处理事务正好一次,无论有多少组件发生故障,无论故障事件的序列如何。当应用程序本身变得复杂时,拥有提供这些特征的框架简化了这些应用程序的设计,从而使能高性能。
技术实现思路
本公开的实施例呈现技术改进,作为本专利技术人在传统系统中认识到的一个或多个上述技术问题的解决方案。在一个方面,提供了一种基于现场可编程门阵列(FPGA)的事务系统,包括:多个FPGA,所述多个FPGA包括主动FPGA和剩余的被动FPGA,所述多个FPGA中的每个被配置为与多个主机和至少一个客户端协作,所述多个FPGA经由传输控制协议(TCP)连接而与所述至少一个客户端连接,所述多个FPGA中的每个都具有易失性存储器。在实施例中,所述多个FPGA包括:改进式传输控制协议单元(MTCPU),其被配置为:由所述主动FPGA的MTCPU接收来自所述至少一个客户端的对应于传入请求的TCP数据包;将所述TCP数据包附加至少一个时间戳作为非确定性参数;由所述主动FPGA的MTCPU将所述TCP数据包发布到所述被动FPGA,并且然后在由所述被动FPGA接收到所述TCP数据包的内部确认之后,将所述传入请求的TCP确认发送到所述至少一个客户端;由所述主动FPGA的MTCPU控制所述传入请求以及在可配置延迟之后由应用程序的并发执行引起的重新提交的请求的调度,其中所述重新提交的请求优先于所述传入请求;并且通过准备对应于(a)响应或(b)所述响应和一个或多个通知的TCP数据包、并在接收到来自所述多个主机的内部确认时将准备好的TCP数据包发送到所述至少一个客户端来优化性能;消息解析单元(MPU),其被配置为:由所述主动FPGA的MPU检测基于相关联的请求标识符接收到的重复请求;由所述主动FPGA的MPU基于相关联的客户端标识符和相关联的请求标识符检索所述重新提交的请求;并且将从所述MTCPU按序列接收到的TCP数据包解析并转换成消息格式,其与所述至少一个客户端与所述多个FPGA和所述多个主机之间的网络相关联;并且按所述序列以所述消息格式发送所述传入请求;事务处理单元(TPU),其被配置为:托管处理来自所述MPU的传入请求或重新提交的请求的应用程序,并生成(a)所述响应或(b)所述响应以及与其相关联的一个或多个通知;并且接收由来自所述应用程序的并发执行引起的重新提交的请求,并经由所述MPU发送给所述MTCPU进行调度;事务提交单元(TCU),其被配置为:接收(a)所述响应或(b)所述响应以及来自所述TPU的一个或多个通知;生成消息,所述消息包括所述传入请求或所述重新提交的请求以及(a)所述响应或(b)所述响应和所述一个或多个通知;并且将所述消息发送到:(i)所述多个主机,以执行去往所述至少一个客户端的提交和发送中的至少一个,以及(ii)MTCPU以用于优化性能,其中准备好的TCP数据包构成(a)消息中的至少一部分或(b)所述消息中的一个或多个;以及监视单元(MU),其被配置为:如果检测到主动FPGA故障,则监视并发起FPGA故障转移过程。在另一方面,提供了一种方法,包括:建立从至少一个客户端到每个现场可编程门阵列(FPGA)的传输控制协议(TCP)连接,并且基于FPGA的事务系统中的每个主机包括在其间发送消息的多个FPGA、多个主机和至少一个客户端,其中所述消息中的每个包括来自所述至少一个客户端的传入请求和到所述至少一个客户端的(a)响应或(b)所述响应和与其相关联的一个或多个通知,并且其中传入请求和对应的响应表示事务;取决于所述多个主机中的可用主机的数量,基于预先配置的模式切换阈值而在操作的高性能模式和操作的保守模式之间切换所述基于FPGA的事务系统的操作模式,其中(i)所述高性能模式涉及将所述消息保存在与所述多个主机中的每个相关联的易失性存储器中,并且然后将其内部确认发送到所述多个FPGA中的对应FPGA,并且(ii)所述保守模式涉及将所述消息保存到与所述多个主机中的每个相关联的非易失性存储器中,并且然后将其内部确认发送到所述多个FPGA中的对应FPGA;当操作的高性能模式切换到操作的保守模式时,在切换时段期间将来自所述易失性存储器的消息保存到所述多个主机的非易失性存储器中;延迟将(a)所述响应或(b)所述响应和所述一个或多个通知发送到所述至少一个客户端,直到在所述切换时段期间将所述相关联的消息保存到所述非易失性存储器中结束为止或基于预先配置的时间延迟,以确保作为在传入请求之前到达所述多个主机的相关联的重复请求的替代而由所述多个主机接收传入请求;并且延迟向所述多个FPGA发送所述内部确认,直到将所述相关联的消息保存到所述非易失性存储器中结束为止。在实施例中,所述多个主机的易失性和非易失性存储器被实施为键值存储器,并且其中所述传入请求中的每个都利用客户端标识符和请求标识符进行标记,其中所述请求标识符是由与所述至少一个客户端相关联的中间件针对每个后续传入请求递增的唯一序列号;对应的响应利用所述请求标识符进行标记;传入请求和对应的响应表示事务;并且对应于所述传入请求的通知利用通知标识符进行标记,所述通知标识符包括:相关联的客户端标识符、相关联的请求标识符和所述事务内的通知的序列号。在实施例中,上面描述的方法还包括由所述多个FPGA通过以下方式检测来自所述至少一个客户端的所有重复请求:针对列表中不可用的每个传入请求并且如果相关联的序列号大于从对应的客户端接收到的最大序列号,则在所述多个FPGA中的每个中附加请求标识符的列表,其与在所述多个FPGA中正处理的传入请求相关联;如果在所述列表中相关联的请求标识符可用,则丢弃传入请求;如果相关联的请求标识符在所述列表中不可用,则从应用程序获得(a)响应或(b)与所述传入请求相对应的一个或多个通知这二者中的至少一个;向所述多个主机发送(a)所述响应或(b)所述响应和所述一个或多个通知并且从所述列表中删除相关联的请求标识符;取决于所述操作模式,将包括所述传入请求或所述重新提交的请求的消息与(a)所述响应或(b)所述响应以及与其相关联的一个或多个通知存储在所述多个主机中的适当键值存储器中;如果相关联的请求标识符在请求标识符本文档来自技高网...

【技术保护点】
1.一种基于现场可编程门阵列(FPGA)的事务系统(100),包括:多个FPGA,所述多个FPGA包括主动FPGA和剩余的被动FPGA,所述多个FPGA中的每个被配置为与多个主机和至少一个客户端协作,所述多个FPGA经由传输控制协议(TCP)连接而与所述至少一个客户端连接,所述多个FPGA中的每个都具有易失性存储器,所述多个FPGA包括:改进式传输控制协议单元(MTCPU),其被配置为:由所述主动FPGA的MTCPU接收来自所述至少一个客户端的对应于传入请求的TCP数据包;将所述TCP数据包附加至少一个时间戳作为非确定性参数;由所述主动FPGA的MTCPU将所述TCP数据包发布到所述被动FPGA,并且然后在由所述被动FPGA接收到所述TCP数据包的内部确认之后,将所述传入请求的TCP确认发送到所述至少一个客户端;由所述主动FPGA的MTCPU控制所述传入请求以及在可配置延迟之后由应用程序的并发执行引起的重新提交的请求的调度,其中所述重新提交的请求优先于所述传入请求;并且通过准备对应于(a)响应或(b)所述响应和一个或多个通知的TCP数据包、并在接收到来自所述多个主机的内部确认时将准备好的TCP数据包发送到所述至少一个客户端来优化性能;消息解析单元(MPU),其被配置为:由所述主动FPGA的MPU检测基于相关联的请求标识符接收到的重复请求;由所述主动FPGA的MPU基于相关联的客户端标识符和相关联的请求标识符检索所述重新提交的请求;并且将从所述MTCPU按序列接收到的TCP数据包解析并转换成消息格式,其与所述至少一个客户端与所述多个FPGA和所述多个主机之间的网络相关联;并且按所述序列以所述消息格式发送所述传入请求;事务处理单元(TPU),其被配置为:托管处理来自所述MPU的传入请求或重新提交的请求的应用程序,并生成(a)所述响应或(b)所述响应以及与其相关联的一个或多个通知;并且接收由来自所述应用程序的并发执行引起的重新提交的请求,并经由所述MPU发送给所述MTCPU进行调度;事务提交单元(TCU),其被配置为:接收(a)所述响应或(b)所述响应以及来自所述TPU的一个或多个通知;生成消息,所述消息包括所述传入请求或所述重新提交的请求以及(a)所述响应或(b)所述响应和所述一个或多个通知;并且将所述消息发送到:(i)所述多个主机,以执行去往所述至少一个客户端的提交和发送中的至少一个,以及(ii)MTCPU以用于优化性能,其中准备好的TCP数据包构成(a)消息中的至少一部分或(b)所述消息中的一个或多个;以及监视单元(MU),其被配置为:如果检测到主动FPGA故障,则监视并发起FPGA故障转移过程。...

【技术特征摘要】
2018.03.22 IN 2018210105711.一种基于现场可编程门阵列(FPGA)的事务系统(100),包括:多个FPGA,所述多个FPGA包括主动FPGA和剩余的被动FPGA,所述多个FPGA中的每个被配置为与多个主机和至少一个客户端协作,所述多个FPGA经由传输控制协议(TCP)连接而与所述至少一个客户端连接,所述多个FPGA中的每个都具有易失性存储器,所述多个FPGA包括:改进式传输控制协议单元(MTCPU),其被配置为:由所述主动FPGA的MTCPU接收来自所述至少一个客户端的对应于传入请求的TCP数据包;将所述TCP数据包附加至少一个时间戳作为非确定性参数;由所述主动FPGA的MTCPU将所述TCP数据包发布到所述被动FPGA,并且然后在由所述被动FPGA接收到所述TCP数据包的内部确认之后,将所述传入请求的TCP确认发送到所述至少一个客户端;由所述主动FPGA的MTCPU控制所述传入请求以及在可配置延迟之后由应用程序的并发执行引起的重新提交的请求的调度,其中所述重新提交的请求优先于所述传入请求;并且通过准备对应于(a)响应或(b)所述响应和一个或多个通知的TCP数据包、并在接收到来自所述多个主机的内部确认时将准备好的TCP数据包发送到所述至少一个客户端来优化性能;消息解析单元(MPU),其被配置为:由所述主动FPGA的MPU检测基于相关联的请求标识符接收到的重复请求;由所述主动FPGA的MPU基于相关联的客户端标识符和相关联的请求标识符检索所述重新提交的请求;并且将从所述MTCPU按序列接收到的TCP数据包解析并转换成消息格式,其与所述至少一个客户端与所述多个FPGA和所述多个主机之间的网络相关联;并且按所述序列以所述消息格式发送所述传入请求;事务处理单元(TPU),其被配置为:托管处理来自所述MPU的传入请求或重新提交的请求的应用程序,并生成(a)所述响应或(b)所述响应以及与其相关联的一个或多个通知;并且接收由来自所述应用程序的并发执行引起的重新提交的请求,并经由所述MPU发送给所述MTCPU进行调度;事务提交单元(TCU),其被配置为:接收(a)所述响应或(b)所述响应以及来自所述TPU的一个或多个通知;生成消息,所述消息包括所述传入请求或所述重新提交的请求以及(a)所述响应或(b)所述响应和所述一个或多个通知;并且将所述消息发送到:(i)所述多个主机,以执行去往所述至少一个客户端的提交和发送中的至少一个,以及(ii)MTCPU以用于优化性能,其中准备好的TCP数据包构成(a)消息中的至少一部分或(b)所述消息中的一个或多个;以及监视单元(MU),其被配置为:如果检测到主动FPGA故障,则监视并发起FPGA故障转移过程。2.根据权利要求1所述的基于FPGA的事务系统,其中包括主动主机和剩余的被动主机的多个主机被包括在所述基于FPGA的事务系统中,其中所述多个主机中的每个都具有被实施为键值存储器的易失性存储器和非易失性存储器,并经由TCP连接而与所述至少一个客户端连接,所述多个主机被配置为:取决于所述多个主机中的可用主机的数量,基于预先配置的模式切换阈值而在操作的高性能模式和操作的保守模式之间切换所述基于FPGA的事务系统的操作模式,其中(i)所述高性能模式涉及将所述消息保存在与所述多个主机中的每个相关联的易失性存储器中,并且然后将其内部确认发送到所述多个FPGA中的对应FPGA,并且(ii)所述保守模式涉及将所述消息保存在与所述多个主机中的每个相关联的非易失性存储器中,并且然后将其内部确认发送到所述多个FPGA中的对应FPGA;当操作的高性能模式切换到操作的保守模式时,在切换时段期间将来自所述易失性存储器的消息保存到所述非易失性存储器中;延迟将(a)所述响应或(b)所述响应和所述一个或多个通知发送到所述至少一个客户端,直到在所述切换时段期间将所述消息保存到所述非易失性存储器中结束为止或者基于预先配置的时间延迟,以确保作为在所述传入请求之前到达所述多个主机的相关联的重复请求的替代而由所述多个主机接收传入请求;并且延迟向所述多个FPGA发送所述内部确认,直到将所述消息保存到所述非易失性存储器中结束为止。3.根据权利要求2所述的基于FPGA的事务系统,其中,所述传入请求中的每个利用客户端标识符和请求标识符进行标记,其中请求标识符是由与所述至少一个客户端相关联的中间件针对每个后续传入请求递增的唯一序列号;其中,对应的响应利用所述请求标识符进行标记;其中,传入请求和对应的响应表示事务;并且其中,对应于所述传入请求的通知利用通知标识符进行标记,所述通知标识符包括:相关联的客户端标识符、相关联的请求标识符和所述事务内的通知的序列号。4.根据权利要求3所述的基于FPGA的事务系统,其中,被包括在所述主动FPGA中的MU被配置为,在所述多个主机和所述多个FPGA之间没有内部消息的情况下在预设的心跳阈值内向所述被动FPGA和所述多个主机发起心跳请求,其另外用作分别指示所述多个FPGA和所述多个主机内的活动FPGA和活动主机的心跳;其中,所述主动主机被配置为用作监视服务器并向所述被动主机和所述被动FPGA发起心跳请求,并向所述多个FPGA中的每个以及所述多个主机中的每个广播所述活动FPGA和所述主动主机的列表,并且还被配置为,如果(i)所述至少一个客户端经由所述被动FPGA触发所述FPGA故障转移过程或(ii)所述监视服务器在预设的心跳阈值内没有从所述主动FPGA接收到指示其故障的心跳请求,则向下一个被动FPGA的发起FPGA故障转移过程,其中来自所述多个FPGA的预定序列并且在活动FPGA和活动主机的列表中被广播的下一个被动FPGA被识别为所述下一个主动FPGA;并且其中,所述剩余被动主机被配置为,如果所述被动主机中的任何一个在所述预设的心跳阈值内没有从所述主动主机接收到指示其故障的心跳请求,则发起主机故障转移过程以将其自身转换为主动主机,其中来自所述多个主机的预定序列并且在活动FPGA和活动主机的列表中被广播的被动主机被识别为所述下一个主动主机。5.根据权利要求4所述的基于FPGA的事务系统,其中所述多个FPGA和所述多个主机通过以下进行连接:(i)外围组件互连高速(PCIE)网络、(ii)PCIE和Infiniband网络的组合、或者(iii)通过融合以太网的远程直接存储器存取(RDMA)(RoCE)网络和Infiniband网络的组合。6.一种基于现场可编程门阵列(FPGA)的事务系统(200),包括:多个FPGA,包括主动FPGA和剩余的被动FPGA,所述多个FPGA中的每个被配置为经由传输控制协议(TCP)连接而与至少一个客户端协作,所述多个FPGA中的每个都具有一个或多个存储设备,其是易失性存储器和非易失性存储器的组合并且被实施为键值存储器,所述多个FPGA包括:改进式传输控制协议单元(MTCPU),其被配置为:由所述主动FPGA的MTCPU接收来自所述至少一个客户端的对应于传入请求的TCP数据包;将所述TCP数据包附加至少一个时间戳作为非确定性参数;由所述主动FPGA的MTCPU将所述TCP数据包发布到所述被动FPGA,并且然后将所述传入请求的TCP确认发送到所述至少一个客户端;由所述主动FPGA的MTCPU控制所述传入请求以及在可配置延迟之后由应用程序的并发执行引起的重新提交的请求的调度,其中所述重新提交的请求优先于所述传入请求;并且将(a)响应或(b)所述响应和一个或多个通知发送到所述至少一个客户端;消息解析单元(MPU),其被配置为:由所述主动FPGA的MPU检测基于相关联的请求标识符接收到的重复请求;由所述主动FPGA的MPU基于相关联的客户端标识符和相关联的请求标识符检索所述重新提交的请求;并且将从所述MTCPU按序列接收到的TCP数据包解析并转换成消息格式,其与所述至少一个客户端和所述多个FPGA之间的网络相关联;事务处理单元(TPU),其被配置为:托管处理来自所述MPU的传入请求或重新提交的请求的应用程序,并生成(a)所述响应或(b)所述响应和所述一个或多个通知;并且接收由来自所述应用程序的并发执行引起的重新提交的请求,并经由所述MPU发送到所述MTCPU进行调度;事务提交单元(TCU),其被配置为:接收(a)所述响应或(b)所述响应以及从所述TPU发送的一个或多个通知;生成消息,其包括所述传入请求或所述重新提交的请求和(a)所述响应或(b)所述响应和所述一个或多个通知,其中所述TCP数据包构成(a)消息的至少一部分或(b)所述消息中的一个或多个;并且将所述消息发送到所述MTCPU;以及监视单元(MU),其被配置为:如果检测到主动FPGA故障,则监视并发起FPGA故障转移过程。7.根据权利要求6所述的基于FPGA的事务系统,其中,所述多个FPGA还被配置为:取决于所述多个FPGA中的可用FPGA的数量,基于预先配置的模式切换阈值而在操作的高性能模式和操作的保守模式之间切换所述基于FPGA的事务系统的操作模式,其中(i)所述高性能模式涉及将所述消息保存在与所述多个FPGA中的每个相关联的易失性存储器中,并且然后将TCP确认发送到所述至少一个客户端,并且(ii)所述保守模式涉及将所述消息保存在与所述多个FPGA中的每个相关联的非易失性存储器中,并且然后向所述至少一个客户端发送TCP确认;当操作的高性能模式切换到操作的保守...

【专利技术属性】
技术研发人员:马诺·卡鲁纳卡兰·南比亚尔斯瓦普尼·罗迪苏尼尔·阿南特·普拉尼克马赫什·达莫达尔·巴威
申请(专利权)人:塔塔咨询服务有限公司
类型:发明
国别省市:印度,IN

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1