[发明专利]基于多线程异步双写的分布式缓存高可用处理方法及系统在审
申请号: | 201310425435.6 | 申请日: | 2013-09-17 |
公开(公告)号: | CN103500120A | 公开(公告)日: | 2014-01-08 |
发明(设计)人: | 牛晓亮 | 申请(专利权)人: | 北京思特奇信息技术股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F11/14;G06F11/16 |
代理公司: | 北京轻创知识产权代理有限公司 11212 | 代理人: | 杨立 |
地址: | 100086 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 多线程 异步 分布式 缓存 可用 处理 方法 系统 | ||
技术领域
本发明涉及分布式缓存系统及云计算领域,尤其涉及一种基于多线程异步双写的分布式缓存高可用处理方法及系统。
背景技术
在互联网、电信等许多关键领域,随着企业业务的不断发展,企业的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’:并将获取的操作命令发送给相应的服务器进行处理;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京思特奇信息技术股份有限公司,未经北京思特奇信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310425435.6/2.html,转载请声明来源钻瓜专利网。