云原生分布式数据库介绍

news/2024/7/4 7:44:31 标签: 数据库, 云原生, 分布式

云原生数据库演进

云托管关系型数据库RDS虽然能部分实现“弹性”与“自愈”,但是这种方案存在资源利用率低、维护成本高、可用性低等问题。
以阿里云为例,阿里 PolarDB 之所以会诞生,原因之一是阿里云数据库团队在业务中遇到很大挑战:它们在云上维护了庞大的 MySQL 云服务(RDS)集群,包含成千上万个实例,面临很多棘手问题:
1)云服务一般使用云硬盘,导致数据库的性能没物理机实例好,比如 I/O 延时过高;
2)RDS 实例集群很大,可能同时有很多实例在备份,从而占用云服务巨大的网络和 I/O 带宽,导致云服务不稳定;
3)大实例恢复需重建时,耗时太长,影响服务可用性;
4)对需要读写分离,且要求部署多个只读节点的用户,最明显的感觉是每增加一个只读实例,成本是线性增长。

针对这些问题,可选解决方案是基于共享存储,即数据库共享存储方案:RDS 实例(一般指一主一从的高可用实例)和只读实例共享同一份数据。好处是实例故障或只读扩展时,不用拷贝数据,只需新建只读计算节点或把故障节点重新拉起来。并且,通过快照技术和写时拷贝解决数据备份和误操作恢复问题。不过,业内可用的共享存储方案非常少,即使可用,性能也达不到要求。
因此,想解决云托管关系型数据库服务面临的问题,必须改变思路,从架构入手。

架构“革命”,云原生数据库出现

过去三四十年,传统关系型数据库架构并未发生很大改变。
虽然在数据库扩展方面存在不同的常规方法(如分区、无共享或共享磁盘等),但这些方法都基于同样的基本数据库架构。
正如亚马逊云科技在博客中写道:“这些方法无法解决大规模性能、弹性和爆炸半径问题,因为严密耦合型整体式堆栈的基本局限性依然存在。”
为解决云托管关系型数据库面临的问题,适应云特性的云原生数据库就此诞生。云原生数据库完全为云设计,能充分发挥云的特点和优势。

具体说来,云原生数据库有三大特点:
第一,计算、存储分离,由于对存储与计算进行解耦合,实现了存储与计算分离;
第二,无状态,计算节点无状态或较少状态;
第三,存储节点灵巧化,因采用小存储块方式组织副本,用以减少平均恢复时间,多副本共识算法,实现存储的高可用与故障“自愈”能力。

目前,业内云原生数据库的代表有亚马逊云科技 Aurora、阿里 PolarDB、Azure CosmosDB、腾讯 TDSQL-C 等。

以PolarDB架构为例的云原生数据库产品架构

在这里插入图片描述
特点:
1)一写多读计算与存储分离
2)读写分离
3)高速链路互联
4)共享分布式存储
5)数据多副本、parallel-raft协议

PolarDB云原生数据库应用实践:游戏/电商全球部署高并发

提供高读写性能,支持业务全球化部署,业务峰值时可支撑百万级玩家同时在线的高并发压力,可海外部署。
在这里插入图片描述

云原生分布式数据库PolarDB-X

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PolarDB-X应用实践:每秒万级并发

在城市公交场景下,涉及大量的车辆和车型、多样计费方式,不仅要求数据库具有海量存储能力、还需要满足复杂查询计算。
基于PolarDB-X存储海量数据,通过AnalyticDB进行数据分析,构建智能化城市公交系统,满足路线规划、公交调度等需求,提升运营效率和服务水平。
在这里插入图片描述

数据库生态工具:DTS、DMS、DBS、DAS、DG、ADAM等

在这里插入图片描述

数据管理DMS介绍及应用实践

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据传输服务DTS介绍、数据迁移原理及应用实践

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/141831.html

相关文章

C#和.net框架之第二弹

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、什么是标示符?二、标示符命名规则三、c#命名规范是什么?四、c#命名规范内容五、关键字的用处注意:六、Main方法是干什么的…

boa使用记录

boa使用记录 测试boa服务器和CGI。 环境准备 下载源码 http://www.boa.org/ 配置和修改 参考 Boa服务器 | Ubuntu下编译、安装Boa 配置文件 主要是服务器一些相关路径的设置,有些没有的文件要手动去创建。 测试 启动boa 执行编译出来的boa程序。 # 验证…

gradle

Gradle环境介绍OpenJDK 17.0.5Gradle 7.6示例代码 fly-gradleGradle 项目下文件介绍如果你的电脑安装了 gradle,可以使用 gradle init 去初始化一个新的 gradle 工程,然后使用电脑安装的 gradle 去执行构建命令。但是每个开发电脑上的 gradle 版本不一样…

0038【Gradle】听说这比maven编译更高效率呢

gradle4.6版本, gradledemo01 2023-02-26, 一 项目建立 1.1 idea配置gradle setting→Build,Execution,Deployment→Build Tools→Gradlegradle user home :下载文件的路径 user gradle from :选择本地的gradle路径 gradle jvm:选择本地jdk二 文件详…

pc安装openwrt

openwrt 有很多机器可以安装,比如路由器,草莓派等等,这里专门pc 1.选择openwrt的版本 openwrt有许多的版本需要挑选 第一可以去openwrt的官网下载(根据硬件方便在 路由器等 设备上安装) 以红米ac2100为例&#xff0c…

不用索引怎么优化百亿数据? | MySQL性能优化篇

文章目录数据库调优一、数据库调优原理1.1 为什么要进行MySQL数据库调优?1.2 什么影响数据库性能?1.3 数据库调优到底调什么?二、数据库压力测试2.1 什么是压测?2.2 JMeter简介2.3 驱动下载2.4 测试过程三、连接池3.1 压力测试连接…

面试官:关于CPU你了解多少?

CPU是如何执行程序的? 程序执行的基本过程 第一步,CPU 读取「程序计数器」的值,这个值是指令的内存地址,然后 CPU 的「控制单元」操作「地址总线」指定需要访问的内存地址,接着通知内存设备准备数据,数据准…

数组边遍历(for循环)边删除为什么删不干净 及三种实现删除的方法

文章目录1、为什么删不干净倒序删迭代器lambda表达式删除为什么说数组边for循环遍历边删除会出现删不干净的情况1、为什么删不干净 先写一个例子:可以先猜一下控制台会打印出什么内容? public class removeIterator {public static void main(String[]…