云数据库AWS Aurora(一)

背景

Amazon Aurora 是Amazon Web Services (AWS) 提供的一种关系数据库服务,它兼容并提供与MySQL和PostgreSQL相同的API。Aurora设计为云环境中的商业数据库,具备高性能、高可用性、低成本等特性。

AWS一些组件定义

首先介绍下AWS一些组件。

EC2(Elastic Compute Cloud)

  • EC2(Elastic Compute Cloud):AWS的一种云计算服务,EC2允许用户在云中虚拟化地运行应用程序,提供了可扩展的计算能力。特性:虚拟化计算资源(不同的实例包含不同CPU、内存、存储、网络)、随时启动或停止(灵活)并资源付费等。在一个服务器上,有一个VMM,还有一些EC2实例,其中每一个实例都出租给不同的云客户。每个EC2实例可以运行不同的操作系统,运行的不同的应用程序,比如Web服务、数据库。EC2使用的是本地盘,所以当数据库服务部署在EC2,假设EC2宕机了,本地盘无法访问

S3

  • S3: 快存储,即对象存储

EBS (Elastic Block Store)

  • EBS (Elastic Block Store): 从EC2实例来看,EBS就是一个硬盘,实现中,EBS底层是一对互为副本的存储服务器。当EC2挂在一个EBS volume后,可以像操作普通磁盘一样操作,但是其实是网络请求到EBS服务器。其中EBS底层副本可以采用链式复制-Chain Replication的方式来复制:即写请求首先会写到第一个EBS服务器,之后写到第二个EBS服务器,然后从第二个EBS服务器,EC2实例可以得到回复。
  • 基于EBS,EC2上的数据库有了可用性,当数据库所在的服务器挂了,可以启动另一个EC2实例,并为其挂载同一个EBS volume,再启动数据库。
  • 基于EBS的数据库缺点:
    (1)大量数据需要网络请求
    (2)EBS的容错性, 两个副本往往部署同一个数据中心,如果整个数据中心(地震、火灾等)挂了,就没有可用能力了。

Amazon RDS

  • Amazon RDS(Relational Database Service),是基于MySQL结合AWS的基础设施,构建云上MySQL数据库服务。
  • 对于RDS,有且仅有一个EC2实例作为数据库;且将data page和WAL Log存储在EBS
  • 每一次数据库软件执行一个写操作,Amazon会自动的,将写操作拷贝发送到另一个数据中心的AZ中,形成镜像,且保证强同步
  • RDS架构提供了更好容错性,单个数据中心(AZ)全部故障,还存在一个AZ可用,不丢失数据。但是网络传输过多,log、page等等

Aurora核心设计

架构

  1. Aurora采用了6副本架构,共三个AZ(数据中心),每个AZ有两个副本。
  2. 区别于镜像MySQL(Amazon RDS), Aurora只在网络上传输日志,其他都不传输,因此网络开销很小。日志只是增量,所以内容相比Page较少(当一个数据库要写本地磁盘时,它更新的是整个data page)
  3. 数据分片(Protection Group):10GB一个副本,默认6副本,即存储在6台服务器上。Aurora需要发送一个Log条目时,它会查看Log所修改的数据,并找到存储了这个数据的Protection Group,并把Log条目只发送给这个Protection Group对应的6个存储服务器。存储服务器挂了后,需要尽快恢复副本,采用的策略是并行的 & 快速的在数百台服务器上恢复(假设有足够的带宽,存储服务器有100个分片(每个分片10G),可以以100的并发,并行的拷贝1TB的数据,这只需要10秒左右。如果只在两个服务器之间拷贝,正常拷贝1TB数据需要1000秒左右)
  4. 单写:写请求,只发送给一个数据库。(当然很多类似Aurora数据库后续也支持了多写架构)
  5. 多读:Aurora可以有多个只读数据库,读请求可以分担到这些只读数据库上

写流程

6副本只需要任意4个副本写成功即可(满足Quorum),可容忍两个服务器宕机。或者说单个AZ彻底异常,不影响写操作

