一种热点数据的管理方法、装置及系统与流程

文档序号:19418426发布日期:2019-12-14 01:10阅读:216来源:国知局
一种热点数据的管理方法、装置及系统与流程

本发明涉及信息技术领域,尤其涉及一种热点数据的管理方法、装置及系统。



背景技术:

为保证数据库能够稳定高效的提供服务,一般会在数据库(database,db)与客户端之间设置缓存机制,使用缓存机制不仅可以解决数据库服务器的压力,同时也可以提高数据的读写速度。内存数据库通常被用作客户端与数据库的缓存层,内存数据库的所有数据访问控制都在内存中进行,由于内存本身读写速度很快,因此内存数据库性能较好。

redis是一种内存数据库,可以用作数据库和客户端的缓存层。redis是一个由c语言编写、遵守伯克利软件发行版(berkeleysoftwaredistribution,bsd)协议、支持网络、可基于内存亦可以持久化的键值(key-value)无锁数据库。redis集群(cluster)是redis的分布式解决方案,有效的解决了redis分布式方面的需求,采用cluster架构可以达到负载均衡的目的。

在实际使用场景中,rediscluster可能会收到大量单一数据的频繁访问请求,客户端大量请求同一个关键字(key)(可能对应应用的某个促销商品、热点新闻、热点评论等)对应的数据,根据key的哈希值,所有访问请求都将集中到同一个物理设备上,该物理设备的负载会严重加剧,导致部署在该物理设备上的主控制单元以及该物理设备本身都面临崩溃瘫痪的风险,这种现象被称为“热点key”问题。

热点key现象会造成流量大量集中,达到服务器的上限,同时请求过多集中在一台服务器上,将导致服务器瘫痪,进而导致整个缓存机制被热点key击穿,此时,业务请求直接访问后端数据库,进一步击穿db,引起一系列的业务崩溃。



技术实现要素:

本发明实施例公开了一种热点数据的管理方法、装置及系统,能够在第一集群出现热点数据的时候,将热点数据迁移至第二集群,从而减轻第一集群的业务压力,保证第一集群的性能和可靠性。

第一方面,本申请提供了一种热点数据的管理方法,由数据库服务器中的监控进程执行,包括:监控进程中的监控模块确定第一集群管理的热点数据,该第一集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,所述访问请求包括对数据的访问请求;监控模块判断是否满足将所述热点数据迁移至第二集群的迁移条件,该第二集群包括至少一个单线程的主控制单元,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理,所述第二集群用于管理满足所述迁移条件的热点数据;在满足迁移条件时,监控进程中的迁移模块将该热点数据迁移至第二集群,并触发对该热点数据访问路径的更新。

在本申请实施例中,第一集群可以是redis集群,第一集群的主控制单元可以部署在多个物理设备上,第二集群是第一集群的副集群,第二集群的主控制单元可以与第一集群的主控制单元部署在相同的物理设备上。在第一集群存在热点数据的情况下,通过将热点数据迁移至第二集群,可以减小第一集群的业务压力,实现第一集群和第二集群间的负载均衡,保证第一集群的高性能和可靠性。结合第一方面,在第一方面一种可能的实现方式中,所示第一集群中的第一主控制单元和所述第二集群中的第一主控制单元部署在不同的物理设备。

结合第一方面,在第一方面一种可能的实现方式中,所述主控制单元管理至少一个哈希槽,所述哈希槽的标识为通过预设算法对数据映射得到的一个整数,所述哈希槽包括至少一个数据;所述第一集群中的第一主控制单元管理的哈希槽和所述第二集群中的第一主控制单元管理的哈希槽具有相同的标识。

可选的,预设算法包括哈希算法。

在本申请实施例中,通过将两个集群中管理相同标识的哈希槽的主控制单元部署在不同的物理设备,可以分散单个物理设备的业务压力,保证集群能够正常的对外提供服务。

结合第一方面,在第一方面一种可能的实现方式中,监控模块统计预设时间内所述第一集群管理的数据的访问次数,将访问次数超过第一阈值的数据确定为热点数据。

结合第一方面,在第一方面一种可能的实现方式中,迁移模块从第一集群中读取所述热点数据和所述热点数据对应的关键字;根据所述热点数据对应的关键字,在所述第二集群中确定第一哈希槽;将所述热点数据和所述热点数据对应的关键字迁移至所述第一哈希槽。

在本申请提供的方案中,迁移模块通过在第一集群中读取热点数据和该热点数据对应的关键字,然后在第二集群中确定第一哈希槽后将其写入该第一哈希槽中,从而完成热点数据的迁移。

结合第一方面,在第一方面一种可能的实现方式中,迁移模块向与所述第一集群和所述第二集群通信的客户端发送迁移信息,该迁移信息携带所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据对应的关键字记录至关键字集合,所述关键字集合用于所述客户端确定所述访问请求对应的目标集群,所述目标集群包括所述第一集群和所述第二集群。

在本申请提供的方案中,客户端通过接收迁移模块发送的携带热点数据对应的关键字的迁移信息,并将该热点数据对应的关键字记录至关键字集合,在存在对该热点数据的访问请求时,客户端能够根据关键字集合准确找到管理该热点数据的目标集群。

结合第一方面,在第一方面一种可能的实现方式中,迁移模块向与所述第一集群和所述第二集群通信的客户端发送迁移信息之前,迁移模块读取迁移完成后所述第一集群管理的所述热点数据,并验证所述热点数据与迁移前所述第一集群管理的所述热点数据是否一致;当迁移完成后所述第一集群管理的所述热点数据与迁移前所述第一集群管理的所述热点数据一致时,向与所述第一集群和所述第二集群通信的客户端发送所述迁移信息。

在本申请提供的方案中,迁移模块在完成热点数据迁移之后,进行数据一致性判断,即判断迁移前后第一集群管理的热点数据是否一致,从而可以确定热点数据在迁移过程中是否发生了改变。并在数据一致的情况下向客户端发送包括该热点数据对应的关键字的迁移信息,以使得客户端能够准确访问到该热点数据。

结合第一方面,在第一方面一种可能的实现方式中,迁移模块向与所述第一集群和所述第二集群通信的客户端发送迁移信息,所述迁移信息携带所述热点数据和所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据和所述热点数据对应的关键字记录至第一集合,所述第一集合用于所述客户端进行数据一致性判断。

在本申请提供的方案中,客户端维护有第一集合,该第一集合中记录了热点数据和该热点数据对应的关键字,客户端可以根据该第一集合判断热点数据在迁移过程中是否发生了改变,从而可以保证数据一致性。

结合第一方面,在第一方面一种可能的实现方式中,监控模块计算所述第一集群中的每个主控制单元的资源使用量,对资源使用量超过第一阈值的主控制单元进行监控;统计预设时间内所述资源使用量超过所述第一阈值的主控制单元管理的每个数据的访问次数,将访问次数超过第二阈值的数据确定为热点数据。

在本申请提供的方案中,监控模块通过计算每个主控制单元的资源使用量,对资源使用量超过第一阈值的主控制单元进行监控,并进一步统计资源使用量超过第一阈值的主控制所管理的每个数据访问,从而确定热点数据,这样,可以避免对所有的主控制单元进行监控造成对第一集群的性能影响,提高监控效率。

结合第一方面,在第一方面一种可能的实现方式中,监控模块统计所述资源使用量超过所述第一阈值的主控制单元所管理的数据的总访问次数,当所述总访问次数超过第三阈值时,确定所述资源使用量超过所述第一阈值的主控制单元管理的热点数据满足所述迁移条件。

在本申请提供的方案中,监控模块在确定热点数据之后,需要进一步判断是否满足迁移该热点数据的迁移条件,即监控模块统计管理该热点数据的主控制单元所管理的所有数据的总访问次数,在总访问次数超过预设阈值时确定满足迁移条件。这样可以避免频繁的迁移热点数据,保证第一集群的性能。

结合第一方面,在第一方面一种可能的实现方式中,监控模块监控所述第二集群,所述第二集群管理所述第一集群迁移至所述第二集群的热点数据;统计预设时间内所述热点数据的访问次数,当所述热点数据的访问次数小于第四阈值,将所述热点数据标记为非热点数据,迁移模块将所述非热点数据迁移至所述第一集群,并触发对所述非热点数据访问路径的更新。

在本申请提供的方案中,监控模块通过监控第二集群并统计第二集群所管理的数据的访问次数从而确定非热点数据,并在确定之后通过迁移模块将该非热点数据迁移至第一集群,这样可以实现第一集群和第二集群之间的负载均衡,避免一直将热点数据迁移至第二集群导致第二集群业务压力过大而崩溃。

结合第一方面,在第一方面一种可能的实现方式中,第一集群或第二集群包括至少一个主控制单元,所述至少一个主控制单元管理相同数量的哈希槽;或者是按照预设规则管理不同数量的哈希槽;其中,所述哈希槽的总数量为16384。

结合第一方面,在第一方面一种可能的实现方式中,所述资源使用量包括cpu资源使用量、内存资源使用量或网络能力资源使用量。

结合第一方面,在第一方面一种可能的实现方式中,所述主控制单元包括至少一个从控制单元,所述从控制单元用于在所述主控制单元发生故障时接替所述主控制单元成为新的主控制单元。

