本发明提出了一种基于一致性hash的本地缓存方法和系统,属于本地缓存。
背景技术:
1、通常来讲后端服务器为集群部署,需要一个负载均衡服务器将客户的请求发到不同的服务器上。如果每个服务器使用本地缓存,那么对于同一个请求,可能会被分配到不同的结点中,这就导致了两个问题:1.严重的缓存未命中;2.不同节点都要缓存同样的数据,这将会导致内存浪费和极其严重的数据一致性问题
技术实现思路
1、本发明提供了一种基于一致性hash的本地缓存方法和系统,用以解决现有技术中的本地缓存极易出现内存浪费和极其严重的数据一致性的问题,所采取的技术方案如下:
2、一种基于一致性hash的本地缓存方法,所述基于一致性hash的本地缓存方法包括:
3、调取目标用户的需求信息;
4、调取管理缓存节点的节点信息;
5、根据管理缓存节点的节点信息构建一致性哈希环;
6、根据目标用户的数据需求对一致性哈希环上的数据进行缓存或调取。
7、进一步地,调取目标用户的需求信息,包括:
8、实时监测所述目标用户输入的需求信息;
9、对所述用户输入的需求信息进行解析,获取解析结果;
10、其中,解析结果包括用户需求的本地缓存使用场景、本地缓存性能要求和本地缓存数据一致性需求。
11、进一步地,调取管理缓存节点的节点信息,包括:
12、调取管理缓存节点的节点唯一标识符,并对所述节点唯一标识符进行扫描,判断节点唯一标识符的数量是否与所述缓存节点的个数一致;
13、当节点唯一标识符的数量是否与所述缓存节点的个数一致时,设置调取次数,按照所述调取次数重新调取节点唯一标识符直至完成调取次数;其中,所述调取次数为:
14、n=int[(2-m0/m)×10]
15、其中,n表示调取次数;int[]表示向上取整运算;m0表示当前已检测到的节点唯一标识符的个数;m表示节点唯一标识符的总个数;
16、当按照所述调取次数完成调取后,重新断节点唯一标识符的数量是否与所述缓存节点的个数一致,当节点唯一标识符的数量是否与所述缓存节点的个数一致时,进行报警;
17、调取管理缓存节点的节点ip地址信息;
18、调取管理缓存节点的节点端口信息。
19、进一步地,根据管理缓存节点的节点信息构建一致性哈希环,包括:
20、根据目标用户输入的需求信息调取一致性哈希环;
21、提取所述管理缓存节点的节点唯一标识符;
22、根据所述管理缓存节点的节点唯一标识符确定所述一致性哈希环上的缓存节点的在环位置。
23、进一步地,根据目标用户的数据需求对一致性哈希环上的数据进行缓存或调取,包括:
24、当接收到用户发送的存储请求时,使用一致性哈希环将请求的关键信息(通常是请求的key)映射到一致性哈希环上的一个缓存节点位置;
25、在缓存节点上存储和检索数据,当数据需要存储时,根据请求的key计算哈希值,并将数据存储在哈希值对应的缓存节点上,当需要检索数据时,使用相同的哈希计算找到数据所在的缓存节点,并对所述缓存节点上的数据进行调取。
26、一种基于一致性hash的本地缓存系统,所述基于一致性hash的本地缓存系统包括:
27、需求信息调取模块,用于调取目标用户的需求信息;
28、节点信息调取模块,用于调取管理缓存节点的节点信息;
29、一致性哈希环构建模块,用于根据管理缓存节点的节点信息构建一致性哈希环;
30、数据缓存或调取模块,用于根据目标用户的数据需求对一致性哈希环上的数据进行缓存或调取。
31、进一步地,所述需求信息调取模块包括:
32、需求信息监测模块,用于实时监测所述目标用户输入的需求信息;
33、解析结果获取模块,用于对所述用户输入的需求信息进行解析,获取解析结果;
34、其中,解析结果包括用户需求的本地缓存使用场景、本地缓存性能要求和本地缓存数据一致性需求。
35、进一步地,所述节点信息调取模块包括:
36、唯一标识符调取模块,用于调取管理缓存节点的节点唯一标识符;并对所述节点唯一标识符进行扫描,判断节点唯一标识符的数量是否与所述缓存节点的个数一致;
37、重复调取模块,用于当节点唯一标识符的数量是否与所述缓存节点的个数一致时,设置调取次数,按照所述调取次数重新调取节点唯一标识符直至完成调取次数;其中,所述调取次数为:
38、n=int[(2-m0/m)×10]
39、其中,n表示调取次数;int[]表示向上取整运算;m0表示当前已检测到的节点唯一标识符的个数;m表示节点唯一标识符的总个数;
40、个数一致性判断模块,用于当按照所述调取次数完成调取后,重新断节点唯一标识符的数量是否与所述缓存节点的个数一致,当节点唯一标识符的数量是否与所述缓存节点的个数一致时,进行报警;
41、ip地址信息调取模块,用于调取管理缓存节点的节点ip地址信息;
42、端口信息调取模块,用于调取管理缓存节点的节点端口信息。
43、进一步地,所述一致性哈希环构建模块包括:
44、一致性哈希环调取模块,用于根据目标用户输入的需求信息调取一致性哈希环;
45、唯一标识符提取模块,用于提取所述管理缓存节点的节点唯一标识符;
46、在环位置确定模块,用于根据所述管理缓存节点的节点唯一标识符确定所述一致性哈希环上的缓存节点的在环位置。
47、进一步地,所述数据缓存或调取模块包括:
48、映射模块,用于当接收到用户发送的存储请求时,使用一致性哈希环将请求的关键信息(通常是请求的key)映射到一致性哈希环上的一个缓存节点位置;
49、数据缓存或调取执行模块,用于在缓存节点上存储和检索数据,当数据需要存储时,根据请求的key计算哈希值,并将数据存储在哈希值对应的缓存节点上,当需要检索数据时,使用相同的哈希计算找到数据所在的缓存节点,并对所述缓存节点上的数据进行调取。
50、本发明有益效果:
51、本发明提出的一种基于一致性hash的本地缓存方法和系统使用一致性hash算法作为负载均衡算法,解决了同一个key的请求分配到不同服务器导致的内存浪费于数据不一致问题。一致性哈希环的使用可以实现数据的负载均衡,确保缓存节点之间的数据分布均匀,降低了单一节点的负载。一致性哈希环提供了一种高效的数据查找机制,用户可以快速找到最适合的缓存节点,减少了数据查找时间。系统可以根据目标用户的需求,将数据缓存在最接近用户的节点上,提高数据访问速度和满足用户需求。有助于实现数据缓存和调取的高效管理,通过一致性哈希环的使用,可以提供良好的性能、负载均衡和容错性,以满足目标用户的数据需求。