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

本文介绍了数据分片设计的背景和主流框架,如ShardingSphere和mycat,强调了分布均匀、负载均衡和维护方便的原则。讨论了按值跨度、按hash和按检索表等分片算法,分析了各自的优缺点。
最低0.47元/天 解锁文章

5386

被折叠的 条评论
为什么被折叠?



