[发明专利]一种内存数据库的多节点数据同步方法与装置有效
申请号: | 201910580781.9 | 申请日: | 2019-06-29 |
公开(公告)号: | CN110413689B | 公开(公告)日: | 2022-04-26 |
发明(设计)人: | 王文庆 | 申请(专利权)人: | 苏州浪潮智能科技有限公司 |
主分类号: | G06F16/27 | 分类号: | G06F16/27 |
代理公司: | 北京连和连知识产权代理有限公司 11278 | 代理人: | 刘小峰 |
地址: | 215100 江苏省苏州市吴*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 数据库 节点 数据 同步 方法 装置 | ||
本发明公开了一种内存数据库的多节点数据同步方法与装置包括:响应于复制缓冲区的空间足以存储同步命令,而将同步命令直接存储在复制缓冲区中;响应于复制缓冲区的空间不足以存储同步命令、但文件复制缓冲区的空间足以存储同步命令,而将同步命令存储在文件复制缓冲区中,并进一步将同步命令从文件复制缓冲区迁移到文件队列,将文件队列中的同步命令与磁盘中的待同步数据建立对应关系;响应于复制缓冲区和文件复制缓冲区的空间均不足以存储同步命令,而等待文件复制缓冲区获得足以存储同步命令的空间。本发明能够保护复制缓冲区内的数据不被覆盖,维持数据库内多节点之间的数据同步并且提高数据整体的同步效率。
技术领域
本发明涉及计算机领域,更具体地,特别是指一种内存数据库的多节点数据同步方法与装置。
背景技术
随着网络技术飞速发展,数据呈现出大规模和高并发的特点,越来越多的互联网应用开始关注高并发读、低延时写、海量数据存储、高可扩展性、高可用性等新需求,而传统关系型数据库在面对这些情况时,已不能很好地满足其实时性,快速响应等需求。Redis作为一种基于键值对模型的高速缓存数据库,具有开源,网络化,基于内存,可进行数据持久化操作等特性,没有关系型数据库范式等特性约束,在很大程度上解决了关系型数据库所面临的问题。
但Redis存在复制缓冲区写满问题:为保证复制连接重新建立后,主从节点间能够执行部分同步,Redis的主节点使用复制缓冲区存放需传播到从节点的写命令。Redis使用的复制缓冲区是一个由主服务器维护的固定长度的先进先出对接,大小为1M,可调整固定长度的先进先出队列:出队、入队方式与普通先进先出队列一致,新元素由一边进入,旧元素由另一边弹出。复制缓冲区被写满后,队尾数据会覆盖队头数据。一旦复制缓冲区中存储的待同步数据被覆盖,主节点和从节点只能被迫执行一次完全同步。完全同步太过笨重,不仅占用CPU、消耗大量的内存空间,还会对系统性能产生极大影响。
针对现有技术中复制缓冲区溢出导致多节点失同步的问题,目前尚未有有效的解决方案。
发明内容
有鉴于此,本发明实施例的目的在于提出一种内存数据库的多节点数据同步方法与装置,能够保护复制缓冲区内的数据不被覆盖,维持数据库内多节点之间的数据同步并且提高数据整体的同步效率。
基于上述目的,本发明实施例的第一方面提供了一种内存数据库的多节点数据同步方法,包括:
响应于收到同步命令,检测复制缓冲区和文件复制缓冲区的空间;
响应于复制缓冲区的空间足以存储同步命令,而将同步命令直接存储在复制缓冲区中;
响应于复制缓冲区的空间不足以存储同步命令、但文件复制缓冲区的空间足以存储同步命令,而将同步命令存储在文件复制缓冲区中,并进一步将同步命令从文件复制缓冲区迁移到文件队列,将文件队列中的同步命令与磁盘中的待同步数据建立对应关系;
响应于复制缓冲区和文件复制缓冲区的空间均不足以存储同步命令,而等待文件复制缓冲区获得足以存储同步命令的空间。
在一些实施方式中,方法还包括:
响应于接收到执行同步命令的指示而执行以下步骤;
尝试从复制缓冲区直接读取并执行同步命令;
响应于同步命令未存储于复制缓冲区中,而尝试从文件复制缓冲区读取并执行同步命令;
响应于同步命令未存储于复制缓冲区或文件复制缓冲区中,而尝试从文件队列中取同步命令,并进一步根据对应关系而从磁盘中读取并同步待同步数据。
在一些实施方式中,复制缓冲区为由多个固定大小的内存块构成的内存队列;
在一些实施方式中,响应于复制缓冲区的空间足以存储同步命令,而将同步命令直接存储在复制缓冲区中包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州浪潮智能科技有限公司,未经苏州浪潮智能科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910580781.9/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置