读写分离方法、电子设备及存储介质技术

技术编号:38740163 阅读:14 留言:0更新日期:2023-09-08 23:25
本申请实施例提供了一种读写分离方法、电子设备及存储介质。读写分离方法包括:响应于接收到业务请求,拦截所述业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解;所述第一注解用于指示所述接口为数据库接口,所述第二注解用于指示所述接口方法需要使用的数据源,所述数据源包括主数据源和从数据源;基于所述第二注解选择在执行所述业务请求中的SQL语句时使用的目标数据源。本申请实施例中,能够拦截数据库接口中的接口方法,而无需关心业务逻辑,因此即使接口方法中同时存在主数据源和从数据源的业务逻辑,在执行该接口方法中的SQL语句时也能基于第二注解准确选择需要使用的数据源,从而更加准确地实现读写分离。现读写分离。现读写分离。

【技术实现步骤摘要】
读写分离方法、电子设备及存储介质


[0001]本申请涉及互联网
,特别是涉及一种读写分离方法、电子设备及存储介质。

技术介绍

[0002]随着互联网技术的迅速发展,数据库的应用已经成为互联网中不可缺少的部分。而随着用户量和数据文件的增加,在大量数据并发访问数据库的时候,数据库读写次数巨大,造成数据库访问压力成倍增加。为了缓解数据库的压力,出现了读写分离这一技术。读写分离的原理是让主数据源处理事务性增加、修改、删除操作,而从数据源处理查询操作。
[0003]现有技术中实现数据分离的方法一般是,通过拦截Class类的方法实现读写分离。但是,拦截Class类的方法需要关心业务逻辑,如果Class类的方法中同时存在主数据源和从数据源的业务逻辑,那么该Class类的方法中的查询SQL(Structured Query Language,结构化查询语言)语句仍然会去主数据源中执行,因此该种方式并没有完全实现读写分离。

技术实现思路

