分库分表

利用中间件MyCat 客户端sharding-jdbc

优点: 

  • 解决了单库大数据,高并发的性能瓶颈
  • 拆分规则封装好,对应用端几乎透明,开发人员无需关系拆分细节
  • 提高了系统的稳定性和负载能力

缺点:

  • 拆分规则很难抽象
  • 分片事务一致性难以解决
  • 二次扩展时,数据迁移,维护难度大,比如: 开始我们按照用户id对2求模,但是随着业务的增长,2台数据库难以支撑,还是继续拆分为4个数据库,那么这时就需要做数据的迁移了

总结:

世界上的万物没有完美的,有利就有弊,就像数据切分一样,无论是垂直切分,还是水平切分,它们解决了海量数据的存储和访问性能问题,但也随之而来的带来了很多新问题,它们的共同缺点有:

  • 分布式的事务问题;
  • 跨库join问题
  • 多数据源的管理问题

针对多数据源的管理问题,主要有两种思路:

1.客户端模式,在每个应用模块内,配置自己需要的数据源,直接访问数据库,在各个模块内完成数据的整合

2.中间代理模式,中间代理统一管理所有的数据源,数据库层对开发人员完全透明,开发人员无需关注拆分的细节

MyCat: 

MyCat是一个开源的分布式数据库系统,前端的用户可以把它看成是个数据库代理,用MySql客户端和命令行工具都可以访问,而其后端则是用MySQL原生的协议与多个MySQL服务之前进行通信.MyCat的核心功能是分库分表,即将一个大表水平切分成N个小表,然后存放在后端的MySQL数据库中.

使用场景:

  • 单纯的读写分离,此时配置最为简单,支持读写分离,蛀虫切换
  • 分库分表,对于超过1000W的表进行分片,最大支持1000亿的数据
  • 多租户应用,每个应用一个数据库,应用只连接MyCat,程序本身不需要改造;
  • 代理Hbase,分析大数据

分库分表

上一篇:docker-compose 入门


下一篇:Fiddler简介--常用功能