系统架构

最近更新时间:2018-10-15 11:47:32

1.系统架构前言

1.1 高可用架构

在生产系统中,通常都需要用高可用方案来保证系统不间断运行;数据库作为系统数据存储和服务的核心能力,其可用要求高于计算服务资源。目前,数据库的高可用方案通常是让多个数据库服务协同工作,当一台数据库故障,余下的立即顶替上去工作,这样就可以做到不中断服务或只中断很短时间;或者是让多台数据库同时提供服务,用户可以访问任意一台数据库,当其中一台数据库故障,立即更换访问另外数据库即可。
由于数据库中记录了数据,想要在多台数据库中切换,数据必须是同步的,所以数据同步技术是数据库高可用方案的基础;当前,数据复制方式有以下三种方式:

  • 异步复制:应用发起更新(含增加、删除、修改操作)请求,Master 完成相应操作后立即响应应用,Master 向 Slave 异步复制数据。因此异步复制方式下, Slave 不可用不影响主库上的操作,而 Master 不可用有概率会引起数据不一致。
  • 强同步复制:应用发起更新请求,Master 完成操作后向 Slave 复制数据,Slave 接收到数据后向 Master 返回成功信息,Master 接到 Slave 的反馈后再应答给应用。Master 向 Slave 复制数据是同步进行的,因此 Slave 不可用会影响 Master 上的操作,而 Master 不可用不会引起数据不一致。

    **请注意:使用“强同步”复制时,如果主库与备库自建网络中断或备库出现问题,主库也会被锁住(hang),而此时如果只有一个主库或一个备库,那么是无法做高可用方案的。—— 因为单一服务器服务,如果股指则直接导致部分数据完全丢失,不符合金融级数据安全要求。

  • 半同步复制:半同步复制是google提出的一种同步方案,他的原理是正常情况下数据复制方式采用强同步复制方式,当 Master 向 Slave 复制数据出现异常的时候(Slave 不可用或者双节点间的网络异常)退化成异步复制。当异常恢复后,异步复制会恢复成强同步复制。半同步复制意味着 Master 不可用有概率会较小概率引起数据不一致。

1.2 常见高可用架构介绍

  • 共享存储方案:使用共享存储,如SAN存储。SAN的原理是多台数据库服务器共享同一个存储区域,这样多台数据库都可以“读写”同一份数据。当主库发生故障时,第三方高可用软件把文件系统在备库上挂起,然后在备库上启动数据库即完成切换。
  • 日志同步或流复制同步:数据库最常见复制模式,如MySQL数据库。每当写入数据,MySQL Master Server将自己的Binary Log通过复制线程传输给Slave,Slave接收到Binary Log以后,依照Binary Log内容,写入相同数据到文件系统。目前MySQL已经提供:
    • 异步复制:异步复制可以确保得到快速的响应结构,但是不能确保二进制日志确实到达了slave上,即无法保障数据一致性;
    • 半同步复制:(由google提供的同步插件)半同步复制对于客户的请求响应稍微慢点,在超时等情况下,会退化为异步,即基本保障数据一致性,但无法保证数据完全一致性。
  • 基于触发器的同步:试用触发器记录数据变化,然后同步到另一台数据库上。
  • 基于中间件的同步:系统不直接连接到底层数据库,而是连接到一个中间件,中间件把数据库变更发送到底层多台数据库上,从而完成数据同步。早几年,由于业务需求,数据库性能、同步机制等问题,某些软件开发商通常采用类似架构。

2.MariaDB(TDSQL)架构简介

2.1 MariaDB(TDSQL)异步多线程强同步复制技术(强同步复制)

同步技术发展过程中,提供了异步复制、半同步等同步技术,这两种技术面向普通用户群体,在用户要求不高、网络条件较好、性能压力不大的情况下,能够基本保障数据同步;但通常情况下,采用异步复制、半同步机制容易经常出现数据不一致问题,直接影响系统可靠性,甚至出现丢失交易数据,带来直接或间接经济损失。
在腾讯内部业务中的多年积累,自主研发出数据库异步多线程强同步复制方案(Multi-thread Asynchronous Replication MAR),相比于Oracle的NDB引擎,Percona XtraDB Cluster和MariaDB Galera Cluster,其性能、效率和适用性更据优势。简单来说,MAR强同步方案强同步技术具有以下特点

  • 一致性的同步复制,保证节点间数据强一致性
  • 对业务层面完全透明,业务层面无需做读写分离或同步强化工作;
  • 将串行同步线程异步化,引入线程池能力,大幅度提高性能
  • 支持集群架构;
  • 支持自动成员控制,故障节点自动从集群中移除;
  • 支持自动节点加入,无需人工干预;
  • 每个节点都包含完整的数据副本,可以随时切换;
  • 无需共享存储设备

腾讯MAR方案强同步技术,只有当备机数据同步后,才由主机向应用返回事务应答,示意图如下:

