一种命令处理的方法以及服务器技术

技术编号:14484713 阅读:44 留言:0更新日期:2017-01-26 16:57
本发明专利技术实施例公开了一种命令处理的方法以及服务器,方法包括:服务器接收客户端发送的携带有目标命令的目标请求,目标命令对应一个目标上下文编号,并将当前时间作为目标请求的目标时间戳;将本地中与目标上下文编号对应的关联命令以及与目标命令对应的冲突命令添加至目标依赖集,并通过将目标请求转发至副本服务器以更新目标依赖集,并与副本服务器同步保存更新后的目标依赖集;根据目标上下文编号和目标时间戳、更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定目标命令与更新后的目标依赖集中的各个命令的目标执行顺序,并根据目标执行顺序执行命令。采用本发明专利技术,可以在保证系统一致性的同时,降低系统延迟,减少系统复杂度。

【技术实现步骤摘要】

本专利技术涉及计算
,尤其涉及一种命令处理的方法以及服务器
技术介绍
随着企业应用对计算能力需求的不断膨胀,传统的服务器模式已经无法满足需要。网络带宽的不断增长,使得通过网络访问非本地的计算服务日益成熟。采取云计算模式,使得所有计算服务集群于云计算数据中心已成为发展趋势。云计算是一种商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务。由于硬件和软件本身的不稳定性,如何能够保证服务的高可靠性已经成为云计算中越来越重要的一个问题。对于由大规模廉价服务器群构成的云计算数据中心而言,分布式同步机制是开展一切上层应用的基础,是系统正确性和可靠性的基本保证。在一个分布式系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么它们最后应能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。目前有COPS(ClustersofOrderPreservingSystem,保序系统的集群)算法可以解决一致性的问题。COPS算法通过保存多个版本的数据来实现客户端一致性,每次读写操作,COPS算法都会检查相应请求的版本,并返回对应版本的数据,以此来保证客户端的一致;而服务器端,COPS算法通过链式复制来同步服务器端数据,因为COPS算法无法对并发操作进行排序,因此必须对发生的冲突进行收敛,才能保证所有服务器的状态一致,但是收敛操作需要进行额外的处理并导致系统延迟,增加系统复杂度。
技术实现思路
本专利技术实施例提供一种命令处理的方法以及服务器,可以在保证系统一致性的同时,降低系统延迟,减少系统复杂度。本专利技术第一方面提供一种命令处理的方法,包括:服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;将当前时间作为所述目标请求的目标时间戳;将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。在第一种可能的实现方式中,所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集,包括:在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集结合第一方面,在第二种可能的实现方式中,所述将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令,包括:将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。结合第一方面,在第三种可能的实现方式中,所述将当前时间作为所述目标请求的目标时间戳,包括:检测所述目标请求中是否包含预设时间戳;若检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;若检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。结合第一方面,在第四种可能的实现方式中,在所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集之前,还包括:检测所述目标请求中是否携带有上下文编号;若检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;若检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。结合第一方面,在第五种可能的实现方式中,所述根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令,包括:将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;根据所述目标执行顺序执行所述连通图中的所有命令。结合第一方面,在第六种可能的实现方式中,在所述将当前时间作为所述目标请求的目标时间戳之后,还包括:将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发起下一条请求或将所述目标上下文编号发送至处于相同上下文的关联客户端;其中,所述上下文是由多个线程合并而成的。本专利技术第二方面提供一种服务器,包括:接收模块,用于接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;确定模块,用于将当前时间作为所述目标请求的目标时间戳;添加模块,用于将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令本文档来自技高网...
一种命令处理的方法以及服务器

【技术保护点】
一种命令处理的方法,其特征在于,包括:服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;将当前时间作为所述目标请求的目标时间戳;将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。