结合第一方面,在第一方面一种可能的实现方式中,每个主控制单元对应唯一一个ip地址和端口号,所述监控进程根据所述ip地址和端口号管理每一个主控制单元。

结合第一方面,在第一方面一种可能的实现方式中,在将热点数据迁移至第二集群之前,所述监控模块对热点数据进行优先级别分类,将优先级别最高的热点数据优先迁移至所述第二集群。

结合第一方面,在第一方面一种可能的实现方式中,所述监控进程与所述客户端通过传输控制协议(transmissioncontrolprotocol,tcp)连接或专属通道连接进行通信,所述迁移模块通过所述tcp连接或专属通道连接向所述客户端发送迁移信息。

结合第一方面,在第一方面一种可能的实现方式中,所述监控进程与所述客户端之间采用回复确认机制以保证与所述迁移模块通信的所有客户端成功接收到所述迁移信息。

第二方面,本申请提供了一种热点数据的访问方法,包括:客户端根据业务请求中的关键字,查询关键字集合是否包括该关键字,关键字集合包括第一集群迁移至第二集群的热点数据对应的关键字,第一集群和第二集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,该访问请求包括对数据的访问请求,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理;客户端根据查询结果确定目标集群,该目标集群包括所述第一集群或所述第二集群;客户端向该目标集群发送访问请求,该访问请求包括业务请求中的关键字。

在本申请提供的方案中,客户端维护有关键字集合,该关键字集合中包括第一集群迁移至第二集群的所有热点数据对应的关键字,客户端在产生业务请求时,通过判断业务请求中的关键字是否存在于关键字集合中,从而可以选择正确的集群进行访问。

结合第二方面,在第二方面一种可能的实现方式中,客户端接收数据库服务器发送的迁移信息,所述迁移信息包括所述热点数据对应的关键字,将所述热点数据对应的关键字记录至所述关键字集合。

结合第二方面,在第二方面一种可能的实现方式中,客户端接收数据库服务器发送的第一迁移信息,所述第一迁移信息包括所述热点数据和所述热点数据对应的关键字,将所述热点数据和所述热点数据对应的关键字记录至第一集合;接收所述数据库服务器发送的第二迁移信息,所述第二迁移信息包括非热点数据和所述非热点数据对应的关键字,将所述非热点数据和所述非热点数据对应的关键字记录至第二集合;其中,所述第一集合和所述第二集合分别用于缓存未进行数据一致性判断的数据。

在本申请提供方案中,客户端维护有第一集合和第二集合,第一集合记录热点数据和热点数据对应的关键字,客户端可以根据第一集合判断热点数据在迁移过程中是否发生了改变,从而保证数据一致性;第二集合记录非热点数据和非热点数据对应的关键字,客户端可以根据第二集合判断非热点数据在迁移过程中是否发生了改变,从而保证数据一致性。

结合第二方面,在第二方面一种可能的实现方式中,若所述关键字集合和所述第二集合包括所述业务请求中的关键字,且所述第二集合中与所述关键字对应的数据和所述第二集群管理的所述关键字对应的数据一致时,确定所述第一集群为目标集群;当不一致时,确定所述第二集群为目标集群;若所述关键字集合不包括所述业务请求中的关键字,所述第一集合包括所述业务请求中的关键字,且所述第一集合中的与所述关键字对应的数据和所述第一集群管理的所述关键字对应的数据一致时,确定所述第二集群为目标集群;当不一致时,确定所述第一集群为目标集群。

第三方面,本申请提供了一种网络设备,包括:处理模块,用于确定第一集群管理的热点数据,所述第一集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,所述访问请求包括对数据的访问请求;判断模块,用于判断是否满足将所述热点数据迁移至第二集群的迁移条件,所述第二集群包括至少一个单线程的主控制单元,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理,所述第二集群用于管理满足所述迁移条件的热点数据;迁移模块,用于在满足所述迁移条件时,将所述热点数据迁移至所述第二集群,并触发对所述热点数据访问路径的更新。

结合第三方面,在第三方面一种可能的实现方式中,所述第一集群中的第一主控制单元和所述第二集群中的第一主控制单元部署在不同的物理设备。

结合第三方面,在第三方面一种可能的实现方式中,所述主控制单元管理至少一个哈希槽,所述哈希槽的标识为通过预设算法对数据映射得到的一个整数,所述哈希槽包括至少一个数据;所述第一集群中的第一主控制单元管理的哈希槽和所述第二集群中的第一主控制单元管理的哈希槽具有相同的标识。

结合第三方面,在第三方面一种可能的实现方式中,所述处理模块,还用于从所述第一集群中读取所述热点数据和所述热点数据对应的关键字,并根据所述热点数据对应的关键字,在所述第二集群中确定第一哈希槽;所述迁移模块,还用于将所述热点数据和所述热点数据对应的关键字迁移至所述第一哈希槽。

结合第三方面,在第三方面一种可能的实现方式中,所述网络设备还包括发送模块,所述发送模块,用于向与所述第一集群和所述第二集群通信的客户端发送迁移信息,所述迁移信息包括所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据对应的关键字记录至关键字集合,所述关键字集合用于所述客户端确定所述访问请求对应的目标集群,所述目标集群包括所述第一集群和所述第二集群。

结合第三方面,在第三方面一种可能的实现方式中,所述处理模块,还用于读取迁移完成后所述第一集群管理的所述热点数据,并验证所述热点数据与迁移前所述第一集群管理的所述热点数据是否一致;所述发送模块,还用于当迁移完成后所述第一集群管理的所述热点数据与迁移前所述第一集群管理的所述热点数据一致时,向与所述第一集群和所述第二集群通信的客户端发送所述迁移信息。

结合第三方面,在第三方面一种可能的实现方式中,所述网络设备还包括发送模块,所述发送模块,用于向与所述第一集群和所述第二集群通信的客户端发送迁移信息,所述迁移信息携带所述热点数据和所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据和所述热点数据对应的关键字记录至第一集合,所述第一集合用于所述客户端进行数据一致性判断。

结合第三方面,在第三方面一种可能的实现方式中,所述处理模块,还用于计算所述第一集群中每个主控制单元的资源使用量,对资源使用量超过所述第一阈值的主控制单元进行监控;统计预设时间内所述资源使用量超过第一阈值的主控制单元管理的每个数据的访问次数,将访问次数超过第二阈值的数据确定为热点数据。

结合第三方面,在第三方面一种可能的实现方式中,所述判断模块,还用于统计所述资源使用量超过所述第一阈值的主控制单元所管理的数据的总访问次数,当所述总访问次数超过第三阈值时,确定所述资源使用量超过所述第一阈值的主控制单元管理的热点数据满足所述迁移条件。

结合第三方面,在第三方面一种可能的实现方式中,所述处理模块,还用于监控所述第二集群,所述第二集群管理所述第一集群迁移至所述第二集群的热点数据;统计预设时间内所述热点数据的访问次数,当所述热点数据的访问次数小于第四阈值,将所述热点数据标记为非热点数据;所述迁移模块,还用于将所述非热点数据迁移至所述第一集群,并触发对所述非热点数据访问路径的更新。

第四方面,本申请提供了一种客户端设备,包括:处理模块,用于根据业务请求中的关键字,查询关键字集合是否包括所述关键字,所述关键字集合包括第一集群迁移至第二集群的热点数据对应的关键字,所述第一集群和所述第二集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,所述访问请求包括对数据的访问请求,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理;根据查询结果确定目标集群,所述目标集群包括所述第一集群或所述第二集群;发送模块,用于向所述目标集群发送访问请求,所述访问请求包括所述业务请求中的关键字。

结合第四方面,在第四方面一种可能的实现方式中,所述客户端设备还包括接收模块,所述接收模块,用于接收数据库服务器发送的迁移信息,所述迁移信息包括所述热点数据对应的关键字;所述处理模块,还用于将所述热点数据对应的关键字记录至所述关键字集合。

结合第四方面,在第四方面一种可能的实现方式中,所述客户端设备还包括接收模块,所述接收模块,用于接收数据库服务器发送的第一迁移信息,所述第一迁移信息包括所述热点数据和所述热点数据对应的关键字;所述处理模块,还用于将所述热点数据和所述热点数据对应的关键字记录至第一集合;所述接收模块,还用于接收所述数据库服务器发送的第二迁移信息,所述第二迁移信息包括非热点数据和所述非热点数据对应的关键字;所述处理模块,还用于将所述非热点数据和所述非热点数据对应的关键字记录至第二集合;其中,所述第一集合和所述第二集合分别用于缓存未进行数据一致性判断的数据。

结合第四方面,在第四方面一种可能的实现方式中,所述处理模块,还用于当所述关键字集合和所述第二集合包括所述业务请求中的关键字,且所述第二集合中与所述关键字对应的数据和所述第二集群管理的所述关键字对应的数据一致时,确定所述第一集群为目标集群;当不一致时,确定所述第二集群为目标集群;所述处理模块,还用于当所述关键字集合不包括所述业务请求中的关键字,所述第一集合包括所述业务请求中的关键字,且所述第一集合中的与所述关键字对应的数据和所述第一集群管理的所述关键字对应的数据一致时,确定所述第二集群为目标集群;当不一致时,确定所述第一集群为目标集群。

第五方面,本申请提供了一种网络设备,所述网络设备包括处理器和存储器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码执行上述第一方面以及结合上述第一方面中的任意一种实现方式的方法。

