【技术实现步骤摘要】
一种用于读写分离集群的数据转发方法
[0001]本专利技术涉及大数据领域,尤其涉及一种用于读写分离集群的数据转发方法。
技术介绍
[0002]正常情况下,JDBC执行SQL语句是将用户输入的SQL语句,在经过简单的处理后直接通过statement中的connection将sql发送给数据库执行,并获取结果集。这样容易出现事务的不一致,以至于应用程序无法正常运行。
技术实现思路
[0003]为了解决以上技术问题,本专利技术提供了一种用于读写分离集群的数据转发方法。
[0004]本专利技术的技术方案是:
[0005]一种用于读写分离集群的数据转发方法,通过JDBC实现将DML语句转发到主节点执行,在获取执行结果的同时,通过全局白名单和事务级白名单保证事务的一致性,保证应用程序的正常运行。
[0006]单点接入负载均衡实现:JDBC在获取数据库连接时,根据用户输入的主节点的连接信息,通过查询系统表获取集群各节点的信息,并将各节点信息加入到负载均衡节点列表中,然后利用JDBC自身的负载均衡机制 ...
【技术保护点】
【技术特征摘要】
1.一种用于读写分离集群的数据转发方法,其特征在于,通过JDBC实现将DML语句转发到主节点执行,在获取执行结果的同时,通过全局白名单和事务级白名单保证事务的一致性,保证应用程序的正常运行。2.根据权利要求1所述的方法,其特征在于,全局白名单:放置需要强制转发到主库执行的sql所关联的数据库对象(table和function);临时白名单:放置当前事务中,已经在主库执行的写sql相关的表;临时白名单中所有表相关的查询操作都需要转发到主库执行。3.根据权利要求1所述的方法,其特征在于,DML转发控制器作用的对象是要执行的SQL,判断SQL是否需要转发分为三步:S1:当JDBC获取户输入的SQL语句进行解析时,首先判断SQL是否为写操作,如果是,则判断为DML,并将该对象记录到临时白名单,同时转发至主节点执行;反之继续;S2:在SQL为查询操作的情况下,则进行判断该SQL语句是否包含全局白名单中定义的需要强制转发的对象,如果有,则判断为DML并转发至主节点执行;反之继续;S3:如果SQL中不包含全局白名单中定义的对象,则继续判断SQL中是否包含临时白名单中的对象,如果有,则判断为DML并转发至主节点执行;反之则认为该SQL不需要转发,直接在备库执行。4.根据权利要求3所述的方法,其特征在于,JDBC在获取数据库连接时,根据用户输入的主节点的连接信息,通过查询系统表获取集群各节点的信息,并将各节点信息加入到负载均衡节点列表中,然后利用JDBC自身的负载均衡机制,对整个节点列表实现负载均衡,并根据选定节点生成数据库连接,然后返回客户端。5.根据权利要求4所述的方法,其特征在于,DML转发过程分为以下两个步骤:1)应用程序通过JDBC获取数据库连接时,JDBC会同时获取两个连接,分别连接主库和备库,并将两个连接封装成一个JDBC标准的Connection返回客户端;2)通过JDBC构建执行语句、执行并获取结果。6.根据权利要求5所述的方法,其特征在于,客户端通过Connection构建PreparedStatement语句时,JDBC根据传入的SQL语句判断该语句是否为写操作;如果SQL为写操作,JDBC会将PreparedStatement的默认连接切换为主库连接;如果SQL为读操作,则维持现有连接不变;然后调用PreparedStatement的执行方法执行SQL并获取结果集。7.根据权利要求5所述的方法,其特征在于,如果客户端使用Statement执行静态SQL,JDBC会在调用Statement的执行方...
【专利技术属性】
技术研发人员:潘玉翠,崔乐乐,米俊达,
申请(专利权)人:天元大数据信用管理有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。