读流程

  1. 读流程:当一个AZ和一个其他AZ的服务器挂了之后,读操作不受影响。
  2. 当客户端向只读数据库发送读请求,只读数据库需要知道哪些data page来处理这个读请求,之后直接从存储服务器读取这些data page,并不需要主数据库的介入。只读数据库向存储服务器直接发送读取page的请求,之后它会缓存读取到的page,这样对于将来的一些读请求,可以直接根据缓存中的数据返回。
  3. 只读数据库需要保证只应用commit的事务到自身缓存中,保证数据一致性

Aurora和传统的Quorum区别

  1. Quorum系统通常读写的数据都是相同的
  2. 数据库服务器写入的是Log条目,但是读取的是page(即数据,RO节点通过Log回放到Page)
  3. 数据库服务器可以避免触发Quorum Read(读多个存储服务器),因为日志可以有编号,可以知道哪个存储服务器有最新的日志,因此会挑选拥有最新Log的存储服务器,然后只向那个服务器发送读取page的请求;因此数据库服务器执行了Quorum Write,但是却没有执行Quorum Read,只读了一个副本,而不用读取Quorum数量的副本,效率更高
  4. Aurora也有场景进行Quorum Read,比如当EC2中故障了,导致对应服务器挂掉了,在新启动一个EC2实例后,在进行故障恢复时。原因如下:
  • a) 数据库服务器故障,可能某些事务在执行过程中,并且已经写了日志,在恢复时候,需要通过Quorum Read的方式找到第一个缺失的Log序号,比如第一个副本有第101个Log条目,第二个副本有第102个Log条目,第三个副本有第104个Log条目,但是没有一个副本持有第103个Log条目,因此数据库服务器会给所有的存储服务器发送消息:丢弃103及之后的所有Log条目
  • b) 102及之前的Log会保留。但是这些会保留的Log中,可能也包含了未commit事务的Log,需要进行UNDO操作来撤回未commit事务的变更

参考

  1. MIT 6.824: Cloud Replicated DB Aurora
  2. Aurora论文 https://pdos.csail.mit.edu/6.824/papers/aurora.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795042.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swift:在 Win10 上编程入门

访问 https://swift.org/download/ 找到 Windows 10:x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ ,安装后大约占2.56GB 官网文档:https://www.swift.org/documentation/ 中文教程:The swift…

C++之双向链表与哈希链表用法区别实例(二百六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Unity常用性能优化

DrawCall:CPU向GPU发送渲染命令的过程。 批次:批次是指在一次渲染帧中提交的DrawCall数量。 合批:即批量渲染,合批是一种优化技术,通过将多个需要渲染的物体合并为一个或少数几个DrawCall。 静态合批:对…

Streamlit 构建大语言模型 (LLM) web 界面

文章目录 Streamlit 构建大语言模型 (LLM) web 界面选择Streamlit的原因原理流程streamlit布局示例代码聊天机器人示例代码(简化版) Streamlit在ChatGLM3-6B中的应用 Streamlit 构建大语言模型 (LLM) web 界面 选择Streamlit的原因 易用性:S…

Cisco Unified Communications Manager (CallManager) 15.0 SU1 - 统一通信与协作

Cisco Unified Communications Manager (CallManager) 15.0 SU1 - 统一通信与协作 思科统一通信管理器 (CallManager) 请访问原文链接:https://sysin.org/blog/cisco-ucm-15/,查看最新版。原创作品,转载请保留出处。 作者主页:…

基于开源软件构建存储解决方案的思考

近来看了一些IBM的存储产品的资料,有一些收获。 依据存储软件和搭配硬件,IBM存储产品的组合,大致分类如下: 自研存储软件,搭配自研专有硬件自研存储软件,搭配通用服务器硬件,比如IBM Storage S…

需求分析及设计定义

背景 经过不断的折腾,一切过程都是为了呈现输出,这个阶段就是要交付需求和方案的环节了,很多失败的项目就是上来就到这个环节,倒着捣鼓,先写个文档,做个原型,甚至提出方案,然后再和…

Redis 未授权访问漏洞

出现以下函数 eval函数:因为脚本内容必须通过eval来执行 2.luaopen_io函数:因为此攻击必须通过执行luaopen_io函数来获取 io库 3、.popen函数:恶意命令必须通过io库中的popen函数来执行,为什么拦截规则不是io.popen&#xff0…

状态优先级

文章目录 状态优先级1. 进程状态1.1 进程状态查看1.2 僵尸进程1.3 孤儿进程 2.进程优先级2.1 基本概念2.2 查看系统进程2.3 PRI and NI2.4 PRI vs NI 3. 查看进程优先级的命令3.1 top命令更改nice3.2 其他概念 状态优先级 1. 进程状态 看看Linux内核源代码怎么说 为了弄明白…

深入浅出 -- 系统架构之分布式系统底层的一致性

在分布式领域里,一致性成为了炙手可热的名词,缓存、数据库、消息中间件、文件系统、业务系统……,各类分布式场景中都有它的身影,因此,想要更好的理解分布式系统,必须要理解“一致性”这个概念。 其实关于…

Java NIO Selector选择器简介

文章目录 前言一、IO多路复用二、Selector如何确保多个通道的操作协调一致三、NIO中怎样实现通道的非阻塞IO操作四、网络服务器和客户端简单代码示例服务器端代码客户端端代码 前言 Selector是Java NIO(New I/O)中的核心组件之一,用于检查一…

云原生架构(微服务、容器云、DevOps、不可变基础设施、声明式API、Serverless、Service Mesh)

前言 读完本文,你将对云原生下的核心概念微服务、容器云、DevOps、Immutable Infrastructure、Declarative-API、Serverless、Service Mesh 等有一个相对详细的了解,帮助你快速掌握云原生的核心和要点。 因题主资源有限, 这里会选用部分云服务商的组件进…

LeetCode:1026. 节点与其祖先之间的最大差值(DFS Java)

目录 1026. 节点与其祖先之间的最大差值 题目描述: 实现代码与解析: DFS 原理思路: 1026. 节点与其祖先之间的最大差值 题目描述: 给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V&#xff…

【面经】3月29日 美团/美团平台/后端/一面/1h

面试官先介绍自己部门的业务:存储中心,涉及到大量数据的离线处理(亿级别)。 手撕(删除链表倒数第k个节点) 自我介绍 项目介绍(还没说完被打断了,面试官说你这个感觉就是把功能说了一…

11-1(2)-CSS 背景+CSS 精灵图

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 一、CSS 背景1 背景颜色2 背景色半透明3 背景图片4 背景平铺5 背景图片位置6 …

【数据结构与算法】(一)数据结构相关的基本概念

文章目录 【数据结构与算法】(一)数据结构相关的基本概念前言1.1 数据结构的研究内容1.2 基本概念和术语1.2.1 数据、数据元素、数据项和数据对象1.2.2 数据结构1.2.3 数据类型和抽象数据类型 1.3 抽象数据类型的表示与实现1.4 算法和算法分析1.4.1 算法…

中国电子学会(CEIT)2021年09月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会(CEIT)考评中心历届真题(含解析答案) C语言软件编程等级考试三级 2021年09月 编程题五道 总分:100分一、菲波那契数列(20分) 菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数a,要求菲波…

深度剖析:网络安全中的红蓝对抗策略

红蓝对抗 红蓝对抗服务方案 在蓝队服务中,作为攻击方将开展对目标资产的模拟入侵,寻找攻击路径,发现安全漏洞和隐患。除获取目标系统的关键信息(包括但不限于资产信息、重要业务数据、代码或管理员账号等)外&#x…

9(10)-3-CSS 定位

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 CSS 定位1 定位组成2 定位模式3 边偏移4 静态定位 static5 相对定位 relative…

如何在iPhone上恢复永久删除的照片?

2007 年,Apple Inc. 推出了这款震撼人心的智能手机,后来被称为 iPhone。您会惊讶地发现,迄今为止,Apple Inc. 已售罄 7 亿台 iPhone 设备。根据 2023 年 8 月的一项调查数据,95% 的智能手机利润都落入了苹果公司的口袋…