背景
目前主流大数据分布式存储DB都有一套成熟的数据分片的设计,比如ES、Mongo、FastDFS,它们可以根据特定的routerkey落地到不同的分片中。为了支撑如此巨大数据流量,软件设计需要采用合理的分库分表策略,以加快数据的增删改查,提升业务处理效率。
总体原则:
- 分布均匀,数据量要尽可能均匀分布到每个节点;
- 负载均衡,冷热数据搭配合适,落在每个节点上的请求量尽可能相近;
- 维护方便,扩缩容时产生的数据迁移尽可能少。
主流框架
主流数据中间件的实现原理有以下两种
客户端JDBC模式:业务开发不需要部署额外的应用,只需要把中间件作为一个jar包之类的库引用即可,这种方式,不需要运维介入。代表:Sharding-JDBC
代理Proxy模式:业务开发不是直连数据库,而是通过代理访问,需要部署维护代理,这种方式运维成本略高。代表:Sharding-Proxy、mycat
ShardingSphere-(github star 14k) 官网
ShardingSphere是一