本申请涉及互联网,特别是涉及一种读写分离方法、电子设备及存储介质。
背景技术:
1、随着互联网技术的迅速发展,数据库的应用已经成为互联网中不可缺少的部分。而随着用户量和数据文件的增加,在大量数据并发访问数据库的时候,数据库读写次数巨大,造成数据库访问压力成倍增加。为了缓解数据库的压力,出现了读写分离这一技术。读写分离的原理是让主数据源处理事务性增加、修改、删除操作,而从数据源处理查询操作。
2、现有技术中实现数据分离的方法一般是,通过拦截class类的方法实现读写分离。但是,拦截class类的方法需要关心业务逻辑,如果class类的方法中同时存在主数据源和从数据源的业务逻辑,那么该class类的方法中的查询sql(structured query language,结构化查询语言)语句仍然会去主数据源中执行,因此该种方式并没有完全实现读写分离。
技术实现思路
1、鉴于上述问题,本申请实施例提出了一种读写分离方法、电子设备及存储介质,能够更加准确地实现读写分离。
2、根据本申请的实施例的一个方面,提供了一种读写分离方法,所述方法包括:
3、响应于接收到业务请求,拦截所述业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解;所述第一注解用于指示所述接口为数据库接口,所述第二注解用于指示所述接口方法需要使用的数据源,所述数据源包括主数据源和从数据源;
4、基于所述第二注解选择在执行所述业务请求中的sql语句时使用的目标数据源。
5、根据本申请的实施例的另一方面,提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个计算机可读存储介质;当所述指令由所述一个或多个处理器执行时,使得所述处理器执行如上任一项所述的读写分离方法。
6、根据本申请的实施例的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如上任一项所述的读写分离方法。
7、本申请实施例中,通过在业务请求中的接口上添加用于指示所述接口为数据库接口的第一注解,在接口的接口方法上上添加用于指示所述接口方法需要使用的数据源的第二注解,在接收到业务请求后,响应于接收到业务请求,拦截业务请求中标注有第一注解的接口,获取所述接口的接口方法上标注的第二注解,基于所述第二注解选择在执行所述业务请求中的sql语句(具体为所述接口方法中的sql语句)时使用的目标数据源。由此可知,本申请实施例中,能够拦截数据库接口中的接口方法,由于代码在执行到数据库接口中的接口方法时,即是单纯的执行sql语句,而无需关心业务逻辑,因此即使接口方法中同时存在主数据源和从数据源的业务逻辑,在执行该接口方法中的sql语句时也能基于第二注解准确选择需要使用的数据源,从而更加准确地实现读写分离。
1.一种读写分离方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,所述基于所述第二注解选择在执行所述业务请求中的sql语句时使用的目标数据源,包括:
3.根据权利要求2所述的方法,所述基于所述第二注解设置当前线程的线程变量,包括:
4.根据权利要求2所述的方法,所述基于所述第二注解设置当前线程的线程变量,包括:
5.根据权利要求2所述的方法,所述方法还包括:
6.根据权利要求5所述的方法,所述清除当前线程的线程变量,包括:
7.根据权利要求2所述的方法,所述读取所述线程变量,包括:
8.根据权利要求7所述的方法,所述数据源路由类通过如下方式定义:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至8任一项所述的读写分离方法。