CN106354566B - 一种命令处理的方法以及服务器 - Google Patents
一种命令处理的方法以及服务器 Download PDFInfo
- Publication number
- CN106354566B CN106354566B CN201510412831.4A CN201510412831A CN106354566B CN 106354566 B CN106354566 B CN 106354566B CN 201510412831 A CN201510412831 A CN 201510412831A CN 106354566 B CN106354566 B CN 106354566B
- Authority
- CN
- China
- Prior art keywords
- target
- order
- context
- request
- dependent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种命令处理的方法以及服务器,方法包括:服务器接收客户端发送的携带有目标命令的目标请求,目标命令对应一个目标上下文编号,并将当前时间作为目标请求的目标时间戳;将本地中与目标上下文编号对应的关联命令以及与目标命令对应的冲突命令添加至目标依赖集,并通过将目标请求转发至副本服务器以更新目标依赖集,并与副本服务器同步保存更新后的目标依赖集;根据目标上下文编号和目标时间戳、更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定目标命令与更新后的目标依赖集中的各个命令的目标执行顺序,并根据目标执行顺序执行命令。采用本发明,可以在保证系统一致性的同时,降低系统延迟,减少系统复杂度。
Description
技术领域
本发明涉及计算技术领域,尤其涉及一种命令处理的方法以及服务器。
背景技术
随着企业应用对计算能力需求的不断膨胀,传统的服务器模式已经无法满足需要。网络带宽的不断增长,使得通过网络访问非本地的计算服务日益成熟。采取云计算模式,使得所有计算服务集群于云计算数据中心已成为发展趋势。云计算是一种商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务。由于硬件和软件本身的不稳定性,如何能够保证服务的高可靠性已经成为云计算中越来越重要的一个问题。
对于由大规模廉价服务器群构成的云计算数据中心而言,分布式同步机制是开展一切上层应用的基础,是系统正确性和可靠性的基本保证。在一个分布式系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么它们最后应能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。
目前有COPS(Clusters of Order Preserving System,保序系统的集群)算法可以解决一致性的问题。COPS算法通过保存多个版本的数据来实现客户端一致性,每次读写操作,COPS算法都会检查相应请求的版本,并返回对应版本的数据,以此来保证客户端的一致;而服务器端,COPS算法通过链式复制来同步服务器端数据,因为COPS算法无法对并发操作进行排序,因此必须对发生的冲突进行收敛,才能保证所有服务器的状态一致,但是收敛操作需要进行额外的处理并导致系统延迟,增加系统复杂度。
发明内容
本发明实施例提供一种命令处理的方法以及服务器,可以在保证系统一致性的同时,降低系统延迟,减少系统复杂度。
本发明第一方面提供一种命令处理的方法,包括:
服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
将当前时间作为所述目标请求的目标时间戳;
将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;
将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。
在第一种可能的实现方式中,所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集,包括:
在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集
结合第一方面,在第二种可能的实现方式中,所述将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令,包括:
将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。
结合第一方面,在第三种可能的实现方式中,所述将当前时间作为所述目标请求的目标时间戳,包括:
检测所述目标请求中是否包含预设时间戳;
若检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
若检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。
结合第一方面,在第四种可能的实现方式中,在所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集之前,还包括:
检测所述目标请求中是否携带有上下文编号;
若检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
若检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。
结合第一方面,在第五种可能的实现方式中,所述根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令,包括:
将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
根据所述目标执行顺序执行所述连通图中的所有命令。
结合第一方面,在第六种可能的实现方式中,在所述将当前时间作为所述目标请求的目标时间戳之后,还包括:
将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
其中,所述上下文是由多个线程合并而成的。
本发明第二方面提供一种服务器,包括:
接收模块,用于接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
确定模块,用于将当前时间作为所述目标请求的目标时间戳;
添加模块,用于将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;
更新模块,用于将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
顺序执行模块,用于根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。
在第一种可能的实现方式中,所述添加模块包括:
第一添加单元,用于在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
第二添加单元,用于在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
结合第二方面,在第二种可能的实现方式中,所述更新模块包括:
请求转发单元,用于将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
比较单元,用于接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
更新保存单元,用于当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。
结合第二方面,在第三种可能的实现方式中,所述确定模块包括:
检测单元,用于检测所述目标请求中是否包含预设时间戳;
第一确定单元,用于若所述检测单元检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
第二确定单元,用于若所述检测单元检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。
结合第二方面,在第四种可能的实现方式中,还包括:
编号检测模块,用于检测所述目标请求中是否携带有上下文编号;
编号选择模块,用于若所述编号检测模块检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
编号确定模块,用于若所述编号检测模块检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。
结合第二方面,在第五种可能的实现方式中,所述顺序执行模块包括:
请求添加通知单元,用于将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
第一排序单元,用于当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
第二排序单元,用于若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
顺序确定单元,用于若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
命令执行单元,用于根据所述目标执行顺序执行所述连通图中的所有命令。
结合第二方面,在第六种可能的实现方式中,还包括:
消息发送模块,用于将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
其中,所述上下文是由多个线程合并而成的。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种命令处理的方法的流程示意图;
图2是本发明实施例提供的另一种命令处理的方法的流程示意图;
图3是本发明实施例提供的其中一种依赖集更新方法的流程示意图;
图4是本发明实施例提供的一种服务器的结构示意图;
图5是本发明实施例提供的一种添加模块的结构示意图;
图6是本发明实施例提供的一种更新模块的结构示意图;
图7是本发明实施例提供的一种确定模块的结构示意图;
图8是本发明实施例提供的一种顺序执行模块的结构示意图;
图9是本发明实施例提供的另一种服务器的结构示意图;
图10是本发明实施例提供的又一种服务器的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明实施例提供的一种命令处理的方法的流程示意图,所述方法可以包括:
S101,服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
具体的,在由服务器群构成的云计算数据中心中,当其中一台服务器接收到客户端发送的携带有目标命令的目标请求时,这台服务器可以将自己确定为主服务器,并将云计算数据中心中的其他服务器确定为副本服务器。所述主服务器在接收到所述目标请求后,可以先检测所述目标请求中是否携带有上下文编号,若检测出未携带有上下文编号,则所述主服务器可以从自己维护的上下文编号集合中选择出其中一个与所述客户端对应的上下文编号,即与所述目标命令对应的上下文编号,并将该与所述目标命令对应的上下文编号确定为目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;若检测出所述目标请求中携带有上下文编号,则所述主服务器将所述目标请求中所携带的上下文编号确定为与所述目标命令对应的目标上下文编号,所述目标请求中所携带的上下文编号是由客户端之前向服务器获取得到的;其中,上下文编号是上下文的唯一标识,上下文可以是通过将多个线程合并得到的,在同一个上下文中先后执行的命令可以被认为具有上下文依赖关系。
S102,将当前时间作为所述目标请求的目标时间戳;
具体的,所述主服务器在确定出所述目标上下文编号后,可以进一步检测所述目标请求中是否携带有预设时间戳,若检测出未携带有预设时间戳,则所述主服务器将当前时间作为所述目标请求的目标时间戳,即所述目标命令与所述目标时间戳相对应,并开始执行S103至S105的步骤。通过增加时间戳,可以在后续执行命令时,保证同一个上下文编号中的命令严格按照时间戳的顺序执行。若检测出携带有预设时间戳,则所述主服务器将所述目标请求放入等候队列,并在检测到时间达到所述预设时间戳时,从所述等候队列提取所述目标请求,此时,所述主服务器可以将所述预设时间戳作为所述目标请求的目标时间戳,并开始执行S103至S105的步骤。
可选的,所述主服务器在确定目标时间戳后,还可以将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并将所述待处理消息发送至所述客户端,所述客户端在收到所述待处理消息后,所述客户端可以得知所述目标请求已被所述主服务器受理,因此,所述客户端可以在收到所述待处理消息后继续向所述主服务器或其他服务器发起下一条请求,从而可以减少所述客户端响应延迟。所述客户端在收到所述待处理消息后,所述客户端还可以将所述目标上下文编号发送给处于相同上下文中的关联客户端,以使所述关联客户端在发送请求到所述主服务器或其他服务器时可以向该请求添加所述目标上下文编号。
S103,将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;
具体的,所述主服务器在确定所述目标时间戳后,所述主服务器可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为目标依赖集,再在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;再在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。其中,检测关联命令的优先级高于冲突命令;若只检测到存在所述关联命令,则所述目标依赖集只包括所述关联命令,若只检测到存在冲突命令,则所述目标依赖集只包括所述冲突命令。所述关联命令和所述冲突命令均为所述主服务器所接收到的且还未被执行的命令。
S104,将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
具体的,所述主服务器得到包含所述关联命令和所述冲突命令的目标依赖集后,所述主服务器可以将所述目标请求转发至云计算数据中心中的所有副本服务器,所述副本服务器也将根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集,所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令、存储在所述副本服务器中的与所述目标命令对应的冲突命令;所述副本服务器在生成所述副本依赖集后,再将所述副本依赖集发送回所述主服务器,其中,所述副本依赖集即为所述副本服务器的反馈,此时,所述主服务器可以接收到所有副本服务器分别发送的副本依赖集,并将所述目标依赖集与各个副本依赖集进行比较,若存在有与所述目标依赖集不一致的副本依赖集,则将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集并向所述主服务器发送确认消息,若所述主服务器接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述主服务器可以提交所述目标请求,即说明所述主服务器已经确定好所述更新后的目标依赖集并可以准备执行S105的步骤,所述主服务器还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。可选地,当所述主服务器检测到所接收的各个副本依赖集均与所述目标依赖集相同时,无需再对所述目标依赖集进行更新,此时,所述主服务器可以提交所述目标请求,即说明所述主服务器已经确定好所述目标依赖集并可以准备执行S105的步骤,所述主服务器还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。
S105,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令;
具体的,所述主服务器在提交所述目标请求的具体过程为:将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令。当所述主服务器在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序并反转,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构。例如,所述连通图中的为同一个上下文编号的命令之间,可以按照时间戳从小到大的顺序排序,即时间戳小的先执行,时间戳大的后执行;若所述连通图中有两个相互间存在冲突的命令,且这两个命令对应的上下文编号不同,那么可以按照上下文编号从小到大的顺序对这两个命令进行排序,或者也可以按照其他规则对这两个命令进行排序。可选地,若所述更新后的目标依赖集中的某些命令对应有依赖集,则所述主服务器可以将这些命令对应的依赖集一并添加到所述连通图中,这些命令对应的依赖集可以称为关联依赖集;所述主服务器也可以根据所述关联依赖集中的各个命令对应的上下文编号和时间戳,对所述关联依赖集中的各个命令进行拓扑排序,以得到所述关联依赖集中的各个命令的拓扑结构;其中,若所述关联依赖集中的某个命令对应的上下文编号与所述更新后的目标依赖集中的某个命令对应的上下文编号不相同,且这两个命令并不为冲突命令,那么这两个命令之间并无执行顺序,即这两个命令可以同时执行,也可以一前一后执行。
所述主服务器在拓扑排序并得到所述连通图后,可以进一步检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支,若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序。其中,在对所述强连通分支进行单向排序时,可以根据所述强连通分支中的各个命令的上下文编号从小到大的顺序进行排序,若所述强连通分支中有某些命令的上下文编号是相同的,则还可以根据时间戳从小到大的顺序进行排序,以打通所述强连通分支,保证所述连通图中不再存在所述强连通分支。若在检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支时,检测到所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序。
所述主服务器确定出所述目标执行顺序后,所述主服务器可以根据所述目标执行顺序执行所述连通图中的所有命令。所述副本服务器在所述副本服务器中的待执行请求集合中提取出所述目标请求时,所述副本服务器根据所述目标请求对应的所述更新后的目标依赖集构建连通图的过程与所述主服务器的执行过程相同,这里不再进行赘述,所述副本服务器确定好所述连通图后,即可根据所述目标执行顺序执行所述连通图中的所有命令。由于所述副本服务器与所述主服务器都是根据所述更新后的依赖集构建连通图,因此,所述副本服务器和所述主服务器中的连通图是相同的,所执行的命令和顺序也是相同的,保证了服务器集群的一致性。
本发明中,不同的客户端可以共享同一个上下文,在同一个上下文内部的请求严格按照到达服务器时间进行排序并执行,因此上下文内部的请求具有顺序一致性;同时,通过进行读写冲突检测,没有冲突且不为同一个上下文的请求可以按照任意顺序并发地执行,而有冲突的请求要按照确定的顺序进行执行,以保证主服务器和所有副本服务器上执行结果的一致性,既保证了多数一致性,又同时保证了吞吐率和响应速度。
本发明将上层应用的需求(上下文内部顺序一致性)和整个系统中服务器的状态的一致性的处理融合起来,既保证了应用层对高一致性的需要,又实现了系统对可靠性的保证。另外客户端还可以对时间戳进行预定义,预定义的时间戳是未来某个时间的。预定义的时间戳会被服务器识别,通过预定义时间戳可以确定相应请求在上下文内部的顺序。若给一组在同一上下文的请求预定义时间戳,那么这组请求最终会按照预定义时间戳的顺序执行,从而实现了由客户端决定的命令执行顺序,避免了由所有服务器发送消息所造成的不必要的通信,减少了数据中心内部消息数量。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
请参见图2,是本发明实施例提供的另一种命令处理的方法的流程示意图;
S201,服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
具体的,在由服务器群构成的云计算数据中心中,当其中一台服务器接收到客户端发送的携带有目标命令的目标请求时,这台服务器可以将自己确定为主服务器,并将云计算数据中心中的其他服务器确定为副本服务器。所述主服务器在接收到所述目标请求后,可以先检测所述目标请求中是否携带有上下文编号,若检测出未携带有上下文编号,则所述主服务器可以从自己维护的上下文编号集合中选择出其中一个与所述客户端对应的上下文编号,即与所述目标命令对应的上下文编号,并将该与所述目标命令对应的上下文编号确定为目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;若检测出所述目标请求中携带有上下文编号,则所述主服务器将所述目标请求中所携带的上下文编号确定为与所述目标命令对应的目标上下文编号,所述目标请求中所携带的上下文编号是由客户端之前向服务器获取得到的;其中,上下文编号是上下文的唯一标识,上下文可以是通过将多个线程合并得到的,在同一个上下文中先后执行的命令可以被认为具有上下文依赖关系。
S202,将当前时间作为所述目标请求的目标时间戳;
具体的,所述主服务器在确定出所述目标上下文编号后,可以进一步检测所述目标请求中是否携带有预设时间戳,若检测出未携带有预设时间戳,则所述主服务器将当前时间作为所述目标请求的目标时间戳,即所述目标命令与所述目标时间戳相对应,并开始执行S203至S210的步骤。通过增加时间戳,可以在后续执行命令时,保证同一个上下文编号中的命令严格按照时间戳的顺序执行。若检测出携带有预设时间戳,则所述主服务器将所述目标请求放入等候队列,并在检测到时间达到所述预设时间戳时,从所述等候队列提取所述目标请求,此时,所述主服务器可以将所述预设时间戳作为所述目标请求的目标时间戳,并开始执行S203至S210的步骤。由于预设时间戳会被服务器识别,所以通过预定义所述预设时间戳可以确定相应请求在上下文内部的顺序。若给一组在同一上下文的请求预定义所述预设时间戳,那么这组请求最终会按照所述预设时间戳的顺序执行,从而实现了由客户端决定的命令执行顺序,避免了由所有服务器发送消息所造成的不必要的通信,减少了数据中心内部消息数量。
可选的,所述主服务器在确定目标时间戳后,还可以将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并将所述待处理消息发送至所述客户端,所述客户端在收到所述待处理消息后,所述客户端可以得知所述目标请求已被所述主服务器受理,因此,所述客户端可以在收到所述待处理消息后继续向所述主服务器或其他服务器发起下一条请求,从而可以减少所述客户端响应延迟。所述客户端在收到所述待处理消息后,所述客户端还可以将所述目标上下文编号发送给处于相同上下文中的关联客户端,以使所述关联客户端在发送请求到所述主服务器或其他服务器时可以向该请求添加所述目标上下文编号。
S203,在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
具体的,所述主服务器在或确定所述目标时间戳后,所述主服务器可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为目标依赖集,再在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集。例如,所述主服务器在本地存储有4个请求,分别为请求A、请求B、请求C、请求D,若目标请求携带的目标上下文编号为X,请求A、请求B以及请求C携带的上下文编号也为X,请求D携带的上下文编号为Y,则只将请求A、请求B以及请求C分别携带的时间戳与目标请求携带的目标时间戳进行比较,若检测出请求A和请求B的时间戳小于目标时间戳,请求C的时间戳大于目标时间戳,则将请求A和请求B添加到目标依赖集。
S204,在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集;
具体的,所述主服务器在向所述目标依赖集添加所述关联命令后,所述主服务器进一步在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
其中,检测关联命令的优先级高于冲突命令;若只检测到存在所述关联命令,则所述目标依赖集只包括所述关联命令,若只检测到存在冲突命令,则所述目标依赖集只包括所述冲突命令。所述关联命令和所述冲突命令均为所述主服务器所接收到的且还未被执行的命令。
S205,将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;
具体的,所述主服务器得到包含所述关联命令和所述冲突命令的目标依赖集后,所述主服务器可以将所述目标请求转发至云计算数据中心中的所有副本服务器,所述副本服务器也将根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集,所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令、存储在所述副本服务器中的与所述目标命令对应的冲突命令;所述副本服务器在生成所述副本依赖集后,再将所述副本依赖集发送回所述主服务器,其中,所述副本依赖集即为所述副本服务器的反馈,此时,所述主服务器可以接收到所有副本服务器分别发送的副本依赖集,并将所述目标依赖集与各个副本依赖集进行比较,若存在有与所述目标依赖集不一致的副本依赖集,则将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集并向所述主服务器发送确认消息,若所述主服务器接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述主服务器可以提交所述目标请求,即开始执行S206的步骤。可选地,当所述主服务器检测到所接收的各个副本依赖集均与所述目标依赖集相同时,无需再对所述目标依赖集进行更新,此时,所述主服务器可以直接提交所述目标请求。
S206,将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合;
具体的,所述主服务器保存了所述更新后的目标依赖集后,可以提交所述目标请求,即将所述目标请求添加到本地的待执行请求集合中,同时还通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令。其中,所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令的具体过程与以下的S207至S210步骤相同。
S207,当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;
具体的,当所述主服务器在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序并反转,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构。例如,所述连通图中的为同一个上下文编号的命令之间,可以按照时间戳从小到大的顺序排序,即时间戳小的先执行,时间戳大的后执行;若所述连通图中有两个相互间存在冲突的命令,且这两个命令对应的上下文编号不同,那么可以按照上下文编号从小到大的顺序对这两个命令进行排序,或者也可以按照其他规则对这两个命令进行排序。可选地,若所述更新后的目标依赖集中的某些命令对应有依赖集,则所述主服务器可以将这些命令对应的依赖集一并添加到所述连通图中,这些命令对应的依赖集可以称为关联依赖集;所述主服务器也可以根据所述关联依赖集中的各个命令对应的上下文编号和时间戳,对所述关联依赖集中的各个命令进行拓扑排序,以得到所述关联依赖集中的各个命令的拓扑结构;其中,若所述关联依赖集中的某个命令对应的上下文编号与所述更新后的目标依赖集中的某个命令对应的上下文编号不相同,且这两个命令并不为冲突命令,那么这两个命令之间并无执行顺序,即这两个命令可以同时执行,也可以一前一后执行。
S208,若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
S209,若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
具体的,所述主服务器在拓扑排序并得到所述连通图后,可以进一步检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支,若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序。其中,在对所述强连通分支进行单向排序时,可以根据所述强连通分支中的各个命令的上下文编号从小到大的顺序进行排序,若所述强连通分支中有某些命令的上下文编号是相同的,则还可以根据时间戳从小到大的顺序进行排序,以打通所述强连通分支,保证所述连通图中不再存在所述强连通分支。若在检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支时,检测到所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序。
S210,根据所述目标执行顺序执行所述连通图中的所有命令;
具体的,所述主服务器确定出所述目标执行顺序后,所述主服务器可以根据所述目标执行顺序执行所述连通图中的所有命令。所述副本服务器在所述副本服务器中的待执行请求集合中提取出所述目标请求时,所述副本服务器根据所述目标请求对应的所述更新后的目标依赖集构建连通图的过程与所述主服务器的执行过程相同,这里不再进行赘述,所述副本服务器确定好所述连通图后,即可根据所述目标执行顺序执行所述连通图中的所有命令。由于所述副本服务器与所述主服务器都是根据所述更新后的依赖集构建连通图,因此,所述副本服务器和所述主服务器中的连通图是相同的,所执行的命令和顺序也是相同的,保证了服务器集群的一致性。
进一步的,再请参见图3,是本发明实施例提供的其中一种依赖集更新方法的流程示意图;本发明实施例的所述方法可对应于上述图2对应的实施例中的S205。本发明实施例的所述方法具体包括:
S301,将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
具体的,所述副本服务器在收到所述目标请求后,所述副本服务器可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为副本依赖集,再在所述副本服务器中检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至副本依赖集;再在所述副本服务器中检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述副本依赖集。
S302,接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
具体的,云计算数据中心中的所有副本服务器都分别生成了包含有所述关联命令和所述冲突命令的副本依赖集后,所述主服务器可以接收所有副本服务器分别发送的副本依赖集,并将所有副本依赖集分别与所述目标依赖集进行比较。
S303,当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
具体的,若存在有与所述目标依赖集不一致的副本依赖集,则将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集并向所述主服务器发送确认消息,若所述主服务器接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述主服务器可以提交所述目标请求,即说明所述主服务器已经确定好更新后的目标依赖集,所述主服务器还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。可选地,当所述主服务器检测到所接收的各个副本依赖集均与所述目标依赖集相同时,无需再对所述目标依赖集进行更新,此时,所述主服务器可以提交所述目标请求,即说明所述主服务器已经确定好所述目标依赖集,所述主服务器还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
请参见图4,是本发明实施例提供的一种服务器的结构示意图,所述服务器1可以包括:接收模块10、确定模块20、添加模块30、更新模块40、顺序执行模块50;
所述接收模块10,用于接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
具体的,在由服务器群构成的云计算数据中心中,当其中一台服务器1中的所示接收模块10接收到客户端发送的携带有目标命令的目标请求时,这台服务器1可以将自己确定为主服务器,并将云计算数据中心中的其他服务器确定为副本服务器。所述接收模块10所接收到所述目标请求中的所示目标命令可以对应一个目标上下文编号。所述目标请求中的目标上下文编号可以是由客户端之前向服务器1获取得到的;其中,上下文编号是上下文的唯一标识,上下文可以是通过将多个线程合并得到的,在同一个上下文中先后执行的命令可以被认为具有上下文依赖关系。
所述确定模块20,用于将当前时间作为所述目标请求的目标时间戳;
具体的,接收到所述目标请求后,所述确定模块20可以检测所述目标请求中是否携带有预设时间戳,若检测出未携带有预设时间戳,则所述确定模块20将当前时间作为所述目标请求的目标时间戳,即所述目标命令与所述目标时间戳相对应。通过增加时间戳,可以在后续执行命令时,保证同一个上下文编号中的命令严格按照时间戳的顺序执行。若检测出携带有预设时间戳,则所述确定模块20将所述目标请求放入等候队列,并在检测到时间达到所述预设时间戳时,从所述等候队列提取所述目标请求,此时,所述确定模块20可以将所述预设时间戳作为所述目标请求的目标时间戳。
所述添加模块30,用于将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;
具体的,所述确定模块20在确定所述目标时间戳后,所述添加模块30可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为目标依赖集,再在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;再在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。其中,检测关联命令的优先级高于冲突命令;若只检测到存在所述关联命令,则所述目标依赖集只包括所述关联命令,若只检测到存在冲突命令,则所述目标依赖集只包括所述冲突命令。所述关联命令和所述冲突命令均为所述主服务器所接收到的且还未被执行的命令。
所述更新模块40,用于将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
具体的,得到包含所述关联命令和所述冲突命令的目标依赖集后,所述更新模块40可以将所述目标请求转发至云计算数据中心中的所有副本服务器,所述副本服务器也将根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集,所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令、存储在所述副本服务器中的与所述目标命令对应的冲突命令;所述副本服务器在生成所述副本依赖集后,再将所述副本依赖集发送回所述主服务器,其中,所述副本依赖集即为所述副本服务器的反馈,此时,所述更新模块40可以接收到所有副本服务器分别发送的副本依赖集,并将所述目标依赖集与各个副本依赖集进行比较,若存在有与所述目标依赖集不一致的副本依赖集,则将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。可选地,当所述更新模块40检测到所接收的各个副本依赖集均与所述目标依赖集相同时,所述更新模块40无需再对所述目标依赖集进行更新,此时,所述更新模块40直接与所有副本服务器同步保存所述目标依赖集。
所述顺序执行模块50,用于根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令;
具体的,保存所述更新后的目标依赖集后,所有副本服务器可以向所述主服务器发送确认消息,此时,若所述顺序执行模块50接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述顺序执行模块50可以提交所述目标请求,所述顺序执行模块50还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。
所述顺序执行模块50在提交所述目标请求的具体过程为:将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令。当所述顺序执行模块50在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序并反转,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构。例如,所述连通图中的为同一个上下文编号的命令之间,可以按照时间戳从小到大的顺序排序,即时间戳小的先执行,时间戳大的后执行;若所述连通图中有两个相互间存在冲突的命令,且这两个命令对应的上下文编号不同,那么可以按照上下文编号从小到大的顺序对这两个命令进行排序,或者也可以按照其他规则对这两个命令进行排序。可选地,若所述更新后的目标依赖集中的某些命令对应有依赖集,则所述顺序执行模块50可以将这些命令对应的依赖集一并添加到所述连通图中,这些命令对应的依赖集可以称为关联依赖集;所述顺序执行模块50也可以根据所述关联依赖集中的各个命令对应的上下文编号和时间戳,对所述关联依赖集中的各个命令进行拓扑排序,以得到所述关联依赖集中的各个命令的拓扑结构;其中,若所述关联依赖集中的某个命令对应的上下文编号与所述更新后的目标依赖集中的某个命令对应的上下文编号不相同,且这两个命令并不为冲突命令,那么这两个命令之间并无执行顺序,即这两个命令可以同时执行,也可以一前一后执行。
所述顺序执行模块50在拓扑排序并得到所述连通图后,可以进一步检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支,若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序。其中,在对所述强连通分支进行单向排序时,可以根据所述强连通分支中的各个命令的上下文编号从小到大的顺序进行排序,若所述强连通分支中有某些命令的上下文编号是相同的,则还可以根据时间戳从小到大的顺序进行排序,以打通所述强连通分支,保证所述连通图中不再存在所述强连通分支。若在检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支时,检测到所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序。
所述顺序执行模块50确定出所述目标执行顺序后,所述顺序执行模块50可以根据所述目标执行顺序执行所述连通图中的所有命令。所述副本服务器在所述副本服务器中的待执行请求集合中提取出所述目标请求时,所述副本服务器根据所述目标请求对应的所述更新后的目标依赖集构建连通图的过程与所述顺序执行模块50的执行过程相同,这里不再进行赘述,所述副本服务器确定好所述连通图后,即可根据所述目标执行顺序执行所述连通图中的所有命令。由于所述副本服务器与所述主服务器都是根据所述更新后的依赖集构建连通图,因此,所述副本服务器和所述主服务器中的连通图是相同的,所执行的命令和顺序也是相同的,保证了服务器集群的一致性。
进一步的,再请参见图5,是本发明实施例提供的一种添加模块30的结构示意图,所述添加模块30可以包括:第一添加单元301、第二添加单元302;
所述第一添加单元301,用于在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
具体的,在确定所述目标时间戳后,所述第一添加单元301可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为目标依赖集,再在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集。例如,所述主服务器在本地存储有4个请求,分别为请求A、请求B、请求C、请求D,若目标请求携带的目标上下文编号为X,请求A、请求B以及请求C携带的上下文编号也为X,请求D携带的上下文编号为Y,则所述依赖集添加单元只将请求A、请求B以及请求C分别携带的时间戳与目标请求携带的目标时间戳进行比较,若检测出请求A和请求B的时间戳小于目标时间戳,请求C的时间戳大于目标时间戳,则所述依赖集添加单元将请求A和请求B添加到目标依赖集。
所述第二添加单元302,用于在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集;
具体的,所述第一添加单元301在向所述目标依赖集添加所述关联命令后,所述第二添加单元302可以进一步在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
进一步的,再请参见图6,是本发明实施例提供的一种更新模块40的结构示意图,所述更新模块40可以包括:请求转发单元401、比较单元402、更新保存单元403;
所述请求转发单元401,用于将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
具体的,所述请求转发单元401将所述目标请求转发至副本服务器后,所述副本服务器可以先创建一个与所述目标请求对应的依赖集,所述副本服务器还将该依赖集确定为副本依赖集,再在所述副本服务器中检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至副本依赖集;所述副本服务器再在所述副本服务器中检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述副本依赖集。
所述比较单元402,用于接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
具体的,云计算数据中心中的所有副本服务器都分别生成了包含有所述关联命令和所述冲突命令的副本依赖集后,所述比较单元402可以接收所有副本服务器分别发送的副本依赖集,并将所有副本依赖集分别与所述目标依赖集进行比较。
所述更新保存单元403,用于当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
具体的,若存在有与所述目标依赖集不一致的副本依赖集,则所述更新保存单元403将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集并向所述主服务器发送确认消息,若所述更新保存单元403接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述主服务器可以提交所述目标请求,即说明所述主服务器已经确定好更新后的目标依赖集,所述主服务器还发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。可选地,当所述更新保存单元403检测到所接收的各个副本依赖集均与所述目标依赖集相同时,所述更新保存单元403无需再对所述目标依赖集进行更新,并直接通知所有副本服务器同步保存所述目标依赖集。
进一步的,再请参见图7,是本发明实施例提供的一种确定模块20的结构示意图,所述确定模块20可以包括:检测单元201、第一确定单元202、第二确定单元203;
所述检测单元201,用于检测所述目标请求中是否包含预设时间戳;
所述第一确定单元202,用于若所述检测单元201检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
所述第二确定单元203,用于若所述检测单元201检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳;
具体的,若所述检测单元201检测出包含所述预设时间戳,则所述第二确定单元203将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,所述添加提取单元从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳确定为目标时间戳。由于预设时间戳会被服务器1识别,所以通过预定义所述预设时间戳可以确定相应请求在上下文内部的顺序。若给一组在同一上下文的请求预定义所述预设时间戳,那么这组请求最终会按照所述预设时间戳的顺序执行,从而实现了由客户端决定的命令执行顺序,避免了由所有服务器发送消息所造成的不必要的通信,减少了数据中心内部消息数量。
进一步的,再请参见图8,是本发明实施例提供的一种顺序执行模块50的结构示意图,所述确定执行模块可以包括:请求添加通知单元501、第一排序单元502、第二排序单元503、顺序确定单元504、命令执行单元505;
所述请求添加通知单元501,用于将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
具体的,保存了所述更新后的目标依赖集后,所述请求添加通知单元501可以提交所述目标请求,即将所述目标请求添加到本地的待执行请求集合中,同时所述请求添加通知单元501还通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令。其中,所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令的具体过程与以下的所述第一排序单元502、所述第二排序单元503以及所述命令执行单元505所执行的操作相同。
所述第一排序单元502,用于当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
具体的,当所述第一排序单元502在所述本地的待执行请求集合中提取到所述目标请求时,所述第一排序单元502根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序并反转,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构。例如,所述连通图中的为同一个上下文编号的命令之间,可以按照时间戳从小到大的顺序排序,即时间戳小的先执行,时间戳大的后执行;若所述连通图中有两个相互间存在冲突的命令,且这两个命令对应的上下文编号不同,那么可以按照上下文编号从小到大的顺序对这两个命令进行排序,或者也可以按照其他规则对这两个命令进行排序。可选地,若所述更新后的目标依赖集中的某些命令对应有依赖集,则所述第一排序单元502可以将这些命令对应的依赖集一并添加到所述连通图中,这些命令对应的依赖集可以称为关联依赖集;所述第一排序单元502根据所述关联依赖集中的各个命令对应的上下文编号和时间戳,也可以对所述关联依赖集中的各个命令进行拓扑排序,以得到所述关联依赖集中的各个命令的拓扑结构;其中,若所述关联依赖集中的某个命令对应的上下文编号与所述更新后的目标依赖集中的某个命令对应的上下文编号不相同,且这两个命令并不为冲突命令,那么这两个命令之间并无执行顺序,即这两个命令可以同时执行,也可以一前一后执行。
所述第二排序单元503,用于若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
所述顺序确定单元504,用于若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
具体的,所述第一排序单元502在拓扑排序并得到所述连通图后,所述第一排序单元502可以进一步检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支,当检测到所述连通图中存在所述强连通分支时,所述第二排序单元503根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序。其中,在对所述强连通分支进行单向排序时,所述第二排序单元503可以根据所述强连通分支中的各个命令的上下文编号从小到大的顺序进行排序,若所述强连通分支中有某些命令的上下文编号是相同的,则还可以根据时间戳从小到大的顺序进行排序,以打通所述强连通分支,保证所述连通图中不再存在所述强连通分支。若所述第一排序单元502在检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支时,检测出所述连通图不包括所述强连通分支,则所述顺序确定单元504将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序。
所述命令执行单元505,用于根据所述目标执行顺序执行所述连通图中的所有命令;
具体的,确定出所述目标执行顺序后,所述命令执行单元505可以根据所述目标执行顺序执行所述连通图中的所有命令。所述副本服务器在所述副本服务器中的待执行请求集合中提取出所述目标请求时,所述副本服务器根据所述目标请求对应的所述更新后的目标依赖集构建连通图的过程与所述主服务器的执行过程相同,这里不再进行赘述,所述副本服务器确定好所述连通图后,即可根据所述目标执行顺序执行所述连通图中的所有命令。由于所述副本服务器与所述主服务器都是根据所述更新后的依赖集构建连通图,因此,所述副本服务器和所述主服务器中的连通图是相同的,所执行的命令和顺序也是相同的,保证了服务器集群的一致性。
本发明中,不同的客户端可以共享同一个上下文,在同一个上下文内部的请求严格按照到达服务器1时间进行排序并执行,因此上下文内部的请求具有顺序一致性;同时,通过进行读写冲突检测,没有冲突且不为同一个上下文的请求可以按照任意顺序并发地执行,而有冲突的请求要按照确定的顺序进行执行,以保证主服务器和所有副本服务器上执行结果的一致性,既保证了多数一致性,又同时保证了吞吐率和响应速度。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
再请参见图9,是本发明实施例提供的另一种服务器的结构示意图,所述服务器1可以包括上述图4对应实施例中的接收模块10、确定模块20、添加模块30、更新模块40、顺序执行模块50,进一步的,所述服务器1还可以包括:编号检测模块60、编号选择模块70、编号确定模块80、消息发送模块90;
所述编号检测模块60,用于检测所述目标请求中是否携带有上下文编号;
具体的,所述接收模块10接收到客户端发送的携带有目标命令的目标请求后,所述编号检测模块60可以检测所述目标请求中是否携带有上下文编号,其中,上下文编号是上下文的唯一标识,上下文可以是通过将多个线程合并得到的,在同一个上下文中先后执行的命令可以被认为具有上下文依赖关系。
所述编号选择模块70,用于若所述编号检测模块60检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
所述编号确定模块80,用于若所述编号检测模块60检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号;
其中,所述目标请求中所携带的上下文编号是由客户端之前向服务器1获取得到的。
所述消息发送模块90,用于将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
具体的,在确定了所述目标时间戳和所述目标上下文编号后,所述消息发送模块90可以将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并将所述待处理消息发送至所述客户端,所述客户端在收到所述待处理消息后,所述客户端可以得知所述目标请求已被所述主服务器受理,因此,所述客户端可以在收到所述待处理消息后继续向所述主服务器或其他服务器发起下一条请求,从而可以减少所述客户端响应延迟。所述客户端在收到所述待处理消息后,所述客户端还可以将所述目标上下文编号发送给处于相同上下文中的关联客户端,以使所述关联客户端在发送请求到所述主服务器或其他服务器时可以向该请求添加所述目标上下文编号。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
请参见图10,为本发明实施例提供的又一种服务器的结构示意图,所述服务器1000可以包括处理器1001、通信接口1002和存储器1003(服务器1000中的处理器1001的数量可以为一个或多个,图10中以一个处理器1001为例)。本发明的一些实施例中,处理器1001、通信接口1002和存储器1003可通过通信总线或其他方式连接,其中,图10以通过通信总线连接为例。
其中,所述通信接口1002,用于与客户端和副本服务器进行通信;
所述存储器1003用于存储程序;
所述处理器1001用于执行所述程序,以实现
接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
将当前时间作为所述目标请求的目标时间戳;
将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;
将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。
其中,所述处理器1001具体执行:
在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
其中,所述处理器1001具体执行:
将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
当比较为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。
其中,所述处理器1001具体执行:
检测所述目标请求中是否包含预设时间戳;
若检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
若检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。
其中,所述处理器1001还可以执行:
检测所述目标请求中是否携带有上下文编号;
若检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
若检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。
其中,所述处理器1001具体执行:
将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
根据所述目标执行顺序执行所述连通图中的所有命令。
其中,所述处理器1001还可以执行:
将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
其中,所述上下文是由多个线程合并而成的。
具体的,在由服务器群构成的云计算数据中心中,当其中一台服务器1000的所述通信接口1002接收到客户端发送的携带有目标命令的目标请求时,这台服务器1000的所述处理器1001可以将自己所在的服务器1000确定为主服务器,并将云计算数据中心中的其他服务器确定为副本服务器。所述通信接口1002在接收到所述目标请求后,所述处理器1001可以先检测所述目标请求中是否携带有上下文编号,若检测出未携带有上下文编号,则所述处理器1001可以从自己维护的上下文编号集合中选择出其中一个与所述客户端对应的上下文编号,即与所述目标命令对应的上下文编号,并将该与所述目标命令对应的上下文编号确定为目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;若检测出所述目标请求中携带有上下文编号,则所述处理器1001将所述目标请求中所携带的上下文编号确定为与所述目标命令对应的目标上下文编号,所述目标请求中所携带的上下文编号是由客户端之前向服务器1000获取得到的;其中,上下文编号是上下文的唯一标识,上下文可以是通过将多个线程合并得到的,在同一个上下文中先后执行的命令可以被认为具有上下文依赖关系。所述处理器1001在确定出所述目标上下文编号后,可以进一步检测所述目标请求中是否携带有预设时间戳,若检测出未携带有预设时间戳,则所述处理器1001将当前时间作为所述目标请求的目标时间戳,即所述目标命令与所述目标时间戳相对应。通过增加时间戳,可以在后续执行命令时,保证同一个上下文编号中的命令严格按照时间戳的顺序执行。若检测出携带有预设时间戳,则所述处理器1001将所述目标请求放入等候队列,并在检测到时间达到所述预设时间戳时,从所述等候队列提取所述目标请求,此时,所述处理器1001可以将所述预设时间戳作为所述目标请求的目标时间戳。
所述处理器1001在确定所述目标时间戳后,所述处理器1001可以先创建一个与所述目标请求对应的依赖集,并将该依赖集确定为目标依赖集,再在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;再在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。其中,检测关联命令的优先级高于冲突命令,。所述关联命令和所述冲突命令均为所述主服务器所接收到的且还未被执行的命令。
所述处理器1001得到包含所述关联命令和所述冲突命令的目标依赖集后,所述通信接口1002可以将所述目标请求转发至云计算数据中心中的所有副本服务器,所述副本服务器也将根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集,所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令、存储在所述副本服务器中的与所述目标命令对应的冲突命令;所述副本服务器在生成所述副本依赖集后,再将所述副本依赖集发送回所述通信接口1002,其中,所述副本依赖集即为所述副本服务器的反馈,此时,所述处理器1001可以接收到所有副本服务器分别发送的副本依赖集,并将所述目标依赖集与各个副本依赖集进行比较,若存在有与所述目标依赖集不一致的副本依赖集,则将不一致的副本依赖集中多出来的关联命令和冲突命令添加到所述目标依赖集,以得到更新后的目标依赖集,并将更新后的目标依赖集发送到所有副本服务器,以使所有副本服务器同步保存所述更新后的目标依赖集并向所述主服务器发送确认消息,若所述通信接口1002接收到所述确认消息的个数达到预设个数阈值,说明大多数副本服务器发送了所述确认消息,即大多数副本服务器正常工作,此时,所述处理器1001可以提交所述目标请求,即说明所述主服务器已经确定好所述更新后的目标依赖集,所述通信接口1002还可以发送提交请求到所有副本服务器,以使所有副本服务器也提交所述目标请求,以准备执行提交后的所述目标请求中的目标命令。
其中,所述处理器1001在提交所述目标请求的具体过程为:将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令。当所述处理器1001在所述本地的待执行请求集合中提取到所述目标请求时,所述处理器1001根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序并反转,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构。例如,所述连通图中的为同一个上下文编号的命令之间,可以按照时间戳从小到大的顺序排序,即时间戳小的先执行,时间戳大的后执行;若所述连通图中有两个相互间存在冲突的命令,且这两个命令对应的上下文编号不同,那么可以按照上下文编号从小到大的顺序对这两个命令进行排序,或者也可以按照其他规则对这两个命令进行排序。可选地,若所述更新后的目标依赖集中的某些命令对应有依赖集,则所述处理器1001可以将这些命令对应的依赖集一并添加到所述连通图中,这些命令对应的依赖集可以称为关联依赖集;所述处理器1001也可以根据所述关联依赖集中的各个命令对应的上下文编号和时间戳,对所述关联依赖集中的各个命令进行拓扑排序,以得到所述关联依赖集中的各个命令的拓扑结构;其中,若所述关联依赖集中的某个命令对应的上下文编号与所述更新后的目标依赖集中的某个命令对应的上下文编号不相同,且这两个命令并不为冲突命令,那么这两个命令之间并无执行顺序,即这两个命令可以同时执行,也可以一前一后执行。
所述服务器1000在拓扑排序并得到所述连通图后,可以进一步检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支,若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序。其中,在对所述强连通分支进行单向排序时,可以根据所述强连通分支中的各个命令的上下文编号从小到大的顺序进行排序,若所述强连通分支中有某些命令的上下文编号是相同的,则还可以根据时间戳从小到大的顺序进行排序,以打通所述强连通分支,保证所述连通图中不再存在所述强连通分支。若在检测所述连通图中是否存在具有环状结构或网状结构或其他结构的强连通分支时,检测到所述连通图中不存在强连通分支,则所述服务器1000将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序。
所述处理器1001执行所述程序,以使所述服务器1000确定出所述目标执行顺序后,所述服务器1000可以根据所述目标执行顺序执行所述连通图中的所有命令。所述副本服务器在所述副本服务器中的待执行请求集合中提取出所述目标请求时,所述副本服务器根据所述目标请求对应的所述更新后的目标依赖集构建连通图的过程与所述服务器1000的执行过程相同,这里不再进行赘述,所述副本服务器确定好所述连通图后,即可根据所述目标执行顺序执行所述连通图中的所有命令。由于所述副本服务器与所述主服务器都是根据所述更新后的依赖集构建连通图,因此,所述副本服务器和所述主服务器中的连通图是相同的,所执行的命令和顺序也是相同的,保证了服务器集群的一致性。
本发明实施例通过获得目标请求中的目标时间戳和目标上下文编号,可以将本地中属于所述目标上下文编号的关联命令以及与所述目标命令存在读写冲突的冲突命令添加至目标依赖集,并通过将所述目标请求转发至副本服务器以更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集;再根据所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。由此可见,本发明通过时间戳和上下文编号即可确定所有命令的执行顺序,无需进行收敛操作,从而可以降低系统延迟,减少系统复杂度;而且副本服务器可以根据相同的更新后的目标依赖集执行命令,可以保证副本服务器的执行顺序与所述目标执行顺序相同,从而可以保证各服务器之间的一致性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (12)
1.一种命令处理的方法,其特征在于,包括:
服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
将当前时间作为所述目标请求的目标时间戳;
将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的存在读写冲突的冲突命令添加至目标依赖集;
将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令;
所述将当前时间作为所述目标请求的目标时间戳,包括:
检测所述目标请求中是否包含预设时间戳;
若检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
若检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。
2.如权利要求1所述的方法,其特征在于,所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集,包括:
在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
3.如权利要求1所述的方法,其特征在于,所述将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令,包括:
将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。
4.如权利要求1所述的方法,其特征在于,在所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集之前,还包括:
检测所述目标请求中是否携带有上下文编号;
若检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
若检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。
5.如权利要求1所述的方法,其特征在于,所述根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令,包括:
将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
根据所述目标执行顺序执行所述连通图中的所有命令。
6.如权利要求1所述的方法,其特征在于,在所述将当前时间作为所述目标请求的目标时间戳之后,还包括:
将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
其中,所述上下文是由多个线程合并而成的。
7.一种服务器,其特征在于,包括:
接收模块,用于接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;
确定模块,用于将当前时间作为所述目标请求的目标时间戳;
添加模块,用于将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的存在读写冲突的冲突命令添加至目标依赖集;
更新模块,用于将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;
顺序执行模块,用于根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令;
所述确定模块包括:
检测单元,用于检测所述目标请求中是否包含预设时间戳;
第一确定单元,用于若所述检测单元检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;
第二确定单元,用于若所述检测单元检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。
8.如权利要求7所述的服务器,其特征在于,所述添加模块包括:
第一添加单元,用于在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;
第二添加单元,用于在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。
9.如权利要求7所述的服务器,其特征在于,所述更新模块包括:
请求转发单元,用于将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;
比较单元,用于接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;
更新保存单元,用于当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。
10.如权利要求7所述的服务器,其特征在于,还包括:
编号检测模块,用于检测所述目标请求中是否携带有上下文编号;
编号选择模块,用于若所述编号检测模块检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;
编号确定模块,用于若所述编号检测模块检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。
11.如权利要求7所述的服务器,其特征在于,所述顺序执行模块包括:
请求添加通知单元,用于将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;
第一排序单元,用于当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;
第二排序单元,用于若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;
顺序确定单元,用于若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;
命令执行单元,用于根据所述目标执行顺序执行所述连通图中的所有命令。
12.如权利要求7所述的服务器,其特征在于,还包括:
消息发送模块,用于将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;
其中,所述上下文是由多个线程合并而成的。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412831.4A CN106354566B (zh) | 2015-07-14 | 2015-07-14 | 一种命令处理的方法以及服务器 |
EP16823654.5A EP3312723B1 (en) | 2015-07-14 | 2016-02-17 | Command processing method and server |
PCT/CN2016/073941 WO2017008506A1 (zh) | 2015-07-14 | 2016-02-17 | 一种命令处理的方法以及服务器 |
US15/868,303 US11294934B2 (en) | 2015-07-14 | 2018-01-11 | Command processing method and server |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412831.4A CN106354566B (zh) | 2015-07-14 | 2015-07-14 | 一种命令处理的方法以及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106354566A CN106354566A (zh) | 2017-01-25 |
CN106354566B true CN106354566B (zh) | 2019-11-29 |
Family
ID=57756836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510412831.4A Active CN106354566B (zh) | 2015-07-14 | 2015-07-14 | 一种命令处理的方法以及服务器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11294934B2 (zh) |
EP (1) | EP3312723B1 (zh) |
CN (1) | CN106354566B (zh) |
WO (1) | WO2017008506A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106959918B (zh) * | 2017-04-25 | 2021-04-13 | 百度在线网络技术(北京)有限公司 | 用于评测机器人操作系统中的操作的方法和装置 |
CN107730858A (zh) * | 2017-08-16 | 2018-02-23 | 芜湖恒天易开软件科技股份有限公司 | 充电桩远程控制方法 |
JP6988537B2 (ja) * | 2018-02-09 | 2022-01-05 | 富士通株式会社 | 情報処理装置、分散システム及び変更制御プログラム |
US20200097148A1 (en) * | 2018-09-25 | 2020-03-26 | Bank Of America Corporation | System for generating multiple-command macros |
CN109542353B (zh) * | 2018-11-23 | 2022-04-01 | 哈尔滨工业大学(深圳) | 一种面向广域分布式存储系统的一致性算法 |
CN111522511B (zh) * | 2020-04-22 | 2022-04-22 | 杭州宏杉科技股份有限公司 | 命令处理方法及装置 |
CN114531493B (zh) * | 2020-11-23 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 一种请求处理方法、装置、电子设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6393434B1 (en) * | 1999-09-14 | 2002-05-21 | International Business Machines Corporation | Method and system for synchronizing data using fine-grained synchronization plans |
US20040066779A1 (en) | 2002-10-04 | 2004-04-08 | Craig Barrack | Method and implementation for context switchover |
US20070156486A1 (en) | 2005-12-29 | 2007-07-05 | Microsoft Corporation | Multiple concurrent workflow persistence schemes |
US20090064151A1 (en) * | 2007-08-28 | 2009-03-05 | International Business Machines Corporation | Method for integrating job execution scheduling, data transfer and data replication in distributed grids |
US8688837B1 (en) * | 2009-03-27 | 2014-04-01 | Amazon Technologies, Inc. | Dynamically translating resource identifiers for request routing using popularity information |
US9535908B2 (en) * | 2009-07-02 | 2017-01-03 | Sharp Laboratories Of America, Inc. | Auto-retrieving to avoid data binding |
US8424009B2 (en) | 2009-12-04 | 2013-04-16 | Microsoft Corporation | Lock resolution for distributed durable instances |
WO2014008495A2 (en) * | 2012-07-06 | 2014-01-09 | Cornell University | Managing dependencies between operations in a distributed system |
ITMI20130942A1 (it) * | 2013-06-07 | 2014-12-08 | Ibm | Pianificazione dell'esecuzione di attivita' con risoluzione di dipendenze |
JP2015090692A (ja) * | 2013-11-07 | 2015-05-11 | 富士通株式会社 | 仮想マシン配備方法、仮想マシン配備プログラム及び情報処理装置 |
CN104317843B (zh) * | 2014-10-11 | 2017-08-25 | 上海瀚之友信息技术服务有限公司 | 一种数据同步etl系统 |
US10613964B2 (en) * | 2017-05-04 | 2020-04-07 | Microsoft Technology Licensing, Llc | Conditional debugging of server-side production code |
-
2015
- 2015-07-14 CN CN201510412831.4A patent/CN106354566B/zh active Active
-
2016
- 2016-02-17 WO PCT/CN2016/073941 patent/WO2017008506A1/zh unknown
- 2016-02-17 EP EP16823654.5A patent/EP3312723B1/en active Active
-
2018
- 2018-01-11 US US15/868,303 patent/US11294934B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11294934B2 (en) | 2022-04-05 |
WO2017008506A1 (zh) | 2017-01-19 |
US20180137188A1 (en) | 2018-05-17 |
EP3312723B1 (en) | 2020-05-27 |
EP3312723A1 (en) | 2018-04-25 |
EP3312723A4 (en) | 2018-06-13 |
CN106354566A (zh) | 2017-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106354566B (zh) | 一种命令处理的方法以及服务器 | |
CN111478820A (zh) | 网络靶场大规模网络环境的网络设备配置系统与方法 | |
US20190034465A1 (en) | Blockchain logging of data from multiple systems | |
EP2834755B1 (en) | Platform for continuous graph update and computation | |
CN105653630B (zh) | 分布式数据库的数据迁移方法与装置 | |
US10871918B2 (en) | Writing composite objects to a data store | |
CN106484713A (zh) | 一种基于面向服务的分布式请求处理系统 | |
US9043794B2 (en) | Scalable group synthesis | |
CN104094232A (zh) | 流式数据系统中的处理单元管理 | |
CA2701107C (en) | Method and apparatus for concurrent topology discovery | |
JP5479709B2 (ja) | データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法 | |
CN115665174B (zh) | 一种梯度数据的同步方法、系统、设备及存储介质 | |
CN110019873A (zh) | 人脸数据处理方法、装置及设备 | |
JP2017069895A (ja) | 障害切り分け方法および障害切り分けを行う管理サーバ | |
WO2016101759A1 (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
US20160034191A1 (en) | Grid oriented distributed parallel computing platform | |
US11728928B2 (en) | Securely sharing public and private blockchain data | |
CN102420797A (zh) | 一种拓扑映射方法及系统 | |
JP2009123202A (ja) | データを処理するためのプロセッサ‐サーバ・ハイブリッド・システムおよび方法 | |
CN106407126B (zh) | 覆盖率数据的处理方法、装置和服务器 | |
CN109189291A (zh) | 菜单管理方法及装置 | |
CN112804313B (zh) | 基于跨域边缘节点的数据同步方法、装置、设备及介质 | |
JP2015095096A (ja) | MapReduceジョブ実行システム、MapReduceジョブ実行方法 | |
CN110311868A (zh) | 业务处理方法、装置、成员设备及机器可读存储介质 | |
Yoshihisa et al. | A low-load stream processing scheme for IoT environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |