CN110765187A - 一种数据源路由管理方法和装置 - Google Patents

一种数据源路由管理方法和装置 Download PDF

Info

Publication number
CN110765187A
CN110765187A CN201810743523.3A CN201810743523A CN110765187A CN 110765187 A CN110765187 A CN 110765187A CN 201810743523 A CN201810743523 A CN 201810743523A CN 110765187 A CN110765187 A CN 110765187A
Authority
CN
China
Prior art keywords
data source
annotation
identification
business method
thread context
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.)
Pending
Application number
CN201810743523.3A
Other languages
English (en)
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
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201810743523.3A priority Critical patent/CN110765187A/zh
Publication of CN110765187A publication Critical patent/CN110765187A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种数据源路由管理方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识;通过切面拦截带有注解的业务方法,以通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量;业务方法根据线程上下文环境变量,选择与业务方法对应的数据源。该实施方式能够减少重复的数据源选择逻辑代码,减少对业务代码的侵入,降低数据源选择代码与业务代码的耦合度,可以灵活配置动态数据源选择,实现统一管理数据源的动态切换,可以根据指定策略来确定数据源,不仅满足基本管理需求,还可以满足扩展需求,降低集成成本,提高开发效率。

Description

一种数据源路由管理方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据源路由管理方法和装置。
背景技术
互联网在现实生活中应用非常广泛,用户可以快速的在互联网上进行信息提取和信息交流,大数据已经成为互联网发展的趋势。MySQL(一种关系型数据库管理***)作为目前世界上使用最广泛的免费数据库,但在实际的生产环境中,由单台MySQL作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。当我们开始使用MySQL,除了考虑使用分库分表方案,另外就是让master-slave(主从数据库)发挥更大的能量,使slave(从数据库)提供方便快捷的只读服务,以及读写分离的优雅实现。目前采用硬编码的方式实现数据库读写分离,即通过在业务逻辑中通过API(应用程序编程接口)调用方式实现对数据源的选择。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
数据源选择的代码和业务代码耦合度高,对业务实现侵入较高;
缺少对数据源动态切换的统一管理;
数据源切换设计方案不够完善,仅解决基本的管理需求。
发明内容
有鉴于此,本发明实施例提供一种数据源路由管理方法和装置,能够减少重复的数据源选择逻辑代码,减少对业务代码的侵入,降低数据源选择代码与业务代码的耦合度,可以灵活配置动态数据源选择,实现统一管理数据源的动态切换,可以根据指定策略来确定数据源,不仅满足基本管理需求,还可以满足扩展需求,降低集成成本,提高开发效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据源路由管理方法。
一种数据源路由管理方法,包括:在需要选择数据源的业务方法上添加注解,并在所述注解的属性中指定数据源标识;通过切面拦截带有所述注解的业务方法,以通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量;所述业务方法根据所述线程上下文环境变量,选择与所述业务方法对应的数据源。
可选地,所述注解添加在所述业务方法的签名处。
可选地,通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:解析所述注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与所述数据源标识对应的线程上下文环境变量。
可选地,在所述注解的属性中还指定注解所属业务方法的标识,所述所属业务方法的标识的优先级高于所述注解的属性中指定的数据源标识,通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:解析所述注解的属性中的所属业务方法的标识,并根据所述所属业务方法的标识查询最新的数据源配置;将所述最新的数据源配置中的数据源标识,存入与所述数据源标识对应的线程上下文环境变量;其中,所述最新的数据源配置包括动态配置的业务方法与数据源标识之间的对应关系。
可选地,在所述注解的属性中还指定执行策略,所述执行策略包括查询参数与数据源标识的对应关系,通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:解析所述注解的属性中的执行策略,以根据所述查询参数确定对应的数据源标识;将与所述查询参数对应的数据源标识,存入与所述数据源标识对应的线程上下文环境变量。
根据本发明实施例的另一方面,提供了一种数据源路由管理装置。
一种数据源路由管理装置,包括:注解添加模块,用于在需要选择数据源的业务方法上添加注解,并在所述注解的属性中指定数据源标识;切面拦截模块,用于通过切面拦截带有所述注解的业务方法,以通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量;数据源选择模块,用于所述业务方法根据所述线程上下文环境变量,选择与所述业务方法对应的数据源。
可选地,所述注解添加在所述业务方法的签名处。
可选地,所述切面拦截模块包括第一数据源选择逻辑执行模块,用于:解析所述注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与所述数据源标识对应的线程上下文环境变量。
可选地,所述注解添加模块在所述注解的属性中还指定注解所属业务方法的标识,所述所属业务方法的标识的优先级高于所述注解的属性中指定的数据源标识,所述切面拦截模块包括第二数据源选择逻辑执行模块,用于:解析所述注解的属性中的所属业务方法的标识,并根据所述所属业务方法的标识查询最新的数据源配置;将所述最新的数据源配置中的数据源标识,存入与所述数据源标识对应的线程上下文环境变量;其中,所述最新的数据源配置包括动态配置的业务方法与数据源标识之间的对应关系。
可选地,所述注解添加模块在所述注解的属性中还指定执行策略,所述执行策略包括查询参数与数据源标识的对应关系,所述切面拦截模块包括第三数据源选择逻辑执行模块,用于:解析所述注解的属性中的执行策略,以根据所述查询参数确定对应的数据源标识;将与所述查询参数对应的数据源标识,存入与所述数据源标识对应的线程上下文环境变量。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明提供的数据源路由管理方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的数据源路由管理方法。
上述发明中的一个实施例具有如下优点或有益效果:在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识;通过切面拦截带有注解的业务方法,以通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量;业务方法根据线程上下文环境变量选择数据源。能够减少重复的数据源选择逻辑代码,减少对业务代码的侵入,降低数据源选择代码与业务代码的耦合度。在注解的属性中还可指定注解所属业务方法的标识,根据注解所属业务方法的标识查询最新的数据源配置,可以灵活配置动态数据源选择,实现统一管理数据源的动态切换。在注解的属性中还可指定执行策略,使得可以根据指定策略来确定数据源,不仅满足基本管理需求,还可以满足扩展需求。本发明可以降低集成成本,提高开发效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据源路由管理方法的主要步骤示意图;
图2是根据本发明实施例的***架构示意图;
图3是根据本发明实施例的数据源路由管理装置的主要模块示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适于用来实现本发明实施例的服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据源路由管理方法的主要步骤示意图。
如图1所示,本发明实施例的数据源路由管理方法主要包括如下的步骤S101至步骤S103。
步骤S101:在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识。
具体地,可以在业务方法的签名处添加一行注解“@DataSource”,并对注解的属性进行设置,如指定数据源的唯一标识key。key是注解“@DataSource”的一个必选配置属性,类型为string,该属性指示数据源key,填写需要使用的数据源key,即可访问相应的数据源。
步骤S102:通过切面拦截带有注解的业务方法,以通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量。
可以通过Spring(一个开源的Java平台)的AOP(Aspect Oriented Programming的缩写,意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术)实现切面拦截。
通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量的步骤,具体可以包括:解析注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与数据源标识对应的线程上下文环境变量。
通过该步骤解析出key的值,确定本次需要使用的数据源,将该key的值存入线程环境中的上下文变量,从而在最终获取数据源时有据可依,实现数据源的路由管理。
在注解的属性中还可以指定注解所属业务方法的标识configKey,configKey是注解@DataSource的可选配置属性,类型为string,该属性指示数据源配置,根据configKey可以获取需要使用的数据源配置,实现动态切换数据源。
并且,注解所属业务方法的标识configKey的优先级高于注解的属性中指定的数据源标识key。当配置了configKey这一属性时,通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量的步骤,具体可以包括:解析注解的属性中的所属业务方法的标识,并根据注解所属业务方法的标识查询最新的数据源配置;将最新的数据源配置中的数据源标识,存入与数据源标识对应的线程上下文环境变量。
其中,最新的数据源配置包括可动态配置的业务方法与数据源标识之间的对应关系。由于业务方法与数据源标识之间的对应关系可以实时动态修改生效,从而可以实现了数据源的动态切换,例如,原配置的A数据源宕机时,可以通过修改该配置切换至B数据源。
在注解的属性中还可以指定执行策略strategy,执行策略包括查询参数与数据源标识的对应关系。strategy是注解@DataSource的可选配置属性,类型为string,执行策略strategy可以根据需要来自定义。通过配置该属性可以完全控制切面中的数据源选择逻辑。当配置了strategy这一属性时,通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量的步骤,具体可以包括:解析注解的属性中的执行策略,以根据查询参数确定对应的数据源标识;将与查询参数对应的数据源标识,存入与数据源标识对应的线程上下文环境变量。例如,通过配置执行策略这一属性,可以按照某一查询参数“单号”来确定选取哪个数据源,来实现数据库散列(分库分表)的功能。
其中,执行策略strategy所需要的外部参数(如查询参数)通过配置注解@DataSource的strategyArgs属性获得。strategyArgs是注解@DataSource的可选配置属性,类型为string,用于描述执行策略参数。
在注解中还可以配置disable属性,该属性类型为boolean,也是注解@DataSource的可选配置属性,默认值为false,disable的值用于表示是否禁用切面的处理逻辑。当disable的值为true时,等同于将@DataSource注释,关闭所有处理逻辑,即:业务方法被切面拦截之后,切面不执行任何数据源选择逻辑。
步骤S103:业务方法根据线程上下文环境变量,选择与该业务方法对应的数据源。
本发明实施例在Spring框架下实现,在实施时按照如下的实施步骤实施:通过MAVEN(一个项目管理工具)的pom.xml引入依赖jar包;设置DataSource的配置文件,及DataSourceAspect缓存层的切面定义;在业务方法上添加数据源注解,根据需要选择具体数据源。pom即项目对象模型,是Maven的基本工作单元,它是一个XML文件,其中包含有关Maven用于构建项目的项目和配置详细信息,并且其包含大多数项目的默认值,可以在pom中指定的一些配置是项目依赖性、可执行的插件或目标、构建配置文件等,还可以指定其他信息如项目版本,描述,开发人员,邮件列表等。本发明实施例的pom.xml是MAVEN的工程文件,主要用于管理依赖的jar包。设置DataSource的配置文件,例如包括动态数据源选择器配置、生产库数据源配置、只读库数据源配置、事务管理器和标注事务等配置。
本发明实施例提供完善的数据源管理层架构设计支持,非侵入式设计实现,降低与业务逻辑耦合度,高度灵活的数据源组件配置,通过添加注解标记即可实现完善的数据源管理功能,层次清晰。
图2是根据本发明实施例的***架构示意图。
如图2所示,本发明实施例的***架构包括多个Web服务器(图中示例性地示出三个Web服务器:WebServer-1、WebServer-2、WebServer-3),数据源管理切面,以及多个MySQL数据库(图中示例性地示出三个从数据库)。Web服务器发出数据库读写请求,从MySQL数据库读写数据。其中,MySQL数据库中MySQL DB Master为主数据库,用于进行数据的写操作,MySQL DB Slave1、MySQL DB Slave2、MySQL DB Slave3为从数据库,用于进行数据的读操作。数据源管理切面中包括@DateSource数据源切面选择处理器,用于对业务方法进行切面拦截,并执行数据源管理切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量。Web服务器中的业务方法在执行自身的业务逻辑时,参考数据源标识(线程上下文环境中的变量),最终选择数据源。
通过切面确定数据源标识,并将数据源标识存在线程上下文环境中,并对底层数据源做封装实现,在获取数据源时根据数据源标识选择最终的数据源,使数据源选择逻辑可以脱离业务逻辑,属于底层实现,业务逻辑并不需要关注数据源的选择逻辑,从而降低了业务逻辑和数据源选择逻辑的耦合性,降低开发成本。
图3是根据本发明实施例的数据源路由管理装置的主要模块示意图。
如图3所示,本发明实施例的数据源路由管理装置300主要包括:注解添加模块301、切面拦截模块302、数据源选择模块303。
注解添加模块301,用于在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识。
注解添加在业务方法的签名处。
切面拦截模块302,用于通过切面拦截带有所述注解的业务方法,以通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量。
数据源选择模块303,用于业务方法根据线程上下文环境变量,选择与业务方法对应的数据源。
在实施方式一中,切面拦截模块302包括第一数据源选择逻辑执行模块,用于:解析注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与数据源标识对应的线程上下文环境变量。
在实施方式二中,注解添加模块301在注解的属性中还指定注解所属业务方法的标识,注解所属业务方法的标识的优先级高于注解的属性中指定的数据源标识。在该实施方式中,切面拦截模块302可以包括第二数据源选择逻辑执行模块,用于:解析注解的属性中的所属业务方法的标识,并根据所属业务方法的标识查询最新的数据源配置;将最新的数据源配置中的数据源标识,存入与数据源标识对应的线程上下文环境变量;其中,最新的数据源配置包括动态配置的业务方法与数据源标识之间的对应关系。
在实施方式三中,注解添加模块在注解的属性中还指定执行策略,执行策略包括查询参数与数据源标识的对应关系,在该实施方式中,切面拦截模块包括第三数据源选择逻辑执行模块,用于:解析注解的属性中的执行策略,以根据查询参数确定对应的数据源标识;将与查询参数对应的数据源标识,存入与数据源标识对应的线程上下文环境变量。
另外,在本发明实施例中数据源路由管理装置的具体实施内容,在上面所述数据源路由管理方法中已经详细说明了,故在此重复内容不再说明。
图4示出了可以应用本发明实施例的数据源路由管理方法或数据源路由管理装置的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的信息查询请求等数据进行分析等处理,并将处理结果(例如查询到的信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据源路由管理方法一般由服务器405执行,相应地,数据源路由管理装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本申请实施例的服务器的计算机***500的结构示意图。图5示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的主要步骤示意图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括注解添加模块301、切面拦截模块302、数据源选择模块303。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,注解添加模块301还可以被描述为“用于在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:在需要选择数据源的业务方法上添加注解,并在所述注解的属性中指定数据源标识;通过切面拦截带有所述注解的业务方法,以通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量;所述业务方法根据所述线程上下文环境变量,选择与所述业务方法对应的数据源。
根据本发明实施例的技术方案,在需要选择数据源的业务方法上添加注解,并在注解的属性中指定数据源标识;通过切面拦截带有注解的业务方法,以通过执行切面中的数据源选择逻辑,得到与数据源标识对应的线程上下文环境变量;业务方法根据线程上下文环境变量选择数据源。能够减少重复的数据源选择逻辑代码,减少对业务代码的侵入,降低数据源选择代码与业务代码的耦合度。在注解的属性中还可指定注解所属业务方法的标识,根据注解所属业务方法的标识查询最新的数据源配置,可以灵活配置动态数据源选择,实现统一管理数据源的动态切换。在注解的属性中还可指定执行策略,使得可以根据指定策略来确定数据源,不仅满足基本管理需求,还可以满足扩展需求。本发明可以降低集成成本,提高开发效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (12)

1.一种数据源路由管理方法,其特征在于,包括:
在需要选择数据源的业务方法上添加注解,并在所述注解的属性中指定数据源标识;
通过切面拦截带有所述注解的业务方法,以通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量;
所述业务方法根据所述线程上下文环境变量,选择与所述业务方法对应的数据源。
2.根据权利要求1所述的方法,其特征在于,所述注解添加在所述业务方法的签名处。
3.根据权利要求1所述的方法,其特征在于,通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:
解析所述注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与所述数据源标识对应的线程上下文环境变量。
4.根据权利要求1所述的方法,其特征在于,在所述注解的属性中还指定注解所属业务方法的标识,所述所属业务方法的标识的优先级高于所述注解的属性中指定的数据源标识,
通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:
解析所述注解的属性中的所属业务方法的标识,并根据所述所属业务方法的标识查询最新的数据源配置;
将所述最新的数据源配置中的数据源标识,存入与所述数据源标识对应的线程上下文环境变量;
其中,所述最新的数据源配置包括动态配置的业务方法与数据源标识之间的对应关系。
5.根据权利要求1所述的方法,其特征在于,在所述注解的属性中还指定执行策略,所述执行策略包括查询参数与数据源标识的对应关系,
通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量的步骤,包括:
解析所述注解的属性中的执行策略,以根据所述查询参数确定对应的数据源标识;
将与所述查询参数对应的数据源标识,存入与所述数据源标识对应的线程上下文环境变量。
6.一种数据源路由管理装置,其特征在于,包括:
注解添加模块,用于在需要选择数据源的业务方法上添加注解,并在所述注解的属性中指定数据源标识;
切面拦截模块,用于通过切面拦截带有所述注解的业务方法,以通过执行所述切面中的数据源选择逻辑,得到与所述数据源标识对应的线程上下文环境变量;
数据源选择模块,用于所述业务方法根据所述线程上下文环境变量,选择与所述业务方法对应的数据源。
7.根据权利要求6所述的装置,其特征在于,所述注解添加在所述业务方法的签名处。
8.根据权利要求6所述的装置,其特征在于,所述切面拦截模块包括第一数据源选择逻辑执行模块,用于:
解析所述注解的属性中指定的数据源标识,并将解析得到的数据源标识值存入与所述数据源标识对应的线程上下文环境变量。
9.根据权利要求6所述的装置,其特征在于,所述注解添加模块在所述注解的属性中还指定注解所属业务方法的标识,所述所属业务方法的标识的优先级高于所述注解的属性中指定的数据源标识,
所述切面拦截模块包括第二数据源选择逻辑执行模块,用于:
解析所述注解的属性中的所属业务方法的标识,并根据所述所属业务方法的标识查询最新的数据源配置;
将所述最新的数据源配置中的数据源标识,存入与所述数据源标识对应的线程上下文环境变量;
其中,所述最新的数据源配置包括动态配置的业务方法与数据源标识之间的对应关系。
10.根据权利要求6所述的装置,其特征在于,所述注解添加模块在所述注解的属性中还指定执行策略,所述执行策略包括查询参数与数据源标识的对应关系,
所述切面拦截模块包括第三数据源选择逻辑执行模块,用于:
解析所述注解的属性中的执行策略,以根据所述查询参数确定对应的数据源标识;
将与所述查询参数对应的数据源标识,存入与所述数据源标识对应的线程上下文环境变量。
11.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
12.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN201810743523.3A 2018-07-09 2018-07-09 一种数据源路由管理方法和装置 Pending CN110765187A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810743523.3A CN110765187A (zh) 2018-07-09 2018-07-09 一种数据源路由管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810743523.3A CN110765187A (zh) 2018-07-09 2018-07-09 一种数据源路由管理方法和装置

Publications (1)

Publication Number Publication Date
CN110765187A true CN110765187A (zh) 2020-02-07

Family

ID=69326783

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810743523.3A Pending CN110765187A (zh) 2018-07-09 2018-07-09 一种数据源路由管理方法和装置

Country Status (1)

Country Link
CN (1) CN110765187A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737228A (zh) * 2020-06-23 2020-10-02 平安医疗健康管理股份有限公司 数据库的分库分表方法及装置
CN112000738A (zh) * 2020-08-18 2020-11-27 中国建设银行股份有限公司 数据库连接的切换方法、装置、设备及介质
CN113434582A (zh) * 2021-06-24 2021-09-24 平安国际智慧城市科技股份有限公司 业务数据处理方法、装置、计算机设备和存储介质
CN113448679A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 一种处理调用请求的方法和装置
CN113448588A (zh) * 2021-07-09 2021-09-28 天津狮拓信息技术有限公司 数据安全处理方法、装置、电子设备和存储介质
CN113722733A (zh) * 2021-08-27 2021-11-30 北京航天云路有限公司 一种基于Java注解实现的数据访问权限控制方法
CN113763094A (zh) * 2020-11-23 2021-12-07 北京沃东天骏信息技术有限公司 一种业务信息处理方法、装置、服务器、介质和***
CN113835690A (zh) * 2021-09-23 2021-12-24 中邮科通信技术股份有限公司 读写分离多数据源组件及其工作方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012092325A1 (en) * 2010-12-30 2012-07-05 Verisign, Inc. Method and system for implementing business logic
CN103530427A (zh) * 2013-11-04 2014-01-22 北京京东尚科信息技术有限公司 一种基于多数据库的动态切换方法和装置
CN106529331A (zh) * 2016-10-31 2017-03-22 用友网络科技股份有限公司 一种应用于PaaS平台的多租户数据隔离方案
CN106940695A (zh) * 2016-01-05 2017-07-11 阿里巴巴集团控股有限公司 数据源信息的校验方法及装置
CN107480302A (zh) * 2017-09-05 2017-12-15 四川中电启明星信息技术有限公司 一种基于企业级应用场景的松耦合数据集成同步实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012092325A1 (en) * 2010-12-30 2012-07-05 Verisign, Inc. Method and system for implementing business logic
CN103530427A (zh) * 2013-11-04 2014-01-22 北京京东尚科信息技术有限公司 一种基于多数据库的动态切换方法和装置
CN106940695A (zh) * 2016-01-05 2017-07-11 阿里巴巴集团控股有限公司 数据源信息的校验方法及装置
CN106529331A (zh) * 2016-10-31 2017-03-22 用友网络科技股份有限公司 一种应用于PaaS平台的多租户数据隔离方案
CN107480302A (zh) * 2017-09-05 2017-12-15 四川中电启明星信息技术有限公司 一种基于企业级应用场景的松耦合数据集成同步实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HKENJOY: "基于自定义注解和AOP的Spring多数据源配置和使用", pages 1 - 4, Retrieved from the Internet <URL:《https://www.cnblogs.com/niehaikuo/p/8627007.html》> *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113448679A (zh) * 2020-03-25 2021-09-28 北京沃东天骏信息技术有限公司 一种处理调用请求的方法和装置
CN111737228A (zh) * 2020-06-23 2020-10-02 平安医疗健康管理股份有限公司 数据库的分库分表方法及装置
CN111737228B (zh) * 2020-06-23 2022-11-15 深圳平安医疗健康科技服务有限公司 数据库的分库分表方法及装置
CN112000738A (zh) * 2020-08-18 2020-11-27 中国建设银行股份有限公司 数据库连接的切换方法、装置、设备及介质
CN112000738B (zh) * 2020-08-18 2023-06-02 建信金融科技有限责任公司 数据库连接的切换方法、装置、设备及介质
CN113763094A (zh) * 2020-11-23 2021-12-07 北京沃东天骏信息技术有限公司 一种业务信息处理方法、装置、服务器、介质和***
CN113434582A (zh) * 2021-06-24 2021-09-24 平安国际智慧城市科技股份有限公司 业务数据处理方法、装置、计算机设备和存储介质
CN113448588A (zh) * 2021-07-09 2021-09-28 天津狮拓信息技术有限公司 数据安全处理方法、装置、电子设备和存储介质
CN113448588B (zh) * 2021-07-09 2024-04-16 天津狮拓信息技术有限公司 数据安全处理方法、装置、电子设备和存储介质
CN113722733A (zh) * 2021-08-27 2021-11-30 北京航天云路有限公司 一种基于Java注解实现的数据访问权限控制方法
CN113835690A (zh) * 2021-09-23 2021-12-24 中邮科通信技术股份有限公司 读写分离多数据源组件及其工作方法

Similar Documents

Publication Publication Date Title
CN110765187A (zh) 一种数据源路由管理方法和装置
EP3408745B1 (en) Automatically updating a hybrid application
CN111708749B (zh) 操作日志记录方法、装置、计算机设备及存储介质
CN111400061A (zh) 一种数据处理方法和***
US20140195514A1 (en) Unified interface for querying data in legacy databases and current databases
US11036560B1 (en) Determining isolation types for executing code portions
CN111694857B (zh) 存储资源数据的方法、装置、电子设备及计算机可读介质
CN111666293A (zh) 数据库访问方法和装置
CN110795315A (zh) 监控业务的方法和装置
CN109960212B (zh) 任务发送方法和装置
CN112947992A (zh) 代码版本管理的方法和装置
CN110764796A (zh) 更新缓存的方法和装置
CN112612467A (zh) 一种处理基于qiankun的微前端架构的方法和装置
CN114817146A (zh) 一种处理数据的方法和装置
CN112463251A (zh) 一种uliweb框架配置热发布的方法和装置
CN111984686A (zh) 一种数据处理的方法和装置
CN113779122B (zh) 导出数据的方法和装置
CN114489674A (zh) 动态数据模型的数据校验方法和装置
US10114864B1 (en) List element query support and processing
CN113704242A (zh) 一种数据处理方法和装置
CN113760861A (zh) 一种数据迁移的方法和装置
CN112416865A (zh) 基于大数据的文件处理方法和装置
CN113127416A (zh) 数据查询方法和装置
CN112711572A (zh) 适用于分库分表的在线扩容方法和装置
CN110851192A (zh) 一种响应降级开关配置的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination