什么是云数据库?一个基于容器的微服务应用,通过连续交付在灵活的云基础设施上部署的概念。云计算领域和安全领域的专家学者普遍认为,云原生是一种更安全、更包容的新模式。回顾人类历史上的每一次技术飞跃,生产力的变化永远不会缺席。“数据库”软件已经发展了50多年,其下一个必然的变化方向 “云原生数据库”已经悄然走到了第十年。未来十年,云原生数据库领域的创新将远远超过过去十年。本文将详细介绍云数据架构。

UMP(Unified MySQL Platform)也就是底层本,高性能,开源数据库。

一、UMP设计原则:

(1)真实系统保持单一的外部访问入口。

(2)消除单点故障,确保服务的高可用性。

(3)具有良好的可伸缩性,能动态增加,减少计算资源。

(4)能够实现资源间的相互隔离:多租户。

(5)多个租户带来的问题:一个用户消耗的资源过多,可能会影响到其他用户的应用程序执行。

1、Mnesia:它是一个分布式数据库管理系统;支持交易,支持透明数据片段,利用两阶段锁实现分布式交易,可以线性扩展至少50个节点;数据库模式在运行过程中可以动态更改。

2、RabbitMQ:产业级消息队列产品。

3、Zookeeper:统一命名服务、状态同步服务、集群管理等高效可靠的协调服务。作为一个全局配置服务器,提供分布式锁(在集群中选择一个“总管”),在UMP中发挥作用、对各机上的MySQL实例进行监控(MySQL实例实时监控,发生故障时通知总管)。

4、LVS:Linux虚拟服务器是一个虚拟的服务器集群系统。在LVS的帮助下,UMP系统实现了集群内部的负载平衡,LVS集群采用了IP负载平衡技术和基于内容要求的分发技术,调度器是LVS集群系统唯一的入口点,整个服务器集群的结构对客户是透明的。

5、controller服务器:UMP集群总管。功能:集群成员管理,元数据存储,MySQL实例管理,故障恢复,备份迁移扩展。为了避免单点故障,controller服务器设置了多个controller服务器,由zookeper服务器确定为外部服务提供服务的总管。

6、Web管理控制台:为用户提供系统管理界面。

7、proxy服务器:使用MySQL数据库下载客户端,连接MySQL服务器,为用户提供访问MySQL数据库的服务。功能:数据路由,分库分表,资源限制,流量统计,日志记录。

8、Agent服务器:在运行MySQL过程的机器上部署MySQL实例,用于管理每台物理机器。

9、日志分析服务器:对整个日志进行分析。

10、服务器的信息统计。

11、愚公系统:数据迁移,系统允许在不停机的情况下,实现动态扩展、缩小、迁移。

二、UMP系统功能:

1、容灾

容灾:云数据库必须具备的基本功能,为了实现容灾UMP系统,将为每个用户创建两个MySQL实例(主库->从库)。

出现故障时,主要从切换过程:controller服务器修改路由表,主库标记为不可用,消息中间件rabbitmq修改为proxy服务器(主库和从库)。

主库恢复:主库更新复制从库内容,controller服务器命令从库暂停更新(暂停一段时间,以防止新数据写入主库更新期间的新数据)。

2、读写分离

读写分离:充分利用主从库实现用户读写操作的分离,实现负载平衡。

查询SQL语句:写作操作,直接发送到主库;阅读操作,均衡地发送到主库和从库。

3、分库分表

分库分表:UMP支持用户透明的分库分表。

分库分表时,查询过程:

(1)proxy服务器分析用户的SQL语句,提取SQL语句所需的重写和分发信息;

(2)重写SQL语句,得到多个针对相应MySQL实例的子语句,并将其分发给相应的MySQL实例;

(3)收到来自各种MySQL实例的SQL语句执行结果并获得最终结果。

4、资源管理

资源管理:利用资源池机制管理所有资源。

5、资源调度

三种UMP用户:

(1)小规模用户:多个用户共享一个MySQL实例

(2)中等用户:每个用户独占一个MySQL实例

分库分表用户:拥有多个独立的MySQL实例。

6、资源隔离

7、数据安全

UMP中的数据安全机制:

(1)SSL数据库连接连接

(2)提供数据访问IP白名单

(3)记录用户操作日志

(4)SQL拦截

云数据库架构是一种以云计算为基础,通过虚拟化技术将数据库部署在云平台上的架构。它包括多个组件和层次,包括云计算平台、数据库管理系统、存储系统、网络连接和安全控制等。云数据库架构的主要目标是提供高可用性、弹性扩展、灵活性和安全性的数据库服务,以满足用户的需求。