一种服务器集群系统中的缓存方法、写入点客户端和读客户端的制作方法

文档序号:9219838阅读:457来源:国知局
一种服务器集群系统中的缓存方法、写入点客户端和读客户端的制作方法
【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种分布式服务器集群系统的缓存方法、客户端和存储系统。
【背景技术】
[0002]目前的分布式存储架构中,广泛采用机头(所谓机头即是能够实现将应用发来的请求分发到存储介质以及进行系统内部卷管理的客户端)加上物理介质侧的存储逻辑进程的架构,系统在处理应用发来的请求的时候,通常由客户端进行请求接收,然后再将请求转发到存储侧的进程进行处理。在此架构中,靠近物理介质的存储逻辑进程通常部署有Cache,进入存储逻辑进程的请求只需写入Cache中而不需要写入物理介质中就可以对外返回成功。为了能够进一步减少网络时延,一种有效的方法就是在客户端侧也部署一层分布式Cache。机头在接收到应用发来的请求后,对于写请求则将数据写入这一层分布式Cache中然后返回,通过这种方式对写时延来说,由于可以减少上述的一层网络时延而使得写的性能得到提高;而对于读请求,在分布式Cache中实现读Cache统计热点数据并进行缓存,提尚读请求在本地机头的命中率,从而也能够做到提尚读的性能。
[0003]在一种基于通用服务器集群的分布式存储系统结构下会出现多个服务器节点上的应用访问同一个卷上的数据的情形。具体来说,该分布式存储系统对外提供块接口,也就是说用户/应用看到的是一个个磁盘块设备,每个磁盘块设备对应了系统内部的一个卷,同时是通过客户端实现在服务器节点上挂载出一个个磁盘块设备的,那么在多个服务器上部署机头后,就可以针对系统内部的一个卷在多个服务器上都挂载出磁盘块设备。因而,当多个服务器上的应用访问某个磁盘块设备时,实际是在访问系统内部的同一个卷,也就是同一份数据源。
[0004]不可避免的,上述场景下一份数据源会有多个客户端并发进行读写,那么在客户端侧部署一层分布式Cache后,如何保证此场景下高性能要求的同时又维护客户端侧读Cache和写Cache的一致性是核心问题。
[0005]针对上述问题,现有的一种解决方案是通过维护一份数据关系目录提升读写的性能。虽然采取数据关系目录的方式,能够清晰记录出数据存放的位置,解决数据冲突的问题,但是该方案存在两个缺陷。首先,由于每一份数据可能在多个点进行更新,数据存放的位置是不固定的,这样导致的是数据关系目录这样一个关系结构会非常大,直接导致需要消耗较大的存储空间,且考虑故障场景,那么这份数据目录可能就需要进行持久化,带来的是更新数据关系目录的性能代价;其次,由于多个Cache中都持有一份数据目录,那么就必须保证该数据关系目录在多个Cache中的一致性,这就意味在处理读写请求的时候,需要检测是否该数据有出现过更新变动,检测是否有更新的操作是发生在1路径上的,因此这样也会阻碍读写性能的提升。

【发明内容】

[0006]有鉴于此,实有必要提供一种分布式服务器集群系统的缓存方法,以确保数据在服务器集群下的分布式Cache中的一致性。
[0007]第一方面,本发明实施例提出了一种服务器集群中写缓存一致性的方法,所述服务器集群包括η个服务器,η为多2的自然数,每个服务器配置有至少一个客户端,每个客户端配置有写缓存,所述写缓存用于6缓存写入所述每个客户端的数据,所述方法包括:
[0008]写入点客户端接收数据写入消息,所述数据写入消息请求写入待写入数据,根据所述待写入数据的特征值确定用于保存所述待写入数据的主写入客户端和至少一个备写入客户端,所述主写入客户端与每个备写入客户端分别归属于不同的服务器;
[0009]分别将所述待写入的数据发送到所述主写入客户端和所述每个备写入客户端各自的写缓存中;
[0010]当确定所述待写入数据在所述主写入客户端和所述每个备写入客户端都保存成功时,向所述主写入客户端和所述每个备写入客户端发送第一通知消息,所述第一通知消息用于告知所述主写入客户端及所述每个备写入客户端将各自记录的所述待写入数据的同步状态从未同步改为已同步。
[0011]结合第一方面,在第一种可能实现的方式中,当确定所述待写入的数据在所述主写入客户端或所述至少一个备写入客户端中发生写入失败时,向所述主写入客户端和所述至少一个备写入客户端中写成功的客户端发送第二通知消息,所述第二通知消息用于告知所述主写入客户端及所述至少一个备写入客户端中的写成功的客户端将自身记录的所述待写入数据的同步状态记为与写失败的客户端未同步。
[0012]结合第一方面或第一方面的第一种可能实现的方式,在第二种可能实现的方式中,所述根据所述待写入数据的特征值确定主写入客户端和至少一个备写入客户端,具体包括:
[0013]根据所述待写入数据的特征值,应用一致性哈希算法计算所述特征值对应的哈希值,根据所述哈希值确定所述待写入数据所属的分区partit1n ;
[0014]根据数据分布视图确定所述待写入数据所属的分区partit1n对应的所述主写入客户端和所述至少一个备写入客户端,所述数据分布视图用于指示每个分区partit1n各自对应的主写入客户端备写入客户端。
[0015]结合第一方面的第二种可能实现的方式,在第三种可能实现的方式中,其特征在于,所述根据数据分布视图确定所述待写入数据所属的分区partit1n对应的所述主写入客户端和所述至少一个备写入客户端包括:
[0016]根据所述数据分布视图确定所述待写入数据所属的分区partit1n对应的全部主写入客户端和全部备写入客户端;
[0017]判断所述待写入数据所属的分区partit1n对应的全部主写入客户端和全部备写入客户端中是否存在故障;
[0018]将所述待写入数据所属的分区partit1n对应的不存在故障的主写入客户端和不存在故障的备写入客户端确定为所述主写入客户端和所述至少一个备写入客户端。
[0019]第二方面,本发明实施例提出了一种服务器集群中读缓存一致性的方法,所述服务器集群包括η个服务器,η为多2的自然数,每个服务器配置有至少一个客户端,每个客户端配置有读缓存,所述读缓存用于缓存每个客户端中被应用频繁访问的热点数据,所述方法包括:
[0020]写入点客户端接收数据更新请求,所述数据更新请求用于请求更新待更新数据,根据所述待更新数据的特征值生成数据更新通知,所述数据更新通知携带指示所述待更新数据的所述特征值;
[0021]向所述服务器集群中的所述数据更新请求对应的读客户端发送所述数据更新通知,所述读客户端包括所述服务器集群中除所述写入点客户端之外的其它所有客户端,或者保存了所述待更新数据的客户端;
[0022]当接收到所述读客户端发送的所述待更新数据处理成功的响应消息,则发送所述待更新数据更新成功的响应消息,所述待更新数据更新成功的响应消息用于指示所述读客户端已针对所述待更新数据对所述读客户端各自的读缓存作了更新处理。
[0023]结合第二方面,在第一种可能实现的方式中,当所述读客户端为保存了所述待更新数据的客户端时,所述方法还包括:所述写入点客户端查找热点信息目录表,根据所述待更新数据的所述特征值确定所述读客户端,所述热点信息目录表用于指示所有在读缓存中缓存有所述待更新数据的客户端。
[0024]结合第二方面的第一种可能实现的方式,在第二种可能实现的方式中,在所述写入点客户端查找热点信息目录表之前,所述方法还包括:
[0025]所述写入点客户端接收来自所述读客户端广播的热点信息,将所述读客户端记录进所述热点信息目录表中,所述热点信息用于指示所述读客户端已经缓存有所述待更新数据。
[0026]第三方面,本发明实施例提出了一种服务器集群中读缓存一致性的方法,所述服务器集群包括η个服务器,η为多2的自然数,每个服务器配置有至少一个客户端,每个客户端配置有读缓存,所述读缓存用于缓存每个客户端中被应用频繁访问的热点数据,所述方法包括:
[0027]读客户端接收写入点客户端发送的数据更新通知,所述数据更新通知携带指示待更新数据的特征值,所述读客户端包括所述服务器集群中除所述写入点客户端之外的其它所有客户端,或者保存了所述待更新数据的客户端;
[0028]根据所述数据更新通知对所述读客户端各自的读缓存进行更新处理,并对所述写入点客户端发送待更新数据处理成功的响应消息。
[0029]结合第三方面,在第一种可能实现的方式中,所述根据所述数据更新通知对所述读客户端各自的读缓存进行更新处理,具体包括:所述读客户端根据所述特征值确认所述读客户端各自的读缓存中是否缓存有所述待更新数据,若确认没有缓存所述待更新数据,则添加所述待更新数据为失效的记录。
[0030]结合第三方面或第三方面的第一种可能实现的方式,在第二种可能实现的方式中,所述方法还包括:
[0031]所述读客户端在将所述待更新数据缓存进所述读客户端各自的读缓存中时,向所述服务器集群中除所述读客户端之外的其他所有客户端广播热点信息,所述热点信息用于指示所述读客户端已经缓存有所述待更新数据。
[0032]第四方面,本发明实施例提出了一种服务器集群中的写入点客户端,其特征在于,所述服务器集群包括η个服务器,η为多2的自然数,每个服务器配置有至少一个客户端,每个客户端配置有写缓存,所述写缓存用于缓存写入所述每个客户端的数据,所述写入点客户端包括:
[0033]接收模块,用于接收数据写入消息,所述数据写入消息请求写入待写入数据;
[0034]确定模块,用于根据所述待写入数据的特征值确定用于保存所述待写入数据的主写入客户端和至少一个备写入客户端,所述主写入客户端与每个备写入客户端分别归属于不同的服务器;
[0035]发送模块,用于分别将所述待写入的数据发送到所述主写入客户端和所述每个备写入客户端各自的写缓存中;
[0036]通知模块,用于当确定所述待写入数据在所述主写入客户端和所述每个备写入客户端都保存成功时,向所述主写入客户端和所述每个备写入客户端发送第一通知消息,所述第一通知消息用于告知所述主写入客户端及所述每个备写入客户端将各自记录的所述待写入数据的同步状态从未同步改为已同步。
[0037]结合第四方面,在第一种可能实现的方式中,当确定所述待写入的数据在所述主写入客户端或所述至少一个备写入客户端中发生写入失败时,则所述通知模块还用于发送第二通知消息,所述第二通知消息用于告知所述主写入客户端及所述至少一个备写入客户端中写成功的客户端将自身记录的所述待写入数据的同步状态记为与写失败的客户端未同步。
[0038]结合第四方面或第四方面的第一种可能实现的方式,在第二种可能实现的方式中,所述写入点客户端还包括数据分布视图,所述数据分布视图用于指示每个分区partit1n对应的主写入客户端和备写入客户端,则所述确定模块具体用于:根据所述待写入数据的特征值,应用一致性哈希算法计算所述待写入数据的特征值对应的哈希值,根据所述哈希值确定所述待写入数据所属的分区partit1n ;根据所述数据分布视图确定所述待写入数据所属的分区partit1n对应的所述主写入客户端和所述至少一个备写入客户端。
[0039]结合第四方面的第二种可能实现的方式,在第三种可能实现的方式中
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1