1. ShardingSphere简单介绍

2. 为什么需要使用ShardingSphere
在任何一个商城或者收单系统中,单库单表或许在项目早期能够支撑,其就无法满足日益增长的用户和订单需求了,于是必须考虑到分库分表。在业界分库分表的框架有很多,比如Mycat、shardingsphere等等,考虑到Shardingsphere已经被收录进apache,作为顶级项目,且一直在更新维护,此次就选择Shardingsphere作为分库分表的底层框架。
3. 什么时候需要进行分库以及分表
我们知道当数据量过大的时候,我们就需要进行分库分表,那究竟什么时候代表数据量过大了呢?业界⽬前唯⼀⽐较值得参考的详细标准,是阿⾥公开的开发⼿册中提到的,建议预估三年内,单表数据超过500W,或者单表数据⼤⼩超过2G,就需要分库分表
4. 分库分表的难点
可能有些读者会觉得,不就是引入第三方框架,分库分表也蛮简单的呀。对于这类读者,建议多多了解shardingsphere结合实际业务场景的使用,同时思考一个问题,如何在分库分表的同时,保证系统性能不怎么受影响呢?
分库分表不是简单地框架的引入就可以解决的问题,它涉及到一系列的分布式服务问题,包括但不限于分布式订单id、分布式事务、分布式锁、读写分离以及分布式数据库等等业界常见的难点问题。同时如果使用ShardingJdbc进行分库分表的话,并不是所有SQL都能被ShardingSphere支持的,比如一些复杂嵌套查询sql,由于Shardingsphere无法将其按照算法拆分为特定条件,所以就无法被解析,这样在分库分表过程中可能会出现问题。
针对分库分表,我的建议是“能不分就不分”,实在需要分,则在分库分表之前,对系统有很好的设计,同时至少需要考虑以下问题: