相对于早期来说,目前市面上常见的Sharding中间件已经称得上百花齐放了,并且从体系架构上进行划分,Sharding中间件主要基于Proxy架构和应用集成架构两大类组成。简而言之,基于Proxy架构的Sharding中间件,可以灵活实现任意的关系数据库协议,满足个性化定制,可以做到在一定程度上的通用,不局限于任何数据库。而基于应用集成架构的Sharding中间件,尽管不能够实现通用性需求,但是由于应用直连数据库,读/写性能往往比前者高出10%~20%。总之,两种体系架构截然不同的Sharding中间件都各有优缺点,具体使用哪一种还需要结合自身实际的业务场景而定。
本书以基于应用集成架构的Sharding中间件为例。早期比较成熟的只有淘宝的TDDL,但TDDL并非是完美的,比如社区活跃度低、技术文档资料匮乏,而且部分功能开源但核心功能闭源,因此注定了TDDL无法直接为欣赏它的非淘宝系用户服务。现在想要使用TDDL还有一种间接的方式,那就是淘宝已经将TDDL作为阿里云上的一个收费服务——分布式关系数据库服务(Distribute Relational Database Service,DRDS)。开发人员无须关心底层的数据库存储架构,只需要使用阿里云提供的数据服务即可,这种方式有利有弊,最明显的弊端就是,后期如果企业自行构建数据中心时,数据迁移将是一件令人非常头痛的事情。
目前市面上常见的一些Sharding中间件产品对比如表5-1所示。

无论选择哪一款Sharding中间件产品,只要能够合理且高效地满足自身业务场景,那么它就是一款优秀的中间件产品。如果开发人员希望拥有大量的技术文档作为支撑,那么可以在生产环境中使用Shark作为分布式数据层来实现数据库分库分表后的数据路由操作,本书后续小节都会以Shark为例进行使用和配置讲解。
本文摘自《超大流量分布式系统解决方案》第 5 章




