前言
在某次跟同事的討論中聽到這個名詞,"A:你知道mqtt嗎? W:痾 我不知道 A:那需要去懂一下",這不是來懂一下了嗎?其實剛開始真的不知道協議什麼的,聽到都是一頭霧水,腦袋直接關機,不是postman按下去,然後有回應就好了,後來才發現根據不同情境、不同限制下,有不同適合的解決方案這件事
重點紀錄
所以什麼是MQTT?
物聯網的通訊協定
適應窄頻寬、低耗能的情況下,傳送與接受訊息
使用 publish/subscribe 模式傳送資料
角色:Publisher \ Subscriber \ Broker
既然是通訊,就會有發布方、接收方、中間商,就跟我打給你,我是發布方、你是接收方一樣,當然還會有個中間商,以手機來說就是各大電信(ex. 中華電信)
既然是協定,就會有Server 和 client ,server 負責處理需求、client 負責發送需求給server 處理
在 MQTT 有三個角色 Publisher \ Subscriber \ Broker ,Server 扮演 Broker 角色,負責處理 Client 需求( Publisher & Subscriber ),進行發布訊息、接受訊息
訊息和發送方式: Topic & Qos
什麼是 publish/subscribe ?
publish/subscribe 模式,簡單説 Subscriber 決定要訂閱的 topic ,往後有相關資訊,Broker 就會遞送資訊給Subscriber,而 Publisher 則是針對 topic 傳送指定訊息,給Broker 發布
舉個例子,“喜歡我的影片,別忘記訂閱、按讚、開啟小鈴鐺,以後最新的資訊,你就會第一時間收到喔!(os: 但我就不想第一時間收到 ><)” ,每當你(Subscriber)在 YT 按下訂閱的時候,你就是跟 YT( Broker)説,以後這個頻道的上新片,都要跟我說,假設今天晚上六點 這個頻道(Publisher) 上了新片,就會同步送一個訊息跟 YT(Broker) 説 “我上新片囉!” ,YT(Broker) 就會因為你之前的訂閱,送推播到你的手機 “我上新片囉!”
為什麼要適應 窄頻寬、低耗能 ?
常聽到輕量、輕量,就不太知道什麼叫做輕量、為什麼要輕量,換個生活的例子,我們會說“哇!這個生乳捲的口感好輕盈”就大概是類似概念,在現實世界,什麼都需要錢,在開發世界,server 處理每一個行為,都需要耗費資源,因此我們通常會根據不同情境,選擇CP最佳的選擇
回到這裏,為什麼要適應窄頻寬? 因為在物聯網的是世界中,我只是要下命令(“開燈”),讓裝置做出相對應的動作,不像是我看YT我還可以要求顏色、畫質等,相對來說單純簡單,因此只需要窄頻寬就可以,再多我也用不到(ps 我的理解)
為什麼低耗能?每個裝置處理指令是需要耗費資源的(ex. 智能電燈要處理開燈指令),因此如果是屬於充電式的物聯網裝置,那麼低耗電就等於更長的使用時間
什麼是 Qos ?
Qos 我理解的是傳送品質,分為 0 \ 1 \ 2 數字越大,品質越好,品質來自是否確實遞送訊息
然後呢?
ref
murmur
最近工作地方,出現了一個神奇的東西,就是好好摸手工皂,以前都是洗手乳,洗完都會滑滑的、更可惡的是有人居然在空了之後補了洗碗精,真是天理不容(為什麼要假裝洗手乳),所以手工皂的出現,讓我的工作日常多了一些小確幸,終於手上可以不要是洗碗精的的味道!!