CN110019481A - 内存数据库访问方法、装置、设备及介质 - Google Patents
内存数据库访问方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110019481A CN110019481A CN201711497813.6A CN201711497813A CN110019481A CN 110019481 A CN110019481 A CN 110019481A CN 201711497813 A CN201711497813 A CN 201711497813A CN 110019481 A CN110019481 A CN 110019481A
- Authority
- CN
- China
- Prior art keywords
- dal
- service
- client
- load information
- multiple available
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种内存数据库访问方法、装置、设备及介质。该方法包括:DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;DAL客户端根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。本发明实施例通过基于zookeeper的内存数据库访问方式实现将数据访问层和账务应用程序分离,通过DAL各节点的故障接管提升其高可用性,通过散列算法实现负载均衡的访问策略。
Description
技术领域
本发明涉及数据业务处理技术领域,尤其涉及一种内存数据库访问方法、装置、设备及介质。
背景技术
内存数据库为账务***的核心数据库,每时每刻都要处理二批、合账等账务处理业务以及套餐剩余量查询等账务管理业务。由于这些业务应用进程特别多,每个进程要保持一个与内存数据库的长连接,而内存库连接数上限为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服务器集群及数据库,包含以下一些具体技术:
数据访问层(Data Access Layer),具有三层结构,分别为:表示层(USL)主要表示WEB方式,也可以表示成WINFORM方式;业务逻辑层(BLL)主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理;数据访问层(DAL)主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。
在本发明实施例中,DAL服务集群是一组DAL服务组成的数据访问层服务集群。zookeeper是一个分布式应用程序协调服务,是Hadoop和Hbase的重要组件,它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等;zookeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的***提供给应用/用户。
参考附图2,执行本发明数据访问层部署方法所对应的数据访问层部署框架包括:zookeeper服务器集群,部署了应用、DAL客户端的账务应用刀片,且每一账务应用刀片封装相应的应用(APP)和DAL客户端,多个DAL服务集群,一组数据访问层服务(DAL服务)组成一个数据访问层服务集群(DAE集群),一DAE集群连接同一个数据库并对外提供这个数据库的访问代理。
实施例1
本发明一个实施例提供一种内存数据库访问方法,该方法用于DAL客户端,图3是根据本发明实施例一种内存数据库访问方法的流程示意图,如图3所示,方法的步骤包括:
步骤S101,DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息;
步骤S102,DAL客户端根据负载信息,从多个可用DAL服务中选择一个DAL服务作为DAL客户端对应的应用程序访问内存数据库的DAL服务。
通过本实施例的步骤S101~步骤S102,能够解决相关技术中数据访问层为非集群部署的缺点,提升了数据访问层的高可用性。
作为优选,在本实施例可选的实施方式中,步骤S101的DAL客户端从zookeeper服务器集群获取多个可用DAL服务的负载信息可以通过如下步骤实现:DAL客户端从zookeeper服务器集群的任意节点获取多个可用DAL服务的负载信息。
在本实施例中,zookeeper服务器集群上注册的负载信息可以包括归属DAL服务集群、DAL服务名、空闲工作进程个数、总连接数及交易量。
作为优选,在本实施例可选的实施方式中,步骤S102的DAL客户端根据负载信息,从多个可用DAL服务中选择一个DAL服务作为DAL客户端对应的应用程序访问内存数据库的DAL服务可以通过如下步骤实现:
DAL客户端根据负载信息,选择多个可用DAL服务中负载最低或者负载低于预设阈值的任一可用DAL服务作为DAL服务。
作为优选,在本实施例可选的实施方式中,步骤S102的DAL客户端根据负载信息,从多个可用DAL服务中选择一个DAL服务作为DAL客户端对应的应用程序访问内存数据库的DAL服务还可以通过如下步骤实现:
步骤S102-1,DAL客户端根据负载信息确定多个可用DAL服务中每个可用DAL服务的空闲进程个数;
步骤S102-2,DAL客户端将每个可用DAL服务的空闲进程个数按顺序累加得到空闲进程总数,并根据每个可用DAL服务的空闲进程个数和累加顺序,确定每个可用DAL服务对应的空闲进程个数的数值区间;
步骤S102-3,DAL客户端根据空闲进程总数计算随机值,并将随机值落入的数值区间对应的可用DAL服务作为DAL服务。
作为优选,在本实施例可选的实施方式中,步骤S102-3的DAL客户端根据空闲进程总数计算随机值可以通过如下方法步骤实现:
DAL客户端对空闲进程总数取模,得到的取模结果即为随机值。
如上,在本发明实施例中,应用程序(APP)启动后通过DAL客户端连接DAL服务并访问数据库。DAL客户端第一次连接DAL服务时通过zookeeper获取可用的DAL服务列表和登记的服务信息,根据指定的负载均衡连接策略计算出应该访问的DAL服务名,并通过其实现对数据库的访问。之后该应用进程一直通过分配的DAL服务访问相应数据库。
在一个示例实施例中,第一次连接DAL服务时使用的负载均衡算法细节可以如下所示:
a)DAL服务按照负载情况上报空闲工作进程个数,空闲越多负载越轻。
b)按照顺序累加所有可用DAL服务的空闲工作进程个数。假设该个数为N,计算一个随机值,并对N取模,根据取模后结果落在哪个区间判断应该连接哪个DAE服务。
c)空闲进程个数越多的DAL服务,范围越大,随机数落入此服务范围的概率越大。
参考图8,例如,server1空闲进程10个,server2空闲进程20个,server3空闲进程30个,则按照10+20+30=60取余,取余后的随机值(例如25)如果落在10~30区间,则应该连接server2。本实施例通过采用随机算法的负载均衡策略,实现了个DAE节点间的负载均衡功能。
作为优选,在本实施例可选的实施方式中,在应用程序通过DAL服务访问内存数据库之后,本实施例的方法还包括:
在DAL服务异常的情况下,DAL客户端从zookeeper服务器集群获取更新的多个可用DAL服务的负载信息;
DAL客户端根据更新的多个可用DAL服务的负载信息,从更新的多个可用DAL服务中选择一个DAL服务作为应用程序访问内存数据库的DAL服务。.
在实际中,当集群内所有可用DAL服务其中一个发生异常后,未连接这个DAL服务的应用能够正常运行,并通过zookeeper及负载均衡访问策略分配到其它的DAL服务供其访问数据库;连接这个DAL服务的应用如果数据库事务已经提交或者回滚,能够自动重连集群内其他服务,否则会报错,由应用进行错误处理。
当DAL服务异常时,实际中的情况为,在DAL服务异常情况下,注销zookeeper服务器集群上登记的服务信息,并使异常DAL服务不与任一应用连接;在应用与异常DAL服务连接且数据库事务已提交或回滚的情况下,应用连接其它可用DAL服务;在应用与异常DAL服务连接且数据库事务未提交或回滚的情况下,应用产生错单并连接其它可用DAL服务后提交或回滚数据库事务。
在本实施例中,需要进一步阐述说明的是,DAL集群启动后,zookeeper服务器集群、DAL服务集群(DAE集群)都正常启动,DAE集群内各节点的DAL服务建立数据库连接,然后可以为应用提供访问数据库的服务,并且将这些服务的注册信息登记到zookeeper服务器集群上。DAL客户端可以访问任一zookeeper节点获取DAL服务的状态信息,然后通过负载均衡算法确定要连接的DAL服务,再通过连接此DAL服务访问数据库。
zookeeper上注册的DAL服务信息如图7所示,例如,DAE_USER_53101表示一个DAE集群,下面挂了N个DAL服务DAE_USER_5301_01…DAE_USER_5301_0n。
DAE集群内服务注册信息详细列表如下:
交易量(TPS):单位时间内(秒)处理的消息总数;
繁忙工作进程个数(BUSY FETCHER CNT);
工作进程个数上限(MAX FETCHER CNT);
连接数(CONNECTIONS):分发进程的客户端连接个数;
版本号(VERSION):应用程序的版本号,仅用于查看;
启动时间(CREATE TIME):DAE服务启动时间;
更新时间(UPDATE TIME):DAE服务上次上报统计信息时间。
zookeeper是一个由多个server(服务器)组成的集群,一个leader(领导者),多个follower(跟随者)。每个server保存一份数据副本,由leader维护全局数据一致,分布式读写。将DAL服务的状态信息登记到zookeeper任一节点,zookeeper会自动同步到所有其它节点,因此DAL客户端可以访问任一zookeeper节点获取DAL服务的状态信息。本发明实施例通过采用zookeeper多个节点间同步DAL服务信息,实现了DAL服务信息的分布式访问,提高***的访问能力及高可用性
需要说明的是,在本实施例的具体事例中,应用程序正常运行期间会遇到重启DAL服务或者DAL节点故障的情况。
下面对DAL平滑重启进行分析说明
具体的,对于DAL重启的场景,本实施例通过以下方式实现平滑重启、业务连续:DAL服务新增stop(停止)命令:dal_server stop server=xxx,通过stop命令能够使集群内的DAL服务平滑退出,不终止业务;。DAL集群部署时,如果一个DAL服务异常,应用能够自动切换到其他可用DAL服务。
stop命令执行流程如下:
a)先关闭zookeeper连接,删除注册的服务信息;应用无法再获取这个服务的连接信息,不会有新连接再连接这个服务。
b)对于事务已经结束(提交或回滚)的客户端连接,直接关闭连接,不再接受任何请求。
c)对于事务还未结束的客户端连接,继续处理后续请求,直到事务结束后,关闭连接,不再接受任何请求。
d)当所有DAL客户端连接都关闭后,服务终止,进程退出。
下面对DAL服务故障的场景进行说明
DAL服务异常后,自动从zookeeper注销服务信息,应用不会再连接异常的DAL服务。
原有连接异常DAL服务的应用,会检查事务是否已经结束,如果已经结束,则连接其他可用服务;如果事务未正常结束,则产生错单,并连接可用DAL服务后继续处理其他话单。
由于上述本发明实施例提供的DAL服务平滑重启机、故障接管功能,本发明的技术方案具有高可用性、业务连续性。
本发明的另一个实施例提供一种内存数据库访问方法,该方法用于zookeeper服务器集群,图4是根据本发明实施例的另一种内存数据库访问方法的流程示意图,如图4所示,方法的步骤包括:
步骤S201,zookeeper服务器集群接收并保存多个可用DAL服务的负载信息;
步骤S202,zookeeper服务器集群将多个可用DAL服务的负载信息发送给DAL客户端,以供DAL客户端根据负载信息从多个可用DAL服务中选择一个可用DAL服务作为与DAL客户端对应的应用程序访问内存数据库的DAL服务。
作为优选,在本实施例可选的实施方式中,步骤S201的zookeeper服务器集群接收并保存多个可用DAL服务的负载信息还可以通过如下方法步骤实现:
步骤S201-1,zookeeper服务器集群的任意节点接收并保存多个可用DAL服务的负载信息;
步骤S201-1,zookeeper服务器集群的任意节点将多个可用DAL服务的负载信息同步到zookeeper服务器集群的所有节点。
作为优选,在本实施例可选的实施方式中,步骤S201的zookeeper服务器集群接收并保存多个可用DAL服务的负载信息还可以通过如下方法步骤实现:
步骤S201-3,zookeeper服务器集群接收更新的多个可用DAL服务的负载信息;
步骤S201-4,zookeeper服务器集群根据更新的多个可用DAL服务的负载信息,更新保存在zookeeper服务器集群的所有可用DAL服务的负载信息。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到,根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令,用以使得一台终端设备(可以是手机、计算机、服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例2
本发明另一实施例提供一种内存数据库访问装置,用于DAL客户端,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图5是根据本发明实施例的内存数据库访问装置的结构示意图,如图5所示,该内存数据库访问装置包括:
获取模块11,用于从zookeeper服务器集群获取多个可用DAL服务的负载信息;
选择模块12,与获取模块11耦合连接,用于根据负载信息,从多个可用DAL服务中选择一个DAL服务作为DAL客户端对应的应用程序访问内存数据库的DAL服务。
优选的,本实施例中所涉及的获取模块11包括:
第一获取单元,用于从zookeeper服务器集群的任意节点获取多个可用DAL服务的负载信息。
优选的,本实施例中所涉及的选择模块12包括:
第一选择单元,用于根据负载信息,选择多个可用DAL服务中负载最低或者负载低于预设阈值的任一可用DAL服务作为DAL服务。
优选的,本实施例中所涉及的选择模块12还包括:
第一确定单元,用于根据负载信息确定多个可用DAL服务中每个可用DAL服务的空闲进程个数;
第一算术单元,与第一确定单元耦合连接,用于将每个可用DAL服务的空闲进程个数按顺序累加得到空闲进程总数,并根据每个可用DAL服务的空闲进程个数和累加顺序,确定每个可用DAL服务对应的空闲进程个数的数值区间;
第一处理单元,与第一算术单元耦合连接,用于根据空闲进程总数计算随机值,并将随机值落入的数值区间对应的可用DAL服务作为DAL服务。
优选的,本实施例中所涉及的第一处理单元包括:
第二算术单元,用于对空闲进程总数取模并将取模结果确定为随机值。
作为优选,在本实施例可选的实施方式中,装置还包括:
第二获取单元,用于在DAL服务异常的情况下,从zookeeper服务器集群获取更新的多个可用DAL服务的负载信息;
第二选择单元,与第二获取单元耦合连接,用于根据更新的多个可用DAL服务的负载信息,从更新的多个可用DAL服务中选择一个DAL服务作为应用程序访问内存数据库的DAL服务。
图6是根据本发明实施例用于zookeeper服务器集群的内存数据库访问装置的结构示意图,如图6所示,该内存数据库访问装置包括:
接收模块21,用于接收并保存多个可用DAL服务的负载信息;
发送模块22,用于将多个可用DAL服务的负载信息发送给DAL客户端,以供DAL客户端根据负载信息从多个可用DAL服务中选择一个可用DAL服务作为与DAL客户端对应的应用程序访问内存数据库的DAL服务。
优选的,本实施例中所涉及的接收模块21还包括:
第一接收单元,用于zookeeper服务器集群的任意节点接收并保存多个可用DAL服务的负载信息;
第一同步单元,与第一接收单元耦合连接,用于zookeeper服务器集群的任意节点将多个可用DAL服务的负载信息同步到zookeeper服务器集群的所有节点。
优选的,本实施例中所涉及的接收模块21还包括:
第二接收单元,用于接收更新的多个可用DAL服务的负载信息;
第二更新单元,与第二接收单元耦合连接,用于根据更新的多个可用DAL服务的负载信息,更新保存在zookeeper服务器集群的所有可用DAL服务的负载信息
需要说明的是,上述各个模块、各单元是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。
另外,结合图3-4描述的本发明实施例的内存数据库访问方法可以由计算机设备来实现。图9示出了本发明实施例提供的计算机设备的硬件结构示意图。
计算机设备可以包括处理器401以及存储有计算机程序指令的存储器402。
具体地,上述处理器401可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器402可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器402可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器402可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器402可在数据处理装置的内部或外部。在特定实施例中,存储器402是非易失性固态存储器。在特定实施例中,存储器402包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器401通过读取并执行存储器402中存储的计算机程序指令,以实现上述实施例中的任意一种内存数据库访问方法。
在一个示例中,计算机设备还可包括通信接口403和总线410。其中,如图9所示,处理器401、存储器402、通信接口403通过总线410连接并完成相互间的通信。
通信接口403,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线410包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该计算机设备可以执行本发明实施例中的内存数据库访问方法。
另外,结合上述实施例中的内存数据库访问方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种内存数据库访问方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或***。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的***、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (13)
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客户端,其特征在于,所述装置包括:
获取模块,用于从zookeeper服务器集群获取多个可用DAL服务的负载信息;
选择模块,用于根据所述负载信息,从所述多个可用DAL服务中选择一个DAL服务作为所述DAL客户端对应的应用程序访问内存数据库的DAL服务。
8.一种内存数据库访问方法,其特征在于,所述方法包括:
zookeeper服务器集群接收并保存多个可用DAL服务的负载信息;
所述zookeeper服务器集群将所述多个可用DAL服务的负载信息发送给DAL客户端,以供所述DAL客户端根据所述负载信息从所述多个可用DAL服务中选择一个可用DAL服务作为与所述DAL客户端对应的应用程序访问内存数据库的DAL服务。
9.根据权利要求8所述的方法,其特征在于,zookeeper服务器集群接收并保存多个可用DAL服务的负载信息还包括:
所述zookeeper服务器集群的任意节点接收并保存所述多个可用DAL服务的所述负载信息;
所述zookeeper服务器集群的任意节点将所述多个可用DAL服务的所述负载信息同步到所述zookeeper服务器集群的所有节点。
10.根据权利要求8所述的方法,其特征在于,zookeeper服务器集群接收并保存多个可用DAL服务的负载信息还包括:
所述zookeeper服务器集群接收更新的多个可用DAL服务的负载信息;
所述zookeeper服务器集群根据所述更新的多个可用DAL服务的负载信息,更新保存在所述zookeeper服务器集群的所有可用DAL服务的负载信息。
11.一种内存数据库访问装置,应用于zookeeper服务器集群,其特征在于,所述装置包括:
接收模块,用于接收并保存多个可用DAL服务的负载信息;
发送模块,用于将所述多个可用DAL服务的负载信息发送给DAL客户端,以供所述DAL客户端根据所述负载信息从所述多个可用DAL服务中选择一个可用DAL服务作为与所述DAL客户端对应的应用程序访问内存数据库的DAL服务。
12.一种计算机设备,其特征在于,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现如权利要求1-6中任一项所述的方法或者如权利要求8-10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,当所述计算机程序指令被处理器执行时实现如权利要求1-6中任一项所述的方法或者如权利要求8-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711497813.6A CN110019481A (zh) | 2017-12-28 | 2017-12-28 | 内存数据库访问方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711497813.6A CN110019481A (zh) | 2017-12-28 | 2017-12-28 | 内存数据库访问方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110019481A true CN110019481A (zh) | 2019-07-16 |
Family
ID=67187222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711497813.6A Pending CN110019481A (zh) | 2017-12-28 | 2017-12-28 | 内存数据库访问方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110019481A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401708A (zh) * | 2019-07-23 | 2019-11-01 | 中南民族大学 | 基于服务器负载状态的会话处理***及方法 |
CN111355816A (zh) * | 2020-05-22 | 2020-06-30 | 支付宝(杭州)信息技术有限公司 | 服务器选取方法、装置、设备及分布式服务*** |
CN113268343A (zh) * | 2021-05-10 | 2021-08-17 | 北京邮电大学 | 一种负载均衡***及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523036B1 (en) * | 2000-08-01 | 2003-02-18 | Dantz Development Corporation | Internet database system |
CN103379156A (zh) * | 2012-04-24 | 2013-10-30 | 深圳市腾讯计算机***有限公司 | 实现存储空间动态均衡的方法、***和装置 |
US9172750B2 (en) * | 2011-04-26 | 2015-10-27 | Brian J. Bulkowski | Cluster-node load balancing in a distributed database system |
CN105227353A (zh) * | 2015-09-06 | 2016-01-06 | 深圳市华验防伪科技有限公司 | 一种mysql集群实现方法及*** |
CN105468720A (zh) * | 2015-11-20 | 2016-04-06 | 北京锐安科技有限公司 | 集成分布式数据处理***的方法、相应***及其数据处理方法 |
CN107180034A (zh) * | 2016-03-09 | 2017-09-19 | 精硕科技(北京)股份有限公司 | MySQL数据库的集群*** |
US9948704B2 (en) * | 2016-04-07 | 2018-04-17 | International Business Machines Corporation | Determining a best fit coordinator node in a database as a service infrastructure |
-
2017
- 2017-12-28 CN CN201711497813.6A patent/CN110019481A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523036B1 (en) * | 2000-08-01 | 2003-02-18 | Dantz Development Corporation | Internet database system |
US9172750B2 (en) * | 2011-04-26 | 2015-10-27 | Brian J. Bulkowski | Cluster-node load balancing in a distributed database system |
CN103379156A (zh) * | 2012-04-24 | 2013-10-30 | 深圳市腾讯计算机***有限公司 | 实现存储空间动态均衡的方法、***和装置 |
CN105227353A (zh) * | 2015-09-06 | 2016-01-06 | 深圳市华验防伪科技有限公司 | 一种mysql集群实现方法及*** |
CN105468720A (zh) * | 2015-11-20 | 2016-04-06 | 北京锐安科技有限公司 | 集成分布式数据处理***的方法、相应***及其数据处理方法 |
CN107180034A (zh) * | 2016-03-09 | 2017-09-19 | 精硕科技(北京)股份有限公司 | MySQL数据库的集群*** |
US9948704B2 (en) * | 2016-04-07 | 2018-04-17 | International Business Machines Corporation | Determining a best fit coordinator node in a database as a service infrastructure |
Non-Patent Citations (1)
Title |
---|
五月的仓颉: ""几种简单的负载均衡算法及其java代码实现"", 《HTTPS://WWW.CNBLOGS.COM/XRQ730/P/5154340.HTML》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110401708A (zh) * | 2019-07-23 | 2019-11-01 | 中南民族大学 | 基于服务器负载状态的会话处理***及方法 |
CN110401708B (zh) * | 2019-07-23 | 2021-11-23 | 中南民族大学 | 基于服务器负载状态的会话处理***及方法 |
CN111355816A (zh) * | 2020-05-22 | 2020-06-30 | 支付宝(杭州)信息技术有限公司 | 服务器选取方法、装置、设备及分布式服务*** |
CN113268343A (zh) * | 2021-05-10 | 2021-08-17 | 北京邮电大学 | 一种负载均衡***及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10958524B2 (en) | Method for generating network slice template and for applying network slice template, and apparatus | |
CN108595207B (zh) | 一种灰度发布方法、规则引擎、***、终端和存储介质 | |
EP3264723B1 (en) | Method, related apparatus and system for processing service request | |
US11397652B2 (en) | Managing primary region availability for implementing a failover from another primary region | |
CN110019481A (zh) | 内存数据库访问方法、装置、设备及介质 | |
KR20150111952A (ko) | 계층적 데이터 구조의 노드 상에서 재귀적 이벤트 리스너를 사용하기 위한 방법 및 시스템 | |
US20200159565A1 (en) | Predicting transaction outcome based on artifacts in a transaction processing environment | |
CN102903043A (zh) | 支付服务器和支付通道获取方法 | |
CN110784530A (zh) | 灰度的发布方法和服务器 | |
CN105847231A (zh) | 服务发布方法、装置及*** | |
CN114282011B (zh) | 知识图谱的构建方法和装置、图计算方法及装置 | |
CN114422331B (zh) | 容灾切换方法、装置及*** | |
CN110515728B (zh) | 服务器调度方法、装置、电子设备及机器可读存储介质 | |
CN115658098A (zh) | 一种分布式业务处理***的升级方法及装置 | |
CN110602232A (zh) | 基于对等网络思想的终端***版本下载方法、装置及*** | |
CN110381150B (zh) | 区块链上的数据处理方法、装置、电子设备及存储介质 | |
CN111245939A (zh) | 数据同步方法、装置和*** | |
CN110609707B (zh) | 在线数据处理***生成方法、装置及设备 | |
CN110851166A (zh) | 用户无感知的应用程序更新方法、装置及计算机设备 | |
CN109962941B (zh) | 通信方法、装置以及服务器 | |
CN113360689B (zh) | 图像检索***、方法、相关装置及计算机程序产品 | |
CN115412610A (zh) | 故障场景下的流量调度方法及装置 | |
CN113504981A (zh) | 任务调度方法和装置、存储介质及电子设备 | |
CN109936672B (zh) | 一种在线计费方法及装置 | |
US10652308B2 (en) | Cognitive storage management for a mobile computing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190716 |
|
RJ01 | Rejection of invention patent application after publication |