一种动态切换应用程序数据源的方法及系统的制作方法

文档序号:9274599阅读:334来源:国知局
一种动态切换应用程序数据源的方法及系统的制作方法
【技术领域】
[0001]本发明涉及切换应用程序数据源,尤其涉及一种动态切换应用程序数据源的方法及系统。
【背景技术】
[0002]如今的应用程序往往需要操作多个不同的数据库或者接入其他不同的数据库中,迫使程序员不得不修改代码甚至框架来兼容其业务需求。Spring动态切换数据源技术可以实现应用程序数据库的动态切换,但存在问题:没有能够解决多用户访问单例“sess1nFactory”时共享“dataSource” (数据源)变量,导致产生争抢“dataSource” (数据源),当多用户访问时,可能会导致系统性能下降。

【发明内容】

[0003]本发明的目的,就是提出一种动态切换应用程序数据源的方法及系统,
[0004]本发明为解决上述技术问题所采用的技术方案:
[0005]一种动态切换应用程序数据源的方法,其特征在于,包括:
[0006]在应用程序中配置多个数据源信息,启动应用程序时,加载数据源配置项;为每个数据源建立一个连接池的独立线程,单个线程操作单个数据源;
[0007]在应用程序需要切换数据源的功能模块中加入切换点,所述切换点对应一数据源;
[0008]当应用程序调用所述功能模块时,根据所述切换点对应配置项中的数据源信息,向连接池请求数据源,切换连接到相应的数据源。
[0009]通过为每个数据源建立一个连接池的独立线程,单个线程操作单个数据源,解决了用户访问过多造成的连接争抢问题。
[0010]优选的,
[0011]增加一数据源时,添加相应配置数据源信息,为新增数据源启动一个连接池的线程;
[0012]数据源可以根据需要增加或删除。
[0013]减少一数据数据源时,关掉相应线程。
[0014]优选的,
[0015]所述功能模块是需要切换数据源的方法。
[0016]优选的,
[0017]所述功能模块是配置文件中配置需要切换数据源的类。
[0018]在应用程序中需要切换数据源的方法或配置文件中配置需要切换数据源的类中加入切换点,所述切换点对应一数据源,当调用该方法或该类时,切换到相应的数据源,操作相应的数据源。
[0019]本发明还提供一种动态切换应用程序数据源的系统,包括:
[0020]配置数据源模块,在应用程序中配置多个数据源信息,启动应用程序时,加载数据源配置项;
[0021]数据库连接模块,为每个数据源建立一个连接池的独立线程,单个线程操作单个数据源;
[0022]切换点设置模块,在应用程序需要切换数据源的功能模块中加入切换点,所述切换点对应一数据源;
[0023]当应用程序调用切换点设置模块中的所述功能模块时,根据功能模块对应配置数据源模块的数据源信息,向数据库连接模块的连接池请求数据源,切换连接到相应的数据源。
[0024]优选的,
[0025]还包括:
[0026]数据源添加删除模块,用于增加一数据源时,添加相应配置数据源信息,为新增数据源启动一个连接池的线程;减少一数据数据源时,用于关掉相应线程。
[0027]优选的,
[0028]所述功能模块是需要切换数据源的方法。
[0029]优选的,
[0030]所述功能模块是配置文件中配置需要切换数据源的类。
[0031]本发明通过为每个数据源建立一个连接池的独立线程,单个线程操作单个数据源的方式实现动态切换应用程序的数据源,解决了用户访问过多造成的连接争抢问题。
【附图说明】
[0032]图1为一种动态切换应用程序数据源的方法的连接池与线程池关系示意图。
[0033]图2为一种动态切换应用程序数据源的方法的应用程序切换到数据源的示意图。
[0034]图3为一种动态切换应用程序数据源的系统的结构示意图。
【具体实施方式】
[0035]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036]实施例一:
[0037]线程池的原理类似于操作系统中的缓冲区,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客户端有一个新请求时,就会唤醒线程池中的某一个睡眠线程,让它来处理客户端的这个请求,当处理完这个请求后,线程又处于睡眠状态,线程池的应用会节约大量的的系统资源,使得更多的CPU时间和内存用来处理实际的商业应用,而不是频繁的线程创建与销毁。
[0038]数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并将这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。
[0039]连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器的服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
[0040]现在应用程序操作多个不同的数据源时,为多个数据源建立连接池时只对应一个线程,会出现用户访问过多造成的连接争抢问题。
[0041]本发明提供一种动态切换应用程序数据源的方法,在应用程序中配置多个数据源信息,启动应用程序时,加载数据源配置项。
[0042]在spring的配置文件配置多个数据源,包括数据源所在服务器IP地址、数据源标识、用户名、密码等信息,
[0043]如图1所示,为每个数据源建立一个连接池的独立线程,单个线程操作单个数据源,这样,可以防止后续用户访问过多造成的连接争抢,当需要再添加一个数据源时,只需添加相应配置,再启动一个线程即可;反之,如果后续不需要使用某个数据库,只需关掉该线程,整个过程都不用重启应用程序。
[0044]如图2所示,在应用程序需要切换数据源的功能模块中加入切换点,切换点对应一数据源。在需要切换数据源的方法中加入切换点,切换点对应一数据源,或者在配置文件中配置需要切换数据源的整个类,加以监听。
[0045]当应用程序调用所述功能模块时,根据功能模块对应配置项中的数据源信息,向连接池请求数据源,切换连接到相应的数据源。
[0046]当应用程序在调用该方法或该类时,自动切换到需要操作的数据源中,再进行数据库操作,即完成动态切换数据库的目的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1