正确方法名isConnectionAlive(),
错误方法名isConnectionActive()。
博主使用了 手写,导致错误。充分证明是手把手写的,辛苦。多谢
正确方法名isConnectionAlive(),
错误方法名isConnectionActive()。
博主使用了 手写,导致错误。充分证明是手把手写的,辛苦。多谢
当我们要操作一批key时,可以通过 redis pipline 再执行完后一次性读取所有结果来较少网络传输的消耗; 很明显,这有个限制条件 => 这批key的执行必须在同一个...
通常我们用redis做接口缓存后,查询接口的性能就能提升到ms级别;但是redis是纯内存操作啊,总不至于要到ms吧,根据官方的 benchmark[https://redi...
现象 idea版本: IntelliJ IDEA 2021.1.1 (Ultimate Edition)Build #IU-211.7142.45, built on Apr...
如果数据库连接首次建立失败,会怎么样? SingleDataSource#initDataSourceOrigin -> this.dataSourcePool.build ...
之所以要进行流量控制,是要避免业务应用流出量倾斜,超过分库能承载的压力 zebra的限流架构 粒度 指定要保护的db节点 指定要流控的应用ip 指定sqlId, 计算规则: ...
sql语句: 比如这种常见的 insert 后要获取自增主键值的, 需要在同一个连接同一个statement操作 如先 Statement#executeUpdate("in...
一、 JdbcFilter 过滤器 zebra 定义了 JdbcFilter 过滤器, 它包含的方法覆盖了 zebra 执行生命周期的各个环节(如各层数据源的初始化/刷新、分...
TableShardRule#eval 根据路由规则解析sql的时候如果没匹配找到分片键的值 如果是 insert 或 replace 语句,必须提供分片键的值,不然直接报错...
zebra 解析sql使用的阿里druid连接池内部的 ast解析器 SQLParser#parseInternal(SQLStatement stmt) 解析sql 语句的...
SingleDataSource 对应 GroupDataSource 主库节点 或一个从库节点 由于它是对应的是实际的db节点,直接和底层数据库连接池打交道; zebra ...
GroupDataSource的物理结构 负载均衡的对象 zebra的负载均衡是在GroupDataSource的读库 readDataSource( LoadBalance...
在初始化 GroupDataSource 的时候,会往它的配置管理器 DefaultDataSourceConfigManager中添加了一个配置监听器 代码路径:Group...
假设分库分表情况如下 分库 id0:分表 test_0 、 test_1 分库 id1: 分表 test_2、 test_3 sql语句: select test....
前面 分组数据源GroupDataSource及其初始化[https://www.jianshu.com/p/90d2949e70d7] 已经知道 GroupDataSour...
GroupDataSource 负责一组 db节点,包含多个SingleDataSource, 将它们分为一个主和多个从进行读写分离和多个从库的负载均衡; 对应db部署架构的...
主要过程包括: 分库分表的路由定位 sql语句的 ast 抽象语法树的解析 通过自定义 SQLASTVisitor (MySQLSelectASTVisitor) 遍历sql...
ShardDataSource 间接实现了 jdbc api 的 DataSource 接口 它持有多个GroupDataSource,存于 dataSourcePool 的...
zebra-client(核心) : 除了监控外,几乎zebra所有核心功能,如读写分离、分库分表、就近路由、流量控制; zebra-cat-client(可选): 提供端到...
最上层 ShardDataSource: 用于分库分表; 包含一个或多个 GroupDataSrouce GroupDataSource: 主要用于读写分离, 分库中的一个s...