YMatrix 5 整体架构

本文档介绍了 YMatrix 5 的整体架构及相关概念。

YMatrix 5 引入了 etcd 集群来管理数据库集群状态,实现了数据库集群主节点(Master)和主节点备用节点(Standby)的自动故障切换,同时加强了数据节点(Segment)的主(Primary)从(Mirror)副本自动故障切换。
同时,YMatrix 5 引入了面向服务的架构,使得数据库集群的安装、运行和维护更加简单方便。

1 面向服务的新架构

面向服务的架构图如下:

1.1 使用 etcd 管理集群的状态

YMatrix 5 将数据库集群状态管理从数据库 Master 转移到 etcd 集群。 实现了数据库集群组件状态管理功能与数据库本身的解耦。同时使得状态数据实现了高可用。

1.2 面向服务的架构

面向服务的架构使用不同的服务来管理数据库的状态,同时实现了数据库的自动故障转移。

  • 数据副本服务管理每个 YMatrix 5 的数据副本,并将其状态维护在 etcd 集群中。
  • 数据分片服务根据分片下各个副本的状态自动进行副本的主从切换,并将分片状态维护在 etcd 集群中。
  • 集群服务根据各个分片的状态在 etcd 集群中维护整个集群状态。

同时,各个服务也接受管理工具和自动维护功能的调用,以实现数据库集群的高可用。

2 YMatrix 概念

2.1 物理机集群 (Physical Cluster)

物理机集群是用来运行 YMatrix 5 的机器资源的总和。 所有在集群中的机器都应该由高速以太网交换机连接以确保数据库发挥高速可靠的性能。

2.2 etcd 集群 (etcd Cluster)

etcd 集群是部署在物理机集群上的一个高可用的 etcd 集群。 这个集群用来存储和管理部署在这个物理机集群上的各个数据库集群的运行状态。

一般而言,每个物理机集群上会部署一个 etcd 集群。

2.3 数据库集群 (Database Cluster)

YMatrix 数据库集群是基于 Greenplum 数据库PostgreSQL 数据库 升级扩展的集群。 它是 YMatrix 数据库的核心。

2.3.1 集群 (Cluster)

集群是数据库作为分布式数据库具有的概念,是数据库管理操作的基本对象。

2.3.2 数据分片 (Shard)

数据分片是 Greenplum 集群 MPP (massively parallel processing) 架构下产生的概念。 为了实现数据的高速和可扩展的存储和处理,将数据库数据分成许多分片分布式的存储在物理机集群的不同机器上。(shard 0, shard 1, etc.) 同时,它还提供了一个单独的数据分片 (shard -1) 用来管理所有数据的元信息。

因此,数据库中的任何数据都会属于且只属于某一个数据分片。 任一数据分片中的数据出现损坏,都会导致数据库的数据不完整。

2.3.3 数据副本 (Replication)

为了实现数据的高可用性,数据分片需要多个存储副本。每个数据分片都可以设置主从副本 (Primary 和 Mirror) 来实现数据的高可用。
一个 Primary 或者一个 Mirror 都是一个数据副本。每一个副本都由一个 YMatrix 数据库实例进行管理。

在 YMatrix 5 中,所有的数据副本都实现了自动的故障转移功能。 使得整个数据库集群实现了高可用。

2.4 一个数据库集群运行的服务 (Services of a Database Cluster)

为了实现数据库集群的高可用,YMatrix 5 为每个数据库集群实现了多个不同的服务,以自动化管理数据库集群的状态。

2.4.1 集群服务 (Cluster Service)

集群服务用来控制和管理整个数据库集群的状态。 它本身也是一个高可用服务,其实例部署在物理机集群的所有机器节点上。 当活动的服务实例遇到问题发生异常时,其它备份服务实例会自动选择一个新的活动的服务实例继续工作。

2.4.2 数据分片服务 (Shard Service)

数据分片服务用来控制和管理数据库集群中所有数据分片的状态,保证数据分片的可用。 它和集群服务一样,也是一个高可用服务。

2.4.3 数据副本服务 (Replication Service)

数据副本服务用来控制和管理每个数据副本,即每一个 YMatrix 数据库实例。 它管理着 PostgreSQL 数据库的整个生命周期并对它的状态进行监控。

2.4.4 Cylinder 服务

Cylinder 服务用来控制数据库集群的定时任务。