基于多线程异步双写的分布式缓存高可用处理方法及系统技术方案

技术编号:9545301 阅读:177 留言:0更新日期:2014-01-08 21:35
本发明专利技术涉及基于多线程异步双写的分布式缓存高可用处理方法及系统,包括应用端将产生的操作命令发送给分布式缓存客户端;分布式缓存客户端判断操作命令的类型,如果是插入、删除或更新中的任一种,则在第一服务器集群和第二服务器集群中均执行该操作命令,保证了数据的安全性;在服务器集群处理操作命令时,先用命令队列存储操作命令,再启动多个线程处理队列中的操作命令;分布式缓存客户端向命令队列中放入命令与服务器集群处理命令队列中的命令是异步执行的,提高了数据处理效率;如果是查询命令,则默认在第一服务器集群中执行该操作命令,当在第一服务器集群中执行失败时,在第二服务器集群中执行该命令;保证业务的不间断性和高可用性。

【技术实现步骤摘要】
【专利摘要】本专利技术涉及基于多线程异步双写的分布式缓存高可用处理方法及系统,包括应用端将产生的操作命令发送给分布式缓存客户端;分布式缓存客户端判断操作命令的类型,如果是插入、删除或更新中的任一种,则在第一服务器集群和第二服务器集群中均执行该操作命令,保证了数据的安全性;在服务器集群处理操作命令时,先用命令队列存储操作命令,再启动多个线程处理队列中的操作命令;分布式缓存客户端向命令队列中放入命令与服务器集群处理命令队列中的命令是异步执行的,提高了数据处理效率;如果是查询命令,则默认在第一服务器集群中执行该操作命令,当在第一服务器集群中执行失败时,在第二服务器集群中执行该命令;保证业务的不间断性和高可用性。【专利说明】基于多线程异步双写的分布式缓存高可用处理方法及系统
本专利技术涉及分布式缓存系统及云计算领域,尤其涉及一种基于多线程异步双写的 分布式缓存高可用处理方法及系统。
技术介绍
在互联网、电信等许多关键领域,随着企业业务的不断发展,企业的I/T环境也在 不断进行演变,单个缓存已经很难满足大量数据的存储、高并发和高效率的访问数据,分布 式缓存的出现成为必然,分布式缓存能够有效的解决并发问题,通过一致性哈希将数据切 合到缓存集群中不同的节点上,有效的缓解了大量数据存储和高效率的访问。但是单个分 布式缓存集群无法保障数据的安全性,不能保证大量并发写入数据和删除数据的性能,如 何保障缓存中数据的安全和高可用成为分布式缓存系统需要面对的问题。现有分布式缓存系统虽然支持分布式部署,多台服务器构成集群,集群作为一个 逻辑上整体的缓存服务器,但是内部单个缓存服务器节点上存储的数据没有允余,如果该 节点发生故障则会导致应用程序无法查询数据,导致业务中断或者错误。当然,也有解决这 个问题的一些方案,如快照,数据持久化等,这些方案由于备份时间的差异,会导致数据的 不一致性或者导致数据的丢失。现有系统存在以下问题:1.应用程序通过客户端执行数据存入和删除等操作是同步的,及应用程序要等待 服务端返回操作的状态才算操作结束,这其中就包括网络连接时间,操作时间等,花费时间 较长。2.服务器集群中各节点根据一致性Hash标示,所以各节点上存储的数据各不一 致,没有数据备份,如果某个数据节点发生故障即导致该节点数据丢失,应用程序中断或者 错误。3.应用程序读取数据一致在一个集群中进行,倘若多次查询同一数据,则某个节 点负载较大,操作等待时间较长。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足,提供一种基于多线程异步双 写的分布式缓存高可用处理方法及系统。本专利技术解决上述技术问题的技术方案如下:基于多线程异步双写的分布式缓存高 可用处理方法,包括如下步骤:步骤1:每个应用端产生一个操作命令;步骤2:应用端将操作命令发送给分布式缓存客户端;步骤3:分布式缓存客户端解析操作命令,判断操作命令的类型,如果是插入、删 除或更新中的任一种,则进入步骤4 ;如果是查询命令,则进入步骤5 ;步骤4:在第一服务器集群和第二服务器集群中均执行该操作命令,结束;步骤5:默认在第一服务器集群中执行该操作命令,当在第一服务器集群中执行 失败时,在第二服务器集群中执行该命令,结束。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述步骤4具体步骤如下:步骤4.1:分布式缓存客户端将接收的操作命令分别发送给第一服务器集群的第 一命令队列和第二服务器集群的第二命令队列;步骤4.2:判断第一命令队列和第二命令队列是否已满,如果已满,则等待,待有 空位时,将操作命令则放入第一命令队列和第二命令队列进行存储,同时向应用程序返回 成功标识;如果未满,则直接将操作命令放入第一命令队列和第二命令队列进行存储,同时 向应用程序返回成功标识;步骤4.3:第一服务器集群和第二服务器集群对各自存储的操作命令进行多线程 处理,结束。进一步,步骤4.1与步骤4.3是异步执行的。进一步,步骤4.3的具体步骤如下:进一步,步骤4.3中第一服务器集群执行操作命令的具体步骤如下:步骤4.3.1:第一服务器集群的第一多线程操作模块从第一命令队列中获取若干 个操作命令;步骤4.3.2:并将获取的操作命令发送给相应的服务器进行处理;步骤4.3.3:判断每个服务器是否执行成功,执行成功的服务器向第一多线程操 作模块返回成功标识,进入步骤4.3.4 ;执行失败的服务器向多线程操作模块返回失败标 识,进入步骤4.3.5 ;步骤4.3.4:第一多线程操作模块继续从第一命令队列中获取操作命令,返回步 骤 4.3.2 ;步骤4.3.5:第一多线程操作模块将处理失败的命令重新放入第一命令队列中, 返回步骤4.3.1。进一步,步骤4.3中第二服务器集群执行操作命令的具体步骤如下:步骤4.3.1’:第二服务器集群的第二多线程操作模块从第二命令队列中获取若干 个操作命令;步骤4.3.2’:并将获取的操作命令发送给相应的服务器进行处理;步骤4.3.3’:判断每个服务器是否执行成功,执行成功的服务器向第二多线程操 作模块返回成功标识,进入步骤4.3.4’ ;执行失败的服务器向多线程操作模块返回失败标 识,进入步骤4.3.5’ ;步骤4.3.4’:第二多线程操作模块继续从第二命令队列中获取操作命令,返回步 骤 4.3.2’ ;步骤4.3.5’:第二多线程操作模块将处理失败的命令重新放入第二命令队列中, 返回步骤4.3.1’。进一步,步骤5的具体步骤如下:步骤5.1:分布式缓存客户端将接收的操作命令直接发送给第一服务器集群中相 应的服务器;步骤5.2:相应的服务器执行查找操作,如果查找成功则通过分布式缓存客户端 向应用端返回成功标识和查询结果,结束;否则向分布式缓存客户端返回失败标识,进入步 骤 5.3 ;步骤5.3:分布式缓存客户端向第二服务器集群中相应的服务器发送该操作命 令;步骤5.4:相应的服务器执行查找操作,如果查找成功则通过分布式缓存客户端 向用于程序模块返回成功标识和查询结果,结束;否则向分布式缓存客户端返回失败标识, 结束。本专利技术解决上述技术问题的另一技术方案如下:基于多线程异步双写的分布式缓 存高可用处理系统,包括若干个应用端、分布式缓存客户端、第一服务器集群和第二服务器 集群;所述应用端,其用于产生操作命令并发送给分布式缓冲客户端;所述分布式缓存客户端,其用于解析接收的操作命令,并判断操作命令的类型,根 据操作命令的类型将操作命令发送给第一服务器集群的第一命令队列和第二服务器集群 的第二命令队列,或直接发送给第一服务器集群中相应的服务器;所述第一服务器集群和第二服务器集群,其用于存储接收的操作命令,并根据操 作命令执行相应的操作。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步,所述第一服务器集群包括第一命令队列、第一多线程操作模块和若干个 服务器;第二服务器集群分别包括第二命令队列、第二多线程操作模块和若干个服务器;所述第一命令队列和第二命令队列,其用于存储分布式缓存客户端发送的操作命 令;所述第一多线程操作模块、其用于获取第一命令队列中的操作命令,并根据操作 命令中的参数将操作命令发送给第一服务器集群中相应的服务器;第二多线程操作模块,其用于获取第二命令队列中的本文档来自技高网
...

【技术保护点】
基于多线程异步双写的分布式缓存高可用处理方法,其特征在于,包括如下步骤:步骤1:每个应用端产生一个操作命令;步骤2:应用端将操作命令发送给分布式缓存客户端;步骤3:分布式缓存客户端解析操作命令,判断操作命令的类型,如果是插入、删除或更新中的任一种,则进入步骤4;如果是查询命令,则进入步骤5;步骤4:在第一服务器集群和第二服务器集群中均执行该操作命令,结束;步骤5:默认在第一服务器集群中执行该操作命令,当在第一服务器集群中执行失败时,在第二服务器集群中执行该命令,结束。

【技术特征摘要】

【专利技术属性】
技术研发人员:牛晓亮
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:

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

1