AntDB 分布式内存数据库的架构基于标准的 Shared-nothing 设计,包括驱动组件,管理节点和数据分片三部分。其中每个数据分片可以包含多个副本, 每个副本都具备独立的 SQL 引擎与存储引擎。如图 4-1 所示是一个标准 AntDB 分布式内存库集群的示例架构图。
图 4-1 AntDB 整体架构图
分布式集群中每个数据节点可以包含多个数据副本,通常部署不少于 3 个副本,以满足 Raft 算法的选主要求。示例中的架构包含了 3 个数据分片,每个分片有 3 个副本,一主两从。其中每个数据副本都是一个计算和数据节点,与集群内其他节点互联,并独立完成外部请求的处理。在示例图中简化了管理节点,通常在正式部署过程中,管理节点自身也是一个集群,包含多个数据副本, 以确保管理节点自身的高可用。
驱动组件部分,对标准的 JDBC、ODBC 驱动进行了优化,加入了连接重定向能力,由管理节点负责分配连接至哪个数据分片,驱动层根据系统元数据将连接定向至被分配的数据分片,这一过程对应用无感。概括起来,驱动层根据管理节点指示的连接信息进行数据分片的连接,在遇到连接异常的情况下, 可以通过重定向能力重新连接到新的数据分片。如图 4-2 所示将这一过程进行了展示。