由於之前的工作上常常會接觸到智慧家庭相關的內容,對於這種IOT相關的通訊協定常常會用到MQTT,包含一些公司的產品甚至也都會直接支援這些協定(研華的相關IOT設備),在使用上也常常會與Redis這樣的cache進行搭配使用,去記錄每一些系統的狀態。
在撰寫相關功能的時候,尤其是智慧家庭或IOT的案件,有一種設計模式很常被用到就是發佈/訂閱(Publisher/Subscriber) 模式
,其實就有點像訂報紙的概念,當你有希望得知某一些訊息的時候你會向報社訂閱報紙來獲資訊,報社其實就是broker的位置,那麼我們這些客戶就是訂閱者(Subscriber),而撰稿的人就會是發佈者(Publisher)。
訂閱者和發佈者中間並不會有直接的接觸,而是透過一個中轉站(broker)進行資訊的配送。
那麼通常甚麼樣的狀況會需要這樣的方式來獲取資訊呢?例如:電燈的開關狀態,狀態訊息的推送或廣播系統。一些需要鬆偶合的場景。來傳遞一些物件的狀態是非常有效率的。
而在系統中我自己有用過的有
這兩個其實都有支持這樣的設計,Redis裡面對於key值有支援pub/sub,MQTT更是本身就是為了此而發明出來的通訊協定。
reference: