摘要:
路由规则匹配 分库分表路由规则是表+字段的维度,首先要将 sql 中的表识别出来,然后和规则进行匹配, 然后才能根据规则确定分库分表是用哪个字段、按照什么分片算法,比如 userId 8 库 128表; zebra 中 DefaultShardRouter#router 路由器首先进行 sql 解析 阅读全文
摘要:
use java mysql connector // fake mysql select code // ... datasource init Connection conn = datasource.getConnection(); PreparedStatement pst = conn.p 阅读全文
摘要:
pg Extended Query PostgreSQL: Documentation: 15: 55.2. Message Flow 多个阶段,可复用 Parse → DESCRIBE statement → SYNC Parse 解析, 将 sql 文本字符串,解析成 named prepare 阅读全文
摘要:
平时工作用数据库连接池的时候,有时候会遇见超时获取不到的报错: Connection is not available, request timed out after XXms. 但是,并不能一下子看出什么问题导致,因为可能性有蛮多: 1. 可能是真的连接池负载高了 这种情况,连接数达到最大连接数 阅读全文
摘要:
1.背景 假设,当前redis集群只有2个节点 node-A 和 node-B,总共有3个slot, 其和节点的对应关系如图, client 会将其缓存一个映射map 现在要扩容新增一个节点 node-3, 并把 slot3 的数据迁移到 node-3,如下图 2. 问题 在 slot-3 迁移结束 阅读全文
摘要:
1. 先看看原生jdbc执行sql的步骤 // 在程序启动的时候需要注册一次mysql驱动,必须引入 mysql-connnector-java 的包 Class.forName("com.mysql.jdbc.Driver"); // 创建数据库连接 Connection connection = 阅读全文
摘要:
需求 平时在做一些实验或学习的时候,比如rocketmq、kafaka、zookeeper等,需要在虚拟机上创建几个虚拟机组成集群来做实验;一般有几个要求: 虚拟机能访问网络,需要下载安装东西 虚拟机的ip需要固定;不然在虚拟机重启或者电脑从家里拿到办公室的时候,ip变了,又要一个个进命令行去看ip 阅读全文
摘要:
zebra源码结构 zebra客户端结构 分库分表数据源ShardDataSource初始化过程 分库分表语句ShardPreparedStatement执行过程 逻辑表名的解析过程 如果定位到多个分库或分表怎么执行的? 不带分片键的sql会怎么执行? 分组数据源GroupDataSource及其初 阅读全文
摘要:
之所以要进行流量控制,是要避免业务应用流出量倾斜,超过分库能承载的压力 zebra的限流架构 粒度 指定要保护的db节点 指定要流控的应用ip 指定sqlId, 计算规则: sqlId = MD5(/appName/{mapper方法}).subString(0, 8) 限流策略: autoCont 阅读全文
摘要:
一、 JdbcFilter 过滤器 zebra 定义了 JdbcFilter 过滤器, 它包含的方法覆盖了 zebra 执行生命周期的各个环节(如各层数据源的初始化/刷新、分组连接的获取/关闭、sql的执行 等); 那么就方便在各个环节进行监控上报等操作了 public interface Jdbc 阅读全文