`

sharding-jdbc源码分析(二)之读写分离

 
阅读更多

sjdbc有读写分离的功能,要使用这个功能,在创建数据源对象是要使用类:MasterSlaveDataSource,并且设置主备数据源和数据库名称

这个对象有下面的属性:

name:数据库的名称

masterDataSource:主数据源对象

slaveDataSources:备库数据源类别

slaveLoadBalanceStrategy:选从算法

 

 /**
     * 获取主或从节点的数据源名称.
     *
     * @param sqlStatementType SQL类型
     * @return 主或从节点的数据源
     */
    public DataSource getDataSource(final SQLStatementType sqlStatementType) {
        if (SQLStatementType.SELECT != sqlStatementType || DML_FLAG.get() || HintManagerHolder.isMasterRouteOnly()) {
            DML_FLAG.set(true);
            return masterDataSource;
        }
        return slaveLoadBalanceStrategy.getDataSource(name, slaveDataSources);
    }

 

以下三种情况下会走主库

(1)写走主库,读走从库
(2)当前线程,前面的操作走了主库,查询也要走主库。适用于进行了写的操作,然后接着查询的场景,这个时候如果读走从库,有可能会查询不到,因为主从的同步会有延迟
(3)使用Hint强制走主库
HintManager hintManager = HintManager.getInstance();
hintManager.setMasterRouteOnly();

 

 

分享到:
评论

相关推荐

    使用sharding-jdbc快速实现自动读写分离-demo源码

    在这个“使用sharding-jdbc快速实现自动读写分离-demo源码”中,我们将探讨如何利用Sharding-JDBC实现这一功能。 首先,我们需要理解Sharding-JDBC的基本原理。Sharding-JDBC作为一个数据库中间件,工作在JDBC层,...

    sharding-jdbc-boot-demo.zip

    Sharding-JDBC是一个轻量级的Java框架,它允许开发者在不改变现有数据库架构的情况下实现数据分片、读写分离以及分布式事务。 【描述】"sharding-jdbc整合boot"表明该压缩包中的代码演示了如何在Spring Boot的...

    sharding-jdbc之——分库分表实例完整源码

    5. **实例源码分析**:源码中可能包含了Sharding-JDBC的启动配置、数据源配置、分片策略定义、SQL路由逻辑、以及MyBatis的相关配置。通过阅读源码,可以理解Sharding-JDBC是如何在实际应用中处理分库分表的SQL执行...

    sharding-jdbc-learn:跟着艿艿学原始码。传送门http

    《深入理解Sharding-JDBC:源码解析与实践探索》 在当今的互联网时代,数据库的性能和扩展性成为系统架构中的关键因素。Sharding-JDBC作为一款...因此,深入研究Sharding-JDBC源码,是每个Java开发者的必备技能之一。

    sharding-jdbc-demo:基于sharding-jdbc实现的各种分库分表、读写分离、柔性事务、分布式主键、分布式治理等示例,持续更新中。。

    作者简介: ...对Hadoop、Spark、Storm等大数据框架源码进行过深度分析并具有丰富的实战经验。 作者联系方式 QQ:2711098650 项目简述 sharding-jdbc的各种实现示例,持续更新中。。。 项目结构简述

    shard-源码.rar

    三、Sharding-JDBC源码分析 1. SQL解析:Sharding-JDBC使用Apache Calcite进行SQL解析,将原始SQL转化为抽象语法树(AST),然后根据配置的分片规则对AST进行修改,生成针对各个Shard的SQL。 2. 分片策略:...

    druid-sharding-more-datasource_java_sharding_Druid_源码

    其次,ShardingSphere是一个开源的数据库分片解决方案,它支持MySQL、Oracle、PostgreSQL等多种数据库,提供了分库分表、读写分离、数据加密等功能。ShardingSphere的Sharding策略包括范围分片、哈希取模、自定义分...

    Apache ShardingSphere分布式数据库中间层生态圈 v5.4.1.zip

    Apache ShardingSphere是一款开源的分布式数据库中间件,它旨在解决大数据量下数据库的扩展性问题,提供了一套完整的解决方案,包括数据分片、数据库连接池、读写分离、分布式事务等功能。v5.4.1是其最新的稳定版本...

    ShardingSphere教程(下).rar

    同时,它还提供了广播表和读写分离的功能,广播表可以实现在所有分片节点上同步更新,而读写分离则可以优化数据库的读写性能。 6. **事务管理** ShardingSphere 支持分布式事务,包括 XA、Seata(Saga)和二阶段...

    ShardingSphere课件

    这部分可能详细阐述了ShardingSphere的读写分离实现方式,包括读写路由规则、主从延迟问题的处理、以及在复杂业务场景下的读写分离策略。 **六、源码解析** ShardingSphere的源码提供了深入理解其工作原理的机会。...

    ShardingSphereDemo代码.zip

    ShardingSphere是一个开源的分布式数据库解决方案,它提供了数据分片、数据库/表路由、读写分离、数据加密、数据治理等核心功能。由Apache Software Foundation管理,分为两个主要项目:Sharding-JDBC和Sharding-...

    Mycat-Server-1.6(源码)

    Mycat-Server-1.6版本的源码分析,对于理解Mycat的工作原理、优化数据库访问性能以及定制化开发具有重要意义。 首先,我们来看看Mycat的核心功能。Mycat作为数据库中间件,主要承担以下任务: 1. **数据分片**:...

    incubator-shardingsphere-example-dev_currenthfw_分库分表_源码

    Apache Incubator ShardingSphere 是一个开源的数据库中间件,旨在提供分布式数据库解决方案,包括数据分片、数据库读写分离以及数据加密等功能。在本示例项目"incubator-shardingsphere-example-dev_currenthfw_分...

    官方源码apache-shardingsphere-4.1.1-src.zip

    总的来说,Apache ShardingSphere 4.1.1的源码分析可以帮助开发者深入理解分布式数据库中间件的设计理念和实现机制,对于提升数据库系统架构设计和优化能力具有重要价值。通过阅读源码,可以学习到数据库分片、读写...

    DB总结

    这通常涉及负载均衡、数据分片、读写分离等策略,确保服务的连续性和数据的一致性。 2. Sharding JDBC源码解析: "Sharding JDBC源码解析.docx"可能会讲解ShardingSphere中的Sharding JDBC模块,这是一个轻量级...

    开涛高可用高并发-亿级流量核心技术

    14.5.5 使用sharding-jdbc读写分离 283 14.6 数据异构 284 14.6.1 查询维度异构 284 14.6.2 聚合数据异构 285 14.7 任务系统扩容 285 14.7.1 简单任务 285 14.7.2 分布式任务 287 14.7.3 Elastic-Job简介 287 14.7.4...

    如何解决MySQL的master-slave模式中ReplicationDriver的使用问题

    在`EasyReplicationConnection.java`源码中,我们可以看到关于连接对象的实现,它可能包含了连接管理、错误处理和读写分离的具体逻辑。通过分析这些源码,我们可以深入理解`ReplicationDriver`的工作原理,并可能...

Global site tag (gtag.js) - Google Analytics