2024年最新云数据库认识(6)

* S3 提供**高可用性和持久性**,**通过在不同的数据中心和设备之间复制数据来保护数据的安全性,并提供多种安全功能,如访问控制列表 (ACL)、存储桶策略和加密选项。**
  1. EC2 (Elastic Compute Cloud):
    • EC2 :基于云的虚拟服务器服务,允许用户租用虚拟计算资源以运行应用程序。它提供了可伸缩性和灵活性,用户可以根据需要快速启动、配置和管理虚拟机实例。
    • EC2 实例的规格和配置可以根据用户需求进行调整,包括计算能力、内存、存储和网络性能等方面。用户可以选择不同类型的实例,如通用型、计算优化型、存储优化型等,以满足不同类型的工作负载需求。

  • 云的数据库服务 SimpleDB 和 DynamoDB。
  1. SimpleDB
    • SimpleDB 是 Amazon 公司开发的一个可供查询的分布式数据存储系统,是 Amazon 网页服务(Amazon Web Service,AWS)上的第一个 NoSQL 数据库服务,集合了 Amazon 的大量 AWS 基础设施
    • SimpleDB 是一种非关系型的数据库服务旨在提供简单而灵活的数据存储解决方案。它适用于需要快速构建和迭代的应用程序,特别是那些需要动态模式和可扩展性的应用。
    • SimpleDB 使用简单的数据模型,其中包含项目(Item)、属性(Attribute)和值(Value)。这种结构使得它更容易处理半结构化数据,并且能够以高可用性和可扩展性存储大量数据。
  2. DynamoDB
    • DynamoDB 一种全管理的、多区域、高可扩展的 NoSQL 数据库服务,专为云规模应用程序而设计。它提供快速的性能、无限制的扩展性和灵活的数据模型,可满足各种应用程序的需求。
    • DynamoDB 采用键-值对数据模型,同时支持文档和列族数据模型。它提供了自动化的数据复制、备份和恢复,以及内置的安全性和可用性功能,使得开发人员可以专注于应用程序的逻辑而无需担心基础设施的管理。
    • DynamoDB 采用“键值”存储,其所存储的数据是非结构化数据,不识别任何结构化数据,需要用户自己完成对值的解析。
    • Dynamo 系统中的键(key)不是以字符串的方式进行存储的,而是采用 md5_key(通过 MD5 算法转换后得到)的方式进行存储的,因此它只能根据 key 去访问,不支持查询。DynamoDB 使用固态盘,实现恒定、低延迟的读写时间,旨在扩展大容量的同时维持数据库的一致性。

Google 的云数据库产品

  • Google Cloud SQL 是谷歌推出的基于 MySQL 的云数据库,所有的事务都在云中,并由谷歌管理,用户不需要配置或者排查错误,仅依靠它来开展工作即可。由于数据在谷歌多个数据中心中复制,因此它永远是可用的。谷歌还将提供导入或导出服务,方便用户将数据带进或带出云。

Microsoft 的云数据库产品

  • Microsoft(微软)公司通过 SDS(SQL Data Service)提供 SQL Server 的关系数据库功能。微软公司对SDS 功能进行了扩充,并且重新命名为 SQL Azure。微软公司的 Azure 平台提供Web 服务集合,可以允许用户通过网络在云中创建、查询和使用 SQL Server 数据库,云中的 SQL Server服务器的位置对于用户而言是透明的。
  • SQL Azure 具有以下特性:
    ① 属于关系数据库。支持使用 Transact-SQL 来管理、创建和操作云数据库。
    ② 支持存储过程。它的数据类型、存储过程和传统的 SQL Server 具有很大的相似性
    ③ 支持大量数据类型。包含了几乎所有典型的 SQL Server 的数据类型。
    ④ 支持云中的事务。支持局部事务,但是不支持分布式事务。
  • SQL Azure 的体系架构中包含了一个虚拟机簇,可以根据工作负载的变化,动态增加或减少虚拟机的数量。每台 SQL Server 虚拟机(Virtual Machine)安装了SQL Server数据库管理系统,并以关系模型存储数据。通常,一个数据库会被分散存储到 3~5 台 SQL Server VM 中。每台 SQL Server VM 同时安装 SQL Azure Fabric 和 SQL Azure 管理服务。不同 SQL Server VM 内的 SQL Azure Fabric 和管理服务之间会彼此交换监控信息,以保证整体服务的可监控性。SQL Azure负责数据库的数据复写工作,以保障 SQL Azure 的基本高可用性要求。
    在这里插入图片描述

