基于kafka与哈希共享内存的分布式数据中心制造技术

技术编号:30092646 阅读:14 留言:0更新日期:2021-09-18 08:55
本发明专利技术公开一种基于kafka与哈希共享内存的分布式数据中心,包括:中心数据库,其建立数据更新表并将增加/修改的数据写入数据更新表中;新增数据读取服务端,其读取数据更新表的新增数据并推送给kafka;根数据中心服务端,其在共享内存无数据时读取全量数据后再消费kafka中新增的数据,其在共享内存有数据时直接消费kafka中新增的数据,读取的数据写入共享内存;若干页节点数据中心服务端,其在共享内存无数据时同步全量数据到自身节点再消费kafka中新增的数据,其在共享内存有数据时直接消费kafka中新增的数据,数据存储到共享内存。本发明专利技术实现分布式查询,查询及检验速率快,满足本地业务对查询校验的快速需求。满足本地业务对查询校验的快速需求。满足本地业务对查询校验的快速需求。

【技术实现步骤摘要】
基于kafka与哈希共享内存的分布式数据中心


[0001]本专利技术涉及数据中心
,尤其涉及一种基于kafka与哈希共享内存的分布式数据中心。

技术介绍

[0002]对于数据中心而言,目前一般使用redis(redis是一个key

value存储系统)或数据库做存储,其仅有一个中心数据库或读写分离的数据库。随着数据量的增大,中心数据库的数据愈发庞大,数据中心的写入及访问频次也随之增大,访问的压力不断接近数据中心的极限,导致中心数据库访问压力过大,且数据中心的性能也限制了业务的不断增长,由于数据中心采用的是redis或数据库存储数据,业务对数据的访问速度具有一定速率的要求,在跨区域甚至跨国时,数据的访问效率达不到业务的需求,即数据中心的访问效率达不到业务处理能力,很难实现快速、实时地进行数据的访问及检验,跨区域访问中心数据库的数据访问速度慢。
[0003]因此,现有技术存在缺陷,需要改进。

技术实现思路

[0004]本专利技术的目的是克服现有技术的不足,提供一种基于kafka与哈希共享内存的分布式数据中心。
[0005]本专利技术的技术方案如下:一种基于kafka与哈希共享内存的分布式数据中心,包括:中心数据库,所述中心数据库用于建立对应常量表的数据更新表,并将所述常量表的增加/修改的数据写入所述数据更新表中;新增数据读取服务端,其与所述中心数据库连接,所述新增数据读取服务端用于定时读取所述数据更新表中新增的数据,并将读取到的数据推送到kafka中;根数据中心服务端,其与所述中心数据库和kafka连接,其还连接共享内存,所述根数据中心服务端用于在查询到与之连接的共享内存中不存在数据时,读取所述中心数据库的全量数据,全量数据读取完成后再持续从所述kafka中消费新增的数据,并将数据写入所述共享内存中,以及用于在查询到与之连接的共享内存中已存有数据时直接消费所述kafka中新增的数据并将数据写入所述共享内存中;若干页节点数据中心服务端,每一所述页节点数据中心服务端对应一个服务器,每一所述服务器均设有共享内存,每一所述所述页节点数据中心服务端用于在查询到与之对应的服务器设有的共享内存中不存在数据时,将所述根数据中心服务端的全量数据同步到本节点,然后再消费所述kafka中新增的数据,并把新增的数据存储到共享内存中,以及用于在查询到与之对应的服务器设有的共享内存中不存在数据时,直接消费所述kafka中新增的数据,并把新增的数据存储到共享内存中。
[0006]进一步地,所述中心数据库中通过mysql的建表语句建立已存在的常量表的相同
字段的数据更新表,并通过mysql的创建触发器的语句创建对应数据表的触发器以触发mysql的数据表的插入及更新操作,从而使得新增的数据或修改的中心数据库的数据通过该触发器插入到所述数据更新表中。
[0007]进一步地,所述新增数据读取服务端定时读取所述数据更新表的前128条数据,并将mysql的查询语句查询到的数据读取出来,读取的数据推送到所述kafka中。
[0008]进一步地,所述新增数据读取服务端读取的数据是以json的形式推送到所述kafka中。
[0009]进一步地,所述新增数据读取服务端通过索引使用mysql的删除数据的语句将对应的已读取的数据从所述数据更新表中删除以避免对数据的重复读取。
[0010]进一步地,所述共享内存包括共享内存头和数据区,所述共享内存头存储的信息包括插入数据的次数、删除数据的次数、更新数据的次数、数据版本、共享内存的数据量之中的多种,所述数据区用于存储所述根数据中心服务端从所述中心数据库读取的数据。
[0011]进一步地,所述根数据中心服务端通过boost库创建的接口打开所述共享内存,并查询所述共享内存中是否存在数据;所述根数据中心服务端在读取到共享内存中不存在数据时,读取所述中心数据库的全量数据,读取到的数据存储到所述共享内存的数据区中,读取完中心数据库的全量数据后,再从所述kafka中消费更新的数据,然后将消费到的数据通过boost库的接口写入到所述共享内存的数据区中;所述根数据中心服务端在读取到共享内存中存在数据时,直接从kafka中消费数据,并将消费到的数据通过boost库的接口写入所述共享内存中。
[0012]进一步地,每一所述页节点数据中心服务端通过boost库创建的接口打开共享内存,并查询所述共享内存中是否存在数据;每一所述页节点数据中心服务端在查询到共享内存中不存在数据时,通过文件同步的形式将全量数据从所述根数据中心服务端同步到与该页节点数据中心服务端所对应的服务器,然后开始消费kafka中新增的数据,再通过boost库的插入共享内存数据的接口将新增的数据存储到共享内存中;每一所述页节点数据中心服务端在查询到共享内存中存在数据时,直接开始消费kafka的新增数据,并通过boost库的插入共享内存数据的接口将数据存储到共享内存中。
[0013]进一步地,每一所述页节点数据中心服务端在查询到共享内存中不存在数据时,所述页节点数据中心服务端消费kafka中新增的数据是根据同步过来的数据中的kafka的offset值开始消费;每一所述页节点数据中心服务端在查询到共享内存中存在数据时,所述页节点数据中心服务端消费kafka中新增的数据是直接从对应的offset值开始消费。
[0014]进一步地,所述共享内存为哈希共享内存。
[0015]采用上述方案,本专利技术具有以下有益效果:1、本专利技术通过将中心数据库的数据同步到各个服务器的共享内存中,降低了中心数据库的访问压力,有效解决了跨区域及跨国访问速度过慢的问题,实现了数据的分布式查询,极大地提升了业务查询及数据校验的速率,解决了本地业务对查询校验的快速需求;2、优选方案中kafka的应用,使得业务服务与服务器更新互不干扰,无需停止服务来更新服务器,保证服务器更新过程中业务服务的正常运行。
附图说明
[0016]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0017]图1为本专利技术基于kafka与哈希共享内存的分布式数据中心的流程图。
[0018]本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0019]以下结合附图和具体实施例,对本专利技术进行详细说明。
[0020]参照图1所示,本专利技术提供一种基于kafka与哈希共享内存的分布式数据中心,包括:中心数据库1,所述中心数据库1建立对应常量表的数据更新表,并通过触发器将所述常量表的增加/修改的数据写入所述数据更新表中;具体的,所述中心数据库1中通过mysql(mysql是一个关系型数据库管理系统)的建表语句建立已存在的常量表的相同字段的mysql表(mysql表称本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于kafka与哈希共享内存的分布式数据中心,其特征在于,包括:中心数据库,所述中心数据库用于建立对应常量表的数据更新表,并将所述常量表的增加/修改的数据写入所述数据更新表中;新增数据读取服务端,其与所述中心数据库连接,所述新增数据读取服务端用于定时读取所述数据更新表中新增的数据,并将读取到的数据推送到kafka中;根数据中心服务端,其与所述中心数据库和kafka连接,其还连接共享内存,所述根数据中心服务端用于在查询到与之连接的共享内存中不存在数据时,读取所述中心数据库的全量数据,全量数据读取完成后再持续从所述kafka中消费新增的数据,并将数据写入所述共享内存中,以及用于在查询到与之连接的共享内存中已存有数据时直接消费所述kafka中新增的数据并将数据写入所述共享内存中;若干页节点数据中心服务端,每一所述页节点数据中心服务端对应一个服务器,每一所述服务器均设有共享内存,每一所述所述页节点数据中心服务端用于在查询到与之对应的服务器设有的共享内存中不存在数据时,将所述根数据中心服务端的全量数据同步到本节点,然后再消费所述kafka中新增的数据,并把新增的数据存储到共享内存中,以及用于在查询到与之对应的服务器设有的共享内存中不存在数据时,直接消费所述kafka中新增的数据,并把新增的数据存储到共享内存中。2.根据权利要求1所述的基于kafka与哈希共享内存的分布式数据中心,其特征在于,所述中心数据库中通过mysql的建表语句建立已存在的常量表的相同字段的数据更新表,并通过mysql的创建触发器的语句创建对应数据表的触发器以触发mysql的数据表的插入及更新操作,从而使得新增的数据或修改的中心数据库的数据通过该触发器插入到所述数据更新表中。3.根据权利要求1所述的基于kafka与哈希共享内存的分布式数据中心,其特征在于,所述新增数据读取服务端定时读取所述数据更新表的前128条数据,并将mysql的查询语句查询到的数据读取出来,读取的数据推送到所述kafka中。4.根据权利要求3所述的基于kafka与哈希共享内存的分布式数据中心,其特征在于,所述新增数据读取服务端读取的数据是以json的形式推送到所述kafka中。5.根据权利要求3所述的基于kafka与哈希共享内存的分布式数据中心,其特征在于,所述新增数据读取服务端通过索引使用mysql的删除数据的语句将对应的已读取的数据从所述数据更新表中删除以避免对数据...

【专利技术属性】
技术研发人员:凌远泽陈贤平
申请(专利权)人:深圳智多豚物联技术有限公司
类型:发明
国别省市:

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

1