云数据库

1. 概述

  • 云计算概念:
    云计算是通过网络以服务的方式为用户提供非常廉价的IT资源
  • 云计算八大优势
  1. 按需服务
  2. 随时服务
  3. 通用性
  4. 高可靠性
  5. 极其廉价
  6. 超大规模
  7. 虚拟化
  8. 高扩展性
  • 云数据库概念:
  • 云数据库是部署和虚拟化在云计算环境中的数据库。云数据库是在云计算的大背景 下发展起来的一种新兴的共享基础架构的方法,它极大地增强了数据库的存储能力 ,消除了人员、硬件、软件的重复配置,让软、硬件升级变得更加容易。云数据库 具有高可扩展性、高可用性、采用多租形式和支持资源有效分发等特点
  • 云数据库的特性
  • (1)动态可扩展
  • (2)高可用性
  • (3)较低的使用代价
  • (4)易用性
  • (5)高性能
  • (6)免维护
  • (7)安全
  • 云数据库是个性化数据存储需求的理想选择
  • 云数据库可以满足大企业的海量数据存储需求
  • 云数据库可以满足中小企业的低成本数据存储需求
  • 云数据库可以满足企业动态变化的数据存储需求
  • 云数据库与其他数据库的关系
  • 从数据模型的角度来说,云数据库并非一种全新的数据库技术,而只是以服务的方式提供数据库功能
  • 云数据库并没有专属于自己的数据模型,云数据库所采用的数据模型可以是关系数据库所使用的关系模型(微软的SQL Azure云数据库、阿里云RDS都 采用了关系模型),也可以是NoSQL数据库所使用的非关系模型(Amazon Dynamo云数据库采用的是“键/值”存储)
  • 同一个公司也可能提供采用不同数据模型的多种云数据库服务
  • 许多公司在开发云数据库时,后端数据库都是直接使用现有的各种关系数据 库或NoSQL数据库产品

2. 云数据库产品

  • 云数据库厂商概述

3. 云数据库基本架构

云数据库的技术架构 云数据库系统功能_分布式

3.1 UMP系统概述

UMP系统是低成本和高性能的MySQL云数据库方案

3.2 UMP系统架构

云数据库的技术架构 云数据库系统功能_云数据库的技术架构_02

1. Mnesia
* Mnesia是一个分布式数据库管理系统 
* Mnesia支持事务,支持透明的数据分片,利用两阶段锁实现分布式事务,可以线性扩展到至少50个节点  
* Mnesia的数据库模式(schema)可在运行时动态重配置,表能被迁移或复制到多个节点来改进容错性
  • Mnesia的这些特性,使其在开发云数据库时被用来提供分布式数据库 服务
2. RabbitMQ
* RabbitMQ是一个工业级的消息队列产品(功能类似于IBM公司的消息队列产品 IBM Websphere MQ),作为消息传输中间件来使用,可以实现可靠的消息传送
* UMP集群中各个节点之间的通信,不需要建立专门的连接,都是通过读写队列消息来实现的
3. Zookeeper
Zookeeper是高效和可靠的协同工作系统,  
提供分布式锁之类的基本服务(比如统一命名服务、状态同步服务、集群管理、分布式应用配置项 的管理等)  
用于构建分布式应用,减轻分布式应用程序所承担的协调 任务

在UMP系统中,Zookeeper主要发挥三个作用:

  • 作为全局的配置服务器
  • 提供分布式锁(选出一个集群的“总管”)
  • 监控所有MySQL实例
4.LVS
* LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群 系统
  • UMP系统借助于LVS来实现集群内部的负载均衡
  • LVS集群采用IP负载均衡技术和基于内容请求分发技术
  • 调度器是LVS集群系统的唯一入口点,调度器具有很好的吞吐率,将请 求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故 障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器
  • 整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序