云数据库系统架构

  • 以阿里巴巴核心系统数据库团队开发的 UMP(Unified MySQL Platform)系统为例进行介绍。

UMP 系统概述

  • UMP 系统是低成本和高性能的 MySQL 云数据库方案。开发者通过网络从平台上申请 MySQL 实例资源,利用平台提供的单一入口来访问数据。UMP 系统把各种服务器资源划分为资源池,并以资源池为单位把资源分配给 MySQL 实例。系统中包含了一系列组件,这些组件协同工作,以对用户透明的形式提供主从热备、数据备份、迁移、容灾等一系列服务。
  • 系统内部将用户划分为 3 种类型:数据量和流量比较小的用户、中等规模用户,以及需要分库分表的用户。多个小规模用户共享一个 MySQL 实例,中等规模用户独占一个 MySQL 实例,需要分库分表的用户的多个 MySQL 实例可以共享同一台物理机,UMP 系统通过这些方式实现了资源的虚拟化,降低了整体成本。
  • UMP 系统通过“用 Cgroup限制 MySQL 进程资源”和“在 Proxy 服务器端限制 QPS”两种方式,实现了资源隔离、按需分配,以及限制CPU、内存和 I/O 资源;同时,UMP 系统还支持在不影响提供数据服务的前提下根据用户业务的发展进行动态扩容和缩容。

  • UMP 系统架构设计遵循了以下原则。
    ① 保持单一的系统对外入口,并且为系统内部维护单一的资源池。
    ② 消除单点故障,保证服务的高可用性。
    ③ 保证系统具有良好的可伸缩性,能够动态地增加、删减计算与存储节点。
    ④ 保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离,确保应用和数据的安全。

UMP 系统架构

  • UMP 系统中的角色包括 Controller 服务器、Web 控制台、Proxy服务器、Agent 服务器、日志分析服务器、信息统计服务器、愚公系统;依赖的开源组件包括 Mnesia、RabbitMQ、ZooKeeper 和 LVS。
    在这里插入图片描述

Mnesia

Mnesia 是一个分布式数据库管理系统,适合需要持续运行和具备软实时特性的Erlang 应用,是构建电信应用的控制系统平台—开放式电信平台(Open Telecom Platform,OTP)的一部分。

  • Erlang 是一种结构化、动态类型的编程语言,内建并行计算支持,非常适合构建分布式、软实时并行计算系统。
  • Mnesia 支持事务,支持透明的数据分片,利用两阶段锁实现分布式事务,可以线性扩展到至少 50 个节点。Mnesia 的数据库模式(schema)可在运行时动态重配置,表能被迁移或复制到多个节点来改进容错性。Mnesia 的这些特性,使其在开发云数据库时被用来提供分布式数据库服务。
RabbitMQ
  • RabbitMQ 是一个用 Erlang 开发的工业级的消息队列产品,作为消息传输中间件来使用,可以实现可靠的消息传送。UMP 集群中各个节点之间的通信,不需要建立专门的连接,都是通过读写队列消息来实现的。
