CN102521339B - 用于动态访问数据源的系统和方法 - Google Patents

用于动态访问数据源的系统和方法 Download PDF

Info

Publication number
CN102521339B
CN102521339B CN201110405639.4A CN201110405639A CN102521339B CN 102521339 B CN102521339 B CN 102521339B CN 201110405639 A CN201110405639 A CN 201110405639A CN 102521339 B CN102521339 B CN 102521339B
Authority
CN
China
Prior art keywords
data source
list
data
source
abnormal
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.)
Active
Application number
CN201110405639.4A
Other languages
English (en)
Other versions
CN102521339A (zh
Inventor
孙炳蔚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201110405639.4A priority Critical patent/CN102521339B/zh
Publication of CN102521339A publication Critical patent/CN102521339A/zh
Application granted granted Critical
Publication of CN102521339B publication Critical patent/CN102521339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

用于动态访问数据源的系统和方法
技术领域
本发明总体地涉及数据库领域,更具体地说,本发明涉及一种用于动态访问数据源的系统和方法。
背景技术
近年来,社交网络服务、微博等得到了越来越广泛的应用。然而,对于社交网络服务、微博等,有一个共同点是数据量大、并发读写要求高。从数据库的角度来看,比较好的处理是通过数据切分来实现,但是这带来多个数据源访问之间的负载、容错与高效问题。
发明内容
为了解决现有技术中的上述缺点和问题而提出本发明。
根据本发明的一个方面,提供了一种动态访问数据源的系统,包括:
数据源注册模块,用于增加或变更数据源连接;
数据源心跳检查模块,用于每隔第一预定时段轮询数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表;
数据源自动负载模块,用于:
每隔第二预定时段,根据每个数据源的权重和响应时间生成随机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还可以包括连接监控模块160。连接监控模块160用于监控数据源连接。例如,连接监控模块160可以访问数据源调用日志来生成数据源连接报表。在J2EE架构的情况下,例如可以使用JFreeChart图标绘制类库来实现。
此外,系统100还可以包括系统管理模块170。系统管理模块170用于对各种设置进行管理。例如,系统管理模块170可以管理数据源配置、管理权重、设置心跳检查的时段、数据源自动负载的时段以及数据源自动恢复的时段的长度。
如在图1中所示,系统100的运行可以借助于各种框架或API来实现。例如,在采用J2EE架构的情况下,可以借助于Spring、ORM、JDBC、JTA等来实现。
图2是示出根据本发明的示范性数据库动态数据源访问、负载和容错方法200的流程图。
在步骤210中,首先生成数据源列表。例如,可以通过人工或通过数据源自动注册模块或通过系统管理模块来生成或修改数据源。
在步骤220中,对数据源进行心跳检查,以确定数据源是否正常,并且将不正常的数据源从数据源列表中删除并加入到数据源异常列表中。在下面将参考图3详细描述心跳检查的过程。
在步骤230中,进行自动负载处理,使得正常并且负载轻的数据源容易得到连接。在下面将参考图4详细描述自动负载的过程。
在步骤240中,进行自动恢复处理,使得将恢复正常的数据源从数据源异常列表中删除并加入到数据源列表中。在下面将参考图5详细描述自动恢复的过程。
方法200可以进一步包括对数据源连接异常进行拦截,例如,在应用方法报数据源连接异常的情况下,向异常数据源列表增加该数据源并且从所述数据源列表删除该数据源。
方法200还可以包括对数据源连接进行监控,例如通过访问数据源调用日志来生成数据源连接报表。
图3是根据本发明的示范性心跳检查的过程300的流程图。
如图3中所示,过程300在步骤310中确定是否达到预定间隔开始。预定间隔例如可以是1分钟,当然也可以根据需要而设置为其它值。
当在步骤310中确定达到预定间隔时,在步骤320轮询数据源列表中的所有数据源,即向数据源列表中的所有数据源模拟一次真实的数据查询请求。
在步骤330中确定是否在超时阈值内从数据源接收到响应。超时阈值例如可以是10秒,当然也可以根据需要而设置为其它值。
当在超时阈值内没有从数据源接收到响应时,在步骤340从数据源列表删除该数据源,并在步骤350将相应的数据源增加到异常数据源列表。
另一方面,如果在超时阈值内从数据源接收到响应,则在步骤360记录响应时间。
图4(a)和4(b)是根据本发明的示范性自动负载的过程400的流程图。
如图4(a)中所示,过程400在步骤410中确定是否达到预定间隔开始。预定间隔例如可以是1分钟,当然也可以根据需要而设置为其它值。
当在步骤410中确定达到预定间隔时,在步骤420获得数据源权重(例如,可以读取缓存来获得数据源权重),并且在步骤430获得心跳检查过程中记录的响应时间。
在步骤440根据每个数据源的权重和响应时间(例如根据响应时间所处的时间范围而赋予不同的权重值)生成随机ID列表,并且在步骤450将所生成的随机ID与数据源进行绑定。
在图4(b)中,首先在步骤460接收数据源连接请求。在步骤470生成随机数,并且然后在步骤480基于与随机数相对应的随机ID选出一个数据源,最后在步骤490获得到所选出的一个数据源的连接。
图5是根据本发明的示范性自动恢复的过程500的流程图。
在步骤510遍历异常数据源列表。在步骤520确定是否有数据源恢复正常,如果有数据源恢复正常,则在步骤530将恢复正常的数据源加入数据源列表(并更新其响应时间)并在步骤540将该数据源从异常数据源列表中删除。
应指出的是,上面分别对本发明的系统和方法实施例分别进行了描述,但是对一个实施例描述的细节也可应用于另一个实施例。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和系统的全部或者任何步骤或者部件可以以软件、硬件、固件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个软件模块或者一组软件模块来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
虽然本说明书包含许多特定实施方式细节,但是不应当将这些细节解释为对任何发明或可以主张的内容的范围的限制,而应当解释为对可以特定于特定发明的特定实施例的特征的描述。还可以将在本说明书中在分离的实施例的情境中描述的某些特征组合在单个实施例中实现。相反地,也可以将在单个实施方式的情境中描述的各个特征分离地在多个实施方式中实现或在任何适当的子组合中实现。此外,尽管可能在上面将特征描述为在某些组合中起作用,甚至最初主张如此,但是可以在一些情况下将来自所主张的组合的一个或多个特征从组合中删去,并且可以将所主张的组合指向子组合或者子组合的变体。
类似地,虽然在附图中以特定次序描绘了操作,但是不应当将这理解为需要以所示的特定次序或者以连续次序执行这样的操作、或者需要执行所有图示的操作才能达到期望的结果。在某些情况下,多任务以及并行处理可以是有利的。此外,不应当将在上述实施例中的各种系统组件的分离理解为在所有实施例中均需要这样的分离,而应当理解的是,通常可以将所描述的程序组件和系统集成到一起成为单个软件产品或封装为多个软件产品。
计算机程序(也称作程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,所述编程语言包括编译或解释语言、或者说明性或过程语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适于在计算环境中使用的其它单元。计算机程序没有必要对应于文件系统中的文件。可以将程序存储在保持其它程序或数据的文件(例如,存储在标记语言文档中的一个或多个脚本)的一部分、专用于讨论中的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (8)

1.一种动态访问数据源的系统,包括:
用于生成数据源列表的装置;
用于每隔第一预定时段轮询所述数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表的装置;
用于每隔第二预定时段,根据每个数据源的权重和响应时间生成随机ID列表的装置;
用于将所生成的随机ID与数据源进行绑定的装置;
用于在接收到数据源连接请求时,基于随机ID选出一个数据源的装置;以及
用于获得到所选出的一个数据源的连接的装置。
2.根据权利要求1所述的系统,进一步包括:
用于每隔第三预定时段,轮询所述异常数据源列表中的所有数据源的装置;
用于如果有数据源恢复正常,则从所述异常数据源列表删除该数据源并且向所述数据源列表增加该数据源的装置。
3.根据权利要求1所述的系统,进一步包括:
用于如果应用方法报数据源连接异常,则向所述异常数据源列表增加该数据源并且从所述数据源列表删除该数据源的装置。
4.根据权利要求1所述的系统,进一步包括:
用于对数据源连接进行监控的装置。
5.一种动态访问数据源的方法,包括:
生成数据源列表;
每隔第一预定时段轮询所述数据源列表中的所有数据源,获得每个数据源的响应时间,并使得响应时间超过超时阈值的数据源进入异常数据源列表;
每隔第二预定时段,根据每个数据源的权重和响应时间生成随机ID列表;
将所生成的随机ID与数据源进行绑定;
在接收到数据源连接请求时,基于随机ID选出一个数据源;以及
获得到所选出的一个数据源的连接。
6.根据权利要求5所述的方法,进一步包括:
每隔第三预定时段,轮询所述异常数据源列表中的所有数据源;
如果有数据源恢复正常,则从所述异常数据源列表删除该数据源并且向所述数据源列表增加该数据源。
7.根据权利要求5所述的方法,进一步包括:
如果应用方法报数据源连接异常,则向所述异常数据源列表增加该数据源并且从所述数据源列表删除该数据源。
8.根据权利要求5所述的方法,进一步包括:
对数据源连接进行监控。
CN201110405639.4A 2011-12-08 2011-12-08 用于动态访问数据源的系统和方法 Active CN102521339B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110405639.4A CN102521339B (zh) 2011-12-08 2011-12-08 用于动态访问数据源的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110405639.4A CN102521339B (zh) 2011-12-08 2011-12-08 用于动态访问数据源的系统和方法

Publications (2)

Publication Number Publication Date
CN102521339A CN102521339A (zh) 2012-06-27
CN102521339B true CN102521339B (zh) 2014-11-19

Family

ID=46292254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110405639.4A Active CN102521339B (zh) 2011-12-08 2011-12-08 用于动态访问数据源的系统和方法

Country Status (1)

Country Link
CN (1) CN102521339B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104881256B (zh) * 2015-06-05 2018-09-11 北京京东尚科信息技术有限公司 用于对数据源的可用性进行监测的方法和装置
CN106856489B (zh) 2015-12-08 2020-09-08 阿里巴巴集团控股有限公司 一种分布式存储系统的服务节点切换方法和装置
CN106101022B (zh) * 2016-06-15 2019-08-23 珠海迈科智能科技股份有限公司 一种数据请求处理方法和系统
TWI740885B (zh) * 2017-01-23 2021-10-01 香港商阿里巴巴集團服務有限公司 分布式儲存系統的服務節點切換方法及裝置
CN109697193A (zh) * 2017-10-24 2019-04-30 中兴通讯股份有限公司 一种确定异常节点的方法、节点及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1512363A (zh) * 2002-12-31 2004-07-14 联想(北京)有限公司 提高商务机群可服务性的方法
CN101605092A (zh) * 2009-07-10 2009-12-16 浪潮电子信息产业股份有限公司 一种基于内容的负载均衡系统
CN102141996A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 数据访问方法和配置管理数据库系统
CN102156729A (zh) * 2011-03-29 2011-08-17 北京京东世纪贸易有限公司 监控多个数据库服务器的系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005038614A2 (en) * 2003-10-16 2005-04-28 Centerboard, Inc. System and method for facilitating asynchronous disconnected operations for data access over a network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1512363A (zh) * 2002-12-31 2004-07-14 联想(北京)有限公司 提高商务机群可服务性的方法
CN101605092A (zh) * 2009-07-10 2009-12-16 浪潮电子信息产业股份有限公司 一种基于内容的负载均衡系统
CN102141996A (zh) * 2010-01-29 2011-08-03 国际商业机器公司 数据访问方法和配置管理数据库系统
CN102156729A (zh) * 2011-03-29 2011-08-17 北京京东世纪贸易有限公司 监控多个数据库服务器的系统和方法

Also Published As

Publication number Publication date
CN102521339A (zh) 2012-06-27

Similar Documents

Publication Publication Date Title
US10733079B2 (en) Systems and methods for end-to-end testing of applications using dynamically simulated data
CN110096517B (zh) 基于分布式系统的缓存数据的监控方法、装置和系统
US8312322B2 (en) System for automated generation of computer test procedures
US10824372B2 (en) Data recovery method and device, and cloud storage system
CN102521339B (zh) 用于动态访问数据源的系统和方法
CN107562556B (zh) 故障的恢复方法、恢复装置及存储介质
CN109002484B (zh) 一种用于顺序消费数据的方法及系统
Syer et al. Continuous validation of performance test workloads
US9021312B1 (en) Method and apparatus for visual pattern analysis to solve product crashes
CN105824846B (zh) 数据迁移方法及装置
US8959051B2 (en) Offloading collection of application monitoring data
CN103401698A (zh) 用于服务器集群运算中对服务器状况报警的监控系统
US11036590B2 (en) Reducing granularity of backup data over time
CN109325010B (zh) 日志查看方法、装置、计算机设备和存储介质
US20170017527A1 (en) Contention and selection of controlling work coordinator in a distributed computing environment
CN113779092B (zh) 基于数据仓库的实时数据展示方法、装置、设备及介质
CN113138973A (zh) 数据管理系统及工作方法
WO2015139565A1 (en) Heterogeneous logging system management configuration
CN113419872A (zh) 一种应用系统接口集成系统、集成方法、设备及存储介质
CN107451056B (zh) 监听接口测试结果的方法及装置
US10613954B1 (en) Testing framework for host computing devices
CN114895879B (zh) 管理系统设计方案确定方法、装置、设备及存储介质
CN111625528A (zh) 配置管理数据库的校验方法、装置及可读存储介质
US9621415B1 (en) Automated configuration collection and management using source control
CN116662290B (zh) 有状态的服务器无感知函数的读优化方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant