iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
1
AI & Data

資料工程師修煉之路系列 第 20

[Day 20] Distributed Data

Day 2 ~ Day19 的內容是這本書的 Part I,討論的都是系統中的資料如何在 單一機器 作業,在接下來的 10 天,也是這本書的 Part II,就要進入在 多台機器 的情形下如何儲存和檢索資料,做分散式資料有以下幾點好處:

Scalability

Day 3 中 Scalability 所講的,若你的流量成長到單一機器能負荷的量,部署至多台機器上能讓你分散流量。

Fault tolerance / High availability (容錯 / 高可用性)

Day 2 Reliable 所講的,多台機器代表你有 redundant 的資源,所以某一台掛了,另一台可以接手。

Latency

能降低不同地區的 response time,每一個 user 能用離他最近的 data center 中的資料,而不用繞大半個地球去取得資料。

Scaling to Higher Load

scale 是為了更高的 load parameter (load parameter 意思請參閲 Day 3),這裡來看看有哪幾種擴充架構吧:

shared-memory architecture

也可稱為 vertical scaling (垂直擴充)scaling up,讓一台機器有更多的 CPU、更大的記憶體和更大的硬碟等等,但我們也都 知道,2 倍的資源不代表能承受 2 倍的流量。

shared-disk architecture

這裡每台都有獨立的 CPU 和記憶體,但唯獨硬碟是透過網路與其他機器共用。

shared-nothing architectures

也可稱為 horizontal scaling (水平擴充)scaling out ,每一台機器 (或虛擬機) 被稱為 node (節點),每一個節點皆是獨立的資源,彼此的協調溝通都是在軟體 level 下透過網路完成,分散式資料會讓資料模型的複雜性提高,在某些情況下,單一執行緒的 process 效率會比有 100 核 CPU 的叢集來的好,但換句話說,shared-nothing 系統也可以非常強大,這也是接下來 10 天中要講的。

Replication Versus Partitioning (副本 v.s. 分區)

這是 2 種常見的在多個節點間做資料分散式的方法:

Replication

保持資料有多份副本在多個節點上,Replication 提供了 redundancy 能力,意思為一個節點掛了也能用其他節點提供服務,Replication 也能提高執行效率。

Partitioning

把大的資料切割成許多份的小資料,然後也是放到多個節點上 (也稱為 sharding)。

雖然這是 2 個不同的機制,但它們通常會一起用,如下圖:

figure_part_II

然後希望往後 10 天能把 ReplicationPartitioning 講完 XD


上一篇
[Day 19] Encoding and Evolution (5-2) - Mode of Dataflow - asynchronous message-passing 和總結
下一篇
[Day 21] Replication (1) - Leaders and Followers
系列文
資料工程師修煉之路30

尚未有邦友留言

立即登入留言