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