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