【Cloud】global / seperate queue 差別 & 使用

前言

在雲端服務設計的過程中,
我們會碰到使用 global / seperate queue 的差別

  • 可以先思考一個經典的排隊問題:

旁邊櫃檯沒人排隊(比喻:此主機忙碌、別的主機空閒),你可以去隔壁櫃臺要求提供服務嗎?
想想在郵局的情況、再想想在大賣場的情形

global queue 才有機會將這個櫃台的人分配給其他櫃員處理,
否則,他只能夠排隊在該櫃台、一直等待服務。

  • 以上面的排隊問題,換到真實的情境:

開了兩台主機 一台CPU爆強、一台GPU爆強
結果在拿task的時候,一個狂吃CPU的 task,使用了 GPU爆強的機器
這樣是不是浪費了GPU爆強的機器使用成本?

說明 & 比喻

有一個很妙的比喻拿來形容 global / seperate queue 的差別非常合適:

seperate queue

  • 使用情境:不想要堵塞,客戶為尊,客戶到馬上就處理,一般來說會使用許多的 service,讓服務馬上到馬上進行

就像「全聯排隊」,一個收銀台排隊一排,能不能先結帳要看運氣,
有時運氣不好,前面排隊的結帳很久,後來才來結帳的人反而先完成。

  • seperate queue, multiqueue, multi service

global queue

  • 使用情境:可能會有堵塞的情況,而為了求公平,讓先到的客戶先進行處理,而服務成本一般較高(像主機、櫃員),讓想使用的客戶自行排隊等待服務時間。

就像「郵局排隊」,先到的客戶先進行處理,一個接著一個

  • global queue, single queue, multi service

一般情況使用

一般情況下 global queue 優於 seperate queue,
但設計上 seperate queue 相對 global queue 容易設計,
不用考慮太多整體的事情。

程式設計

程式設計:seperate queue 設計可以較隨意 (每一個櫃位要擺哪,要怎麼排隊隨便啦),
global queue 的設計須以 global queue 為主軸,讓每一個系統能夠去提取 task 來做 (排隊動線為尊,櫃檯配合排隊動線設計)。

Reference

Licensed under CC BY-NC-SA 4.0