上一页 1 2 3 4 5 6 7 ··· 19 下一页
摘要: 主要过程包括: 分库分表的路由定位 sql语句的 ast 抽象语法树的解析 通过自定义 SQLASTVisitor (MySQLSelectASTVisitor) 遍历sql ast,解析出逻辑表名 查找逻辑表名对应的分库分表规则 根据逻辑表的分库分表规则,遍历sql ast定位分片键的值 根据中间 阅读全文
posted @ 2021-07-16 22:31 mushishi 阅读(321) 评论(0) 推荐(0)
摘要: ShardDataSource 间接实现了 jdbc api 的 DataSource 接口 它持有多个GroupDataSource,存于 dataSourcePool 的 map 中 ,dataSourcePool 由数据源仓储 DataSourceRepository 初始化 ConfigSe 阅读全文
posted @ 2021-07-16 22:19 mushishi 阅读(353) 评论(0) 推荐(0)
摘要: 最上层 ShardDataSource: 用于分库分表; 包含一个或多个 GroupDataSrouce GroupDataSource: 主要用于读写分离, 分库中的一个shard 最下层的 SingleDataSource: 主要用于和 mysql 单个实例的连接, 这边是真正和连接池 dbcp 阅读全文
posted @ 2021-07-16 22:18 mushishi 阅读(217) 评论(0) 推荐(0)
摘要: zebra-client(核心) : 除了监控外,几乎zebra所有核心功能,如读写分离、分库分表、就近路由、流量控制; zebra-cat-client(可选): 提供端到端的监控,将监控信息上报到CAT监控平台 zebra-dao(可选):对mybatis的轻量级封装,兼容mybatis原有的功 阅读全文
posted @ 2021-07-16 22:12 mushishi 阅读(594) 评论(0) 推荐(0)
摘要: 对象池技术其实蛮常见的,比如线程池、数据库连接池 他们的特点是:对象创建代价较高、比较消耗资源、比较耗时; 比如 mysql数据库连接建立就要先建立 tcp三次握手、发送用户名/密码、进行身份校验、权限校验等很多步骤才算是 db连接建立成功;要是每次使用的时候才去创建会比较影响性能,而且也不能无限制 阅读全文
posted @ 2021-07-11 14:57 mushishi 阅读(1785) 评论(0) 推荐(0)
摘要: 背景 (1) redis单机的读写性能轻松上大几万,不过线上环境不会只部署光秃秃的一个节点,还是会配合 sentinel 再部署一个 slave作为高可用节点的; 但是standby的slave节点是不对外提供服务端的,一定程度上造成了浪费资源 (2) 当业务不断发展,原来单节点缓存的数据(如,商品 阅读全文
posted @ 2021-07-02 16:41 mushishi 阅读(1166) 评论(1) 推荐(1)
摘要: redis分布式锁基本原理 采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁; 看着很完美 看看可能有什么问题? 一般生产环境为了可用性,redis 会部署 master-slave + sentinel 阅读全文
posted @ 2021-07-01 17:39 mushishi 阅读(1747) 评论(3) 推荐(3)
摘要: 使用场景 redis一个命令执行是单线程的,不用担心并发冲突,如果你想有几个命令想像一个命令一样,在这几个命令执行过程中不会执行别的客户端发来的命令 ,也就是原子性,就可以用 redis Transaction 使用方式 redis 命令 multi // 标识事务起始 command-1 comm 阅读全文
posted @ 2021-06-24 11:11 mushishi 阅读(186) 评论(0) 推荐(0)
摘要: 当我们要操作一批key时,可以通过 redis pipline 再执行完后一次性读取所有结果来较少网络传输的消耗; 很明显,这有个限制条件 ⇒ 这批key的执行必须在同一个连接上 当部署的redis为 standalone 或 master-slave 结构的时候还好,可以从 pool 取出来的连接 阅读全文
posted @ 2021-06-23 14:52 mushishi 阅读(1975) 评论(0) 推荐(0)
摘要: 通常我们用redis做接口缓存后,查询接口的性能就能提升到ms级别; 但是redis是纯内存操作啊,总不至于要到ms吧,根据官方的 benchmark 单实例也是能抗 7w+ qps 也就是说单个redis 操作在redis-server上耗时大概是 0.014ms,那时间是消耗到哪里去了? red 阅读全文
posted @ 2021-06-21 23:48 mushishi 阅读(705) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 19 下一页