云数据库系统架构-UMP
一、UMP系统概述
1、UMP系统是低成本和高性能的MySQL云数据库方案.
2、总的来说,UMP系统架构设计遵循了以下原则:
保持单一的系统对外入口,并且为系统内部维护单一的资源池
消除单点故障,保证服务的高可用性
保证系统具有良好的可伸缩,能够动态地增加、删减计算与存储节点
保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离,确保应用和数据安全
二、 UMP系统架构

三、UMP系统功能
1. 容灾
为了实现容灾,UMP系统会为每个用户创建两个MySQL实例,一个是主库,一个是从库
主库和从库的状态是由Zookeeper负责维护的
(1)主从切换过程如下:
Zookeeper探测到主库故障,通知Controller服务器
Controller服务器启动主从切换时,会修改“路由表”,即用户名到后端MySQL实例地址的映射关系
把主库标记为不可用
借助于消息中间件RabbitMQ通知所有Proxy服务器修改用户名到后端MySQL实例地址的映射关系
全部过程对用户透明
(2)宕机后的主库在进行恢复处理后需要再次上线,过程如下:
在主库恢复时,会把从库的更新复制给自己
当主库的数据库状态快要达到和从库一致的状态时,Controller服务器就会命令从库停止更新,进入不可写状态,禁止用户写入数据
等到主库更新到和从库完全一致的状态时,Controller服务器就会发起主从切换操作,并在路由表中把主库标记为可用状态
通知Proxy服务器把写操作切回主库上,用户写操作可以继续执行,之后再把从库修改为可写状态
2. 读写分离
充分利用主从库实现用户读写操作的分离,实现负载均衡
UMP系统实现了对于用户透明的读写分离功能,当整个功能被开启时,负责向用户提供访问MySQL数据库服务的Proxy服务器,就会对用户发起的SQL语句进行解析,如果属于写操作,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行
3. 分库分表
UMP支持对用户透明的分库分表(shard / horizontal partition)
当采用分库分表时,系统处理用户查询的过程如下:
首先,Proxy服务器解析用户SQL语句,提取出重写和分发SQL语句所需要的信息
其次,对SQL语句进行重写,得到多个针对相应MySQL实例的子语句,然后把子语句分发到对应的MySQL实例上执行
最后,接收来自各个MySQL实例的SQL语句执行结果,合并得到最终结果
4. 资源管理
UMP系统采用资源池机制来管理数据库服务器上的CPU、内存、磁盘等计算资源,所有的计算资源都放在资源池内进行统一分配,资源池是为MySQL实例分配资源的基本单位
整个集群中的所有服务器会根据其机型、所在机房等因素被划分多个资源池,每台服务器会被加入到相应的资源池中
对于每个具体MySQL实例,管理员会根据应用部署在哪些机房、需要哪些计算资源等因素,为该MySQL实例具体指定主库和从库所在的资源池,然后,系统的实例管理服务会本着负载均衡的原则,从资源池中选择负载较轻的服务器来创建MySQL实例
5. 资源调度
UMP系统中有三种规格的用户,分别是数据量和流量比较小的用户、中等规模用户以及需要分库分表的用户
多个小规模用户可以共享同一个MySQL实例
对于中等规模的用户,每个用户独占一个MySQL实例
对于分库分表的用户,会占有多个独立的MySQL实例
7. 数据安全
UMP系统设计了多种机制来保证数据安全:
SSL数据库连接:SSL(Secure Sockets Layer)是为网络通信提供安全及数据完整性的一种安全协议,它在传输层对网络连接进行加密。Proxy服务器实现了完整的MySQL客户端/服务器协议,可以与客户端之间建立SSL数据库连接
数据访问IP白名单:可以把允许访问云数据库的IP地址放入“白名单”,只有白名单内的IP地址才能访问,其他IP地址的访问都会被拒绝,从而进一步保证账户安全
记录用户操作日志:用户的所有操作记录都会被记录到日志分析服务器,通过检查用户操作记录,可以发现隐藏的安全漏洞
SQL拦截:Proxy服务器可以根据要求拦截多种类型的SQL语句,比如全表扫描(即表的每行记录都被遍历到,可通过建立索引避免全表扫描。如成绩作为索引,查找成绩大于60的记录,小于60的可不用遍历)语句“select *”
浙公网安备 33010602011771号