第六方面,本申请提供了一种客户端设备,所述客户端设备包括处理器和存储器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码执行上述第二方面以及结合上述第二方面中的任意一种实现方式的方法。

第七方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当该计算机程序被处理器执行时实现,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。

第八方面,本申请提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,当该计算机程序被处理器执行时实现,可以实现上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的方法的流程。

第九方面,本申请提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的方法的流程。

第十方面,本申请提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面以及结合上述第二方面中的任意一种实现方式所提供的方法的流程。

第十一方面,本申请提供了一种热点数据的迁移系统,包括网络设备和客户端设备,其中,所述网络设备和所述客户端设备之间可以进行通信;

所述网络设备用于执行如第一方面任一项的所述的方法;

所述客户端设备用于执行如第二方面任一项所述的方法。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种应用场景的示意图;

图2a是本申请实施例提供的一种网络节点设备的内部结构的示意图;

图2b是本申请实施例提供的一种集群的内部结构的示意图;

图2c是本申请实施例提供的一种用户设备的内部结构示意图;

图3是本申请实施例提供的一种热点数据的管理方法的流程示意图;

图4是本申请实施例提供的一种集群的部署示意图;

图5是本申请实施例提供的又一种热点数据的管理方法的流程示意图;

图6是本申请实施例提供的一种数据一致性校验方法的流程示意图;

图7a是本申请实施例提供的一种网络设备的结构示意图;

图7b是本申请实施例提供的又一种网络设备的结构示意图;

图8a是本申请实施例提供的一种客户端设备的结构示意图;

图8b是本申请实施例提供的又一种客户端设备的结构示意图;

图9是本申请实施例提供的一种网络设备的结构示意图;

图10是本申请实施例提供的一种客户端设备的结构示意图。

具体实施方式

下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。

首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。

redis集群(rediscluster)是redis的分布式解决方案。rediscluster采用虚拟槽分区,使用分散度良好的哈希算法将所有的数据映射到具有不同标识的哈希槽(slot)中,每个slot中包含一个或多个数据,每个slot的标识为一个整数,该整数的取值范围是0-16383,不同的slot所对应的标识是不同的。rediscluster一共包含16384个slot,slot是集群内部数据管理和迁移的基本单位,集群内部每个节点(可以称为主控制单元或进程)管理一定数量的slot。数据在redis集群中是按照键值对(key-value)的形式进行存储。当需要在redis集群中存放一个数据时,会先对这个数据对应的关键字(key)进行哈希运算得到一个数据结果,然后将该数据结果对16384进行取余,该余数为某个slot的标识,根据该标识可以确定唯一一个slot,进而可以决定该数据具体的值(value)以及其对应的key具体由哪个主控制单元进行管理。一旦某个主控制单元出现故障,该主控制单元管理的slot就无法访问,导致整个rediscluster无法正常工作。在rediscluster部署时,将所有的主控制单元分布式部署在不同的物理设备上,以实现负载均衡。

应用程序接口(applicationprogramminginterface,api)是一些预先定义的函数,目的是提供应用程序基于某软件或硬件得以访问一组例程的能力,而又无需访问源码或理解内部工作机制的细节。例程是系统对外提供的功能接口的集合,其作用类似于函数,例如服务、标准函数、库函数等就是例程。对外提供的api调用使得设备之间的内容关联性更强,为了对外提供统一的api接口,需要对调用api的设备提供开放统一的api接口环境,来帮助使用者访问设备的功能和资源。例如,在本申请实施例中,客户端可以通过服务端提供的api接口进行调度,以实现对服务端的数据访问,而客户端本身不需要理解其复杂的调度机制和热点数据迁移机制。

图1示出了本申请实施例的一种可能的应用场景。在该应用场景中,设备110、设备120和设备130为网络节点设备,例如:数据库服务器等,它们可以部署属于同一个集群的主控制单元,例如部署属于集群140的主控制单元。设备150、设备160和设备170是用户设备,例如:手机、平板电脑、个人电脑或服务器等。接口1为集群140对外提供的一个逻辑接口,该接口1可以是api接口。设备150、设备160和设备170可以通过接口1实现对集群140的数据访问,即设备150、设备160和设备170可以通过接口1访问设备110、设备120和设备130中的任意一个。设备110、设备120和设备130均包括一个或多个主控制单元,每一个主控制单元可以配置一个或多个从控制单元,设备110、设备120和设备130中的所有主控制单元作为一个整体(即以集群140的形式)对外提供服务,而集群必须保证其完整性才能正常提供服务,必须保证集群所管理的slot为16384,换句话说,若某个主控制单元发生故障,则该主控制单元所管理的slot将不能访问,则该主控制单元所属的集群也不能正常工作,即整个集群发生崩溃。当某个主控制单元发生故障,可以从该主控制单元配置的从控制单元中选择一个从控制单元接替原来主控制单元的功能,作为一个新的主控制单元。设备150、设备160和设备170中任意一个都包括客户端进程,该客户端进程包括客户端接口,客户端进程通过客户端接口调用接口1,可以访问设备110、设备120或设备130中任意一个主控制单元管理的数据。

当网络节点设备中的一个主控制单元接收到大量单一数据的访问请求时,可能会形成热点key现象。例如设备110中的某个主控制单元接收到大量单一数据的访问请求,该主控制单元的负载加剧,可能会导致该主控制单元不能正常工作。如果该主控制单元故障,从控制单元在接替该主控制单元成为新的主控制单元之后,仍然存在大量单一数据的访问请求,即从控制单元仍需要处理这些访问请求,从而导致从控制单元负载加剧而崩溃。在从控制单元也不能正常工作之后,集群140的完整性遭到了破坏,即集群140所管理的slot发生了缺失,不再是16384,因此最终导致集群140也不能再提供服务。

为了解决上述问题,本申请提供了一种热点数据的迁移方法、装置及系统,当在主集群中存在热点数据时,将热点数据迁移至副集群,减小主集群的业务压力,保证主集群的性能和可靠性。

参见图2a,图2a示出了网络节点设备210的内部结构示意图。应理解,图2a只示出了设备210中的部分硬件结构和部分软件模块,具体实现时,设备210还可以包括更多的硬件结构,如通信接口等,以及更多的软件模块,如各种应用程序等。如图2a所示,设备210中包括中央处理器(centralprocessingunit,cpu)2110、存储器2120和监控进程2130。cpu2110调用执行存储器2120存储的程序生成主控制单元2141、主控制单元2142和主控制单元2143,以及主控制单元2141的从控制单元2144、主控制单元2142的从控制单元2145和主控制单元2143的从控制单元2146,这里只示例性的示出了3个主控制单元,当然还可以生成更多的主控制单元。此外,针对每一个主控制单元还可以配置多个从控制单元,图2a中只是示例性的示出了一个。需要说明的是,在图2a中,虚线下方是设备210的硬件结构cpu2110和存储器2120,虚线上方是设备210中通过硬件运行的监控进程2130、主控制单元2141、主控制单元2142、主控制单元2143,以及主控制单元2141的从控制单元2144、主控制单元2142的从控制单元2145和主控制单元2143的从控制单元2146。例如,cpu2110调用存储器2120中的程序实现监控进程2130的监控管理功能。图2a中,存储器2120存储有主控制单元2141、主控制单元2142和主控制单元2143所管理的数据。每个主控制单元或从控制单元是设备210中的一个进程,每个主控制单元也叫做一个redis实例,负责管理一定数量的slot。每一个主控制单元都是单线程的,即对于同一个主控制单元来说,一次只能处理一个访问请求;即在任意一个确定时刻只能处理一个访问请求,不能处理多个访问请求,以保证高性能的要求。值得说明的是,每个主控制单元在运行时会占用一定的存储资源,该存储资源中存储了数据或数据集合。还应理解,主控制单元2141、主控制单元2142和主控制单元2143可以是属于同一集群中的主控制单元,也可以是属于不同集群中的主控制单元。值得说明的是,每一个主控制单元都对应唯一的一个标识,该标识由互联网协议(internetprotocol,ip)和端口号(port)组成。设备210可以通过该标识识别每一个主控制单元,此外,设备210还可以通过该标识选择部分主控制单元作为主集群的主控制单元,以及通过该标识选择部分主控制单元作为副集群的主控制单元。例如选择主控制单元2141和主控制单元2142作为主集群中的主控制单元,而选择主控制单元2143作为副集群中的主控制单元,主集群中的主控制单元和副集群中的主控制单元共同使用设备210的内存资源,主集群所管理的数据(如热点数据)可以迁移至副集群,由副集群进行管理,以分散主集群的业务压力;副集群所管理的数据(如非热点数据)也可以迁回至主集群,由主集群进行管理,以避免副集群因为业务压力过大而面临崩溃的风险。需要说明的是,在本申请后续的描述中,都是以在部署了主集群的主控制单元的物理设备上同时部署副集群的主控制单元为例进行说明的,当然,主集群的主控制单元和副集群的主控制单元也可以分别部署在不同的物理设备上,本申请对此不作限定。监控进程2130与主控制单元2141、主控制单元2142和主控制单元2143连接并对它们进行监控和管理。监控进程2130包括监控模块2131和迁移模块2132,监控模块2131负责对主控制单元2141、主控制单元2142和主控制单元2143进行监控,识别其中的热点数据,监控模块2131在识别出热点数据之后通知迁移模块2132,迁移模块2132对监控模块2131所识别的热点数据进行迁移,以及向与设备210连接的用户设备发送迁移信息。

