访问分布式数据库的方法、数据源代理装置及应用服务器的制造方法_2

文档序号:9687612阅读:来源:国知局
系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0033]本发明实施例中,在数据库进行分布式部署的场景下,应用服务器集群访问分布式数据库时,应用程序不需要不需要清楚分布式数据库的分布情况,不需要显式地设置访问的数据库,在需要变更数据源的时候,不需要修改应用程序,而是在需要提供数据源的地方提供数据源代理,数据源代理实现了数据源的接口,通过数据源代理动态地返回底层真实的数据源。
[0034]本发明实施例中涉及到应用服务器、数据源代理、底层数据源,它们之间的关系示意图如图1所示。在程序实现上,应用服务器101通过数据源代理的接口与数据源代理102连接,数据源代理102通过接口访问分布式的底层数据源103。其中,应用服务器101为存储有应用程序的服务器,可以是应用服务器集群;数据源代理102可以以独立的代理服务器的形式存在,也可以是集成于应用服务器101中的一段程序,底层数据源103是分布式部署的数据库服务器。
[0035]下面结合图2介绍本发明实施例中的访问分布式数据库的流程。
[0036]201、应用服务器获取数据源代理;
[0037]应用服务器101在应用程序启动时,或首次访问数据库时,通过调用数据源代理接口获取数据源代理。
[0038]可选的,应用服务器101可以通过业务逻辑与数据库资源中间的DA0层来获取数据源的,因此在应用程序启动或首次访问应用服务器101时,会实例化DAO,并通过DAO层获取数据源代理。
[0039]202、应用服务器接收用户的访问请求;
[0040]在有用户访问应用服务器101,例如用户登录时,应用服务器101接收到用户的访问请求,程序中的线程上下文获取并设置用户标识,该用户标识可以是用户名、学号、工号等信息。
[0041 ] 203、数据源代理接收应用服务器发送的数据库访问请求;
[0042]在用户登录时,或登录后的其他需要访问数据库的场景下,数据源代理接收到应用服务器发送的数据库访问请求。例如:当用户登录时,需要到数据库中校验用户的用户名和密码,此时,需要访问数据库。
[0043]可选的,在实际应用中,数据源代理是通过DA0接收到应用服务器发送的数据库访问请求。
[0044]204、数据源代理通过数据源查询服务获取数据库访问请求对应的用户标识,再确定该用户标识对应的底层数据源的标识;
[0045]数据源代理102通过数据源查询服务获取到当前的数据库访问请求对应的用户标识,获取的其中一种常用方式可以是从线程的上下文里通过主键查找获得。例如:在java程序中,数据源代理是在ThreadLocal线程中去查找用户标识。
[0046]数据源代理102获取到用户标识后,通过数据源查询服务确定可以确定该用户对应的底层数据源103的标识。
[0047]其中,本发明实施例中的数据源查询服务需要决定两件事:
[0048]1、决定如何实现数据源标识的管理和查询,例如可以使用用户姓名、学号等用户标识来划分用户数据所在的数据源,这个如何划分由业务开发自行决定。实际上,数据源查询服务中包括一种分布式存储规则,该规则指示用户标识与底层数据源标识之间的对应关系,例如:通过算法、程序控制哪些用户的相关数据存储在哪些数据库,例如:用户ID小于10000的存储在01底层数据源中,用户ID大于10000小于20000的存储在02底层数据源中等。
[0049]或者,数据源查询服务中包括应用方将用户标识与底层数据源之间的关联关系封装成的数据源查询服务,以插件、组件或接口形式提供给数据源代理102进行调用,例如:直接记录用户登录名和底层数据源的绑定关系。
[0050]2、数据源查询服务还需要决定用户标识是如何传递的,一种方式为如前面所提的业务代码存放在线程上下文中,然后查询服务从上下文中取出,这里也不限定只能从线程上下文获取。
[0051]需要说明的是,数据源查询服务虽然是应用方提供,但这跟应用本身是分离的,与应用本身的功能开发是分离开的,对应用来说是透明的。
[0052]205、数据源代理返回该底层数据源的标识对应的底层数据源的链接;
[0053]数据源代理102在确定该用户对应的底层数据源的标识后,返回该底层数据源标识对应的底层数据源103的链接。
[0054]底层数据源103的链接中具体可以包括访问的数据库实际的物理链接、端口号等
?目息。
[0055]实际应用中,若是首次访问一个新的底层数据源时,需要新构造数据源并返回该数据源的链接。之后,数据源代理102会缓存构造的该数据源,当再次接收到该数据源的访问请求时,可以直接从缓存中查找到该底层数据源,并返回该底层数据源的链接。
[0056]206、应用服务器从所述数据源代理中获取该用户的底层数据源链接。
[0057]数据源代理102返回该用户标识对应的数据源链接,应用服务器101获取到该用户对应的数据源链接。
[0058]可选的,具体数据源代理服务器是通过数据访问接口DA0将该用户对应的底层数据源链接返回给数据源代理102的,应用服务器101从DA0中获取到该用户对应的底层数据源链接。
[0059]之后,当应用服务器101接收到该用户的相关数据库指令(例如:数据库查询、插入、删除、修改等SQL语句)时,可以在该数据源链接基础上执行该用户相关的数据库指令。
[0060]本发明实施例中,在访问分布式数据库时,应用服务器101并不是显式的设置访问底层数据源103,而是通过数据源代理102进行访问底层数据源103,从而针对不同的用户,可以返回不同的底层数据源103产生的链接,达到分布式访问的目的,从而能够灵活动态地设置数据源,节省更新维护程序的成本。
[0061]以上是对访问分布式数据库的方法进行的介绍,下面对本发明实施例中的数据源代理装置和应用服务器进行介绍。
[0062]需要说明的是,数据源代理装置可以以独立的代理服务器的形式存在,也可以是集成于在应用服务器中。结合图3,本发明实施例中的数据源代理装置3包括:
[0063]接收单元301,用于接收数据库访问请求;
[0064]确定单元302,用于通过数据源查询服务获取数据库访问请求对应的用户标识,再确定用户标识对应的底层数据源的标识;
[0065]返回单元303,用于返回底层数据源的标识对应的底层数据源的链接。
[0066]在一些具体的实施中,数据源查询服务包括一种分布式存储规则,该分布式存储规则指示所述用户标识与所述底层数据源标识之间的对应关系。
[0067]在一些具体的实施中,返回单元,具体用于根据底层数据源的标识查找到相应的底层数据源,并返回底层数据源的链接。
[0068]在一些具体的实施中,执行单元,当接收到数据库操作指令时,用于基于该底层数据源链接执行数据库操作指令。
[0069]本发明实施例中数据源代理装置3的各功能模块之间的交互过程可以参阅前述图2所示的实施例中的交互过程,具体此处不再赘述。
[0070]本发明实施例中,数据源代理装置中的接收单元301接收数据库访问请求后,确定单元302通过数据源查询服务获取数据库
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1