【技术实现步骤摘要】
一种数据处理方法、通信装置和系统
[0001]本申请涉及数据处理
,特别涉及一种数据处理方法、通信装置和系统。
技术介绍
[0002]远端直接内存访问(remote direct memory access,RDMA)是一种直接进行远程内存存取的技术,即可以直接将数据从一个计算机快速迁移到另一个远端计算机的内存中,而无需双方操作系统的介入,减少了中央处理器(central processing unit,CPU)参与数据传输过程的消耗,解放了内存带宽和处理器周期,进而提升了系统处理业务的性能,具有高带宽、低时延及低CPU占用率的特点。其中,在远端计算机的内存中,数据被组织为键值对(key
‑
value pair)的形式,通过建立哈希表来索引所存储的所有的键值对,并为与该远端计算机建立有RDMA连接的若干个计算机提供键值对的插入、查询、删除、更新等服务。
[0003]随着分布式技术的发展,直接进行RDMA访问的应用需求越来越多,不可避免地需要对远端计算机内存中的哈希表进行容量扩展(简称为扩容),例如将哈希表的容量翻倍,然后将旧哈希表中的部分元素依次转移到新哈希表中。由于扩容操作持续时间长,在远端计算机侧执行扩容操作的过程中,将会影响其它计算机对其内存中存储的哈希表的正常的RDMA访问请求的高效处理。并且,在执行扩容操作时,RDMA访问请求既需要查询旧哈希表又需要查询新哈希表,此时会导致访问错误的问题。
[0004]因此,如何对哈希表进行扩容同时保障对远端计算机内存的高效的RDMA ...
【技术保护点】
【技术特征摘要】
1.一种数据处理方法,其特征在于,应用于第一计算装置;其中,第二计算装置通过远端直接内存访问RDMA技术访问所述第一计算装置的内存,所述内存中的数据以键值对的形式存储,所述内存中存储第一目录和至少一个哈希子表,所述第一目录用于查找所述内存中存储的哈希子表,每个哈希子表用于存放键值对,所述方法包括:向所述第二计算装置发送所述第一目录,以使所述第二计算装置基于所述第一目录通过RDMA技术访问所述第一计算装置的内存;对所述至少一个哈希子表中的第一哈希子表进行容量扩展处理,获得第二哈希子表、第三哈希子表以及第二目录,其中,所述第三哈希子表用于存放从所述第一哈希子表迁出的第一键值对,所述第二哈希子表用于存放所述第一哈希子表中除所述第一键值对以外的其他键值对;所述第二目录用于查找容量扩展处理后在所述内存中存储的哈希子表;向所述第二计算装置发送所述第二目录,以使所述第二计算装置基于所述第二目录通过RDMA技术访问所述第一计算装置的内存。2.根据权利要求1所述的方法,其特征在于,每个哈希子表具有位标记和目录项,任一个哈希子表的位标记为维护所述哈希子表的目录项所使用的比特位数,任一个哈希子表的目录项根据所述哈希子表的位标记和所述哈希子表中存放的键值对的哈希值得到;对所述至少一个哈希子表中的第一哈希子表进行容量扩展处理,获得第二哈希子表、第三哈希子表以及第二目录,包括:根据所述第一哈希子表的位标记对所述第一哈希子表进行容量扩展处理,并获得所述第二哈希子表、所述第三哈希子表以及所述第二目录;其中,所述第二哈希子表的位标记和所述第三哈希子表的位标记相同,且所述第二哈希子表的位标记和所述第三哈希子表的位标记的取值相比于所述第一哈希子表的位标记的取值增大设定值。3.根据权利要求2所述的方法,其特征在于,所述第一目录和所述第二目录具有位标记,所述第一目录的位标记为维护所述第一目录中的目录项所使用的比特位数,所述第二目录的位标记为维护所述第二目录中的目录项所使用的比特位数;根据所述第一哈希子表的位标记对所述第一哈希子表进行容量扩展处理,并获得所述第二哈希子表、所述第三哈希子表以及所述第二目录,包括:在所述第一哈希子表的位标记小于所述第一目录的位标记时,对所述第一哈希子表进行容量扩展处理,获得所述第二哈希子表、所述第三哈希子表以及所述第二目录,其中,所述第二目录的位标记的取值与所述第一目录的位标记的取值相同;或者,在所述第一哈希子表的位标记与所述第一目录的位标记相同时,对所述第一目录和所述第一哈希子表分别进行容量扩展处理,获得所述第二哈希子表、所述第三哈希子表以及所述第二目录,其中,所述第二目录的位标记的取值相比于所述第一目录的位标记的取值增大所述设定值。4.根据权利要求2或3所述的方法,其特征在于,对所述至少一个哈希子表中的第一哈希子表进行容量扩展处理之前,所述方法还包括:从所述第二计算装置接收第一信息,所述第一信息用于指示对所述第一哈希子表进行容量扩展;或者根据所述至少一个哈希子表的容量,在所述至少一个哈希子表中确定满足设定的容量扩展条件的所述第一哈希子表。
5.根据权利要求1
‑
4中任一项所述的方法,其特征在于,任一个哈希子表中包括多个哈希桶,任一个哈希桶用于存放键值对以及记录相应哈希子表的位标记和目录项,所述方法还包括:根据从所述第二计算装置接收到的目标哈希桶地址,向所述第二计算装置发送目标哈希桶,其中,所述目标哈希桶地址根据待访问的目标键以及所述第二计算装置本地缓存的所述第一目录进行哈希运算得到;向所述第二计算装置发送所述第二目录之前,所述方法还包括:从所述第二计算装置接收RDMA读取消息,所述RDMA读取消息是在基于所述第一目录、所述目标哈希桶中记录的位标记和目录项对所述目标哈希桶验证失败时发送的,且所述RDMA读取消息用于通知所述第一计算装置反馈所述第二目录。6.一种数据处理方法,其特征在于,应用于第二计算装置;其中,所述第二计算装置通过远端直接内存访问RDMA技术访问第一计算装置的内存,所述内存中的数据以键值对的形式存储,所述内存中存储第一目录和至少一个哈希子表,所述第一目录用于查找所述内存中存储的哈希子表,每个哈希子表用于存放键值对,所述方法包括:接收来自所述第一计算装置的所述第一目录之后,缓存所述第一目录;基于所述第一目录,通过RDMA技术访问所述第一计算装置的内存;接收来自所述第一计算装置的第二目录之后,缓存所述第二目录,并删除所述第一目录;所述第二目录用于查找容量扩展处理后在所述内存中存储的哈希子表;基于所述第二目录,通过RDMA技术访问所述第一计算装置的内存。7.根据权利要求6所述的方法,其特征在于,每个哈希子表具有位标记和目录项,任一个哈希子表的位标记为维护所述哈希子表的目录项所使用的比特位数,任一个哈希子表的目录项根据所述哈希子表的位标记和所述哈希子表中存放的键值对的哈希值得到。8.根据权利要求7所述的方法,其特征在于,所述第一目录和所述第二目录具有位标记,所述第一目录的位标记为维护所述第一目录中的目录项所使用的比特位数,所述第二目录的位标记为维护所述第二目录中的目录项所使用的比特位数;所述第二目录的位标记的取值与所述第一目录的位标记的取值相同;或者,所述第二目录的位标记的取值相比于所述第一目录的位标记的取值增大设定值。9.根据权利要求6
‑
8中任一项所述的方法,其特征在于,任一个哈希子表中包括多个哈希桶,任一个哈希桶用于存放键值对以及记录相应哈希子表的位标记和目录项,基于所述第一目录,通过RDMA技术访问所述第一计算装置的内存,包括:根据待访问的目标键以及本地缓存的所述第一目录进行哈希运算得到目标哈希桶地址;根据所述目标哈希桶地址,从所述第一计算装置的内存中获取目标哈希桶;接收来自所述第一计算装置的第二目录之前,所述方法还包括:基于所述第一目录、所述目标哈希桶中记录的位标记和目录项,对所述目标哈希桶验证失败时,向所述第一计算装置发送RDMA读取消息,所述RDMA读取消息用于通知所述第一计算装置反馈所述第二目录。10.根据权利要求6
‑
9中任一项所述的方法,其特征在于,所述方法还包括:在所述第一哈希子表满足设定的容量扩展条件时,向所述第一计算装置发送第一信
息,所述第一信息用于指示对所述第一哈希子表进行容量扩展。11.一种通信装置,其特征在于,应用于第一通信装置,所述通信装置包括:内存,用于存储数据,其中,第二计算装置通过远端直接内存访问RDMA技术访问所述内存,所述内存中的数据以键值对的形式存储,所述内存中存储第一目录和至少一个哈希子表,所述第一目录用于查找所述内存中存储的哈希子表,每个哈希子...
【专利技术属性】
技术研发人员:左鹏飞,
申请(专利权)人:华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。