参见图2b,图2b示出了集群的内部结构示意图。集群240所管理的主控制单元同时部署在设备210、设备220和设备230。设备220和设备230的内部结构与设备210类似,区别是设备220和设备230中不包括设备210中的监控进程2130。应理解,对于一个集群来说,只需要部署一个监控进程对集群进行管理和监控。可选的,该监控进程可以部署在属于该集群中的任意一个物理设备上,实现对部署在该集群内所有物理设备上的主控制单元的监控管理。在图2b中,是以监控进程2130部署在设备210上为例进行说明,当然,也可以将监控进程2130部署在设备220或设备230上。设备210、设备220和设备230相互连接,设备210中的监控进程2130可以访问设备220和设备230中的所有属于集群240的主控制单元,负责对集群240中的所有主控制单元进行监控和管理。集群240中所有主控制单元所负责管理的slot的总数是16384,slot的数量反映了集群240的完整性,只有在slot数量总数保持为16384时,集群240才能正常提供服务,若某个主控制单元发生故障,由于每个主控制单元都负责管理部分slot,因此将会导致部分slot缺失,那么slot的总数将不再是16384,即集群240的完整性遭到了破坏,集群240将不能正常工作。监控模块2131负责对集群240中的所有主控制单元进行监控,识别其中的热点数据。迁移模块2132对监控模块2131所识别的热点数据进行迁移,以及向与集群240连接的用户设备发送迁移信息。应理解,集群240还可以包括更多的网络节点设备,即集群240中的主控制单元还可以部署在更多的物理设备上。上述集群240中以包括设备210、设备220和设备230为例进行说明,不应构成具体限定。

还应理解,上述设备210、设备220和设备230中的所有的主控制单元可以都是属于集群240中的主控制单元;或者,设备210、设备220和设备230中的部分主控制单元是属于集群240中的主控制单元,其它主控制单元是属于副集群或者其它集群的主控制单元,副集群的形成与主集群(即集群240)一致,都是通过物理设备中的cpu调用存储器存储的程序生成主控制单元,然后由不同物理设备选择具体利用哪些主控制单元共同形成完整的副集群,选择过程可以是根据ip地址和port进行确定的。应理解,物理设备在生成每个主控制单元后,可以主动选择确定该主控制单元是具体属于哪个集群。示例性的,设备230中的cpu2310调用存储器2320存储的程序生成主控制单元后,选择主控制单元2331和主控制单元2332作为主集群的主控制单元,以及选择主控制单元2333作为副集群的主控制单元。

参见图2c,图2c示出了用户设备的内部结构示意图。应理解,图2c只画出了设备250中的部分硬件结构和部分软件模块,具体实现时,设备250还可以包括更多的硬件结构,如电源等,以及更多的软件模块,如各种应用程序等。设备250中包括cpu2510、存储器2520和客户端进程2530。客户端进程2530包括客户端接口2531,客户端接口2531中包括调度模块2532。需要说明的是,在图2c中,虚线下方是设备250的硬件结构cpu2510和存储器2520,虚线上方是设备250中通过硬件实现的客户端进程2530。cpu2510调用存储器2520中的程序实现客户端进程2530中的调度模块2532的功能。存储器2520还用于存储调度模块2532接收的数据。客户端接口2531中的调度模块2532判断当前业务请求中的关键字所在的集群,并选择正确的集群进行访问。设备250可以使用图2b所示的集群240所提供的服务,设备250通过网络与集群240连接,调度模块2532可以对设备210、设备220以及设备230中的任意一个主控制单元所管理的数据进行访问。调度模块2532还可以接收迁移模块2132发送的迁移信息,示例性的,设备210与设备250通过网络连接,由于设备210、设备220和设备230是相互连接的,所以设备250可以访问设备210、设备220以及设备230中的任意一个主控制单元。此外,假设设备210中的主控制单元2141和主控制单元2142、设备220中主控制单元2231和主控制单元2232、设备230中的主控制单元2331和主控制单元2332是属于主集群的,剩余的主控制单元是属于副集群的。监控模块2131对主集群和副集群进行监控,当监控模块2131监控到主集群中的主控制单元2331中存在热点数据时,通知迁移模块2132,迁移模块2132将主控制单元2331中的热点数据迁移到副集群中的主控制单元2233。迁移完成后,迁移模块2132向设备250中的调度模块2532发送迁移信息以通知设备250,若要访问该热点数据,需要访问设备220中的主控制单元2233,调度模块2532在接收到迁移信息之后,将迁移信息中携带的热点数据对应的关键字存储在关键字集合中,利用该关键字集合对当前业务请求进行判断并选择正确的集群进行访问。

本申请将主集群和副集群中的主控制单元部署在多个相同的物理设备上,并选择一个物理设备部署监控进程。如上述图2b所示,设备210、设备220和设备230中可以同时部署了主集群和副集群的主控制单元,设备210中的监控进程2130负责对两个集群中的主控制单元进行监控和管理。利用该监控进程监控和管理主集群中所有的主控制单元和从控制单元,以及监控和管理副集群中所有的主控制单元以及从控制单元,换句话说,监控进程同时对主集群和副集群进行监控和管理。具体地,由于每一个主控制单元具有唯一一个ip地址和端口号,所以监控进程可以通过不同的ip地址和端口号区分主集群和副集群中的每一个主控制单元并与之建立连接。此外,在建立连接之后,监控进程就可以使用redis中的monitor(监控管理)功能,对连接的每一个主控制单元进行监控和管理。监控进程包括监控模块和迁移模块,监控模块监控到主集群中出现热点数据之后,通知迁移模块,由迁移模块将该热点数据迁移至副集群,以分散主集群的压力,实现集群间负载均衡。

结合图2a、图2b和图2c所示的应用场景,参阅图3,图3是本申请实施例提供的一种热点数据的管理方法的流程示意图。如图3所示,该方法包括但不限于以下步骤:

s301:数据库服务器确定第一集群管理的热点数据。

具体地,第一集群可以是redis集群,又可以称为主集群。这里的数据库服务器可以是组成该redis集群的任意一个部署了监控进程的物理设备,例如上述图2b中的设备210。监控进程对主集群管理的数据进行监控和识别,确定主集群管理的热点数据,更具体的说,是由监控进程中的监控模块来确定主集群管理的热点数据。应理解,在本申请后续的描述中,数据库服务器和监控进程是指同一个执行主体,即数据库服务器所执行的动作都可以理解为是部署在该数据库服务器上的监控进程所执行的动作,后续不再做特别的说明和区分。

需要说明的是,主集群使用哈希算法对待存放数据对应的key进行哈希运算得到一个数据结果,将该数据结果对16384进行取余,得到的余数即为某个slot的标识,再将该待存放数据存放在具有该标识的slot中,这样就可以实现将所有的数据映射到具有不同标识的slot中,且每个slot的标识都是一个取值范围在0-16383中的一个整数,不同整数所表示的slot是不一样的,例如slot1和slot2是两个不同的slot。而主集群一共包含16384个slot,每个主控制单元负责管理一定数量的slot,每个slot相当于一个数据集合,可以包含一个或多个数据,示例性的,slot1包含所有对16384取余,余数为1的数据结果所对应的数据。每个主控制单元可以负责管理相同数量的slot,也可以按照权重比例等方式管理不同数量的slot,本申请对此不作限定。特别的,主集群在进行集群部署时,将主控制单元均匀部署在不同的物理设备上,以实现主集群的负载均衡,分散单个物理设备的业务压力。

在一种可能的实现方式中,监控进程中的监控模块统计预设时间内主控制单元管理的每个数据的访问次数,将访问次数超过阈值的数据确定为热点数据。

具体地,监控模块可以实时或周期性监控主集群中所有主控制单元,统计每个主控制单元管理的每个数据的访问次数,将访问次数超过阈值的数据确定为热点数据,预设时间可以是单位时间,例如1秒,周期和阈值可以根据需要进行设置,本申请对此不作限定。

在一种可能的实现方式中,监控进程中的监控模块计算主集群中每个主控制单元的资源使用量,对资源使用量超过第一阈值的主控制单元进行监控;并统计预设时间内资源使用量超过第一阈值的主控制单元管理的每个数据的访问次数,将访问次数超过第二阈值的数据确定为热点数据。

具体地,监控进程中的监控模块可以根据物理设备的硬件情况,例如物理设备的cpu个数、cpu能力、物理内存大小和网络能力等,以及集群配置信息,例如每个物理设备部署的主控制单元个数等,估算得到第一阈值的大小。将每个主控制单元的当前资源使用量,例如cpu资源使用量或物理内存使用量等,与估算得到的第一阈值进行比较,对资源使用量超过第一阈值的主控制单元进行监控。

进一步的,监控模块在确定资源使用量超过第一阈值的主控制单元之后,对预设时间内该主控制单元管理的每一个slot中的每一个数据的访问次数进行统计,若某个数据的访问次数超过第二阈值,则将该数据确定为热点数据。其中,预设时间可以是单位时间,例如1秒,第二阈值可以根据需要进行设置,本申请对此不作限定。

