一种分布式缓存和数据存储一致性处理系统及方法技术方案

技术编号:38130276 阅读:7 留言:0更新日期:2023-07-08 09:37
本申请公开了一种分布式缓存和数据存储一致性处理系统及方法,系统包括计算层、缓存层、日志层以及存储层,其中:计算层解析用户的SQL请求,并转化成事务请求发送给缓存层,计算层还用于接收缓存层数据,并执行相应SQL计算;将查询结果返回给用户;缓存层通过协调节点将事务请求所对应访问的数据分片进行分解,并发送到对应的缓存工作节点进行执行;日志层根据缓存层处理结果生成处理过程记录;存储层基于所生成处理过程记录,将处理过程中产生的基线数据和冷数据异步写入到存储节点。本申请具有缓存持久化,事务并发读写以及缓存和数据存储的对外一致性的特点。的对外一致性的特点。的对外一致性的特点。

【技术实现步骤摘要】
一种分布式缓存和数据存储一致性处理系统及方法


[0001]本专利技术涉及数据缓存
,特别涉及一种分布式缓存和数据存储一致性处理系统及方法。

技术介绍

[0002]传统数据库系统在高并发负载的情况下,容易触发系统性能瓶颈。为了降低数据库压力,通常采用分布式缓存系统与数据库结合使用。数据通常采用双写的方式,同时写入分布式缓存和数据库系统。数据查询操作会优先读取分布式缓存,如果发生缓存未命中,则读取数据库,并将新数据回填到分布式缓存中。该方案在发生节点宕机的情况,容易产生缓存数据和数据库数据的不一致性等问题,比如查询操作读取到缓存的数据,但在数据库中不存在,从而产生脏读。

技术实现思路

