一种基于内存的分布式缓存系统技术方案

技术编号:27935404 阅读:23 留言:0更新日期:2021-04-02 14:15
本发明专利技术公开了一种基于内存的分布式缓存系统。它包括服务启动模块、注册中心模块、获取请求模块、第一接收模块、第一计算模块、定义模块、监听模块、变更请求模块、第二接收模块、通知模块、第二计算模块和结束模块,服务启动模块、注册中心模块、通知模块依次连接;获取请求模块、第一接收模块、第一计算模块、结束模块依次连接;定义模块分别与第一计算模块、第二计算模块和监听模块连接;变更请求模块、第二接收模块、通知模块、第二计算模块、结束模块依次连接。本发明专利技术的有益效果是:既可以保留单机内存读取的高性能,也可以在分布式下保证数据同步,同时还可以保证单机内存的使用量在可控的范围以防止出现内存溢出。

【技术实现步骤摘要】
一种基于内存的分布式缓存系统
本专利技术涉及内存数据缓存相关
,尤其是指一种基于内存的分布式缓存系统。
技术介绍
目前缓存方案大多都是采用第三方服务,类似于redis这种nosql系统,会有一次网络交互的消耗,在高并发时也会存在瓶颈。如果单纯采用单机内存方式进行缓存时,没有好的方案可以处理分布式下其他服务的内存数据同步,往往会导致数据不同步。
技术实现思路
本专利技术是为了克服现有技术中存在上述的不足,提供了一种实现数据同步的基于内存的分布式缓存系统。为了实现上述目的,本专利技术采用以下技术方案:一种基于内存的分布式缓存系统,包括服务启动模块、注册中心模块、获取请求模块、第一接收模块、第一计算模块、定义模块、监听模块、变更请求模块、第二接收模块、通知模块、第二计算模块和结束模块,服务启动模块用于应用程序启动时收集本机服务信息,与注册中心模块连接;注册中心模块用于存储每个服务的信息,与通知模块连接;获取请求模块用于客户端并发向服务器获取数据,与第一接收模块连接;第一接收模块用于处理客户端传递的数据,与第一计算模块连接;第一计算模块用于计算数据的存储位置及获取方式,分别与定义模块和结束模块连接;定义模块用于在内存中存储客户端请求的数据,分别与第一计算模块、第二计算模块和监听模块连接;监听模块用于监控并重算定义模块中的数据,与定义模块连接;变更请求模块用于管理端对数据的修改删除操作,与第二接收模块连接;第二接收模块用于处理本机修改删除的数据,与通知模块连接;通知模块用于通知集群中其他机器进行修改删除数据,分别与注册中心模块和第二计算模块连接;第二计算模块用于处理修改删除定义模块中的数据,分别与定义模块和结束模块连接;结束模块用于处理客户端及管理端的请求响应,分别与第一计算模块和第二计算模块连接,响应至客户端第一计算模块及第二计算模块计算出的信息。本专利技术公开了一种基于内存的分布式缓存方案,包括服务启动模块,注册中心模块,获取请求模块,第一接收模块,第一计算模块,定义模块,监听模块,变更请求模块,第二接收模块,通知模块,第二计算模块,结束模块,通过该方案既可以保留单机内存读取的高性能,也可以在分布式下保证数据同步,同时还可以保证单机内存的使用量在可控的范围以防止出现内存溢出。作为优选,在服务启动模块中,服务启动时需要获取本机ip及服务请求相关信息,用于接收通知;注册中心模块存储服务启动模块提供的信息,同时需要监控服务存活状态,服务离线时需要释放其信息,其主要作用是从该注册中心模块获取到集群中其他服务信息。作为优选,获取请求模块用于携带特定参数进行业务请求查询;第一接收模块接收到获取请求模块中的查询参数进行初始过滤,用于筛选非法参数;第一计算模块根据第一接收模块筛选后的参数,先去定义模块中查询,即先在本机内存中查询,如果不存在再进行回源即实际业务的查询,查询后需要把结果设置至定义模块中,如果存在直接取定义模块的信息即可;然后需要更新定义模块中的最后使用时间为当前时间。作为优选,定义模块用于在内存中存储客户端经常查询的查询条件及对应结果;由于单个机器的内存条件有限,如果按照定义模块这种方式无限存储的话,内存是无法保证的,因此监听模块主要用于保证内存维持在一个量,需要定时去检查定义模块中的数据量,然后去删除,同时为了保证删除的数据不影响热门数据的查询效率,因此需要对定义模块中的数据按照最后使用时间来排序,删除时间早的数据;监听模块的触发条件可以是定时,也可以是在定义模块中的数据有变化时执行。作为优选,变更请求模块用于携带数据查询条件及对应信息对服务端发起数据修改删除的请求;第二接收模块接收到变更请求模块中的查询参数及数据信息进行初始过滤,用于筛选非法参数;通知模块在接收到第二接收模块筛选后的参数后,需要到注册中心模块获取到当前服务在整个机器中的所有机器,然后进行通知,通知时只需携带查询参数即可;第二计算模块接收到通知模块中的查询参数后,需要去定义模块中根据查询参数删除相关信息,其目的是为了第一计算模块在获取数据时可以回源重新获取,拿到最新的数据进行响应。本专利技术的有益效果是:既可以保留单机内存读取的高性能,也可以在分布式下保证数据同步,同时还可以保证单机内存的使用量在可控的范围以防止出现内存溢出。附图说明图1是本专利技术的系统框图。具体实施方式下面结合附图和具体实施方式对本专利技术做进一步的描述。如图1所述的实施例中,一种基于内存的分布式缓存系统,包括服务启动模块、注册中心模块、获取请求模块、第一接收模块、第一计算模块、定义模块、监听模块、变更请求模块、第二接收模块、通知模块、第二计算模块和结束模块,服务启动模块用于应用程序启动时收集本机服务信息,与注册中心模块连接;在服务启动模块中,服务启动时需要获取本机ip及服务请求上下文、端口等相关信息,用于接收通知。样例如下:http://172.1.2.3:8080/service注册中心模块用于存储每个服务的信息,与通知模块连接;注册中心模块存储服务启动模块提供的信息,同时需要监控服务存活状态,服务离线时需要释放其信息,可以采用目前较成熟的zookeeper技术实现,其主要作用是从该注册中心模块获取到集群中其他服务信息。存储结构为:分布式应用名称:服务器A信息、服务器B信息;json格式如下:user:[{url:http://172.1.2.3:8080/service},{url:http://172.1.2.4:8080/service}],live:[{url:http://172.1.2.5:8080/service},{url:http://172.1.2.6:8080/service}]获取请求模块用于客户端并发向服务器获取数据,与第一接收模块连接;获取请求模块用于携带特定参数进行业务请求查询,比如获取一条视频的信息、获取一个订单的信息等。第一接收模块用于处理客户端传递的数据,与第一计算模块连接;第一接收模块接收到获取请求模块中的查询参数进行初始过滤,用于筛选非法参数,在一定程度上为服务器减轻压力。第一计算模块用于计算数据的存储位置及获取方式,分别与定义模块和结束模块连接;第一计算模块根据第一接收模块筛选后的参数,先去定义模块中查询,即先在本机内存中查询,如果不存在再进行回源即实际业务的查询(这种情况是没有进行缓存的,一般在第一次访问时会出现),查询后需要把结果设置至定义模块中,如果存在直接取定义模块的信息即可;然后需要更新定义模块中的最后使用时间为当前时间。定义模块用于在内存中存储客户端请求的数据,分别与第一计算模块、第二计算模块和监听模块连接;定义模块用于在内存中存储客户端经常查询的查询条件及对应结果,格式为:查询条件:{info:查询本文档来自技高网...