示例性的,参见上述图2b,监控模块2131确定主控制单元2141的资源使用量超过第一阈值,对主控制单元2141进行监控,主控制单元2141管理1000个slot,为slot1-slot1000,每个slot中包含10个数据,第二阈值为50000。监控模块统计1秒钟时间内每个slot中的每个数据的访问次数,若slot1中的第二个数据在1秒钟内被访问了80000次,超过了第二阈值50000,可以确定slot1中的第二个数据为热点数据。

可以理解,监控模块对集群进行监控会对集群的性能造成影响和损耗,因此在确定热点数据时,并不是利用监控模块监控主集群中所有的主控制单元,而是先进行筛选,监控模块只负责监控资源使用量超过第一阈值的主控制单元,这样可以减少对集群性能的损耗,保证主集群能够更好的提供服务。

s302:数据库服务器判断是否满足将所述热点数据迁移至第二集群的条件。

具体地,第二集群可以是redis集群,又可以称为副集群。副集群中可以包括多个物理设备,它们之间相互网络连接,每个物理设备的具体结构可以参照上述图2a中的相关描述。值得说明的是,搭建该第二集群所使用的物理设备可以是搭建第一集群所使用的物理设备,换句话说,可以使用相同的物理设备搭建主集群和副集群。由于搭建主集群和副集群所使用的物理设备相同,因此对于同一个物理设备来说,该物理设备可以同时部署主集群中的主控制单元和副集群中的主控制单元,例如,在上述图2b中,设备210中的主控制单元2141和2142、设备220中的主控制单元2231和2232以及设备230中的主控制单元2331和2332可以是属于主集群中的主控制单元,设备210中的主控制单元2143、设备220中的主控制单元2233和设备230中的主控制单元2333可以是属于副集群中的主控制单元。此外,副集群中的主控制单元数量可以和主集群中的主控制单元数量相同,每个主控制单元负责的slot的标识也可以是相同的,当然,主控制单元的数量以及每个主控制单元负责的slot的标识也可以是不同的,本申请对此不作限定。

可选的,副集群中的每一个主控制单元也可以配置一个或多个从控制单元。副集群和主集群分别包括16384个slot,每个slot中可以包含至少一个数据。

在一种可能的实现方式中,主集群中的第一主控制单元和副集群中的第一主控制单元部署在不同的物理设备上,且主集群中的第一主控制单元管理的slot和副集群中的第一主控制单元管理的slot具有相同的标识。

具体地,主集群和副集群相互协作,副集群用于接收主集群中迁移过来的热点数据,以分散主集群的业务压力。此外,热点数据在迁移的过程中,其对应的关键字不变,那么根据关键字进行哈希计算得到的slot的标识也是相同的。也就是说,如果将主集群中的slot1中的热点数据迁移到副集群,那么一定是迁移到副集群的slot1中,不会迁移至具有其它标识的slot中,例如slot2或slot3等。

所以在进行集群部署时,如果将两个集群中负责相同标识的slot的主控制单元部署在同一个物理设备上,则热点数据的迁移将会在物理设备内部完成,即对于该物理设备来说,业务压力还是集中在该物理设备上,并不会减少。因此,需要将两个集群中负责管理具有相同标识的slot的主控制单元部署在不同的物理设备上,具体地,每个物理设备(例如数据库服务器)可以根据ip地址和端口号选择组成主集群和副集群的主控制单元,由于物理设备可以通过ip地址和端口号区分不同集群的不同主控制单元,因此在部署slot时,可以选择将管理相同标识的slot的主控制单元部署在不同的物理设备上。例如,某个物理设备上存在10个主控制单元,选择其中8个为主集群中的主控制单元,选择另外两个为副集群中的主控制单元,在部署slot时(主集群和副集群各自管理16384个slot),该物理设备可以选择主集群中的8个主控制单元管理标识为1-5000的slot,并且选择副集群中的两个主控制单元管理标识为5001-10000的slot,保证不同集群中的主控制单元所管理的slot的标识不同。可以理解,这样可以使得集群负载更加均衡,降低热点数据对单个物理设备的影响,避免业务压力集中在同一个物理设备上。

示例性的,参见图4,图4是本申请实施例提供的一种集群的部署示意图。如图4所示,在一个具体的实现中,主集群中包含90个主控制单元,其中30个主控制单元负责slot0至slot5000,部署在物理设备210;另外30个负责slot5001至slot10000的主控制单元部署在物理设备220;最后30个负责slot10001至slot16383的主控制单元部署在物理设备230。副集群中包含30个主控制单元,其中10个主控制单元负责slot0至slot5000,部署在物理设备230;另外10个负责slot5001至slot10000的主控制单元部署在物理设备210;最后10个负责slot10001至slot16383的主控制单元部署在物理设备220。可以看出,物理设备210同时部署了主集群中负责slot0至slot5000的30个主控制单元和副集群中负责slot5001至slot10000的10个主控制单元,当主集群中slot100中的数据被确定为热点数据,需要迁移到副集群中slot100,由于主集群中slot100部署在物理设备210上,而副集群中slot100部署在物理设备230上,所以实际上,数据是从物理设备210迁移至物理设备230。容易理解,通过上述部署方式,可以保证集群负载更加均衡,避免业务压力出现在同一个物理设备上。另外,副集群中的30个主控制单元是为了协助主集群,用来存储主集群中确定的热点数据,相较于主集群中的90个主控制单元来说,副集群只有30个主控制单元,不会占用过多的资源,可以减少对物理设备210、物理设备220和物理设备230的影响,同时保证主集群的高性能。

可以理解,通过将热点数据从主集群迁移到副集群,可以分散主集群的业务压力,使主集群负载更加均衡,保证主集群的高性能和可靠性。具体地,数据库服务器中的监控进程可以通过ip地址和端口号识别每一个主控制单元并与之建立连接,连接建立之后,监控进程可以使用monitor功能对其进行监控,并在监控到热点数据时,可以读取该热点数据以及该热点数据对应的关键字,并将读取到的热点数据以及该热点数据对应的关键字迁移到副集群。值得说明的是,这里的迁移类似于备份操作,即在迁移完成后,主集群中仍存在该热点数据以及该热点数据对应的关键字。

在一种可能的实现方式中,对资源使用量(例如cpu资源使用量)超过第一阈值且存在热点数据的主控制单元进行统计,统计该主控制单元所管理的所有数据的总访问次数,若总访问次数超过第三阈值时,确定该主控制单元满足迁移条件,将该主控制单元所管理的热点数据迁移至副集群。

具体地,统计该主控制单元所管理的所有数据(包括热点数据和非热点数据)的总访问次数,可以根据总访问次数确定当前该主控制单元的状态以及是否需要将热点数据进行迁移。当总访问次数超过第三阈值说明当前访问请求过多,已经对该主控制单元的安全以及可靠性造成了威胁,即该主控制单元存在被击穿的风险,进一步的,由于该主控制单元所管理的数据中存在热点数据,即存在访问次数超过第二阈值的数据,这时需要将该主控制单元管理的热点数据迁移至副集群以分散该主控制单元的业务压力,避免该主控制单元被击穿。可选的,第三阈值可以根据需要进行设置,本申请对此不作限定。

特别的,当监控进程中的监控模块监控到满足迁移条件的主控制单元中存在多个热点数据时,例如在上述图2b中,监控模块2131监控到主控制单元2141满足迁移条件,且主控制单元2141所管理的数据中存在多个热点数据。这时,若将所有的热点数据全部迁移至副集群,那么副集群将会在短时间内接收到客户端发送的大量访问请求,副集群中的主控制单元将面临巨大的业务压力,可能会导致副集群中的主控制单元被击穿而无法正常工作,进而导致部署副集群中的该主控制单元的物理设备崩溃,从而导致整个副集群不能提供服务。

可选的,监控模块对热点数据进行优先级分类,当监控模块检测到主集群中满足迁移条件的主控制单元中存在多个热点数据时,将热点数据按照优先级的高低迁移至副集群,可以先将优先级最高的热点数据迁移至副集群,然后通过监控模块监控副集群的状态,根据副集群的状态再确定是否将优先级较低的热点数据迁移至副集群。这样可以避免一次性迁移过多的热点数据至副集群,使得副集群在短时间遭受大量访问请求的冲击而崩溃,从而不能提供服务,实现主集群和副集群的负载均衡。

示例性的,监控模块统计得到1秒时间内,主集群中满足迁移条件的主控制单元所管理的数据1被访问了150000次,数据2被访问了130000次,数据3被访问了100000次。而访问次数超过50000次的数据即被确定为热点数据(即第二阈值为50000),数据1、数据2和数据3的访问次数均超过了50000次,所以它们都是热点数据。而由于数据1被访问的次数最多,所以它的优先级别最高,因此监控模块将数据1标记为高优先级的热点数据,同理,将数据2标记为中优先级或一般优先级的热点数据,将数据3标记为低优先级的热点数据。迁移模块可以根据优先级别的高低,将数据1、数据2和数据3迁移至副集群。例如,当前副集群当前业务压力较大,即当前副集群中存在过多的热点数据,热点数据的个数超过了预设值。示例性的,预设值为1000,表示副集群正常情况下只能管理1000个热点数据,而当前副集群中存在1050个热点数据,这时副集群的业务压力就比较大。此时,可以只将数据1迁移至副集群,而数据2和数据3暂时不迁移至副集群,若当前副集群业务压力较小,则可以将数据1、数据2和数据3都迁移至副集群。

