前言
補述前幾天寫的文章
當時有提到和Redis的取捨
今天補述一下 DataBase 和 RabbitMQ 的之間的選擇
兩者的差異
如同 Redis 和 RabbitMQ 一樣,本質上 DataBase 和 RabbitMQ 就是完全不同的資源
前者主要使用於資料儲存,後者則是訊息代理(Message broker)
我們可以把它看作倉庫和貨架
DataBase就像倉庫一樣,它們被設計用來存放許多不同的東西,並使它們相對整齊地保持在一起
一個好的倉庫可以讓使用者快速找到其中的物品,避免丟失零件和材料
如果東西進入了倉庫,它可以很容易地再次取出來,但不能立即取出
另一方面,訊息代理就像裝在產線附近的貨架(或料架)
零件從上一個操作被移動到貨架上,等待被下一個人使用
這些架子被設計用來存放少量相同的東西 - 就像 Queue 一樣。它們靠近工人,所以當下一個零件準備好進行加工時,它可以很快地被取出來(而不是去倉庫,可能需要幾分鐘甚至更長時間)。此外,工人可以立即看到架子上的物品 - 如果架子是空的,工人可能會休息一下,等待它再次積累一兩個零件。
如何選擇
僅以兩者之間來做選擇的話,假設我們希望它快速的處理完任務的話,我們就會使用RabbitMQ
那如果說有需要複雜的操作,例如可能還要把執行狀態、結果等等資訊去做額外處理,那可能要考慮Database(或者兩者作結合)
我個人認為在專案不大的狀況下,併發量不多的狀況下其實用個Database就很夠了,那如果說有甚麼高併發、高流量
Kafka可能會是個選擇,不過這就是另一個故事了
參考資料
Message broker vs. database and monitoring
Using your Database as a Queue? Good or bad idea?
如果有錯誤的部份,歡迎指正,謝謝。
如果你喜歡這篇文章,請幫我拍手
只需要註冊會員就可以囉,完全不用花費任何一毛錢就可以用來鼓裡創作者囉