5. Controller服务器
Controller服务器向UMP集群提供各种管理服务,实现集群成员管 理、元数据存储、MySQL实例管理、故障恢复、备份、迁移、扩容 等功能
  • Controller服务器上运行了一组Mnesia分布式数据库服务,其中存储了各种系统元数据,主要包括集群成员、用户的配置和状态信息 ,以及用户名到后端MySQL实例地址的映射关系(或称为“路由表 ”)等
  • 当其它服务器组件需要获取用户数据时,可以向Controller服务器 发送请求获取数据
  • 为了避免单点故障,保证系统的高可用性,UMP系统中部署了多台Controller服务器,然后,由Zookeeper的分布式锁功能来帮助选出一个“总管”,负责各种系统任务的调度和监控
6. Web控制台
Web控制台向用户提供系统管理界面
7. Proxy服务器
Proxy服务器向用户提供访问MySQL数据库的服务,它完全实现了 MySQL协议,用户可以使用已有的MySQL客户端连接到  Proxy服务器,

Proxy服务器通过用户名获取到用户的认证信息、资源配额的限制(例如 QPS、IOPS(I/O Per Second)、最大连接数等),以及后台MySQL实例的地址,
然后,用户的SQL查询请求会被转发到相应的MySQL实例上。
除了数据路由的基本功能外,Proxy服务器中还实现了很多重要的功能,
主要包括屏蔽MySQL实例故障、读写分离、分库分表、资源隔离、记录 用户访问日志等

8. Agent服务器
Agent服务器部署在运行MySQL进程的机器上,用来管理每台物理机上的 MySQL实例

执行主从切换、创建、删除、备份、迁移等操作,同时,还负责收 集和分析MySQL进程的统计信息、慢查询日志(Slow Query Log)和bin-log

9. 日志分析服务器
日志分析服务器存储和分析Proxy服务器传入的用户访问日志,并支持实时查询 一段时间内的慢日志和统计报表
10. 信息统计服务器
信息统计服务器定期将采集到的用户的连接数、QPS数值以及MySQL实例的进程状态用RRDtool进行统计,可以在 Web界面上可视化展示统计结果,也可以把 统计结果作为今后实现弹性的资源分配和自动化的MySQL实例迁移的依据
11. 愚公系统
愚公系统是一个全量复制结合bin-log分析进行增量复制的工具,可以实现在不停机的情况下动态扩容、缩容和迁移

云数据库的技术架构 云数据库系统功能_分布式_03


3.3 UMP系统功能

UMP系统是构建在一个大的集群之上的,通过多个组件的 协同作业,整个系统实现了对用户透明的各种功能:

  • 容灾
  • 读写分离
  • 分库分表
  • 资源管理
  • 资源调度
  • 资源隔离
  • 数据安全
1.容灾

云数据库的技术架构 云数据库系统功能_mysql_04


云数据库的技术架构 云数据库系统功能_mysql_05


云数据库的技术架构 云数据库系统功能_大数据_06

  • 宕机后的主库在进行恢复处理后需要再次上线,过程如下:
  1. 在主库恢复时,会把从库的更新复制给自己
  2. 当主库的数据库状态快要达到和从库一致的状态时,Controller 服务器就会命令从库停止更新,进入不可写状态,禁止用户写入 数据
  3. 等到主库更新到和从库完全一致的状态时,Controller服务器就 会发起主从切换操作,并在路由表中把主库标记为可用状态
  4. 通知Proxy服务器把写操作切回主库上,用户写操作可以继续执 行,之后再把从库修改为可写状态
2.读写分离

云数据库的技术架构 云数据库系统功能_云数据库的技术架构_07

  • 充分利用主从库实现用户读写操作的分离,实现负载均衡
  • UMP系统实现了对于用户透明的读写分离功能,当整个功能被开启时, 负责向用户提供访问MySQL数据库服务的Proxy服务器,就会对用户发起 的SQL语句进行解析,如果属于写操作,就直接发送到主库,如果是读操作,就会被均衡地发送到主库和从库上执行
3.分库分表

云数据库的技术架构 云数据库系统功能_大数据_08


云数据库的技术架构 云数据库系统功能_云数据库的技术架构_09

4.资源管理
所有的计算资源都放在资源池内进行统一分配,资源池是为MySQL实例分配资源的基本单位

云数据库的技术架构 云数据库系统功能_大数据_10

  • 整个集群中的所有服务器会根据其机型、所在机房等因素被划分多个 资源池,每台服务器会被加入到相应的资源池中
  • 对于每个具体MySQL实例,管理员会根据应用部署在哪些机房、需 要哪些计算资源等因素,为该MySQL实例具体指定主库和从库所在的 资源池,然后,系统的实例管理服务会本着负载均衡的原则,从资源 池中选择负载较轻的服务器来创建MySQL实例
5.资源调度
UMP系统中有三种规格的用户,分别是数据量和流量比较小的用户、 中等规模用户以及需要分库分表的用户

云数据库的技术架构 云数据库系统功能_数据库_11

6.资源隔离
  • UMP采用的两种资源隔离方式
7.数据安全
UMP系统设计了多种机制来保证数据安全
  • SSL数据库连接:SSL(Secure Sockets Layer)是为网络通信提供安全 及数据完整性的一种安全协议,它在传输层对网络连接进行加密。 Proxy服务器实现了完整的MySQL客户端/服务器协议,可以与客户端 之间建立SSL数据库连接
  • 数据访问IP白名单:可以把允许访问云数据库的IP地址放入“白名 单”,只有白名单内的IP地址才能访问,其他IP地址的访问都会被拒绝, 从而进一步保证账户安全
  • 记录用户操作日志:用户的所有操作记录都会被记录到日志分析服务 器,通过检查用户操作记录,可以发现隐藏的安全漏洞
  • SQL拦截:Proxy服务器可以根据要求拦截多种类型的SQL语句,比如 全表扫描语句“select *”

4. Amazon AWS和云数据库

4.1.Amazon和云计算的渊源

Amazon Web Services业务相当于紧随其后的4大竞争对手的总和

亚马逊在全球拥有12个区域性数据中心

Amazon Web Services提供的多个亚马逊数据库都在与甲骨文(Oracle)激烈 竞争,其中Amazon RDS有10万多个活跃用户

亚马逊数据库Aurora,是Amazon Web Services历史上增长最快的服务

云数据库的技术架构 云数据库系统功能_分布式_12


云数据库的技术架构 云数据库系统功能_数据库_13

  • 亚马逊的云服务提供了多达几十种服务,涵盖了IaaS、PaaS、SaaS这三层

4.2. Amazon AWS

云数据库的技术架构 云数据库系统功能_数据库_14

(1) AWS Global Infrastructure(AWS全局基础设施)

云数据库的技术架构 云数据库系统功能_数据库_15


云数据库的技术架构 云数据库系统功能_大数据_16

  • 每个 Region是相互独立的,自成一套云服务体系,分布在全球各地
  • Availability Zone(可用区),每个Region又由数个可用区组成,每个 可用区可以看做一个数据中心,相互之间通过光纤连接
  • 是Edge Locations(边缘节点)。全球目前有50多个边缘节点,是一 个内容分发网络(CDN,Content Distrubtion Network),可以降低内容分 发的延迟,保证终端用户获取资源的速度
(2) Networking(网络)

云数据库的技术架构 云数据库系统功能_分布式_17

(3) Compute(计算)

云数据库的技术架构 云数据库系统功能_分布式_18

(4) Storage(存储)

云数据库的技术架构 云数据库系统功能_数据库_19

(5) Database(数据库)

云数据库的技术架构 云数据库系统功能_mysql_20

(6) Application Service(应用程序服务)

云数据库的技术架构 云数据库系统功能_云数据库的技术架构_21

(7) Deployment & Admin (部署和管理)
  • Elastic BeanStalk: 一键式创建各种开发环境和运行时
  • CloudFormation:采用JSON格式的模板文件来创建和管理一系列亚马逊云资源
  • OpsWorks: OpsWorks允许用户将应用程序的部署模块化,可以实现对数据库、 运行时、服务器软件等自动化设置和安装
  • IAM: Identity & Access Management,认证和访问管理服务。用户使用云服务 最担心的事情之一就是安全问题。亚马逊通过IAM提供了立体化的安全策略,保 证用户在云上的资源绝对的安全
Amazon AWS 产品分类
<1> 计算类

云数据库的技术架构 云数据库系统功能_数据库_22

<2> 存储类

云数据库的技术架构 云数据库系统功能_分布式_23

<3> 工具支持

云数据库的技术架构 云数据库系统功能_mysql_24

Amazon EC2架构

云数据库的技术架构 云数据库系统功能_mysql_25

  • EC2的最大特点是允许 用户根据需求动态调整 运行的实例类型和数量, 实现按需付费








4.3 Amazon AWS 平台上的云数据库

云数据库的技术架构 云数据库系统功能_云数据库的技术架构_26

1) SimpleDB

云数据库的技术架构 云数据库系统功能_mysql_27

2) DynamoDB

云数据库的技术架构 云数据库系统功能_数据库_28

3) RDS

云数据库的技术架构 云数据库系统功能_大数据_29


5.微软云数据库SQL Azure

  • SQL Azure是微软的云关系型数据库,后端存储又称为“云SQL Server”
  • 构建在SQL Server之上,通过分布式技术提升传统关系数据库的可扩展性和容错能力

(1) 逻辑模型

云数据库的技术架构 云数据库系统功能_mysql_30

  • 一个逻辑数据库称为一个表格组
  • 表格组中所有划分主键相同的行集合称为行组(row group)
  • 只支持同一个行组内的事务,同 一个行组的数据逻辑上会分布到一 台服务器,以此规避分布式事务
  • 通过主备复制将数据复制到多个副本,保证高可用性

(2) 物理模型

云数据库的技术架构 云数据库系统功能_大数据_31

  • 在物理层面,每个有主键的表格组根据划分主键列有序地分成多个 数据分区。每个行组属于唯一分区
  • 分区是SQL Azure复制、迁移、负载均衡的基本单位。每个分区包 含多个副本(默认为3),每个副本存储在一台物理的SQL Server上
  • SQL Azure保证每个分区的多个副本分布到不同的故障域。每个分 区有一个副本为主副本(Primary),其他副本为从副本 (Secondary)。主副本处理所有的查询、更新事务,并以操作日志 的形式,将事务同步到从副本,从副本接收主副本发送的事务日志 并应用到本地数据库

(3) 体系架构

SQL Azure分为四个主要部分: SQL Server实例、全局分区管理器、协 议网关、分布式基础部件。

云数据库的技术架构 云数据库系统功能_大数据_32

  • 每个SQL Server实例是一个运行着 SQL Server的物理进程。每个物理数 据库包含多个子数据库,它们之间相 互隔离。子数据库是一个分区,包含 用户的数据以及schema信息
  • 全局分区管理器维护分区映射表信息
  • 协议网关负责将用户的数据库连接请 求转发到相应的主分区上
  • 分布式基础部件(Fabric)用于维护 机器上下线状态,检测服务器故障并为集群中的各种角色执行选取主节点操作

云数据库的技术架构 云数据库系统功能_数据库_33

  • SQL Azure的体系架构中包含了一个 虚拟机簇,可以根据工作负载的变化,动态增加或减少虚拟机的数量
  • 每台虚拟机SQL Server VM(virtual machine)安装了SQL Server 数据库管理系统,以关系模型存储数据
  • 通常,一个数据库会被散存储到3~5 台SQL Server VM

6.云数据库实践

参见http://dblab.xmu.edu.cn/blog/322/