【技术保护点】
1.一种基于内存的分布式缓存系统,其特征是,包括服务启动模块、注册中心模块、获取请求模块、第一接收模块、第一计算模块、定义模块、监听模块、变更请求模块、第二接收模块、通知模块、第二计算模块和结束模块,服务启动模块用于应用程序启动时收集本机服务信息,与注册中心模块连接;/n注册中心模块用于存储每个服务的信息,与通知模块连接;/n获取请求模块用于客户端并发向服务器获取数据,与第一接收模块连接;/n第一接收模块用于处理客户端传递的数据,与第一计算模块连接;/n第一计算模块用于计算数据的存储位置及获取方式,分别与定义模块和结束模块连接;/n定义模块用于在内存中存储客户端请求的数据,分别与第一计算模块、第二计算模块和监听模块连接;/n监听模块用于监控并重算定义模块中的数据,与定义模块连接;/n变更请求模块用于管理端对数据的修改删除操作,与第二接收模块连接;/n第二接收模块用于处理本机修改删除的数据,与通知模块连接;/n通知模块用于通知集群中其他机器进行修改删除数据,分别与注册中心模块和第二计算模块连接;/n第二计算模块用于处理修改删除定义模块中的数据,分别与定义模块和结束模块连接;/n结束模块用于处理客户端及管理端的请求响应,分别与第一计算模块和第二计算模块连接,响应至客户端第一计算模块及第二计算模块计算出的信息。/n...

【技术特征摘要】
1.一种基于内存的分布式缓存系统,其特征是,包括服务启动模块、注册中心模块、获取请求模块、第一接收模块、第一计算模块、定义模块、监听模块、变更请求模块、第二接收模块、通知模块、第二计算模块和结束模块,服务启动模块用于应用程序启动时收集本机服务信息,与注册中心模块连接;
注册中心模块用于存储每个服务的信息,与通知模块连接;
获取请求模块用于客户端并发向服务器获取数据,与第一接收模块连接;
第一接收模块用于处理客户端传递的数据,与第一计算模块连接;
第一计算模块用于计算数据的存储位置及获取方式,分别与定义模块和结束模块连接;
定义模块用于在内存中存储客户端请求的数据,分别与第一计算模块、第二计算模块和监听模块连接;
监听模块用于监控并重算定义模块中的数据,与定义模块连接;
变更请求模块用于管理端对数据的修改删除操作,与第二接收模块连接;
第二接收模块用于处理本机修改删除的数据,与通知模块连接;
通知模块用于通知集群中其他机器进行修改删除数据,分别与注册中心模块和第二计算模块连接;
第二计算模块用于处理修改删除定义模块中的数据,分别与定义模块和结束模块连接;
结束模块用于处理客户端及管理端的请求响应,分别与第一计算模块和第二计算模块连接,响应至客户端第一计算模块及第二计算模块计算出的信息。


2.根据权利要求1所述的一种基于内存的分布式缓存系统,其特征是,在服务启动模块中,服务启动时需要获取本机ip及服务请求相关信息,用于接收通知;注册中心模块存储服务启动模块提供的信息,同时需要监控服务存活状态,服务离线时需要释放其信息,其主要作用是从该注册中心模块获取到集群中其他服务信息。

【专利技术属性】
技术研发人员:代存折李妃军
申请(专利权)人:杭州当虹科技股份有限公司
类型:发明
国别省市:浙江;33

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

1