[0004]鉴于上述问题,本申请实施例提出了一种读写分离方法、电子设备及存储介质,能够更加准确地实现读写分离。
[0005]根据本申请的实施例的一个方面,提供了一种读写分离方法,所述方法包括:
[0006]响应于接收到业务请求,拦截所述业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解;所述第一注解用于指示所述接口为数据库接口,所述第二注解用于指示所述接口方法需要使用的数据源,所述数据源包括主数据源和从数据源;
[0007]基于所述第二注解选择在执行所述业务请求中的SQL语句时使用的目标数据源。
[0008]根据本申请的实施例的另一方面,提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个计算机可读存储介质;当所述指令由所述一个或多个处理器执行时,使得所述处理器执行如上任一项所述的读写分离方法。
[0009]根据本申请的实施例的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如上任一项所述的读写分离方法。
[0010]本申请实施例中,通过在业务请求中的接口上添加用于指示所述接口为数据库接口的第一注解,在接口的接口方法上上添加用于指示所述接口方法需要使用的数据源的第二注解,在接收到业务请求后,响应于接收到业务请求,拦截业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解,基于所述第二注解选择在执行所述业务请求中的SQL语句(具体为所述接口方法中的SQL语句)时使用的目标数据源。由此可知,本申请实施例中,能够拦截数据库接口中的接口方法,由于代码在执行到数据库接口中的接口方法时,即是单纯的执行SQL语句,而无需关心业务逻辑,因此即使接口方法中同时存
在主数据源和从数据源的业务逻辑,在执行该接口方法中的SQL语句时也能基于第二注解准确选择需要使用的数据源,从而更加准确地实现读写分离。
附图说明
[0011]为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012]图1是本申请实施例的一种读写分离方法的步骤流程图。
[0013]图2是本申请实施例的一种数据源初始化流程示意图。
[0014]图3是本申请实施例的另一种读写分离方法的步骤流程图。
[0015]图4是本申请实施例的一种电子设备的结构示意图。
具体实施方式
[0016]下面将结合本申请的实施例中的附图,对本申请的实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本申请的一部分实施例,而不是本申请的全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0017]本申请实施例的读写分离方法可以应用于服务器中。用户通过在用户设备上操作以便触发业务请求,用户设备将业务请求发送至服务器,由服务器对业务请求进行分析,确定该业务请求中的SQL语句需要使用的数据源(也即数据库),进而链接到对应的数据源进行处理。
[0018]示例性的,用户设备可以包括但不限于:手机、平板电脑、可穿戴设备、笔记本电脑、台式电脑、车机终端,等等。
[0019]参照图1,示出了本申请实施例的一种读写分离方法的步骤流程图。
[0020]如图1所示,读写分离方法可以包括以下步骤:
[0021]步骤101,响应于接收到业务请求,拦截所述业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解。
[0022]预先初始初始化主数据源和从数据源。其中,主数据源用于实现数据的写操作,包括但不限于增加、删除、修改等操作;从数据源用于实现数据的读操作,包括但不限于查询等操作。对于主数据源和从数据源的初始化过程将在下面的实施例中详细介绍。
[0023]预先对业务请求进行标注。为业务请求中包含的数据库接口标注第一注解,第一注解用于指示所述接口为数据库接口。为数据库接口中的接口方法标注第二注解,第二注解用于指示所述接口方法需要使用的数据源,也即所述接口方法需要使用的是主数据源还是从数据源。具体地,如果所述接口方法为数据的写操作,则需要使用的是主数据源;如果所述接口方法为数据的读操作,则需要使用的是从数据源。
[0024]服务器响应于接收到业务请求,采用拦截功能拦截该业务请求中标注有第一注解的接口,并获取该接口的接口方法上标注的第二注解。
[0025]示例性的,拦截功能可以包括但不限于AOP(Aspect Oriented Programming,面向
切面编程)拦截方式等等。服务器可以利用获取注解函数获取该业务请求中标注的第一注解以及第二注解。
[0026]步骤102,基于所述第二注解选择在执行所述业务请求中的SQL语句时使用的目标数据源。
[0027]由于在接口方法上的第二注解指示了该接口方法需要使用的数据源,因此在执行所述业务请求中的SQL语句(也即该接口方法中的SQL语句)时,即可基于第二注解准确选择使用的目标数据源。
[0028]具体地,如果第二注解指示该接口方法需要使用的数据源为主数据源,则在执行该接口方法中的SQL语句时使用的目标数据源为主数据源;如果第二注解指示该接口方法需要使用的数据源为从数据源,则在执行该接口方法中的SQL语句时使用的目标数据源为从数据源。
[0029]本申请实施例中,能够拦截数据库接口中的接口方法,由于代码在执行到数据库接口中的接口方法时,即是单纯的执行SQL语句,而无需关心业务逻辑,因此即使接口方法中同时存在主数据源和从数据源的业务逻辑,在执行该接口方法中的SQL语句时也能基于第二注解准确选择需要使用的数据源,从而更加准确地实现读写分离。<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种读写分离方法,其特征在于,所述方法包括:响应于接收到业务请求,拦截所述业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解;所述第一注解用于指示所述接口为数据库接口,所述第二注解用于指示所述接口方法需要使用的数据源,所述数据源包括主数据源和从数据源;基于所述第二注解选择在执行所述业务请求中的SQL语句时使用的目标数据源。2.根据权利要求1所述的方法,所述基于所述第二注解选择在执行所述业务请求中的SQL语句时使用的目标数据源,包括:基于所述第二注解设置当前线程的线程变量,所述线程变量用于指示当前线程需要使用的数据源;响应于执行所述SQL语句,读取所述线程变量,基于所述线程变量选择使用的目标数据源。3.根据权利要求2所述的方法,所述基于所述第二注解设置当前线程的线程变量,包括:响应于所述第二注解指示所述接口方法需要使用的数据源为主数据源,设置当前线程的线程变量为第一数值,所述第一数值指示当前线程需要使用的数据源为主数据源;响应于所述第二注解指示所述接口方法需要使用的数据源为从数据源,设置当前线程的线程变量为第二数值,所述第二数值指示当前线程需要使用的数据源为从数据源。4.根据权利要求2所述的方法,所述基于所述第二注解设置当前线程的线程变量,包括:调用预先定义的设置类中的设置路由数据源方法,基于所述第...

【专利技术属性】
技术研发人员:鲍玉洪
申请(专利权)人:博泰车联网科技上海股份有限公司
类型:发明
国别省市:

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

1