内存数据库访问方法、装置、设备及介质制造方法及图纸

技术编号:21628561 阅读:73 留言:0更新日期:2019-07-17 10:58
本发明专利技术公开一种内存数据库访问方法、装置、设备及介质。该方法包括:DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。本发明专利技术实施例通过基于zookeeper的内存数据库访问方式实现将数据访问层和账务应用程序分离,通过DAL各节点的故障接管提升其高可用性,通过散列算法实现负载均衡的访问策略。

Memory database access methods, devices, devices and media

【技术实现步骤摘要】
内存数据库访问方法、装置、设备及介质
本专利技术涉及数据业务处理
,尤其涉及一种内存数据库访问方法、装置、设备及介质。
技术介绍
内存数据库为账务系统的核心数据库,每时每刻都要处理二批、合账等账务处理业务以及套餐剩余量查询等账务管理业务。由于这些业务应用进程特别多,每个进程要保持一个与内存数据库的长连接,而内存库连接数上限为2048,一旦达到上限内存库就会夯住,对业务造成很大影响。随着业务量增长,进程数不断增加,对内存库的连接数也不断增长,成为系统稳定性越来越突出的问题。而有些连接是跨库连接,这些连接访问繁忙度不足5%,也就是说这些连接是很清闲的。现有技术中对内存数据库系统增加数据访问层(DAL)后,多个跨节点的内存库连接通过数据访问层连接内存库共享连接,可以达到减少连接数的效果。增加数据访问层还可以缓解断连风暴的发生。因为业务进程会同时连接多个内存库,在某一内存库故障或其它原因导致业务应用进程批量异常退出或重启时,导致与其他正常库的连接也会批量异常断开,大量连接异常断开需要完成大量的资源回收、事务回滚等操作,导致它对新请求反应慢或者夯住,这种现象称为断连风暴,对系统稳定性影响较大。使用数据访问层,业务应用程序不再直接连内存库,从而解决了断连风暴的问题。现有的数据访问层部署方式如下:参考附图1,每台账务应用刀片上部署了应用程序(APP)、DAL(数据访问层)客户端及服务端。每台刀片机上的账务应用是通过本刀片上的数据访问层服务端连接内存库的。但现有数据访问层部署方法存在如下问题:一是,非集群部署,高可用性差,每台节点上的应用只能访问本节点的数据访问层(DAL)。当某节点上的数据访问层出现故障时,此刀片上的业务应用将不能访问内存库,业务将受到影响;二是,缺少负载均衡功能,每个的数据访问层的负载因本节点的业务压力不同,不能实现负载均衡。综上所述,针对相关技术中的上述问题,目前尚未存在有效的解决方案。
技术实现思路
本专利技术实施例提供了内存数据库访问方法、装置、设备及存储介质,能够解决相关技术中数据访问层部署采用非集群部署,高可用性差及缺少负载均衡功能的问题。第一方面,本专利技术实施例提供了一种内存数据库访问方法,所述方法包括:DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;所述DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。本专利技术实施例还提供了另一种内存数据库访问方法,所述方法包括:zookeeper服务器集群接收并保存多个可用DAL服务的负载信息;所述zookeeper服务器集群将所述多个可用DAL服务的负载信息发送给DAL客户端,以供所述DAL客户端根据所述负载信息从所述多个可用DAL服务中选择一个可用DAL服务作为与所述DAL客户端对应的应用程序访问内存数据库的DAL服务。第二方面,本专利技术实施例提供了一种内存数据库访问装置,所述装置包括:获取模块,用于从zookeeper服务器集群获取多个可用DAL服务的负载信息;选择模块,用于根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。本专利技术实施例还提供了另一种内存数据库访问装置,所述装置包括:接收模块,用于接收并保存多个可用DAL服务的负载信息;发送模块,用于将所述多个可用DAL服务的负载信息发送给DAL客户端,以供所述DAL客户端根据所述负载信息从所述多个可用DAL服务中选择一个可用DAL服务作为与所述DAL客户端对应的应用程序访问内存数据库的DAL服务。第三方面,本专利技术实施例提供了一种计算机设备,包括:至少一个处理器、至少一个存储器以及存储在存储器中的计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。第四方面,本专利技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当计算机程序指令被处理器执行时实现如上述实施方式中第一方面的方法。根据本专利技术上述实施例,DAL客户端通过zookeeper服务器集群获取DAL各服务的负载信息,根据负载选择一个DAL服务来访问内存数据库,从而构建高性能、高可用的内存数据库访问,提升了数据访问层的高可用性,弥补了现有的数据访问层非集群部署的缺点。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对本专利技术实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了现有数据访问层部署的示意图;图2示出了本专利技术实施例的内存数据库访问框架图;图3示出了根据本专利技术实施例的一种内存数据库访问方法的流程示意图;图4给出了根据本专利技术实施例的另一种内存数据库访问方法的流程示意图;图5示出了根据本专利技术实施例的一种内存库数据访问装置的结构示意图;图6示出了根据本专利技术实施例的另一种内存库数据访问装置的结构示意图;图7示出了本专利技术实施例的zookeeper服务器集群上注册的DAL服务信息的示意图;图8示出了本专利技术实施例的负载均衡算法的示意图;图9示出了本专利技术实施例提供的计算机设备的硬件结构示意图。具体实施方式下面将详细描述本专利技术的各个方面的特征和示例性实施例,为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本专利技术,并不被配置为限定本专利技术。对于本领域技术人员来说,本专利技术可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本专利技术的示例来提供对本专利技术更好的理解。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。在本专利技术实施例的相关领域中,一个内存数据库的内存数据库访问了应用(APP)、DAL(数据访问层)客户端及DAL服务的应用刀片,还包括zookeeper服务器集群及数据库,包含以下一些具体技术:数据访问层(DataAccessLayer),具有三层结构,分别为:表示层(USL)主要表示WEB方式,也可以表示成WINFORM方式;业务逻辑层(BLL)主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理;数据访问层(DAL)主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。在本专利技术实施例中,DAL服务集群是一组DAL服务组成的数据访问层服务集群。zookeeper是一个分布式应用程序协调服务,是Hadoop和Hbase本文档来自技高网
...

【技术保护点】
1.一种内存数据库访问方法,其特征在于,所述方法包括:DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;所述DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。

【技术特征摘要】
1.一种内存数据库访问方法,其特征在于,所述方法包括:DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;所述DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。2.根据权利要求1所述的方法,其特征在于,DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息包括:所述DAL客户端从所述zookeeper服务器集群的任意节点获取所述多个可用DAL服务的负载信息。3.根据权利要求1所述的方法,其特征在于,所述DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务包括:所述DAL客户端根据所述负载信息,选择所述多个可用DAL服务中负载最低或者负载低于预设阈值的任一可用DAL服务作为所述DAL服务。4.根据权利要求1所述的方法,其特征在于,所述DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务包括:所述DAL客户端根据所述负载信息确定所述多个可用DAL服务中每个可用DAL服务的空闲进程个数;所述DAL客户端将所述每个可用DAL服务的空闲进程个数按顺序累加得到空闲进程总数,并根据每个可用DAL服务的空闲进程个数和累加顺序,确定每个可用DAL服务对应的空闲进程个数的数值区间;所述DAL客户端根据所述空闲进程总数计算随机值,并将所述随机值落入的数值区间对应的可用DAL服务作为所述DAL服务。5.根据权利要求4所述的方法,其特征在于,所述DAL客户端根据所述空闲进程总数计算随机值包括:所述DAL客户端对所述空闲进程总数取模,得到的取模结果即为所述随机值。6.根据权利要求1至5中任一项所述的方法,其特征在于,在所述应用程序通过所述DAL服务访问内存数据库之后,所述方法还包括:在所述DAL服务异常的情况下,所述DAL客户端从所述zookeeper服务器集群获取更新的多个可用DAL服务的负载信息;所述DAL客户端根据更新的多个可用DAL服务的负载信息,从所述更新的多个可用DAL服务中选择一个DAL服务作为所述应用程序访问内存数据库的DAL服务。7.一种内存数据库访问装置,应用于DAL客户端,其特征在于,所述装置包括:获...

【专利技术属性】
技术研发人员:沈鹏
申请(专利权)人:中国移动通信集团河北有限公司中国移动通信集团公司
类型:发明
国别省市:河北,13

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

1