分库分表
中间件:sharding-jdbc/cobar/mycat 等中间件。
分表维度:如用户 ID/ 订单 ID 等。
分表算法:取模 / 哈希 / 路由表等。
分库分表具体技术不做具体介绍,本文次要想聊下数据异构问题。
数据异构
分库分表尽管解决了超大数据量导致的性能瓶颈问题,但也带来了新的难题。比方,如何跨库 join 聚合查问?如何全局排序 / 分组?
常见的解决办法是通过数据异构的伎俩。比方 ES 搜寻异构,缓存异构等。
正式介绍前,咱们来回顾下 MySql 主从复制的架构。
Canal 中间件就相似于这里的 slave 角色,它能够订阅数据库的 binlog 日志,而后进行数据生产,比方数据镜像、数据异构、数据索引、缓存同步等。
Canal 架构:
Canal 利用场景:
Canal 代码示例(省略了配置)