基于共享内存kvmap实现的高速服务注册系统及方法技术方案

技术编号:38827349 阅读:14 留言:0更新日期:2023-09-15 20:06
本发明专利技术公开一种基于共享内存kvmap实现的高速服务注册系统,包括:注册中心模块、共享内存kvmap模块;所述注册中心模块用于将信息写入共享内存kvmap模块中,且将实际值存储在共享内存kvmap模块中;所述注册中心模块包括注册中心、多个普通节点;所述注册中心用于将注册信息下发到各感兴趣的多个普通节点;每一所述普通节点均通过封装的sdk的读取注册信息,并将注册信息自动注册到注册中心;所述共享内存kvmap模块包括共享内存池模块、跳表结构。本发明专利技术通过共享内存kvmap的服务注册与发现系统能轻松满足了企业对于部分业务需要达10-100W QPS量级的访问要求,且其访问的稳定性高,不依赖与网络性能。不依赖与网络性能。不依赖与网络性能。

【技术实现步骤摘要】
基于共享内存kvmap实现的高速服务注册系统及方法


[0001]本专利技术涉及共享内存
,特别涉及一种基于共享内存kvmap实现的高速服务注册系统及其方法。

技术介绍

[0002]随着业务的发展,用户量日益上升,单一的系统越来越复杂,越来越庞大,单纯的提升服务器性能始终有跟不上需求的一天,因此我们可以通过分布式技术,例如:服务器集群,水平业务划分,应用分解,系统分流,微服务架构等方式来解决系统性能问题和复杂业务问题。
[0003]目前的服务注册与发现系统,都是通过http、tcp等网络封装的接口进行访问的,其读写效率较低,尤其是读取的QPS有较大的瓶颈,无法满足企业对于部分服务注册发现系统需要达10

100W级别的读写访问的需求,稳定性差,本技术因此而研发。

技术实现思路

[0004]针对现有技术存在的问题,本专利技术提供一种基于共享内存kvmap实现的高速服务注册系统及其方法。
[0005]为了实现上述目的,本专利技术提供一种基于共享内存kvmap实现的高速服务注册系统,包括:注册中心模块、共享内存kvmap模块;
[0006]所述注册中心模块用于将信息写入共享内存kvmap模块中,且将实际值存储在共享内存kvmap模块中;所述普通节点与注册中心的访问则通过云端负载均衡clb进行;
[0007]所述注册中心模块包括注册中心、多个普通节点;
[0008]所述注册中心用于将注册信息下发到各感兴趣的多个普通节点;
[0009]每一所述普通节点均通过封装的sdk的读取注册信息,并将注册信息自动注册到注册中心;
[0010]所述共享内存kvmap模块包括共享内存池模块、跳表结构;所述跳表结构用于储存共享内存池模块的地址。
[0011]优选的,所述注册中心包括注册中心一和注册中心二;所述注册中心一和注册中心二互为备份。
[0012]优选的,所述共享内存池模块存储有kvmap的key值和value值。
[0013]优选的,所述跳表结构中的pair-first存储有key值在共享内存池中的地址,pair-second存储有value值在共享内存中的地址。
[0014]优选的,所述跳表结构中的pair-first的大小比较,并不是通过key-地址比较,而是通过取出共享内存池中的key值之后进行比较的。
[0015]本专利技术还提供一种基于共享内存kvmap实现的高速服务注册的方法,其特征在于,包括如下步骤:
[0016]步骤S1:普通节点应用程序将信息传送到注册中心;
[0017]步骤S2:注册中心通过写锁将信息写入到跳表结构中,并将实际值存储在共享内存池中;
[0018]步骤S3:注册中心通过读锁将key和value值信息读取到缓存中,然后下发消息到普通节点;
[0019]步骤S4:普通节点通过写锁信息写入到跳表结构中,并将实际值存储在共享内存池中;
[0020]步骤S5:最后普通节点上应用程序通过读锁将信息跳从跳表结构中读取出来,完成信息的获取。
[0021]优选的,所述步骤S1、步骤S3中普通节点和注册中心均通过TCP/IP协议进行信息传递。
[0022]优选的,所述步骤S2与步骤S4中的数据存储方法相同,其中步骤S2中数据存储方法为:
[0023]步骤S201:对待存储数据进行处理,并解析出对应的key和key对应的value值;
[0024]步骤S202:存储待存储数据的key值于共享内存池,并获取待存储数据的key值的存储地址addr1;
[0025]步骤S203:存储待存储数据的Value值于共享内存池,并获取待存储数据的Value值的存储地址addr2;
[0026]步骤S204:将存储地址addr1和存储地址addr2存储于跳表结构中。
[0027]优选的,所述步骤S3、步骤S5中的数据读取方法相同,其中步骤S3中数据读取方法为:
[0028]步骤S301:若收到对待读取数据的读取命令时,读取跳表结构中的待存储数据的key地址addr1;
[0029]步骤S302:将共享内存池中取出的key值与待读取的key值进行比较,直到获取一样的待读取的key值;
[0030]步骤S303:根据待存储数据的key的赋值中的存储地址addr2,从共享内存池中取出对应的Value值。
[0031]采用本专利技术的技术方案,具有以下有益效果:
[0032]本专利技术通过将待注册的服务信息传输至注册中心,注册中心将信息同步至各服务节点,由于该信息由于是存储在kvmap结构的共享内存中,各节点访问信息经通过封装的c/c++库进行读取,因此较其它通过tcp或http等接口访问的服务注册与发现系统性能高出一个量级(原因是:对于计算机而言,内存的读取速度远高于通过网络接口读取的速度)。
[0033]本专利技术通过自研的共享内存kvmap的服务注册与发现系统能轻松满足了企业对于部分业务需要达10

100W QPS量级的访问要求,且其访问的稳定性高,不依赖与网络性能。
附图说明
[0034]图1为本专利技术注册中心模块、跳表结构、共享内存kvmap模块的关联图;
[0035]图2为本专利技术注册中心与普通节点交互图;
[0036]图3为本专利技术共享内存kvmap模块结构示意图;
[0037]图4为本专利技术高速服务注册方法流程图;
[0038]图5为本专利技术数据存储实现流程图;
[0039]图6为本专利技术数据读取实现流程图。
具体实施方式
[0040]以下结合附图和具体实施例,对本专利技术进一步说明。
[0041]参照图1至图6,本专利技术提供一种基于共享内存kvmap实现的高速服务注册系统,包括:注册中心模块、共享内存kvmap模块;
[0042]所述注册中心模块用于将信息写入共享内存kvmap模块中,且将实际值存储在共享内存kvmap模块中;
[0043]所述注册中心模块包括注册中心、多个普通节点;
[0044]所述注册中心用于将注册信息下发到各感兴趣的多个普通节点;
[0045]每一所述普通节点均通过封装的sdk的读取注册信息,并将注册信息自动注册到注册中心;所述普通节点与注册中心的访问则通过云端负载均衡clb进行;所述注册中心包括注册中心一和注册中心二;所述注册中心一和注册中心二互为备份;
[0046]所述共享内存kvmap模块包括共享内存池模块、跳表结构;所述跳表结构用于储存共享内存池模块的地址。
[0047]本实施例中高速服务注册与发现系统,是基于kvmap的共享内存实现,进程通过封装的库接口直接访问内存,其速度远超http和tcp等封装的接口访问;为了实现不定长的key-value的map结构,并且实现插入、查询、删除达到O(1)的速度,将不定长key在共享内存池中的地址和value在共享内存池本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于共享内存kvmap实现的高速服务注册系统,其特征在于,包括:注册中心模块、共享内存kvmap模块;所述注册中心模块用于将信息写入共享内存kvmap模块中,且将实际值存储在共享内存kvmap模块中;所述注册中心模块包括注册中心、多个普通节点;所述注册中心用于将注册信息下发到各感兴趣的多个普通节点;每一所述普通节点均通过封装的sdk的读取注册信息,并将注册信息自动注册到注册中心;所述普通节点与注册中心的访问则通过云端负载均衡clb进行;所述共享内存kvmap模块包括共享内存池模块、跳表结构;所述跳表结构用于储存共享内存池模块的地址。2.根据权利要求1所述的基于共享内存kvmap实现的高速服务注册系统,其特征在于,所述注册中心包括注册中心一和注册中心二;所述注册中心一和注册中心二互为备份。3.根据权利要求1所述的基于共享内存kvmap实现的高速服务注册系统,其特征在于,所述共享内存池模块存储有kvmap的key值和value值。4.根据权利要求3所述的基于共享内存kvmap实现的高速服务注册系统,其特征在于,所述跳表结构中的pair-first存储有key值在共享内存池中的地址,pair-second存储有value值在共享内存中的地址。5.一种基于共享内存kvmap实现的高速服务注册的方法,其特征在于,包括如下步骤:步骤S1:普通节点应用程序将信息传送到注册中心;步骤S2:注册中心通过写锁将信息写入到跳表结构中,并将实际值存储在共享内存池中;步骤S3:注册中心通过读锁将key和value值信息读取到缓存中,然后下发消息...

【专利技术属性】
技术研发人员:叶志斌陈贤平陈文浩
申请(专利权)人:深圳技威时代科技有限公司
类型:发明
国别省市:

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

1