ZooKeeper
  • ZooKeeper 是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。在 UMP 系统中,ZooKeeper 主要发挥 3 个作用:
    • 作为全局的配置服务器:UMP 系统把多台服务器相同的配置信息交给 ZooKeeper 来管理,把配置信息保存在 ZooKeeper 的某个目录节点中,然后在所有需要修改的服务器中对这个目录节点设置监听(监控配置信息的状态),一旦配置信息发生变化,每台服务器就会收到 ZooKeeper 的通知,然后从 ZooKeeper 获取新的配置信息
    • 提供分布式锁:UMP 集群中部署了多个 Controller 服务器,为了保证系统的正确运行,对于某些操作,在某一时刻,只能由一个服务器执行,而不能由多台服务器同时执行
    • 监控所有 MySQL 实例:UMP 系统借助于 ZooKeeper 实现对所有MySQL 实例的监控。每个 MySQL 实例在启动时都会在 ZooKeeper 上创建一个临时类型的目录节点,当某个 MySQL 实例挂掉时,这个临时类型的目录节点也随之被删除。
LVS
  • UMP 系统借助于 LVS 来实现集群内部的负载均衡。
  • Linux 虚拟服务器(Linux Virtual Server,LVS),是虚拟的服务器集群系统。LVS 采用 IP负载均衡技术和基于内容的请求分发技术。调度器是 LVS 集群系统的唯一入口点。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。
  • 整个服务器集群的结构对客户是透明的,而且无须修改客户端和服务器端的程序。
Controller 服务器

Controller 服务器向 UMP 集群提供各种管理服务。Controller 服务器上运行了一组 Mnesia 分布式数据库服务,其中存储了各种系统元数据,主要包括集群成员、用户的配置和状态信息,以及用户名与后端 MySQL 实例地址的映射关系(或称为“路由表”)等。当其他服务器组件需要获取用户数据时,可以向 Controller 服务器发送获取数据请求。
为了避免单点故障,保证系统的高可用性,UMP 系统中部署了多台 Controller 服务器,然后由 ZooKeeper 的分布式锁功能来帮助选出一个“总管”,负责各种系统任务的调度和监控。

Proxy 服务器
  • Proxy 服务器向用户提供访问 MySQL 数据库的服务。它完全实现 MySQL 协议,用户可以使用已有的 MySQL 客户端连接到 Proxy 服务器,Proxy 服务器通过用户名获取用户的认证信息、资源配额的限制,如 QPS、IOPS、最大连接数等,以及后台 MySQL 实例的地址,然后用户的 SQL查询请求会被转发到相应的 MySQL 实例上。
  • Proxy 服务器中还实现了很多重要的功能,主要包括屏蔽 MySQL 实例故障、读写分离、分库分表、资源隔离、记录用户访问日志等。
Agent 服务器
  • Agent 服务器部署在运行 MySQL 进程的机器上,用来管理每台物理机上的 MySQL 实例,执行主从切换、创建、删除、备份、迁移等操作,同时还负责收集和分析 MySQL 进程的统计信息、慢查询日志(Slow Query Log)和 bin-log。
日志分析服务器
  • 日志分析服务器存储和分析 Proxy 服务器传入的用户访问日志,并支持实时查询一段时间内的慢日志和统计报表

UMP 系统功能

UMP 系统构建在一个大的集群之上,通过多个组件的协同作业,整个系统实现了对用户透明的容灾、读写分离、分库分表、资源管理、资源调度、资源隔离和数据安全等功能。

容灾
  • 为了实现容灾,UMP 系统会为每个用户创建两个 MySQL 实例,一个是主库,一个是从库,而且这两个 MySQL 实例之间互相把对方设置为备份机,任意一个 MySQL 实例上面发生的更新都会复制到对方。同时,Proxy 服务器可以保证只向主库写入数据。
  • 主库和从库的状态是由 ZooKeeper 负责维护的,ZooKeeper 可以实时监听各个 MySQL 实例的状态,一旦主库死机,ZooKeeper 可以立即感知到,并通知 Controller 服务器。Controller 服务器会启动主从切换操作,在路由表中修改用户名与后端 MySQL 实例地址的映射关系,并把主库标记为不可用,同时,借助于消息队列中间件 RabbitMQ 通知所有 Proxy 服务器修改用户名与后端 MySQL 实例地址的映射关系。通过这一系列操作后,主从切换完成,用户名就会被赋予一个新的可以正常使用的 MySQL 实例,而这一切对于用户自己而言是完全透明的。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

阶课程,涵盖了95%以上大数据知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值