开发者学堂课程【关系型数据库 ACP 认证课程:RDS-云关系行数据库的解析与实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/927/detail/14628
RDS-云关系行数据库的解析与实践
二、RDS 的架构原理
1. RDS 架构解析
(1)下图是 RDS 的整体访问架构:
可以看到,从访问的角度看,前台业务一般在 ECS 中部署,然后 ECS 通过一个地址去(和传统数据库不同的是,为了保证数据的安全,RDS 访问时对外开放的地址只是一个 url 地址,当业务访问 url 地址时,会解析到一个负载均衡 SLB 上,然后通过 SLB 转到主实例上或者备实例上)访问数据库。如果用户开通了数据库代理,可以得到一个读写分离的地址,代理的写流量可以直接到达主实例或者备实例,读流量可以直接到达只读实例。其中实例里数据备份和日志备份存储在 OSS 中,然后生成新实例,基于新实例去找到需要恢复的数据,并将它们恢复。
(2)下图是 RDS 的底层系统架构:
可以看到,用户通过 url 解析 DNS 到防火墙,再由防火墙转到后端控制系统,当需要创建或删除实例时,会先到任务调度系统里,触发数据迁移和备份之后,再返回到集群里进行相应操作,如果用户重新创建实例,需要先到 API ,然后发送给任务调度系统,系统接受指令后创建 RDS ,再将 RDS 创建的指令返回给集群,集群会重新生成一个 RDS ,然后将信息返回给用户,最后用户根据 url 地址做相应的连接。
(3)RDS 主从切换原理
RDS 高可用版本采用主备架构,具备高可用性
①高可用控制系统主要负责所有数据库实例主备之间的健康检查以及实时切换,以保证数据库高可用性达别99.95%;
②3秒轮循一次,实例轮询井发进行,当发现有节点不健康时,需要完成秒级切换;
③高可用控制系统是作为第三方身份去判断数据库实例是否在正常运行,不会出现脑裂现象;
④可模拟应用去做更新,这样对故障点的判断更为准确;
⑤高可用系统集群本身也是一个高可用的环境,集群内所有节点相互检查和任务接管。
如图:
当主备服务器发生切换时,首先需要 HA 系统做一个轮循,为了避免传统模式可能出现的脑裂现象,高可用控制系统是作为第三方身份先进行轮循,判断数据库实例是否在正常运行,若发现主实例无法正常运行, HA 将发送信号给任务调度系统,以告知 LVS 需要进行主从切换,即把主实例切换到备实例,这样就不会出现脑裂现象。
2. RDS 核心技术解析
(1)RDS 自研内核-AliSQL 简介
AliSQL 是阿里云深度定制的独立 MySQL 分支,除了社区版的所有功能外,AliSQL 提供了类似于 MySQL 企业版的诸多功能,如企业级备份恢复、线程池等。RDS MySQL 使用 AliSQL 内核,为用户提供了 MySQL 所有的功能,同时提供了企业级的安全、备份、恢复、监控、性能优化、只读实例等高级特性。
如图:
可以看到,在通用基准测试场景下, AliSQL 版本比 MySQL 官方版本有着70%的性能提升。在秒杀场景下,性能提升100倍。
(2)AliSQL 增强 Feature 类别介绍
①功能增强型如:
Thread Pool
Statement Outline
Sequence Engine
Returning
Lizard事务系统
②性能增强型如:
Fast Query Cache
Binlog in Redo
Statement Queue
Inventory Hint
③稳定性增强型如:
Faster DDL
Statement Concurrency
ControlPerformance Agent
Purge Large File Asynchronously
Performance Insight
④安全增强型如:
Recycle Bin
关于AliSQL的详细信息请参考:
http://help.aliyun.com/document_detail/129925.html
文档中很多信息都是详细的,例如 RDS My SQL 数据库中有阿里内核,可以看到功能概览等等,而且help中可以进行检索,如在使用 My SQL 中遇到一些问题,也有最佳实践进行参考。