A method and device for separating read and write of a database are disclosed. Including a specific embodiment of the method: get the user access through the web layer service request; according to the service request of the type of business the business method named service request; by aspect oriented programming to intercept intercept class said business method declared in advance; according to the aspect oriented programming class results will intercept intercept the service request links to the main database to write the corresponding operations, or will the service request link to the database from the database to read the corresponding operation. This method realizes the separation of read and write of database.
【技术实现步骤摘要】
数据库读写分离的方法和装置
本申请涉及计算机
,具体涉及互联网
,尤其涉及数据库读写分离的方法和装置。
技术介绍
随着互联网的发展,大型数据库的应用已经成为web应用中不可缺少的部分。在大量数据并发访问数据库的时候,数据库读写次数巨大,造成数据库访问压力成倍增加。在日常的Javaweb应用后台业务实现场景中,为了分散数据库压力,有很多是配置了多个数据源的,而通常情况下,每个数据源都对应了一个单独的IP地址,而在这些数据库中,又需要把数据源分为主库与从库,主库主要用来承担写入数据的需求,同时可承担少量的数据查询需求,从库用来承担数据查询的需求,但不承担写入需求。那么,在不使用数据库中间件的情况下,我们就需要在调用端程序逻辑里面来实现主库与从库的分离调用。当前,主库和从库读写分离可使用如下方式实现:使用中间件产品实现负载平衡,读写分离;或通过sql语句判断执行来控制数据源的选择实现读写分离。然而,如果使用中间件,配置较为复杂,且不方便维护,一旦出错,只有依赖DBA进行处理,单纯的程序开发人员不便排查错误,其中,DBA是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,负责业务数据库从设计、测试到部署交付的全生命周期管理;如果在程序实现读写分离,每条sql执行时需判断当前使用主库还是从库,改造代码的嵌入量将是相当庞大。
技术实现思路
本申请的目的在于提出一种改进的数据库读写分离的方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种数据库读写分离方法,所述方法包括:通过web接入层获取用户的业务请求;根据所述业务请求的业 ...
【技术保护点】
一种数据库读写分离方法,其特征在于,所述方法包括:通过web接入层获取用户的业务请求;根据所述业务请求的业务类型命名所述业务请求的业务方法,所述业务请求的业务类型包括数据获取和变更数据;通过预先声明的面向切面编程拦截类拦截所述业务方法;根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作。
【技术特征摘要】
1.一种数据库读写分离方法,其特征在于,所述方法包括:通过web接入层获取用户的业务请求;根据所述业务请求的业务类型命名所述业务请求的业务方法,所述业务请求的业务类型包括数据获取和变更数据;通过预先声明的面向切面编程拦截类拦截所述业务方法;根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作。2.根据权利要求1所述的数据库读写分离方法,其特征在于,所述根据所述业务请求的业务类型命名所述业务请求的业务方法,包括:确定所述业务请求的业务类型,为所述业务请求分配处理线程;标记所述处理线程,并将标记值存储于处理线程的局部变量中;根据所述处理线程的标记值命名所述业务请求的业务方法。3.根据权利要求1所述的数据库读写分离方法,其特征在于,所述通过预先声明的面向切面编程拦截类拦截所述业务方法,包括:声明一个面向切面编程注解类;将所述面向切面编程注解类标注到需要访问主库的任一业务方法上;配置面向切面编程拦截类,拦截所述具有所述面向切面编程注解类标注的业务方法。4.根据权利要求2所述的数据库读写分离方法,其特征在于,所述标记所述处理线程,并将标记值存储于处理线程的局部变量中,包括:解析所述业务请求,将所述业务请求分解为不少于一个的操作动作;将所述不少于一个的操作动作中的每一个操作动作分别与预设的业务动作配值列表中的列表操作动作进行匹配;根据与所述操作动作匹配的列表操作动作的对应配值确定出所述业务请求的业务动作配值;分析所述业务动作配值,得到所述处理线程的标记值;将所述标记值储存于所述处理线程的局部变量中。5.根据权利要求4所述的数据库读写分离方法,其特征在于,所述根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作,包括:判断所述处理线程的局部变量存储的标记值;将标记值大于0的业务请求链接到数据库的主库进行写操作;将标记值小于等于0的业务请求链接到数据库的从库进行读操作。6.根据权利要求5所述的数据库读写分离方法,其特征在于,所述根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作,还包括:判断所述将标记值大于0的业务请求链接到数据库的主库进行写操作是否执行完毕;如果是,判断所述处理线程中线程的局...
【专利技术属性】
技术研发人员:刘鹏,
申请(专利权)人:北京京东尚科信息技术有限公司,北京京东世纪贸易有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。