应理解,这里只是以热点数据被访问次数的多少为依据进行优先级的划分,也可以根据其它规则或条件进行优先级的划分,例如业务重要等级选择需要迁移的数据等,本申请对此不作限定。

s303:数据库服务器将热点数据迁移至所述第二集群,并触发所述热点数据访问路径的更新。

具体地,每一个主控制单元对应唯一一个ip地址和端口号。同一个物理设备中的所有主控制单元(包括主集群中的主控制单元和副集群中的主控制单元)都具有相同的ip地址,但是它们的端口号是不同的。不同物理设备中的主控制单元的ip地址是不同的,但是其端口号可能是相同的。结合ip地址和端口号,可以确定唯一一个主控制单元,即监控进程是利用ip地址和端口号进行监控,并根据ip地址和端口号管理主集群和副集群中的每一个主控制单元。

进一步的,数据库服务器中所部署的监控模块在主集群中确定需要迁移的热点数据之后,通知迁移模块,由迁移模块从主集群中读取该热点数据以及该热点数据对应的关键字,迁移模块在读取到热点数据以及该热点数据对应的关键字之后,利用哈希算法对读取到的关键字进行哈希运算,得到一个slot对应的标识,根据该标识,迁移模块可以确定副集群中管理该标识对应的slot的主控制单元,进而可以得到该主控制单元对应的ip地址和端口号。值得说明的是,在主集群和副集群搭建完成的时候,监控进程就已经存储了每一个主控制单元对应的ip地址和端口号。迁移模块在得到ip地址和端口号之后,将该热点数据以及该热点数据对应的关键字写入计算得到的slot标识对应的slot中,该slot是副集群中与该ip地址和端口号对应的主控制单元所管理的slot中的一个slot。值得说明的是,热点数据以及该热点数据对应的关键字的迁移过程以及实现逻辑与现有技术中数据的迁移过程一致,在此不再赘述。

在一种可能的实现方式中,迁移模块在完成热点数据迁移之后,向与主集群和副集群通信的客户端发送迁移信息,该迁移信息包括热点数据对应的关键字,该迁移信息指示客户端将该热点数据对应的关键字记录至关键字集合,该关键字集合包括主集群迁移至副集群的所有热点数据对应的关键字。

具体地,迁移模块在将主集群中的热点数据迁移至副集群之后,才会向主集群和副集群通信的客户端发送迁移信息以通知客户端,该迁移信息可以是通过网络包的形式进行发送的。可选的,客户端与迁移模块之间可以协商定义一些相关协议,保证客户端在接收到迁移信息之后能够对其进行正确解读,获取得到其中的热点数据对应的关键字,并将该关键字添加至关键字集合。或者是,迁移模块与客户端之间建立一条专属连接(例如tcp连接),以用于专门发送该迁移信息,保证客户端能够对其进行正确解读,获取得到其中的热点数据对应的关键字,并将该关键字添加至关键字集合。

需要说明的是,主集群和副集群都是利用key-value存储数据的,每个key对应唯一的一个value,换句话说,主控制单元不仅需要管理数据本身的值,还需要管理该数据对应的key,key又可以称为关键字,后面描述中对此不再作区分。

进一步的,迁移模块完成了热点数据迁移之后,热点数据的存储位置发生了改变,即热点数据的存储地址等信息发生了改变,若客户端仍按照之前的方式,向主集群发送访问请求,请求访问该热点数据,将不能成功的访问到该热点数据。因此,迁移模块需要向所有与主集群和副集群通信的客户端发送通知消息(即迁移信息),以通知所有的客户端,热点数据已经迁移至副集群。客户端维护有一个关键字集合,客户端在接收到迁移信息之后,将该迁移信息中的热点数据对应的关键字添加到该关键字集合中,若客户端产生了业务请求,客户端判断业务请求中的关键字是否为关键字集合中的关键字,若是,则向副集群发送访问请求,若不是,则向主集群发送访问请求。

进一步的,迁移模块需要保证与主集群和副集群通信的所有客户端都接收到该迁移信息,以避免某些客户端没有接收到迁移信息,从而不能正确的访问该热点数据。可选的,迁移模块和客户端可以采用回复确认机制来保证所有的客户端都接收到该迁移信息,即迁移模块向与主集群和副集群通信的所有客户端发送迁移信息之后,接收所有客户端回复的确认消息,若迁移模块在预设时间内接收到所有客户端回复的确认消息,则可以确定所有的客户端已经成功的接收到迁移信息,若迁移模块在预设时间内没有接收到客户端回复的确认消息或接收到部分客户端回复的确认消息,则说明不是每一个客户端都已经成功的接收到迁移信息,迁移模块需要重复上述过程,再次向所有客户端发送迁移信息,直到在预设时间内接收到所有客户端回复的确认消息。可以理解,迁移模块还可以采用其它的确认方式或确认机制保证所有客户端接收到迁移信息,本申请对此不作限定。

可以看出,通过执行上述方法实施例,可以将主集群中的热点数据迁移至副集群,分散主集群的业务压力,避免主集群中业务压力过大,导致主集群中的主控制单元被击穿,甚至导致部署该主控制单元的物理设备瘫痪,实现主集群和副集群之间的负载均衡,保证主集群的高性能和可靠性。此外,还可以保证与主集群和副集群通信的客户端能够选择正确的集群进行访问,保证业务的高可靠性。

应理解,上述方法实施例所涉及的步骤s301至步骤s303只是示意性的描述概括,不应构成具体限定,可以根据需要对所涉及的步骤进行增加、减少或合并。

结合图2a、图2b和图2c所示的应用场景,参见图5,图5是本申请实施例提供的又一种热点数据的管理方法的流程示意图。如图5所示,该方法包括但不限于以下步骤:

s501:数据库服务器确定主集群管理的热点数据。

具体地,热点数据的识别过程和确定过程可以参照上述s301中的相关描述,为了简洁,在此不再赘述。

s502:数据库服务器判断是否满足将所示热点数据迁移至副集群的迁移条件。

具体地,判断过程可以参照上述s302中的相关描述,为了简洁,在此不再赘述。

s503:数据库服务器将热点数据迁移至副集群,并触发该热点数据访问路径的更新。

在一种可能的实现方式中,迁移模块在完成热点数据迁移之后,向与主集群和副集群通信的客户端发送第一迁移信息,该第一迁移信息包括热点数据和该热点数据对应的关键字,该第一迁移信息指示客户端将该热点数据和该热点数据对应的关键字记录至第一集合。

具体地,迁移模块从主集群中读取热点数据以及该热点数据对应的关键字,然后将该热点数据以及该热点数据对应的关键字写入副集群所管理的slot中。具体地迁移过程可以参照上述s303中的相关描述,这里不再赘述。但需要说明的是,迁移模块在迁移过程中,可能存在某些客户端对该热点数据的写操作,该写操作将会导致热点数据发生改变,也就是说,迁移模块从主集群中读取的热点数据与当前时刻主集群中的热点数据是不一致的,即迁移模块写入副集群的热点数据与主集群中的热点数据是不一致的。此外,如果在迁移过程中该热点数据发生改变,迁移模块是感知不到主集群中的热点数据已经发生了改变,迁移模块在将热点数据以及该热点数据对应的关键字写入副集群之后,向与主集群和副集群通信的所有客户端发送携带该热点数据以及该热点数据对应的关键字的第一迁移信息,该第一迁移信息中的热点数据与当前时刻主集群中的热点数据是不一致的。

进一步的,客户端维护有第一集合,该第一集合是一个数据缓冲集合,其中包括从主集群迁移至副集群,还未经过数据一致性验证的所有热点数据和热点数据对应的关键字,即第一集合中包括所述第一迁移信息中携带的热点数据和该热点数据对应的关键字。该第一集合用于配合监控进程保证数据一致性,客户端在接收到第一迁移信息并将该迁移信息中携带的热点数据以及该热点数据对应的关键字写入第一集合之后或者客户端中产生针对该热点数据的访问请求时,客户端中的调度模块访问主集群管理的该热点数据,从而比对该第一集合中的热点数据与主集群管理的该热点数据是否一致,从而可以判断出该热点数据是否在迁移过程中发生了改变。若一致,则说明迁移成功,即在迁移过程中该热点数据没有发生改变,迁移至副集群中的热点数据与原主集群管理的该热点数据一致,所有针对该热点数据的访问请求将直接访问副集群;若不一致,则说明迁移失败,即在迁移过程中该热点数据发生了改变,迁移至副集群中的热点数据与原主集群管理的该热点数据不一致,所有针对该热点数据的访问请求仍将访问主集群,至于是否需要重新迁移该热点数据,可以由部署在数据库服务器中的监控进程进行决定。

应理解,s503的一些具体实现细节可以参照上述步骤s303中的相关描述,为了简洁,在此不再赘述。

s504:数据库服务器确定副集群管理的非热点数据。

具体地,监控模块监控副集群管理的所有主控制单元,统计预设时间内每个主控制单元管理的数据的访问次数,当访问次数小于第四阈值时,将该数据确定为非热点数据。其中,预设时间可以是单位时间,例如1秒,第四阈值可以根据需要进行设置,可以与上述第二阈值设置为一样的值,也可以设置为小于第二阈值的值,本申请对此不作限定。

