一种实现数据处理和交互的方法和系统技术方案

技术编号:9848266 阅读:166 留言:0更新日期:2014-04-02 15:59
本发明专利技术公开了一种实现数据处理和交互的方法,应用于客户端,包括:命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分,将拆分成的数据包插入发送包链表中;发送线程从所述发送包链表中取出数据包进行发送;接收线程如接收到来自服务端的数据包,则将数据包插入接收包链表中;数据包处理线程判断接收包链表中的数据包是否能够组装成完整的响应命令,是则取出数据包进行组装,将组装完毕的响应命令插入响应命令链表中,并根据该响应命令将正处理命令链表中的对应请求命令删除;其中,所述发送线程和接收线程均为多个,各线程并行执行。本发明专利技术能够提高物理连接的带宽使用率并且优化逻辑连接的数目。

【技术实现步骤摘要】
一种实现数据处理和交互的方法和系统
本专利技术涉及计算机通信
,尤其涉及的是一种实现数据处理和交互的方法和系统。
技术介绍
在当前存储架构中,节点之间、节点与客户端、节点与存储端等数据的交互是不可或缺的。数据交互的实现方式也是各有不同,但大都采用客户-服务器模式。通常节点需要其它节点对数据进行处理时,都是由单一线程通过两个节点间的连接发送到对端去处理,对端在处理数据期间本地需要等待对端处理结果的返回。在对端处理期间,两个节点间的连接处于空闲状态,不能有效地利用网络资源,本地的处理线程也处于等待状态。处理线程在发送请求命令后等待接收返回结果,等待的时间长短取决于对端执行命令请求的时间长短和收发数据的速率,如果对端处理数据的时间比较长,那本地需要等待的时间就比较长。因此,在一个物理连接上建立单一的逻辑连接时,针对单个逻辑连接进行数据接收和发送通常达不到物理连接的带宽,不能有效利用两个节点间的网络带宽。但是,如果把每一个对对端的请求都使用一个处理线程来处理虽然会明显提高物理连接的利用率和数据的处理速率,从而提高本地数据处理效率,但不断增长的线程数会难以控制。
技术实现思路
本专利技术所要解决的技术问题是提供一种实现数据处理和交互的方法和系统,能够提高物理连接的带宽使用率并且优化逻辑连接的数目。为了解决上述技术问题,本专利技术提供了一种实现数据处理和交互的方法,应用于客户端,包括:命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中;发送线程从所述发送包链表中取出数据包进行发送;接收线程如接收到来自服务端的数据包,则将数据包插入接收包链表中;数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,将组装完毕的响应命令插入响应命令链表中,并根据该响应命令将正处理命令链表中的对应请求命令删除;其中,所述发送线程和接收线程均为多个;各线程并行执行。进一步地,该方法还包括下述特点:所述发送包链表与接收包链表均为多个;发送线程与发送包链表一一对应,接收线程与接收包链表一一对应;命令处理线程将拆分成的一个或多个数据包插入发送包链表中,包括:命令处理线程从多个发送包链表中选出一个长度最短的发送包链表,将拆分成的一个或多个数据包插入该选出的发送包链表的表尾。进一步地,该方法还包括下述特点:命令处理线程对所述请求命令进行拆分,包括:命令处理线程根据预设的单个发送包的最大长度,将请求命令拆分成一个或多个数据包;其中,每个数据包中携带该请求命令的命令标识、本数据包的序号、和该请求命令共拆分成的数据包总个数;数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,包括:数据包处理线程判断接收包链表中具有同一命令标识的数据包的个数是否等于该命令拆分成的数据包的总个数,是则从所述接收包链表中取出所述数据包进行组装;其中,每个接收的数据包中携带该响应命令的命令标识、本数据包的序号、和该响应命令共拆分成的数据包总个数;其中,所述响应命令携带的命令标识与对应的请求命令的命令标识相同。进一步地,该方法还包括下述特点:工作线程将对其他节点的请求插入所述新请求命令链表的表尾;工作线程查询所述响应命令链表,如查到与请求命令对应的响应命令,则从所述响应命令链表中取出该响应命令,进行解析并获得响应结果。进一步地,该方法还包括下述特点:超时扫描线程周期性扫描正处理命令链表中的命令,如某个命令超过预定时间还没有被删除,则将该命令取出重新插入所述新请求命令链表中。为了解决上述技术问题,本专利技术还提供了一种实现数据处理和交互的方法,应用于服务端,包括:接收线程如接收到来自客户端的数据包,则将数据包插入接收包链表中;数据包处理线程判断接收包链表中给的数据包是否能够组装成一条完整的请求命令,是则取出所述数据包进行组装,将组装完毕的请求命令插入新请求命令链表中;工作线程从所述新请求命令链表中取出请求命令进行处理,处理完毕后生成响应命令,插入响应命令链表中;命令处理线程从所述响应命令链表中取出响应命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中;发送线程从所述发送包链表中取出数据包进行发送;其中,所述发送线程、接收线程、工作线程均为多个;各线程并行执行。进一步地,该方法还包括下述特点:所述接收包链表与发送包链表均为多个;发送线程与发送包链表 对应,接收线程与接收包链表 对应;命令处理线程将拆分成的一个或多个数据包插入发送包链表中,包括:命令处理线程从多个发送包链表中选出一个长度最短的发送包链表,将拆分成的一个或多个数据包插入该选出的发送包链表的表尾。进一步地,该方法还包括下述特点:数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的请求命令,是则取出数据包进行组装,包括:数据包处理线程判断接收包链表中具有同一命令标识的数据包的个数是否等于该命令拆分成的数据包的总个数,是则从所述接收包链表中取出所述数据包进行组装;其中,每个接收的数据包中携带该请求命令的命令标识、本数据包的序号、和该请求命令共拆分成的数据包总个数;命令处理线程对所述响应命令进行拆分,包括:命令处理线程根据预设的单个发送包的最大长度,将响应命令拆分成一个或多个数据包;其中,每个数据包中携带该响应命令的命令标识、本数据包的序号、和该响应命令共拆分成的数据包总个数;其中,所述响应命令携带的命令标识与对应的请求命令的命令标识相同。为了解决上述技术问题,本专利技术还提供了一种实现数据处理和交互的系统,应用于客户端,包括:命令处理模块,用于命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中;发送模块,用于发送线程从所述发送包链表中取出数据包进行发送;接收模块,用于接收线程如接收到来自服务端的数据包,则将数据包插入接收包链表中;数据包处理模块,用于数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,将组装完毕的响应命令插入响应命令链表中,并根据该响应命令将正处理命令链表中的对应请求命令删除;其中,所述发送线程和接收线程均为多个;各线程并行执行。进一步地,该系统还包括下述特点:所述发送包链表与接收包链表均为多个;发送线程与发送包链表一一对应,接收线程与接收包链表一一对应;命令处理模块,用于命令处理线程将拆分成的一个或多个数据包插入发送包链表中,包括:命令处理线程从多个发送包链表中选出一个长度最短的发送包链表,将拆分成的一个或多个数据包插入该选出的发送包链表的表尾。进一步地,该系统还包括下述特点:命令处理模块,用于命令处理线程对所述请求命令进行拆分,包括:命令处理线程根据预设的单个发送包的最大长度,将请求命令拆分成一个或多个数据包;其中,每个数据包中携带该请求命令的命令标识、本数据包的序号、和该请求命令共拆分成的数据包总个数;数据包处理模块,用于数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,包括:数据包处理线程判断接收包链表中具有同一命令标识的数据包的个数是否等本文档来自技高网...

