Day 20 资料宝石:RDS 架构解析

https://ithelp.ithome.com.tw/upload/images/20210924/20100951ED1oBVei3M.jpg

今天我们要来介绍的 AWS RDS 的基本架构。

RDS instance 的概念

首先,当我们建造一台 RDS instance 的时候(下图#1),可以将它看成 EC2 instances (下图#2),配上里面安装的 DB software (下图#3),再配上一些 EPS volumes (下图#4),来储存资料。

而需要备份的时候,就去创造一个 EBS Snapshot 来留下备份(下图#5)
https://ithelp.ithome.com.tw/upload/images/20210905/20100951RwHivqr8Gv.png

Primary/Standby 与同步备份

通常会把资料库放在一个 Private Subnet,来提供一个更安全的网路空间,所以在 Availability Zone (下图#1)内建立一个 Private Subnet (下图#2)。

在 Private Subnet 里面(下图#2),放上 Primary instance (下图#3)。而这个 Primary instance 会配上一个 EBS volume (下图#4)。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951o9LqGEPmbq.png

再来,由於 RDS 提供了很好的 High Availability 以及 DB failover,所以我们会在另外一个 AZ (下图#1)创造另一个 Private Subnet (下图#2),并把 Standby instance (下图#3)放上去,而这个 Standby instance (下图#3)也会有一个 EBS volume (下图#4)。

Primary instance 的 EBS volume 就会完全同步备份(下图#5)给 Standby instance (下图#3)的 EBS volume (下图#4)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009517lEnoTniq5.png

利用 Read replica 分担 Primary instance 的流量

假设 Primary instance 流量太多的时候,就可以在 Availability Zone (下图#1)里另外建造 Read replica (下图#2)。

Read replica (下图#2)也会有一个 EBS volume (下图#3),而 Read replica 也跟 Primary instance 一样,可以在另外一个 AZ (下图#1)里建造 Read replica 自己的 standby instance (下图#5)并配有 EBS volume (下图#6),来进行完全同步的备份(下图#7)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009513Dq4coE3fP.png

Read replica 的 EBS volume (下图#1)会跟 Primary instance 的 EBS volume (下图#2)进行非同步的备份(下图#3),所以两者之间可能会有点小小的延迟,但由於进行的只有读的部分,所以不会有资料写入冲突的问题。

简单来说,就是透过 Read replica (下图#2)来帮 Primary instance (下图#1)分担了读取(Read)的请求。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951lDyz0UmyDT.png

而 Read replica 可以不只建造一台,也可以在 AZ1 再建立另一台 Read replica (下图#1),并且可以选择不去使用跨 AZ 的 Read replica 的建造,就像是这个在 AZ1 单独自己一个的 Read replica (下图#1),并且在 AZ2 也可以建造别台独立的 Read replica (下图#2)。
https://ithelp.ithome.com.tw/upload/images/20210905/201009511oDL7n1hwD.png

RDS 如何对外开放?

RDS 会提供一个 DNA name (下图#2),使用者就可以透过一个在 Public Subnet 的 EC2 instance (下图#1),藉由 DNS name (下图#2)来跟我们 RDS 的 instance 沟通,而接触点就是 Primary instance (下图#3)。

要注意的是,流量只会导到 Primary instance (下图#3)上,而不会导到 Standby instance (下图#4)。

这是因为在一般的情况下,并不会使用到 Standby instance (下图#4),只有在意外发生的时候,Standby instance 才会去接管,变成新的 Primary instance。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951MfKOPbKJnJ.png

在一般运作的状况下,以上就是 RDS 所拥有的架构 —— 但是资料库的资料非常重要,所以还需要有备份的功能。

备份功能—— EBS Snapshot 与 transaction log (on S3)

对 Standby EBS volumes (下图#1),RDS 会定期的去做备份,而这个备份是以天为单位的(下图#2),可以自己做设定。或者另外想要手动直接创造一个 EBS Snapshot (下图#3)的话也可以。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951TrwSxHl064.png

此外,在 Primary EBS volume 这边(下图#1),RDS 会帮使用者进行一个以分钟为单位的(下图#2),也就是更精密备份,即为 transaction log (on S3)的自动备份(下图#3)。

transaction log (on S3) 的功能非常强大(下图#3),能够用以帮助 Primary EBS volume (下图#1)倒退到非常精确的时间点(下图#2),来保障使用者的资料一致性。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951a4WYPlESgj.png

结语

下图是本文推导出的架构图。

RDS 其实不是一个太新的概念,RDS 就是把 EC2 跟 EBS 给组合起来,再配上一个 DB software 而已。

但 RDS 提供的 Primary/Standby 的同步备份功能、Read replica 的分担流量功能、EBS Snapshot 与 transaction log(on S3) 的定期备份功能,仍更能帮助使用者快速的建立起一个资料库。
https://ithelp.ithome.com.tw/upload/images/20210905/20100951HXqBIa2on5.png

以上,就是针对 AWS RDS 的架构介绍。

What's Next?

明天我们将接着看到「资料宝石:【Lab】RDS架构 建立自己的第一台云端资料库(上)」!


<<:  Day10-TypeScript(TS)的索引型别(Indexable Type)

>>:  【Day 10】C 语言的位元运算子

Day 03 : 我不要很多零钱- Coin Change

简单叙述一下题目目标: 这一题我们要从Input Array(给你的一袋金币)中,想办法以金币总数量...

Class and Style Bindings

透过昨天的范例我们知道要绑定HTML属性需要使用v-bind指令,而今天我们要介绍的是v-bind绑...

[鼠年全马] W32 - Vue出一个旅馆预约平台(6)

因为上个月直接专注在 [iT邦铁人赛] 直接好几个礼拜都没有刷 [鼠年全马] 进度xD 这周回归来做...

Day10 Vue模板语法 & V-text、V-html、V-once介绍

什麽是模板语法? 模板语法是逻辑与页面之间沟通的媒介,Vue.js 使用了基於HTML 的模板语法,...

Day 20 : 深度追踪 Depth-first-searh

深度追踪是刷题前一定要了解的观念! 今天就来用Depth-first-searh的方式来走访一棵树吧...