weblab-tw / ddia-study-group

Designing Data-Intensive Applications Study Group
36 stars 5 forks source link

第六章節:Request Routing 中第三種解法 - Parker #72

Open Parkerhiphop opened 2 years ago

Parkerhiphop commented 2 years ago

image

第二種作法挺常見,就是有一個 Routing Layer 再處理 Request

但第一種跟第三種都有點疑惑

第一種雖說是使用 Round-Robin Balancer 的方式找節點,但照理來說 Round-Robin 應該就是一個個跑 Node,但圖跟文字的說明都是沒有在第一個 Node 找到時,就轉發到適當的 Node,不太確定是透過 Round-Robin 的迴圈形式,還是真的能直接知道適當的 Node 是哪個? Round-Robin Balancer 我的理解就是當每個 Server 都一樣去平均地打請求,也因此有一些變體,但這邊用的應該是基本款?

參考資料: Screen Shot 2022-07-19 at 11 39 57 PM

  1. https://www.nginx.com/resources/glossary/round-robin-load-balancing/
  2. https://avinetworks.com/glossary/round-robin-load-balancing/

第三種則是不知道怎樣的情境 Client-Side(對應於 DB 的話就是 Backend) 會知道 Partition 跟 Node 的分配?

因為都可以算是 Request Routing 就都列在這了 ><!

Parkerhiphop commented 2 years ago

一:Round-Robin 是 Backend 打資料時,一個個去打 node,轉發的發現就是打過去的 node 可能有提供資訊轉過去。

三:可能先談好 Partition 可以怎麼切,就大概知道怎麼解,像是根據 TimeStamp 切就能知道打哪個時間區段的。

實務上應該就是用第一種或第二種,第三種除非 Backend 跟 DB 是同一個人,或一些特定分配。

延伸: SQL 指令可以直接指定要拿哪個 Partition?