【技术特征摘要】
1.一种命令处理的方法,其特征在于,包括:服务器接收客户端发送的携带有目标命令的目标请求,所述目标命令对应一个目标上下文编号;将当前时间作为所述目标请求的目标时间戳;将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集;将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令;根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令。2.如权利要求1所述的方法,其特征在于,所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集,包括:在本地检测出携带的上下文编号等于所述目标上下文编号且所携带的时间戳小于所述目标时间戳的第一待处理请求,并将所述第一待处理请求中的命令作为关联命令,并将所述关联命令添加至目标依赖集;在本地检测出携带的上下文编号不等于所述目标上下文编号且所携带的命令与所述目标命令存在读写冲突的第二待处理请求,并将所述第二待处理请求中的命令作为冲突命令,并将所述冲突命令添加至所述目标依赖集。3.如权利要求1所述的方法,其特征在于,所述将所述目标请求转发至副本服务器,根据所述副本服务器的反馈更新所述目标依赖集,并与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令,包括:将所述目标请求转发至副本服务器,以使所述副本服务器根据所述目标请求中的所述目标上下文编号和所述目标命令生成副本依赖集;所述副本依赖集包括存储在所述副本服务器中的与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令;接收所述副本服务器反馈的所述副本依赖集,并对所述副本依赖集和所述目标依赖集进行比较;当比较结果为不一致时,根据所述副本依赖集对所述目标依赖集进行更新,并将更新后的目标依赖集发送至所述副本服务器,以与所述副本服务器同步保存更新后的目标依赖集,以便于所述副本服务器后续根据所述更新后的目标依赖集执行命令。4.如权利要求1所述的方法,其特征在于,所述将当前时间作为所述目标请求的目标时间戳,包括:检测所述目标请求中是否包含预设时间戳;若检测出未包含所述预设时间戳,则将当前时间作为所述目标请求的目标时间戳;若检测出包含所述预设时间戳,则将所述目标请求添加至等候队列中,并在检测到时间达到所述预设时间戳时,从所述等候队列中提取所述目标请求,并将所述目标请求中的所述预设时间戳作为所述目标请求的目标时间戳。5.如权利要求1所述的方法,其特征在于,在所述将本地中与所述目标上下文编号对应的关联命令以及与所述目标命令对应的冲突命令添加至目标依赖集之前,还包括:检测所述目标请求中是否携带有上下文编号;若检测到未携带有上下文编号,则在本地所维护的上下文编号集合中选择出与所述目标命令对应的目标上下文编号,并将所述目标上下文编号添加到所述目标请求中;若检测到携带有上下文编号,则将所携带的上下文编号确定为与所述目标命令对应的目标上下文编号。6.如权利要求1所述的方法,其特征在于,所述根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,确定所述目标命令与所述更新后的目标依赖集中的各个命令的目标执行顺序,并根据所述目标执行顺序执行所述目标命令与所述更新后的目标依赖集中的各个命令,包括:将所述目标请求添加到本地的待执行请求集合中,并通知所述副本服务器将所述目标请求添加到所述副本服务器中的待执行请求集合,以便于所述副本服务器在从所述副本服务器中的执行请求集合中提取到所述目标请求时根据所述更新后的目标依赖集执行命令;当在所述本地的待执行请求集合中提取到所述目标请求时,根据所述目标命令对应的所述目标上下文编号和所述目标时间戳、所述更新后的目标依赖集中的各个命令对应的上下文编号和时间戳,对所述目标命令和所述更新后的目标依赖集中的各个命令进行拓扑排序,得到连通图;所述连通图包括所述目标命令及所述更新后的目标依赖集中的各个命令所构成的拓扑结构;若所述连通图中存在强连通分支,则根据所述强连通分支中的各个命令的上下文编号和时间戳对所述强连通分支进行单向排序,以获得所述连通图中的所有命令对应的目标执行顺序;若所述连通图中不存在强连通分支,则将所述进行拓扑排序得到的拓扑顺序确定为所述目标执行顺序;根据所述目标执行顺序执行所述连通图中的所有命令。7.如权利要求1所述的方法,其特征在于,在所述将当前时间作为所述目标请求的目标时间戳之后,还包括:将携带有所述目标时间戳和所述目标上下文编号的所述目标请求确定为待处理消息,并发送所述待处理消息到所述客户端,以使所述客户端发...

【专利技术属性】
技术研发人员:龚奕利马文韬施会华
申请(专利权)人:华为技术有限公司武汉大学
类型:发明
国别省市:广东;44

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

1