[发明专利]数据库读写分离的方法和装置在审
申请号: | 201610232623.0 | 申请日: | 2016-04-14 |
公开(公告)号: | CN107301179A | 公开(公告)日: | 2017-10-27 |
发明(设计)人: | 刘鹏 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F9/44 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司11204 | 代理人: | 王达佐,马晓亚 |
地址: | 100080 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 读写 分离 方法 装置 | ||
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及数据库读写分离的方法和装置。
背景技术
随着互联网的发展,大型数据库的应用已经成为web应用中不可缺少的部分。在大量数据并发访问数据库的时候,数据库读写次数巨大,造成数据库访问压力成倍增加。在日常的Java web应用后台业务实现场景中,为了分散数据库压力,有很多是配置了多个数据源的,而通常情况下,每个数据源都对应了一个单独的IP地址,而在这些数据库中,又需要把数据源分为主库与从库,主库主要用来承担写入数据的需求,同时可承担少量的数据查询需求,从库用来承担数据查询的需求,但不承担写入需求。那么,在不使用数据库中间件的情况下,我们就需要在调用端程序逻辑里面来实现主库与从库的分离调用。
当前,主库和从库读写分离可使用如下方式实现:使用中间件产品实现负载平衡,读写分离;或通过sql语句判断执行来控制数据源的选择实现读写分离。
然而,如果使用中间件,配置较为复杂,且不方便维护,一旦出错,只有依赖DBA进行处理,单纯的程序开发人员不便排查错误,其中,DBA是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,负责业务数据库从设计、测试到部署交付的全生命周期管理;如果在程序实现读写分离,每条sql执行时需判断当前使用主库还是从库,改造代码的嵌入量将是相当庞大。
发明内容
本申请的目的在于提出一种改进的数据库读写分离的方法和装 置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种数据库读写分离方法,所述方法包括:通过web接入层获取用户的业务请求;根据所述业务请求的业务类型命名所述业务请求的业务方法,所述业务请求的业务类型包括数据获取和变更数据;通过预先声明的面向切面编程拦截类拦截所述业务方法;根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作。
在一些实施例中,所述根据所述业务请求的业务类型命名所述业务请求的业务方法,包括:确定所述业务请求的业务类型,为所述业务请求分配处理线程;标记所述处理线程,并将标记值存储于处理线程的局部变量中;根据所述处理线程的标记值命名所述业务请求的业务方法。
在一些实施例中,所述通过预先声明的面向切面编程拦截类拦截所述业务方法,包括:声明一个面向切面编程注解类;将所述面向切面编程注解类标注到需要访问主库的任一业务方法上;配置面向切面编程拦截类,拦截所述具有所述面向切面编程注解类标注的业务方法。
在一些实施例中,所述标记所述处理线程,并将标记值存储于处理线程的局部变量中,包括:解析所述业务请求,将所述业务请求分解为不少于一个的操作动作;将所述不少于一个的操作动作中的每一个操作动作分别与预设的业务动作配值列表中的列表操作动作进行匹配;根据与所述操作动作匹配的列表操作动作的对应配值确定出所述业务请求的业务动作配值;分析所述业务动作配值,得到所述处理线程的标记值;将所述标记值储存于所述处理线程的局部变量中。
在一些实施例中,所述根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作,包括:判断所述处理线程的局部变量存储的标记值;将标记值大于0的业务请求链接到数据库的主库进行写操作;将标记值小于等于0的业务请求链接到数据库的从库进行读操作。
在一些实施例中,所述根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作,还包括:判断所述将标记值大于0的业务请求链接到数据库的主库进行写操作是否执行完毕;如果是,判断所述处理线程中线程的局部变量的标记值减1后是否小于或等于0;如果所述标记值减1后小于或等于0,清除所述标记值;web服务器的线程池回收所述处理线程。
第二方面,本申请提供了一种数据库读写分离装置,所述装置包括:请求接收单元,配置用于通过web接入层获取用户的业务请求;方法标记单元,配置用于根据所述业务请求的业务类型命名所述业务请求的业务方法,所述业务请求的业务类型包括数据获取和变更数据;拦截单元,配置用于通过预先声明的面向切面编程拦截类拦截所述业务方法;分发单元,配置用于根据所述面向切面编程拦截类的拦截结果将所述业务请求链接到数据库的主库进行相应的写操作,或将所述业务请求链接到数据库的从库进行相应的读操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610232623.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数据查询处理方法、装置及系统
- 下一篇:一种文档结构的分析方法和装置