用于动态访问数据源的系统和方法技术方案

技术编号:7466930 阅读:259 留言:0更新日期:2012-06-29 08:33
本发明专利技术提供了一种动态访问数据源的系统和方法。所述系统包括:数据源注册模块,用于增加或变更数据源连接;数据源心跳检查模块,用于每隔第一预定时段轮询数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表;数据源自动负载模块,用于:每隔第二预定时段,根据每个数据源的权重和响应时间生成随机ID列表;将所生成的随机ID与数据源进行绑定;在接收到数据源连接请求时,基于随机ID选出一个数据源;以及获得到所选出的一个数据源的连接。

【技术实现步骤摘要】

本专利技术总体地涉及数据库领域,更具体地说,本专利技术涉及一种。
技术介绍
近年来,社交网络服务、微博等得到了越来越广泛的应用。然而,对于社交网络服务、微博等,有一个共同点是数据量大、并发读写要求高。从数据库的角度来看,比较好的处理是通过数据切分来实现,但是这带来多个数据源访问之间的负载、容错与高效问题。
技术实现思路
为了解决现有技术中的上述缺点和问题而提出本专利技术。根据本专利技术的一个方面,提供了一种动态访问数据源的系统,包括数据源注册模块,用于增加或变更数据源连接;数据源心跳检查模块,用于每隔第一预定时段轮询数据源列表中的所有数据源, 获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表;数据源自动负载模块,用于每隔第二预定时段,根据每个数据源的权重和响应时间生成随机ID列表;将所生成的随机ID与数据源进行绑定;在接收到数据源连接请求时,基于随机ID选出一个数据源;以及获得到所选出的一个数据源的连接。根据本专利技术的该方面的系统可以进一步包括数据源自动恢复模块,用于每隔第三预定时段,轮询所述异常数据源列表中的所有数据源;如果有数据源恢复正常,则从所述异常数据源列表删除该数据源并且向所述数据源列表增加该数据源。根据本专利技术的该方面的系统可以进一步包括连接异常拦截模块,用于如果应用方法报数据源连接异常,则向所述异常数据源列表增加该数据源并且从所述数据源列表删除该数据源。根据本专利技术的该方面的系统可以进一步包括系统管理模块,用于管理数据源配置、管理权重、设置所述第一预定时段和第二预定时段或第三预定时段的长度。根据本专利技术的该方面的系统可以进一步包括连接监控模块,用于监控数据源连接。根据本专利技术的另一个方面,提供了一种动态访问数据源的方法,包括生成数据源列表;每隔第一预定时段轮询所述数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表;每隔第二预定时段,根据每个数据源的权重和响应时间生成随机ID列表;将所生成的随机ID与数据源进行绑定;在接收到数据源连接请求时,基于随机ID选出一个数据源;以及获得到所选出的一个数据源的连接。根据本专利技术的该方面的系统可以进一步包括每隔第三预定时段,轮询所述异常数据源列表中的所有数据源;如果有数据源恢复正常,则从所述异常数据源列表删除该数据源并且向所述数据源列表增加该数据源。根据本专利技术的该方面的方法可以进一步包括如果应用方法报数据源连接异常, 则向所述异常数据源列表增加该数据源并且从所述数据源列表删除该数据源。根据本专利技术的该方面的方法可以进一步包括对数据源连接进行监控。附图说明通过下面结合附图进行的描述,本专利技术一些示范性实施例的上述和其他方面、特征和优点对于本领域技术人员来说将变得显而易见,其中图1是根据本专利技术的示范性数据库动态数据源访问、负载和容错系统的框图;图2是示出根据本专利技术的示范性数据库动态数据源访问、负载和容错方法的流程图;图3是根据本专利技术的示范性心跳检查的过程的流程图;图4(a)和4(b)是根据本专利技术的示范性自动负载的过程的流程图;以及图5是根据本专利技术的示范性自动恢复的过程的流程图。具体实施例方式提供参考附图的下面描述以帮助全面理解本专利技术的示范性实施例。其包括各种细节以助于理解,而应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本专利技术的范围和精神。同样,为了清楚和简明,省略了对公知功能和结构的描述。下面将参考附图详细描述本专利技术。图1是示出根据本专利技术的示范性数据库动态数据源访问、负载和容错系统100的框图。系统100包括数据源注册模块110、数据源心跳检查模块120、数据源自动负载模块 130。数据源注册模块110用于增加或变更数据源连接。例如,当需要增加新的数据源连接或变更现有数据源连接时,可以通过数据源注册模块110来将新的数据源连接注入到数据源容器中,或可以通过数据源注册模块110来该数据源容器中的已有数据源连接,而不需要重启应用。在使用J2EE架构的情况下,可以通过JMX(Java ManagementExtensions) 来实现数据源注册模块110。如本领域技术人员所了解的,JMX是为应用植入管理功能的框架,通过其将容易地实现数据源注册模块110。数据源心跳检查模块120用于每隔预定时段轮询数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表。 例如,数据源心跳检查模块120可以每隔1分钟(可以根据需要而采用其它预定时段)轮询数据源列表中的所有数据源,即向数据源列表中的所有数据源模拟一次真实的数据查询请求。确定从数据源接收到的响应的时间,并且在超过超时阈值(例如10秒,可以根据需要而采用其它阈值)时,将相应的数据源增加到异常数据源列表,从数据源列表删除该数据源。数据源自动负载130模块用于每隔预定时段(例如15分钟),根据每个数据源的权重和响应时间生成随机ID列表;将所生成的随机ID与数据源进行绑定;在接收到数据源连接请求时,基于随机ID选出一个数据源;以及获得到所选出的一个数据源的连接。所述数据源的权重可以基于数据源的性能等各种因素设置,并且可以通过系统管理模块(稍后描述)进行管理(例如设置和/或改变)。可以对响应时间所处的范围进行赋值,例如, 当响应时间小于500毫秒时,将响应时间权重值赋予10 ;当响应时间大于等于500毫秒并且小于1秒时,将响应时间权重值赋予5 ;当响应时间大于等于1秒并且小于2秒时,将响应时间权重值赋予2 ;当响应时间大于等于2秒并且小于5秒时,将响应时间权重值赋予1 ; 以及当响应时间大于5秒时,将响应时间权重值赋予0。以上仅仅是一个示例,可以根据具体环境来使响应时间来影响随机ID列表的生成。在生成随机ID列表时,可以将所生成的随机ID与数据源(即数据源连接)进行绑定,并且在接收到数据源连接请求时,基于随机 ID选出一个数据源,并获得到所选出的一个数据源的连接。由此,在获得数据源连接时,使得正常并且负载轻的数据源容易得到连接。此外,系统100还可以包括数据源自动恢复模块140。数据源自动恢复模块140用于定期检查异常数据源列表,使得连接正常的数据源加入到数据源列表中。例如,数据源自动恢复模块140每隔10分钟,轮询所述异常数据源列表中的所有数据源,即向数据源异常列表中的数据源发送数据连接心跳信息并且记录其结果。如果有数据源恢复正常,则从所述异常数据源列表删除该数据源并且向所述数据源列表增加该数据源。而且,系统100还可以包括连接异常拦截模块150。连接异常拦截模块150用于在发生数据源连接异常时,使得数据源停止服务并进入异常数据源列表。也就是说,如果应用方法报数据源连接异常,则向所述异常数据源列表增加该数据源并且从所述数据源列表删除该数据源。在使用J2EE架构时,可以通过使用spring框架下的AOP (AspectOriented Programming)来实现连接异常拦截模块150。如本领域技术人员所了解的,AOP能够对于所有业务服务进行监控,并且在发现服务异常时,实时拦截到。所以,在此将不详细介绍连接异常拦截模块150。并且,系统100本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:孙炳蔚
申请(专利权)人:北京京东世纪贸易有限公司
类型:发明
国别省市:

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

1
相关领域技术