三、功能介绍
仔细观察ShardingSphere的框架,我们不难发现中间件左侧的Sharding-Scaling,它是一个提供给用户的通用的ShardingSphere数据接入迁移,及弹性伸缩的调度平台。
JDBC的核心功能就是Orchestration,即编排治理,配置集中化与动态化、数据治理。ShardingSphere提供了界面治理模块——Sharding-UI,可以快速维护Sharding-Proxy集群,方便用户一键式的操作。
如上图所示,从研发的角度来看Apache ShardingSphere的框架,最上面的接入端有JDBC和Proxy,中间层的核心功能是数据分片、分布式事务、数据库治理,最下层是数据库集群。
其实,Sharding是Apache ShardingSphere的立足之本。除了分库分表,它还还支持Encrypt(脱敏)和Shadow(影子库),所有压测的数据都会分配的影子库中。Sharding最核心的还是底层四个模块来做支撑。
我们必须要解析SQL,才能理解用户需要什么。Parser(解析器)已经重构过很多遍,为了实现自主可控,保证高效性和正确性。除此之外,Router代表着路由,Rewriter改写一些SQL,Executor做并行的控制,提高整体效率。
分布式事务主要有两个方面,ACID强一致性事务和BASE柔性事务。值得一提的是,ShardingSphere分为自研的分布式数据库(DTX)、对接其他公司的解决方案两部分。对于用户来说,他无需过多了解ShardingSphere,就可以拥有多种分布式事务的选型,这其实是一种非常有意思的方式。
ShardingSphere不只是一个分布式数据库的原因在于,它的Orchestration模块提供了很多功能,比如在线变更、分片规则的在线推送,以及限流和熔断等。用户在了解分片的基础上,可以慢慢去探索这个开放生态,找到自己想要的功能。