可选的,监控模块可以对副集群管理的所有主控制单元进行实时监控或者按照一定的周期进行周期性监控,周期可以根据需要进行设置,本申请对此不作限定。值得说明的是,副集群管理的数据相对于主集群来说比较少,所以副集群的业务压力比较小,因此对副集群管理的所有主控制单元进行实时监控或周期性监控对副集群的性能不会造成太大的影响,副集群仍旧可以正常提供服务,这点与主集群是不同的。

需要说明的是,s503和s504并不存在逻辑上的先后顺序,即可以先执行s503再执行s504;或者是先执行s504再执行s503;或者是同时执行s503和s504,,本申请对此不作限定。

s505:数据库服务器将非热点数据迁移至主集群,并触发该非热点数据访问路径的更新。

具体地,监控模块在副集群中确定非热点数据之后,需要将该非热点数据迁移至主集群以减少副集群的业务压力。迁移模块从副集群中读取该非热点数据以及该非热点数据对应的关键字,然后迁移模块利用哈希算法对读取到的非热点数据对应的关键字进行哈希计算,确定slot对应的标识,根据该标识可以确定主集群中管理该标识对应的slot的主控制单元,进而可以得到该主控制单元对应的ip地址和端口号。监控模块根据得到的ip地址和端口号,可以在主集群中找到该ip地址和端口号对应的主控制单元,然后将该非热点数据和该非热点数据对应的关键字写入该主控制单元管理的与计算得到的slot标识对应的slot中。

应理解,迁移模块将热点数据以及热点数据对应的关键字迁移至副集群,和迁移模块将非热点数据以及非热点数据迁移至主集群是一对相反的过程,具体的迁移细节等可以参照上述s303中的相关描述。

在一种可能的实现方式中,迁移模块将非热点数据从副集群迁移至主集群之后,向与主集群和副集群通信的客户端发送第二迁移信息,该第二迁移信息包括非热点数据和该非热点数据对应的关键字,该第二迁移信息指示客户端将该非热点数据和该非热点数据对应的关键字记录至第二集合。

具体地,与上述迁移模块将热点数据以及该热点数据对应的关键字迁移至副集群类似,迁移模块在迁移非热点数据的过程中,可能也存在着某些客户端对该非热点数据的写操作,该写操作将会导致非热点数据发生改变,即迁移模块从副集群中读取的非热点数据与当前时刻副集群中的非热点数据是不一致的,迁移模块写入主集群的非热点数据与副集群中的非热点数据是不一致的。此外,在迁移过程中如果该非热点数据发生改变,迁移模块是感知不到副集群中的非热点数据已经发生了改变,迁移模块在将非热点数据以及该非热点数据对应的关键字写入主集群之后,向与主集群和副集群通信的所有客户端发送携带该非热点数据以及该非热点数据对应的关键字的第二迁移信息,该第二迁移信息中的非热点数据与当前时刻副集群中的非热点数据是不一致的。

进一步的,客户端维护有第二集合,该第二集合也是一个数据缓冲集合,其中包括从副集群迁移至主集群,还未经过数据一致性验证的所有非热点数据和非热点数据对应的关键字,即第二集合中包括所述第二迁移信息中携带的非热点数据和该非热点数据对应的关键字。该第二集合也用于配合监控进程保证数据一致性,客户端在接收到第二迁移信息并将该迁移信息中携带的非热点数据以及该非热点数据对应的关键字写入第二集合之后或者该客户端中产生针对该非热点数据的访问请求时,客户端中的调度模块访问副集群管理的该非热点数据,从而比对该第二集合中的非热点数据与当前时刻副集群管理的该非热点数据是否一致,从而可以判断出该非热点数据是否在迁移过程中发生了改变。若一致,则说明迁移成功,即在迁移过程中该非热点数据没有发生改变,迁移至主集群中的非热点数据与副集群管理的该非热点数据一致,所有针对该非热点数据的访问请求将直接访问主集群;若不一致,则说明迁移失败,即在迁移过程中该非热点数据发生了改变,迁移至主集群中的非热点数据与副集群管理的非热点数据不一致,该客户端内所有针对该非热点数据的访问请求仍将访问副集群,至于是否需要重新迁移该非热点数据,可以由部署在数据库服务器中的监控进程进行决定。

需要说明的是,上述数据一致性的判断过程是由客户端侧执行并实现的,也可以由迁移模块完成数据一致性的判断。具体的,迁移模块在完成数据迁移之后,直接判断迁移前的数据与迁移完成后原集群中的数据是否一致,例如对于热点数据来说,迁移模块在将热点数据迁移至副集群之后,判断迁移前主集群中的热点数据与迁移完成后主集群中的热点数据是否一致,若一致,则说明数据未发生改变,迁移模块向与第一集群和第二集群通信的所有客户端发送迁移消息,该迁移消息中包括热点数据对应的关键字,客户端在接收到迁移消息之后,将热点数据对应的关键字更新至关键字集合;若不一致,则说明数据发生了改变,此次迁移失败。

应理解,上述方法实施例所涉及的步骤s501至步骤s505只是示意性的描述概括,不应构成具体限定,可以根据需要对所涉及的步骤进行增加、减少或合并。此外,图5所述的方法实施例中的具体细节可以参照上述s301-s303中的相关描述,为了简洁,在此不再赘述。

结合图2a、图2b和图2c所示的应用场景,参见图6,图6是本申请实施例提供的一种数据一致性校验方法的流程示意图。如图6所示,该方法包括但不限于以下步骤:

s601:调度模块接收迁移模块发送的迁移信息,更新第一集合或第二集合。

具体地,该迁移信息中包括主集群迁移至副集群的热点数据和该热点数据对应的关键字,或者是,该迁移信息中包括副集群迁移至主集群的非热点数据和该非热点你数据对应的关键字。第一集合中保存从主集群迁移至副集群的,还未经过数据一致性验证的热点数据和该热点数据对应的关键字,第二集合中保存从副集群迁移至主集群的,还未经过数据一致性验证的非热点数据和该非热点数据对应的关键字。

进一步的,具体实现过程可以参照上述s503中的相关描述,为了简洁,在此不再赘述。

s602:调度模块判断关键字集合中是否包括当前业务请求中的关键字,若包括,执行步骤s603,若不包括,执行步骤s604。

具体地,调度模块维护有关键字集合,关键字集合中包括主集群已经迁移至副集群的所有热点数据对应的关键字,即关键字集合中包括副集群当前存储管理且经过数据一致性验证的所有数据对应的关键字。

s603:调度模块判断第二集合中是否包括当前业务请求中的关键字,若包括,执行步骤s605,若不包括,执行步骤s606。

具体地,调度模块通过判断第二集合中是否包括当前业务请求中的关键字,可以得到该关键字对应的数据是否为副集群迁移至主集群的非热点数据。若第二集合包括当前业务请求中的关键字,则说明该关键字对应的数据是副集群迁移至主集群的非热点数据,反之,则说明该关键字对应的数据不是副集群迁移至主集群的非热点数据。具体判断过程可以参照上述s505中的相关描述。

s604:调度模块判断第一集合中是否包括当前业务请求中的关键字,若包括,执行步骤s607,若不包括,执行步骤s608。

s605:调度模块判断第二集合中与该关键字对应的数据和当前时刻副集群管理的该关键字对应的数据是否一致,若一致,执行步骤s609,若不一致,执行步骤s610。

具体地,调度模块通过判断第二集合中与该关键字对应的数据和当前时刻副集群管理的该关键字对应的数据是否一致来判断非热点数据在迁移过程中是否发生了改变,若一致,则说明该关键字对应的数据在从副集群迁移至主集群的过程中没有发生改变,该数据已经成功的迁移至主集群,反之,则说明该数据在从副集群迁移至主集群的过程中发生了改变,迁移失败。具体判断过程可以参照上述s504-s505中的相关描述。

s606:调度模块访问副集群。

s607:调度模块判断第一集合中与该关键字对应的数据和当前时刻主集群管理的该关键字对应的数据是否一致,若一致,执行步骤s611,若不一致,执行步骤s612。

具体地,调度模块通过判断第一集合中与该关键字对应的数据和当前时刻主集群管理的该关键字对应的数据是否一致来判断数据在迁移过程中是否发生了改变,若一致,则说明该关键字对应的数据在从主集群迁移至副集群的过程中没有发生改变,该数据已经成功的迁移至副集群,反之,则说明该数据在从主集群迁移至副集群的过程中发生了改变,迁移失败。具体判断过程可以参照上述s504-s505中的相关描述。

s608:调度模块访问主集群。

s609:调度模块删除关键字集合中的该关键字,删除第二集合中的该关键字以及该关键字对应的数据。

s610:调度模块删除第二集合中的该关键字以及该关键字对应的数据。

s611:调度模块将该关键字添加到关键字集合中,并删除第一集合中的该关键字以及该关键字对应的数据。

s612:调度模块删除第一集合中的该关键字以及该关键字对应的数据。

需要说明的是,图6所述的方法实施例中的具体细节可以参照上述图3所示的方法实施例中的步骤s301-s303以及图5所示的方法实施例中的步骤s501-s505中的相关描述,为了简洁,在此不再赘述。

上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。

参见图7a,图7a是本申请实施例提供的一种网络设备的结构示意图。该网络设备可以是上述图3所述的方法实施例中的数据库服务器,可以执行图3所述的热点数据管理的方法实施例中以数据库服务器为执行主体的方法和步骤。如图7a所示,所述网络设备710包括处理模块711、判断模块712和迁移模块713。其中,

处理模块711,用于确定第一集群管理的热点数据,所述第一集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,所述访问请求包括对数据的访问请求;

判断模块712,用于判断是否满足将所述热点数据迁移至第二集群的迁移条件,所述第二集群包括至少一个单线程的主控制单元,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理,所述第二集群用于管理满足迁移条件的所述热点数据;

迁移模块713,用于在满足所述迁移条件时,将所述热点数据迁移至所述第二集群,并触发对所述热点数据访问路径的更新。

参见图7b,图7b是本申请实施例提供的又一种网络设备的结构示意图。如图7b所示,该网络设备720包括处理模块721、判断模块722、迁移模块723和发送模块724。

作为一个实施例,所述第一集群中的第一主控制单元和所述第二集群中的第一主控制单元部署在不同的物理设备。

作为一个实施例,所述主控制单元管理至少一个哈希槽,所述哈希槽的标识为通过预设算法对数据映射得到的一个整数,所述哈希槽包括至少一个数据;所述第一集群中的第一主控制单元管理的哈希槽和所述第二集群中的第一主控制单元管理的哈希槽具有相同的标识。

作为一个实施例,所述处理模块721,用于从所述第一集群中读取所述热点数据和所述热点数据对应的关键字,并根据所述热点数据对应的关键字,在所述第二集群中确定第一哈希槽;所述迁移模块723,还用于将所述热点数据和所述热点数据对应的关键字迁移至所述第一哈希槽。

作为一个实施例,所述发送模块724,用于向与所述第一集群和所述第二集群通信的客户端发送迁移信息,所述迁移信息包括所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据对应的关键字记录至关键字集合,所述关键字集合用于所述客户端确定所述访问请求对应的目标集群,所述目标集群包括所述第一集群和所述第二集群。

作为一个实施例,所述处理模块721,还用于读取迁移完成后所述第一集群管理的所述热点数据,并验证所述热点数据与迁移前所述第一集群管理的所述热点数据是否一致;所述发送模块724,还用于当迁移完成后所述第一集群管理的所述热点数据与迁移前所述第一集群管理的所述热点数据一致时,向与所述第一集群和所述第二集群通信的客户端发送所述迁移信息。

作为一个实施例,所述发送模块724,用于向与所述第一集群和所述第二集群通信的客户端发送迁移信息,所述迁移信息携带所述热点数据和所述热点数据对应的关键字,所述迁移信息用于指示所述客户端将所述热点数据和所述热点数据对应的关键字记录至第一集合,所述第一集合用于所述客户端进行数据一致性判断。

作为一个实施例,所述处理模块721,还用于计算所述第一集群中每个主控制单元的资源使用量,对资源使用量超过第一阈值的主控制单元进行监控;统计预设时间内所述资源使用量超过第一阈值的主控制单元管理的每个数据的访问次数,将访问次数超过第二阈值的数据确定为热点数据。

作为一个实施例,所述判断模块722,还用于统计所述资源使用量超过第一阈值的主控制单元所管理的数据的总访问次数,当所述总访问次数超过第三阈值时,确定所述资源使用量超过第一阈值的主控制单元管理的热点数据满足所述迁移条件。

作为一个实施例,所述处理模块721,还用于监控所述第二集群,所述第二集群管理所述第一集群迁移至所述第二集群的热点数据;统计预设时间内所述热点数据的访问次数,当所述热点数据的访问次数小于第四阈值,将所述热点数据标记为非热点数据;所述迁移模块723,还用于将所述非热点数据迁移至所述第一集群,并触发对所述非热点数据访问路径的更新。

需要说明的是,上述网络设备的结构以及利用网络设备实现热点数据迁移的过程仅仅作为一种示例,不应构成具体限定,可以根据需要对网络设备中的各个单元进行增加、减少或合并。此外,网络设备中的各个模块的操作和/或功能为了实现上述图3所描述的方法的相应流程,为了简洁,在此不再赘述。

参见图8a,图8a是本申请实施例提供的一种客户端设备的结构示意图。该客户端设备可以是上述图5和图6所述的方法实施例中的设备,可以执行图5和图6所述的热点数据管理的方法实施例中以客户端为执行主体的方法和步骤。如图8a所示,所述客户端设备810包括处理模块811和发送模块812。其中,

处理模块811,用于根据业务请求中的关键字,查询关键字集合是否包括所述关键字,所述关键字集合包括第一集群迁移至第二集群的热点数据对应的关键字,所述第一集群和所述第二集群包括至少一个单线程的主控制单元,所述单线程的主控制单元一次处理一个访问请求,所述访问请求包括对数据的访问请求,所述访问请求所访问的数据由所述第一集群和所述第二集群共同管理;根据查询结果确定目标集群,所述目标集群包括所述第一集群或所述第二集群;

发送模块812,用于向所述目标集群发送访问请求,所述访问请求包括所述业务请求中的关键字。

参见图8b,图8b是本申请实施例提供的又一种网络设备的结构示意图。如图8b所示,该客户端设备820包括处理模块821、发送模块822和接收模块823。

作为一个实施例,所述接收模块823,用于接收数据库服务器发送的迁移信息,所述迁移信息包括所述热点数据对应的关键字;所述处理模块821,还用于将所述热点数据对应的关键字记录至关键字集合。

作为一个实施例,所述接收模块823,用于接收数据库服务器发送的第一迁移信息,所述第一迁移信息包括所述热点数据和所述热点数据对应的关键字;所述处理模块821,还用于将所述热点数据和所述热点数据对应的关键字记录至第一集合;所述接收模块823,还用于接收所述数据库服务器发送的第二迁移信息,所述第二迁移信息包括非热点数据和所述非热点数据对应的关键字;所述处理模块821,还用于将所述非热点数据和所述非热点数据对应的关键字记录至第二集合;其中,所述第一集合和所述第二集合用于缓存未进行数据一致性判断的数据。

作为一个实施例,所示处理模块821,还用于当所述关键字集合包括所述业务请求中的关键字时,确定所述第二集群为目标集群;所示处理模块821,还用于当所述关键字集合不包括所述业务请求中的关键字时,确定所述第一集群为目标集群。

需要说明的是,上述客户端设备的结构以及利用客户端设备实现热点数据迁移的过程仅仅作为一种示例,不应构成具体限定,可以根据需要对客户端设备中的各个单元进行增加、减少或合并。此外,客户端设备中的各个模块的操作和/或功能为了实现上述图5和图6所描述的方法的相应流程,为了简洁,在此不再赘述。

参见图9,图9是本申请实施例提供的一种网络设备的结构示意图。如图9所示,该网络设备900包括:处理器910、通信接口920以及存储器930,所述处理器910、通信接口920以及存储器930通过内部总线940相互连接。应理解,该网络设备可以是数据库服务器。

所述处理器910可以由一个或者多个通用处理器构成,例如中央处理器(centralprocessingunit,cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic)、可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld)、现场可编程逻辑门阵列(field-programmablegatearray,fpga)、通用阵列逻辑(genericarraylogic,gal)或其任意组合。

总线940可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。所述总线940可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。

存储器930可以包括易失性存储器(volatilememory),例如随机存取存储器(randomaccessmemory,ram);存储器930也可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-onlymemory,rom)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器930还可以包括上述种类的组合。存储器930可用于存储程序和数据,以便于处理器910调用存储器930中存储的程序代码和数据以实现上述处理模块711和721的功能。程序代码可以是用来实现图7a和图7b所示的功能模块,或者用于实现图3所示的方法实施例中以数据库服务器为执行主体的方法步骤。

参见图10,图10是本申请实施例提供的一种客户端设备的结构示意图。如图10所示,该客户端设备1000包括:处理器1100、通信接口1120以及存储器1130,所述处理器1110、通信接口1120以及存储器1130通过内部总线1140相互连接。应理解,该客户端设备可以是计算机或服务器。

所述处理器1110可以由一个或者多个通用处理器构成,例如cpu,或者cpu和硬件芯片的组合。上述硬件芯片可以是asic、pld或其组合。上述pld可以是cpld、fpga、gal或其任意组合。

总线1140可以是pci总线或eisa总线等。所述总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但不表示仅有一根总线或一种类型的总线。

存储器1130可以包括易失性存储器,例如ram;存储器1130也可以包括非易失性存储器,例如rom、快闪存储器、hdd或ssd;存储器1130还可以包括上述种类的组合。存储器1130可用于存储程序和数据,以便于处理器1110调用存储器1130中存储的程序代码和数据以实现上述处理模块811和821的功能。程序代码可以是用来实现图8a和图8b所示的功能模块,或者用于实现图5和图6所示的方法实施例中以客户端设备为执行主体的方法步骤。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图7a和图7b所描述的任意一个功能模块的功能。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤,以及实现上述图8a和图8b所描述的任意一个功能模块的功能。

本申请实施例还提供了一种计算机程序产品,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。上述所涉及的设备的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。

在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

应理解,本文中涉及的第一、第二、第三、第四以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

还应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1