[0003]基于此,本申请实施例提供了一种分布式缓存和数据存储一致性处理系统及方法,可以解决了解决分布式缓存和数据库系统的一致性问题。
[0004]第一方面,提供了一种分布式缓存和数据存储一致性处理系统,该系统包括计算层、缓存层、日志层以及存储层,其中:计算层,用于解析用户的SQL请求,并转化成事务请求发送给缓存层;还用于接收缓存层数据,并执行相应SQL计算;将查询结果返回给用户;缓存层,用于通过协调节点将所述事务请求所对应访问的数据分片进行分解,并发送到对应的缓存工作节点进行执行;其中,所述事务请求对应多个数据分片,每个数据分片对应一个缓存节点;日志层,用于根据缓存层处理结果生成处理过程记录;具体地,通过启动日志集群,对于集群中的每个日志节点独立初始化日志状态机;其中,日志状态机的初始状态为空;将日志集群中的多个日志节点形成至少一个Raft组,对于每个Raft组通过Raft协议选取当前Raft组的主节点,其他日志节点作为从节点;所述Raft组用以处理缓存节点的写日志请求;存储层,用于基于所生成处理过程记录,将处理过程中产生的基线数据和冷数据异步写入到存储节点。
[0005]可选地,所述缓存层还包括:启动缓存集群,对于集群中每个缓存节点初始化工作线程池,每个工作线程负责一个数据分片的数据;缓存节点之间建立RPC stream,用来接受远端其他缓存节点的数据请求;缓存节点的每个工作线程还作为事务协调者,处理计算层发来的事务请求。具体来说,工作线程循环处理计算层的事务请求和所属数据分片的数据请求;将缓存集群的多个缓存节点形成一个缓存Raft组,通过Raft协议选取缓存Raft组
的主节点,其他缓存节点作为从节点;所述缓存Raft组用以提供数据写入和查询的服务;具体的,Raft从节点不需要存储数据分片的实际数据,当且仅当Raft主节点发生故障,从节点被选举成主节点时,执行日志重放过程,从日志层获取没有写入存储层的增量数据;针对该数据分片的基线数据,新的主节点可以从存储层获取。
[0006]可选地,当用户的SQL请求为插入请求时,所述系统还包括:计算层对所述插入请求进行解析,生成Key和Record键值对作为待插入数据的内存格式;缓存层将Key和Record写入事务状态机的本地写集合,并向计算层返回插入语句成功响应;将事务状态机设置为加锁操作,并针对本地写集合中所有的Key,计算Key所属于的数据分片,并向数据分片发送加锁请求;当加锁请求处理完成,将事务状态机设置为生成全局提交时间戳操作;可选地,所述全局提交时间戳大于节点的本地时间戳、加锁Key的最近读验证时间戳、加锁Key的提交时间戳中的任意一个时间戳。
[0007]可选地,所述系统还包括:在缓存层生成提交时间戳后,将事务状态机设置为写日志操作;将本地写集合中的Key和Record进行序列化,并写入到日志;当写日志操作成功,更新事务状态为已提交,缓存层将本地写集合中的Key和Record,上传到本地或远端的数据分片,并执行释放写锁请求。
[0008]可选地,当写日志操作失败,更新事务状态为已回滚,缓存层将本地写集合中的Key,向本地或者远端数据分片,发送释放锁请求,完成事务清理工作。
[0009]可选地,当用户的SQL请求为查询请求时,所述系统还包括:计算层对所述查询请求进行解析,确定最优扫描策略;其中,所述扫描策略至少包括顺序扫描和索引扫描;其中,针对主键索引扫描,计算层发送主键Key到缓存层协调节点;缓存层确定主键Key所在的数据分片节点,并向该节点发送读数据请求;并将读数据请求的结果返回给缓存层协调节点。
[0010]可选地,针对二级索引扫描和顺序扫描,计算层发送扫描起始键Key,缓存层协调节点读取起始键所在的数据分片,并进行遍历;当读取完所有数据,或者遇到索引扫描的终止条件,发送扫描关闭请求。
[0011]可选地,所述缓存层还包括:将事务状态机设置为生成全局提交时间戳操作,将事务状态机设置为读验证操作;将本地读集合中的Key及其时间戳信息,发送给数据分片;并将事务的提交状态返回给计算层。
[0012]第二方面,提供了一种分布式缓存和数据存储一致性处理方法,实现与上述第一方面任一所述的分布式缓存和数据存储一致性处理系统,该方法包括:解析用户的SQL请求,并转化成事务请求发送给缓存层;通过协调节点将所述事务请求所对应访问的数据分片进行分解,并发送到对应的缓存工作节点进行执行;其中,所述事务请求对应多个数据分片,每个数据分片对应一个缓存节点;
根据缓存层处理结果生成处理过程记录;具体地,通过启动日志集群,对于集群中的每个日志节点独立初始化日志状态机;其中,日志状态机的初始状态为空;将日志集群中的多个日志节点形成至少一个Raft组,对于每个Raft组通过Raft协议选取当前Raft组的主节点,其他日志节点作为从节点;所述Raft组用以处理缓存节点的写日志请求;基于所生成处理过程记录,将处理过程中产生的基线数据和冷数据异步写入到存储节点。
[0013]本申请实施例提供的技术方案中,包括计算层、缓存层、日志层以及存储层,其中:计算层解析用户的SQL请求,并转化成事务请求发送给缓存层;缓存层将事务请求进行分解为多个数据分片,并通过各个缓存节点对多个数据分片进行处理,并将处理后的热数据进行缓存;日志层根据缓存层处理结果生成处理过程记录;存储层基于所生成处理过程记录,将处理过程中产生的基线数据和冷数据异步写入到存储节点。可以看出,本申请的有益效果在于具有缓存持久化,事务并发读写的特点。
附图说明
[0014]为了更清楚地说明本专利技术的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。
[0015]图1为本申请实施例提供的数据基层的数据写入流程图;图2为本申请实施例提供的数据基层的数据读取流程图。
具体实施方式
[0016]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式缓存和数据存储一致性处理系统,其特征在于,所述系统包括计算层、缓存层、日志层以及存储层,其中:计算层,用于解析用户的SQL请求,并转化成事务请求发送给缓存层;还用于接收缓存层数据,并执行相应SQL计算;将查询结果返回给用户;缓存层,用于通过协调节点将所述事务请求所对应访问的数据分片进行分解,并发送到对应的缓存工作节点进行执行;其中,所述事务请求对应多个数据分片,每个数据分片对应一个缓存节点;日志层,用于根据缓存层处理结果生成处理过程记录;具体地,通过启动日志集群,对于集群中的每个日志节点独立初始化日志状态机;其中,日志状态机的初始状态为空;将日志集群中的多个日志节点形成至少一个Raft组,对于每个Raft组通过Raft协议选取当前Raft组的主节点,其他日志节点作为从节点;所述Raft组用以处理缓存节点的写日志请求;存储层,用于基于所生成处理过程记录,将处理过程中产生的基线数据和冷数据异步写入到存储节点。2.根据权利要求1所述的分布式缓存和数据存储一致性处理系统,其特征在于,所述缓存层还包括:启动缓存集群,对于集群中每个缓存节点初始化工作线程池,每个工作线程负责一个数据分片的数据;缓存节点之间建立RPC stream,用来接受远端其他缓存节点的数据请求;缓存节点的每个工作线程还作为事务协调者,处理计算层发来的事务请求;具体来说,工作线程循环处理计算层的事务请求和所属数据分片的数据请求;将缓存集群的多个缓存节点形成一个缓存Raft组,通过Raft协议选取缓存Raft组的主节点,其他缓存节点作为从节点;所述缓存Raft组用以提供数据写入和查询的服务;具体的,Raft从节点不需要存储数据分片的实际数据,当且仅当Raft主节点发生故障,从节点被选举成主节点时,执行日志重放过程,从日志层获取没有写入存储层的增量数据;针对该数据分片的基线数据,新的主节点可以从存储层获取。3.根据权利要求1所述的分布式缓存和数据存储一致性处理系统,其特征在于,当用户的SQL请求为插入请求时,所述系统还包括:计算层对所述插入请求进行解析,生成Key和Record键值对作为待插入数据的内存格式;缓存层将Key和Record写入事务状态机的本地写集合,并向计算层返回插入语句成功响应;将事务状态机设置为加锁操作,并针对本地写集合中所有的Key,计算Key所属于的数据分片,并向数据分片发送加锁请求;当加锁请求处理完成,将事务状态机设置为生成全局提交时间戳操作。4.根据权利要求3所述的分布式缓存和数据存储一致性处理系统,其特征在于,所述全局提交时间戳大于节点的本地时间戳、加锁Key的最近读验证时间戳、加锁Key的提交时间戳...

【专利技术属性】
技术研发人员:陈亮张桓张霖涛
申请(专利权)人:北京成章数据科技发展有限公司
类型:发明
国别省市:

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

1