数据库中间件及其实现客户端与服务器连接的方法技术

技术编号:27975528 阅读:12 留言:0更新日期:2021-04-06 14:09
本发明专利技术公开了一种数据库中间件及其实现客户端与服务器连接的方法。数据库中间件实现客户端与服务器连接的方法,包括:创建最小空闲服务子进程数的服务子进程;服务子进程接收客户端的连接请求,并根据连接请求将客户端连接至服务器;当空闲的服务子进程的个数小于最小空闲服务子进程数时,再次创建最小空闲子进程数的服务子进程,直至达到最大服务子进程数限制;当空闲的服务子进程的个数大于最大空闲服务子进程数时,回收部分空闲的服务子进程。采用本发明专利技术,可以动态的创建维护连接服务子进程,既能在开始时减少计算机资源的浪费,又能在客户端连接数增多时,增加服务子进程的数量,为更多的客户端服务,从而可以提高整个数据库服务系统的性能。

【技术实现步骤摘要】
数据库中间件及其实现客户端与服务器连接的方法
本专利技术涉及数据库中间件领域,尤其涉及一种数据库中间件及其实现客户端与服务器连接的方法。
技术介绍
数据库中间件位于数据库服务器和数据库客户端的中间位置。客户端直接将sql语句发往中间件由中间件去操作底层的数据库并将结果返回。中间件一般提供有集群管理、连接池、sql语句路由等功能。中间件的连接池具有保存到后端数据库连接的特性;对于大量客户端频繁的连接,断开的操作,连接池能够减少数据库服务器的连接建立次数,能够提高数据库服务器的效率。因此连接池是中间件中一个重要的功能点。对于连接池的设计,postgresql社区中的pgpool中间件实现了连接池的功能。Pgpool启动时,创建固定数目(例如32个)连接服务子进程等待客户端的连接,在每个子进程中维护有各自的连接池。但是pgpool实现的连接池有如下的缺点:1、中间件启动后,开启的服务子进程数固定不变。启动时,开启数量较大的连接服务子进程会造成计算机资源的浪费,降低了中间件的性能。开启数量较小的连接服务子进程会引起客户端的并发连接数减少。2、每个子进程对连接池的信息分别进行保存,导致连接池内的连接复用性不强。只有在连接的子进程客户端断开连接后,下次再由该子进程接收相同参数的连接才可复用,连接能够被复用的概率低。3、复用率低同时增加了中间件连接到数据库服务器的连接数量,加大的数据库服务器的连接负载。4、只支持会话级的连接,当会话空闲时会导致连接浪费,降低服务器的性能。专利
技术实现思路
本专利技术实施例提供一种数据库中间件及其实现客户端与服务器连接的方法,用以解决现有技术中数据库中间件工作效率低的问题。根据本专利技术实施例的数据库中间件实现客户端与服务器连接的方法,包括:创建最小空闲服务子进程数的服务子进程;所述服务子进程接收客户端的连接请求,并根据所述连接请求将所述客户端连接至服务器;当空闲的服务子进程的个数小于所述最小空闲服务子进程数时,再次创建所述最小空闲子进程数的服务子进程,直至达到最大服务子进程数限制;当空闲的服务子进程的个数大于最大空闲服务子进程数时,回收部分空闲的服务子进程。根据本专利技术的一些实施例,所述方法还包括:初始化一个所有进程共享的全局连接池,所述全局连接池包括多个连接槽位,每个所述连接槽位用于存储一条客户端与服务器之间的连接信息,所述连接信息包括客户端的用户名、服务器的数据库名、访问时间、连接标识信息。根据本专利技术的一些实施例,所述根据所述连接请求将所述客户端连接至服务器,包括:基于所述连接请求,在所述全局连接池中查找是否有可复用的连接,若有,则复用该连接,否则,创建连接,并将连接信息保存至所述全局连接池。根据本专利技术的一些实施例,所述方法还包括:当所述全局连接池中的所有连接槽位均被占用时,检测所述全局连接池中是否存在空闲的连接,若有,则剔除空闲的相同连接次数最多的连接,否则,剔除相同连接次数最多的连接。根据本专利技术的一些实施例,所述剔除部分空闲的连接,包括:当存在多个空闲的相同连接次数最多的连接,则剔除空闲的相同连接次数最多且访问时间最远的连接;当存在多个相同连接次数最多的连接,则剔除相同连接次数最多且访问时间最远的连接。根据本专利技术的一些实施例,所述方法,还包括:定期检测所述全局连接池中各个连接的最近访问时间;当所述最近访问时间超过预设时间时,剔除该连接。根据本专利技术的一些实施例,所述方法,还包括:当所述服务子进程的个数超过所述最大服务子进程数,向当前连接请求对应的客户端返回连接超过最大限制连接数的消息。根据本专利技术的一些实施例,所述连接包括事务连接;所述方法还包括:当所述连接为事务连接,所述事务连接执行完后将该事务连接设置为空闲。根据本专利技术实施例的数据库中间件,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的方法的步骤。根据本专利技术实施例的计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上所述的方法的步骤。采用本专利技术实施例,动态的创建维护连接服务子进程,开始时创建较少数量的服务子进程,这样能够减少计算机资源的浪费;而在客户端连接数增多时,增加服务子进程的数量,为更多的客户端服务,从而可以提高整个数据库服务系统的性能。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。在附图中:图1是本专利技术实施例中数据库中间件实现客户端与服务器连接的方法流程图;图2是本专利技术实施例中数据库中间件实现客户端与服务器连接的方法流程图;图3是本专利技术实施例中全局连接池示意图。具体实施方式下面将参照附图更详细地描述本专利技术的示例性实施例。虽然附图中显示了本专利技术的示例性实施例,然而应当理解,可以以各种形式实现本专利技术而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本专利技术,并且能够将本专利技术的范围完整的传达给本领域的技术人员。第一实施例,一种数据库中间件实现客户端与服务器连接的方法,如图1所示,包括:S1,创建最小空闲服务子进程数的服务子进程;S2,服务子进程接收客户端的连接请求,并根据连接请求将客户端连接至服务器;S3,当空闲的服务子进程的个数小于最小空闲服务子进程数时,再次创建最小空闲子进程数的服务子进程,直至达到最大服务子进程数限制;S4,当空闲的服务子进程的个数大于最大空闲服务子进程数时,回收部分空闲的服务子进程。进一步的,所述方法还包括:初始化一个所有进程共享的全局连接池,全局连接池包括多个连接槽位,每个连接槽位用于存储一条客户端与服务器之间的连接信息,连接信息包括客户端的用户名、服务器的数据库名、访问时间、连接标识信息。进一步的,所述根据所述连接请求将所述客户端连接至服务器,包括:基于连接请求,在全局连接池中查找是否有可复用的连接,若有,则复用该连接,否则,创建连接,并将连接信息保存至全局连接池。进一步的,所述方法还包括:当全局连接池中的所有连接槽位均被占用时,检测全局连接池中是否存在空闲的连接,若有,则剔除空闲的相同连接次数最多的连接,否则,剔除相同连接次数最多的连接。进一步的,所述剔除部分空闲的连接,包括:当存在多个空闲的相同连接次数最多的连接,则剔除空闲的相同连接次数最多且访问时间最远的连接;当存在本文档来自技高网
...