【技术保护点】
一种实现数据处理和交互的方法,应用于客户端,包括:命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中;发送线程从所述发送包链表中取出数据包进行发送;接收线程如接收到来自服务端的数据包,则将数据包插入接收包链表中;数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,将组装完毕的响应命令插入响应命令链表中,并根据该响应命令将正处理命令链表中的对应请求命令删除;其中,所述发送线程和接收线程均为多个;各线程并行执行。

【技术特征摘要】
1.一种实现数据处理和交互的方法,应用于客户端,包括: 命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中; 发送线程从所述发送包链表中取出数据包进行发送; 接收线程如接收到来自服务端的数据包,则将数据包插入接收包链表中; 数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,将组装完毕的响应命令插入响应命令链表中,并根据该响应命令将正处理命令链表中的对应请求命令删除; 其中,所述发送线程和接收线程均为多个;各线程并行执行。2.如权利要求1所述的方法,其特征在于: 所述发送包链表与接收包链表均为多个; 发送线程与发送包链表对应,接收线程与接收包链表对应; 命令处理线程将拆分成的一个或多个数据包插入发送包链表中,包括:命令处理线程从多个发送包链表中选出一个长度最短的发送包链表,将拆分成的一个或多个数据包插入该选出的发送包链表的表尾。3.如权利要求1所述的方法,其特征在于: 命令处理线程对所述请求命令进行拆分,包括:命令处理线程根据预设的单个发送包的最大长度,将请求命令拆分成一个或多个数据包;其中,每个数据包中携带该请求命令的命令标识、本数据包的序号、和该请求命令共拆分成的数据包总个数; 数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的响应命令,是则取出数据包进行组装,包括:数据包处理线程判断接收包链表中具有同一命令标识的数据包的个数是否等于该命令拆分成的数据包的总个数,是则从所述接收包链表中取出所述数据包进行组装;其中,每个接收的数据包中携带该响应命令的命令标识、本数据包的序号、和该响应命令共拆分成的数据包总个数; 其中,所述响应命令携带的命令标识与对应的请求命令的命令标识相同。4.如权利要求1所述的方法,其特征在于,还包括: 工作线程将对其他节点的请求插入所述新请求命令链表的表尾; 工作线程查询所述响应命令链表,如查到与请求命令对应的响应命令,则从所述响应命令链表中取出该响应命令,进行解析并获得响应结果。5.如权利要求1所述的方法,其特征在于,还包括: 超时扫描线程周期性扫描正处理命令链表中的命令,如某个命令超过预定时间还没有被删除,则将该命令取出重新插入所述新请求命令链表中。6.一种实现数据处理和交互的方法,应用于服务端,包括: 接收线程如接收到来自客户端的数据包,则将数据包插入接收包链表中; 数据包处理线程判断接收包链表中给的数据包是否能够组装成一条完整的请求命令,是则取出所述数据包进行组装,将组装完毕的请求命令插入新请求命令链表中; 工作线程从所述新请求命令链表中取出请求命令进行处理,处理完毕后生成响应命令,插入响应命令链表中; 命令处理线程从所述响应命令链表中取出响应命令进行拆分,将拆分成的一个或多个数据包插入发送包链表中; 发送线程从所述发送包链表中取出数据包进行发送; 其中,所述发送线程、接收线程、工作线程均为多个;各线程并行执行。7.如权利要求6所述的方法,其特征在于: 所述接收包链表与发送包链表均为多个; 发送线程与发送包链表对应,接收线程与接收包链表对应; 命令处理线程将拆分成的一个或多个数据包插入发送包链表中,包括:命令处理线程从多个发送包链表中选出一个长度最短的发送包链表,将拆分成的一个或多个数据包插入该选出的发送包链表的表尾。8.如权利要求6所述的方法,其特征在于: 数据包处理线程判断接收包链表中的数据包是否能够组装成一条完整的请求命令,是则取出数据包进行组装,包括:数据包处理线程判断接收包链表中具有同一命令标识的数据包的个数是否等于该命令拆分成的数据包的总个数,是则从所述接收包链表中取出所述数据包进行组装;其中,每个接收的数据包中携带该请求命令的命令标识、本数据包的序号、和该请求命令共拆分成的数据包总个数; 命令处理线程对所述响应命令进行拆分,包括:命令处理线程根据预设的单个发送包的最大长度,将响应命令拆分成一个或多个数据包;其中,每个数据包中携带该响应命令的命令标识、本数据包的序号、和该响应命令共拆分成的数据包总个数; 其中,所述响应命令携带的命令标识与对应的请求命令的命令标识相同。9.一种实现数据处理和交互的系统,应用于客户端,包括: 命令处理模块,用于命令处理线程从新请求命令链表中取出请求命令并插入正处理命令链表中,对所述请求命令进行拆分...

【专利技术属性】
技术研发人员:张在理王倩
申请(专利权)人:浪潮北京电子信息产业有限公司
类型:发明
国别省市:北京;11

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

1