前言
在雲端服務設計的過程中,
我們會碰到使用 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 來做 (排隊動線為尊,櫃檯配合排隊動線設計)。