【技术保护点】
1.一种数据库中间件实现客户端与服务器连接的方法,其特征在于,包括:/n创建最小空闲服务子进程数的服务子进程;/n所述服务子进程接收客户端的连接请求,并根据所述连接请求将所述客户端连接至服务器;/n当空闲的服务子进程的个数小于所述最小空闲服务子进程数时,再次创建所述最小空闲子进程数的服务子进程,直至达到最大服务子进程数限制;/n当空闲的服务子进程的个数大于最大空闲服务子进程数时,回收部分空闲的服务子进程。/n

【技术特征摘要】
1.一种数据库中间件实现客户端与服务器连接的方法,其特征在于,包括:
创建最小空闲服务子进程数的服务子进程;
所述服务子进程接收客户端的连接请求,并根据所述连接请求将所述客户端连接至服务器;
当空闲的服务子进程的个数小于所述最小空闲服务子进程数时,再次创建所述最小空闲子进程数的服务子进程,直至达到最大服务子进程数限制;
当空闲的服务子进程的个数大于最大空闲服务子进程数时,回收部分空闲的服务子进程。


2.如权利要求1所述的方法,其特征在于,所述方法还包括:
初始化一个所有进程共享的全局连接池,所述全局连接池包括多个连接槽位,每个所述连接槽位用于存储一条客户端与服务器之间的连接信息,所述连接信息包括客户端的用户名、服务器的数据库名、访问时间、连接标识信息。


3.如权利要求2所述的方法,其特征在于,所述根据所述连接请求将所述客户端连接至服务器,包括:
基于所述连接请求,在所述全局连接池中查找是否有可复用的连接,若有,则复用该连接,否则,创建连接,并将连接信息保存至所述全局连接池。


4.如权利要求2所述的方法,其特征在于,所述方法还包括:
当所述全局连接池中的所有连接槽位均被占用时,检测所述全局连接池中是否存在空闲的连接,若有,则剔除空闲的相同连接次数最多的连接,否则,剔除相同连接次数最多的连接。

...

【专利技术属性】
技术研发人员:周健身苗健卢健张鲁敏李鹏
申请(专利权)人:瀚高基础软件股份有限公司
类型:发明
国别省市:山东;37

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

1