从性能上优于其他主流同步方案,通过对比,在跨可用区(IDC机房)同样的测试方案下,我们发现其MAR技术性能优于MySQL半同步约5倍,优于MariaDB Galera Cluster性能1.5倍(此处测试使用sysbench标准用例测试)。

2.2 MariaDB(TDSQL)集群架构

MariaDB(TDSQL)采用集群架构,一套独立MariaDB(TDSQL)系统至少需要十余系统或组件组成,架构简图如下:

其中,MariaDB(TDSQL)最核心的三个主要模块是:决策调度集群(Tschedule)、数据库节点组(SET)和接入网关集群(TProxy),三个模块的交互都是通过配置集群(TzooKeeper)完成。

  • 数据库节点组(SET):由兼容MySQL数据库引擎、监控和信息采集(Tagent)组成, 其架构由”一个主节点(Master)、若干备节点(Slave_n)、若干异地备份节点(Watcher_m)”,通常情况下:

    • 部署在跨机架、跨机房的服务器中;
    • 通过心跳监控和信息采集模块(Tagent)监控,确保集群的健壮性;
    • 分布式架构下,基于水平拆分,若干个分片(数据库节点组)提供一个“逻辑统一,物理分散”分布式的数据库实例。
  • 决策调度集群(Tschedule):作为集群的管理调度中心,主要管理SET的正常运行,记录并分发数据库全局配置,其包括

    • 调度作业集群(MariaDB(TDSQL) Scheduler)帮助DBA或者数据库用户自动调度和运行各种类型的作业,比如数据库备份、收集监控、生成各种报表或者执行业务流程等等,MariaDB(TDSQL)把Schedule、zookeeper、OSS(运营支撑系统)结合起来通过时间窗口激活指定的资源计划,完成数据库在资源管理和作业调度上的各种复杂需求,Oralce也用DBMS_SCHEDULER支持类似的能力。
    • 程序协调与配置集群(TzooKeeper):它是MariaDB(TDSQL)提供配置维护、选举决策、路由同步等,并能支撑数据库节点组(分片)的创建、删除、替换等工作,并统一下发和调度所有DDL(数据库模式定义语言)操作,TzooKeeper部署数量需大于等于3台并。
    • 运维支撑系统(OSS):基于MariaDB(TDSQL)定制开发的一套综合的业务运营和管理平台,同时也是真正融合了数据库管理特点,将网络管理、系统管理、监控服务有机整合在一起。
    • 决策调度集群独立部署在腾讯云全国三大机房中(跨机房部署,异地容灾)。
  • 接入网关集群(TProxy):在网络层连接管理SQL解析、分配路由(TProxy非腾讯云网关TGW)。

    • 与数据库引擎部署数量相同,分担负载并实现容灾;
    • 从配置集群(TzooKeeper)拉取数据库节点(分片)状态,提供分片路由,实现透明读写;
    • 记录并监控SQL执行信息,分析SQL执行效率,记录并监控用户接入信息,进行安全性鉴权,阻断风险操作;
    • TProxy前端部署为腾讯网关系统TGW,对用户提供唯一一个虚拟IP服务。

这种集群架构极大简化了各个节点之间的通信机制,也简化了对于硬件的需求,这就意味着即使是简单的x86服务器,也可以搭建出类似于小型机、共享存储等一样稳定可靠的数据库。

2.2 MariaDB(TDSQL)的高可用特性

2.2.1 物理高可用

根据您购买实例配置不同,MariaDB(TDSQL)通常采用一主一备双节点、或一主两备三节点架构。每个节点安装在独立跨机架部署的物理机上,确保确保不会因为单一设备、机架网络故障或断电影响数据库服务。

2.2.3 网络高可用

MariaDB(TDSQL)的每个节点物理机均采用双网卡双连交换机配置,物理网络安全可靠。而在实际使用时,TProxy前对接腾讯云网关TGW;SET节点出现故障后,TProxy最快200ms内切换DB路由;若TProxy故障,TGW在1s内负载到其他存活的TProxy;切换不改变访问VIP(虚拟IP),以便屏蔽物理服务器变化带来的影响。

2.2.4 备份恢复服务

备份服务:备份模块负责定时对MariaDB(TDSQL)进行(物理)备份和二进制文件(Binlog),备份文件将上传到安全等级更高的分布式文件集群中(HDFS)中,通常情况下,备份总是在备节点上面发起,以避免对主节点提供的服务带来冲击。

恢复服务:恢复服务又名回档恢复,有恢复模块负责将HDFS上面的备份文件恢复临时实例上,以便用户检查或调整而不影响主实例的运行。

备份下载:您可以将备份文件转储和下载到指定位置,如价格更低的腾讯云COS。

2.2.4 两地三中心

MariaDB(TDSQL)两地三中心部署架构——同城节点直线距离大于10KM,异地节点直线距离大于100km,使用腾讯自主研发的高可用调度方案(High Availability HA)实现。示意图如下: