欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

MQTT QoS深度解析:報(bào)文交換機(jī)制與選型建議

MQTT QoS深度解析:報(bào)文交換機(jī)制與選型建議 1. 從一次實(shí)際故障聊起為什么選錯(cuò) QoS 會(huì)讓人半夜爬起來修先說個(gè)我踩過的坑。某次給一套物聯(lián)網(wǎng)設(shè)備做數(shù)據(jù)采集傳感器每隔幾秒上報(bào)一次溫濕度我圖省事把所有消息都設(shè)成了 QoS 0覺得丟了就丟了下一條馬上就來。結(jié)果客戶現(xiàn)場出現(xiàn)間歇性數(shù)據(jù)空洞運(yùn)維同事查到半夜最后發(fā)現(xiàn)是弱網(wǎng)環(huán)境下報(bào)文頻繁丟失而業(yè)務(wù)側(cè)又拿這條數(shù)據(jù)做告警判斷一個(gè)空洞直接觸發(fā)誤報(bào)。反過來另一個(gè)項(xiàng)目里我把所有下行控制指令都設(shè)成了 QoS 2結(jié)果設(shè)備量上來之后broker 的 Qos 2 報(bào)文處理隊(duì)列積壓嚴(yán)重指令延遲從幾十毫秒飆升到好幾秒。兩次教訓(xùn)讓我徹底明白一件事MQTT 的 QoS 不是越高越好選錯(cuò)才是真麻煩。在選擇 QoS 之前得先弄清楚它到底解決什么問題。MQTT 是應(yīng)用層協(xié)議跑在 TCP 之上按理說 TCP 已經(jīng)保證了字節(jié)流的可靠傳輸為什么還需要業(yè)務(wù)層的 QoS 等級原因在于 MQTT 的通信模型是客戶端 - broker - 客戶端而 broker 是獨(dú)立進(jìn)程TCP 只保證單條連接上的字節(jié)不丟不亂不保證 broker 在轉(zhuǎn)發(fā)消息、處理 session、管理訂閱關(guān)系時(shí)不出岔子。同時(shí)MQTT 消息是發(fā)布 / 訂閱的異步模式發(fā)布者發(fā)完就完事訂閱者可能在某個(gè)時(shí)間點(diǎn)才上線這中間消息在 broker 里怎么存、怎么保證不重復(fù)不丟失TCP 根本管不著。所以 QoS 實(shí)際上是客戶端與 broker 之間、以及 broker 與訂閱端之間的協(xié)議層可靠性約定從每次握手需要交換多少個(gè)報(bào)文就能看得很清楚。這篇文章我把 QoS 0、1、2 逐個(gè)拆開核心關(guān)注點(diǎn)只有一個(gè)它們各自在投遞一條消息時(shí)到底要交換多少報(bào)文、狀態(tài)機(jī)長什么樣、失敗時(shí)誰來負(fù)責(zé)重試、以及這些機(jī)制在真實(shí)業(yè)務(wù)中對應(yīng)的代價(jià)是什么。把這幾個(gè)問題算明白你自然知道什么場景用什么等級。2. QoS 0一發(fā)一收的裸奔模式到底省在哪QoS 0 是整個(gè)協(xié)議里最干脆的等級官方術(shù)語叫 At most once最多一次投遞。它的行為就是發(fā)送端把 PUBLISH 報(bào)文扔出去然后什么都不管沒有 ACK沒有重傳沒有消息 ID。broker 收到之后往匹配的訂閱者那邊轉(zhuǎn)發(fā)一條 PUBLISH同樣不確認(rèn)。2.1 報(bào)文數(shù)量與協(xié)議行為一條 QoS 0 消息的完整鏈路報(bào)文數(shù)量極其固定發(fā)送端向 broker 發(fā)送 1 個(gè) PUBLISH 報(bào)文broker 向每個(gè)匹配的訂閱端轉(zhuǎn)發(fā) 1 個(gè) PUBLISH 報(bào)文全程 0 個(gè)確認(rèn)報(bào)文如果發(fā)送端和訂閱端有 N 個(gè)匹配訂閱關(guān)系那么一條原始消息最多產(chǎn)生1 N個(gè) PUBLISH 報(bào)文除此之外沒有任何額外的握手開銷。這里有一個(gè)容易忽略的細(xì)節(jié)PUBLISH 報(bào)文的固定頭里QoS 等級只占 2 bitQoS 0 對應(yīng)的值是 0所以 DUP 標(biāo)志位、RETAIN 標(biāo)志位的組合也相對簡單。沒有 QoS 0 的消息沒有 Packet ID或者說 Packet ID 字段長度為 0這意味著從協(xié)議層面根本無法追蹤某一條消息是否被送達(dá)。2.2 省下來的開銷背后是什么QoS 0 最大的價(jià)值是極低的延遲和極小的帶寬占用。對于上報(bào)型業(yè)務(wù)比如環(huán)境溫濕度、GPS 坐標(biāo)、設(shè)備心跳這類數(shù)據(jù)天然有時(shí)間價(jià)值衰減一條數(shù)據(jù)過了幾秒就是廢數(shù)據(jù)重傳舊數(shù)據(jù)反而會(huì)干擾下游分析。與其糾結(jié)丟沒丟不如盡快把最新值送過去。而且這類消息量大、頻率高如果每條都走確認(rèn)流程broker 的 CPU 和網(wǎng)絡(luò) IO 都會(huì)明顯上升最終反而擠壓了真正重要的控制消息的帶寬。但省下的代價(jià)也清清楚楚消息可能丟失。TCP 層只保證字節(jié)流到達(dá) broker不保證 broker 應(yīng)用層一定能把消息成功寫入訂閱者的會(huì)話。比如訂閱者正好在斷線重連瞬間消息被 broker 發(fā)往舊的 socketTCP 連接關(guān)閉時(shí)數(shù)據(jù)被丟棄QoS 0 不會(huì)觸發(fā)任何重發(fā)再比如 broker 內(nèi)部路由處理時(shí)發(fā)現(xiàn)沒有匹配的訂閱者消息直接丟棄也不會(huì)告訴發(fā)送端。這些行為在協(xié)議規(guī)范里都是允許的所以業(yè)務(wù)代碼必須把可能丟消息當(dāng)成默認(rèn)前提來設(shè)計(jì)。2.3 一個(gè)容易犯的認(rèn)知錯(cuò)誤很多人以為反正應(yīng)用層自己會(huì)做數(shù)據(jù)校驗(yàn)QoS 0 丟了我可以從別的地方補(bǔ)然后給所有消息都用 QoS 0。這個(gè)思路在純數(shù)據(jù)采集、且下游能做時(shí)序拼接的場景下是合理的但在以下場景就危險(xiǎn)了告警觸發(fā)類消息比如設(shè)備溫度越限、電量低丟了可能就是一次安全事故狀態(tài)變更類消息比如設(shè)備在線 / 離線切換、門鎖開閉丟了會(huì)導(dǎo)致業(yè)務(wù)側(cè)狀態(tài)字段和實(shí)際不符冪等性較弱的下行控制消息比如切換工作模式重發(fā)或丟失都會(huì)造成狀態(tài)漂移所以我現(xiàn)在的習(xí)慣是把所有消息按可丟性分三檔QoS 0 只放丟掉之后對業(yè)務(wù)無影響或影響可自然恢復(fù)的那一檔。這不是保守而是吃過虧之后的經(jīng)驗(yàn)。3. QoS 1多一來回買到的是至少一次的確定性QoS 1 全稱 At least once至少一次投遞。它的引入提供了消息到達(dá)確認(rèn)機(jī)制但同時(shí)也引入了重復(fù)消息的可能性。這個(gè)等級應(yīng)該是 IoT 項(xiàng)目里用得最多的比 QoS 0 多了一倍的握手但可靠性提升非常明顯。3.1 報(bào)文交換流程逐字節(jié)算清一條 QoS 1 消息從發(fā)布端到 broker 的流程如下我做了一個(gè)逐步驟拆解發(fā)送端先給消息分配一個(gè) Packet ID2 字節(jié)從 1 到 65535發(fā)送端發(fā)送 PUBLISH 報(bào)文QoS 位設(shè)為 1Packet ID 填入報(bào)文broker 收到后把消息按訂閱關(guān)系轉(zhuǎn)發(fā)給所有匹配的訂閱端broker 向發(fā)送端回復(fù)一個(gè) PUBACK 報(bào)文確認(rèn)收到發(fā)送端收到 PUBACK 后把這條消息的本地狀態(tài)標(biāo)記為已完成如果發(fā)送端在發(fā)出 PUBLISH 之后等待 PUBACK 期間發(fā)生了超時(shí)或連接斷開發(fā)送端就不知道 broker 到底有沒有收到。此時(shí)協(xié)議允許發(fā)送端在重連后重新發(fā)送一次 PUBLISH并且把 DUP 標(biāo)志置 1表示這是一條可能重復(fù)的報(bào)文。這個(gè) DUP 重發(fā) 的機(jī)制正是 QoS 1 重復(fù)消息的來源。從報(bào)文數(shù)量上看一條 QoS 1 消息發(fā)布和確認(rèn)至少需要 2 個(gè)報(bào)文PUBLISH PUBACK如果發(fā)生超時(shí)重發(fā)那就是 4 個(gè)、6 個(gè)甚至更多。對于每個(gè)匹配的訂閱端broker 向它轉(zhuǎn)發(fā)時(shí)同樣會(huì)進(jìn)行 QoS 1 的流程因此完整鏈路的報(bào)文量是 2 2N不考慮重發(fā)。3.2 重復(fù)消息為什么不可避免注意上面對話里第三步的時(shí)序很關(guān)鍵broker 在轉(zhuǎn)發(fā)給訂閱端和回復(fù) PUBACK之間是有順序的。不同 broker 的實(shí)現(xiàn)可能先轉(zhuǎn)發(fā)再回 ACK也可能先回 ACK 再轉(zhuǎn)發(fā)甚至可能是異步并發(fā)。如果 broker 已經(jīng)向訂閱端轉(zhuǎn)發(fā)了 QoS 1 消息但是發(fā)送端斷線了沒收到 PUBACK那發(fā)送端重發(fā)時(shí)訂閱端就會(huì)收到兩條一模一樣的消息。兩條消息的 Packet ID 一樣DUP 標(biāo)志也一樣因?yàn)槎际峭粫?huì)話重發(fā)訂閱端無法簡單地通過 Packet ID 去重因?yàn)?QoS 1 規(guī)范里壓根沒要求它做去重。這就是至少一次的代價(jià)消息不丟但你得自己處理重復(fù)。最常用的辦法是在應(yīng)用層加業(yè)務(wù)去重比如每條消息帶一個(gè)全局唯一的 messageId 字段訂閱端用一個(gè)滑動(dòng)窗口或者 Redis set 記錄最近處理過的消息 ID。另一個(gè)常規(guī)思路是把消息做成冪等操作例如把溫度設(shè)為 25 度這種賦值型指令天然冪等重復(fù)執(zhí)行兩次結(jié)果一樣而把計(jì)數(shù)器加 1這種非冪等操作就必須配合業(yè)務(wù)去重。3.3 QoS 1 實(shí)際項(xiàng)目中擴(kuò)展出來的花樣實(shí)際項(xiàng)目里我還見過 QoS 1 配 session 過期時(shí)間的方式來做離線消息緩存。比如控制指令場景設(shè)備可能離線一小段時(shí)間如果 cleanSessionfalse 且 session 未過期broker 會(huì)把 QoS 1 消息緩存在會(huì)話里等設(shè)備重連時(shí)再補(bǔ)發(fā)。這比直接用 QoS 2 便宜得多而且大部分業(yè)務(wù)對重復(fù)指令是可以容忍的——用冪等設(shè)計(jì)把重復(fù)消掉就好。所以 QoS 1 是可靠性和成本折中最均衡的等級也是我默認(rèn)的起步等級。4. QoS 2兩輪四次握手為了恰好一次付出多少代價(jià)QoS 2 全稱 Exactly once恰好一次投遞。這是 MQTT 協(xié)議里最復(fù)雜、也是最容易被誤解的部分。很多人以為 QoS 2 就是更可靠一點(diǎn)實(shí)際上它是用一整套握手狀態(tài)機(jī)換來消息既不丟失也不重復(fù)的語義報(bào)文量和協(xié)議復(fù)雜度都遠(yuǎn)超 QoS 0 和 QoS 1。4.1 每一條消息的四步完整往返QoS 2 的發(fā)送端到 broker 這一段協(xié)議規(guī)定的報(bào)文交換流程嚴(yán)格分成兩階段第一階段發(fā)送端發(fā)送 PUBLISH 報(bào)文QoS 位設(shè)為 2攜帶 Packet IDbroker 收到后不會(huì)立刻轉(zhuǎn)發(fā)給訂閱端而是先持久化這個(gè) Packet ID 到會(huì)話狀態(tài)標(biāo)記為已收到但未釋放然后向發(fā)送端回復(fù) PUBREC 報(bào)文第二階段發(fā)送端收到 PUBREC 后知道 broker 已經(jīng)確認(rèn)收到該消息于是發(fā)送一個(gè) PUBREL 報(bào)文表示我這邊已經(jīng)完成發(fā)送流程你可以正式釋放這條消息broker 收到 PUBREL 后才把消息轉(zhuǎn)發(fā)給訂閱端同時(shí)向發(fā)送端回復(fù) PUBCOMP 報(bào)文表示整個(gè) QoS 2 發(fā)送流程關(guān)閉現(xiàn)象上一條 QoS 2 消息從發(fā)送端到 broker 至少要交換 4 個(gè)報(bào)文PUBLISH、PUBREC、PUBREL、PUBCOMP。在最理想情況下是各 1 個(gè)總共 4 個(gè)。如果在某個(gè)環(huán)節(jié)發(fā)生重傳那報(bào)文數(shù)量還會(huì)成倍增加。這個(gè)成本已經(jīng)非常直觀了傳輸 1 條 QoS 2 消息控制報(bào)文的個(gè)數(shù)是 QoS 1 的 2 倍是 QoS 0 的 4 倍以上。4.2 為什么是兩階段提交而不是簡單 ACK 兩次初學(xué) MQTT 的人都會(huì)有一個(gè)疑問QoS 1 是 PUBLISH PUBACKQoS 2 為什么不能做成 PUBLISH PUBACK 再 PUBACK 一次因?yàn)閮纱为?dú)立的 ACK解決不了重復(fù)問題。如果只用一次 ACK重復(fù)完全靠語義用兩次獨(dú)立 ACK發(fā)送端重發(fā) PUBLISH 時(shí)broker 無法區(qū)分這條 PUBLISH 是全新的還是重發(fā)的也就無法決定到底要不要把消息轉(zhuǎn)發(fā)兩次。QoS 2 的關(guān)鍵設(shè)計(jì)在于中間那個(gè) PUBREL。PUBREL 是一張釋放令牌相當(dāng)于告訴 broker之前的 PUBLISH 我已經(jīng)確認(rèn)你收到了現(xiàn)在我們要完成最后的交接。broker 在收到 PUBLISH 時(shí)記錄 Packet ID但并不會(huì)立即把它投入轉(zhuǎn)發(fā)流程收到 PUBREL 之后這個(gè) Packet ID 的狀態(tài)才從待處理變?yōu)榭赊D(zhuǎn)發(fā)從而保證任何一個(gè) Packet ID 在 broker 側(cè)只會(huì)被消費(fèi)一次。這套機(jī)制和分布式事務(wù)里的兩階段提交思路非常像本質(zhì)上就是用額外的握手換取唯一一次投遞的語義保證。從 broker 側(cè)視角來看還隱含了一個(gè)重要邏輯收到 PUBREC 后broker 一方面要保存 Packet ID另一方面可以回復(fù) PUBREC但是對外轉(zhuǎn)發(fā)消息必須等到 PUBREL 之后。如果發(fā)送端在發(fā)出 PUBREL 后一直沒收到 PUBCOMP發(fā)送端會(huì)重發(fā) PUBREL而不是重發(fā) PUBLISHbroker 收到重復(fù)的 PUBREL 時(shí)不會(huì)再次轉(zhuǎn)發(fā)消息只會(huì)再次回復(fù) PUBCOMP。這個(gè)細(xì)節(jié)保證了無論如何重試訂閱端最多收到一次。4.3 QoS 2 的狀態(tài)機(jī)異常情況都從哪里來我把 QoS 2 發(fā)送端的典型狀態(tài)變化列一下更直觀發(fā)送端狀態(tài)觸發(fā)事件動(dòng)作待發(fā)送業(yè)務(wù)產(chǎn)生消息發(fā)送 PUBLISH記錄 Packet ID進(jìn)入等待 PUBREC等待 PUBREC收到 PUBREC發(fā)送 PUBREL進(jìn)入等待 PUBCOMP等待 PUBREC超時(shí) / 斷線重連后重發(fā) PUBLISHDUP1仍在等待 PUBREC等待 PUBCOMP收到 PUBCOMP清理 Packet ID流程結(jié)束等待 PUBCOMP超時(shí) / 斷線重連后重發(fā) PUBREL仍在等待 PUBCOMP你可能注意到了等待 PUBREC 階段重發(fā)的是 PUBLISH等待 PUBCOMP 階段重發(fā)的是 PUBREL。這兩次重發(fā)的報(bào)文類型是不同的很多 SDK 的 debug 日志里可以看到同一 Packet ID 的 PUBLISH 和 PUBREL 交替出現(xiàn)如果你不理解狀態(tài)機(jī)很容易誤判成協(xié)議 bug。其實(shí)這正是 QoS 2 為了防重復(fù)做的一個(gè)細(xì)節(jié)只有收到 PUBREC 之后才允許把消息提交給 broker否則無條件重發(fā) PUBLISH而一旦進(jìn)入 PUBREL 階段PUBLISH 已經(jīng)確認(rèn)落地了重發(fā) PUBREL 不會(huì)造成二次轉(zhuǎn)發(fā)。4.4 一個(gè)值得警惕的坑QoS 2 不是端到端恰好一次QoS 2 只保證了發(fā)布端到 broker這一段恰好一次以及broker 到單個(gè)訂閱端這一段恰好一次。如果一條消息從發(fā)布端發(fā)出broker 把它轉(zhuǎn)發(fā)給兩個(gè)訂閱者 A 和 B那么在 A 和 B 那邊各自會(huì)獨(dú)立執(zhí)行 QoS 2 流程。也就是說broker 和 A 之間的 Packet ID 可能與 broker 和 B 之間的完全不同A 和 B 收到消息的時(shí)間也可能差很多。QoS 2 從來不做跨訂閱端的全局去重它只做連接級的語義保證。更關(guān)鍵的是如果發(fā)布端和 broker 用 QoS 2但 broker 向某個(gè)訂閱端轉(zhuǎn)發(fā)時(shí)訂閱策略或會(huì)話配置把 QoS 降級了比如訂閱時(shí)請求 QoS 1或者 broker 對 QoS 2 做了下鉆映射那么端到端的語義就不是恰好一次。所以當(dāng)你看到某個(gè)架構(gòu)說自己實(shí)現(xiàn)了端到端 exactly once一定要追問一句發(fā)布端到 broker 是什么等級broker 到訂閱端是什么等級兩個(gè)等級不一致的時(shí)候消息語義以更低的那個(gè)為準(zhǔn)。5. 三張表看懂 QoS 選型性價(jià)比才是第一原則把前三節(jié)的內(nèi)容壓縮一下QoS 等級的核心差異其實(shí)可以收斂成一張報(bào)文對照表、一張可靠性對照表、和一張選型決策表。我在實(shí)際評審方案時(shí)基本就是拿這三張表逐條過需求。5.1 報(bào)文量與開銷對照QoS等級最簡報(bào)文數(shù)確認(rèn)機(jī)制消息ID超時(shí)重發(fā)動(dòng)作重復(fù)可能性QoS 01PUBLISH無無無沒有重發(fā)邏輯不可能重復(fù)但可能丟失QoS 12PUBLISH PUBACK有有重發(fā) PUBLISHDUP1可能重復(fù)QoS 24PUBLISH PUBREC PUBREL PUBCOMP兩階段確認(rèn)有等待 PUBREC 時(shí)重發(fā) PUBLISH等待 PUBCOMP 時(shí)重發(fā) PUBREL不重復(fù)保證恰好一次這個(gè)表格應(yīng)該是你電腦前貼著的默認(rèn)參考。凡是讓你一把梭直接全上 QoS 2的把這個(gè)表格甩給他看同樣的消息吞吐QoS 2 的協(xié)議開銷是 QoS 1 的兩倍是 QoS 0 的四倍如果消息量大這帶來的 CPU、帶寬、延遲成本會(huì)直接反饋在監(jiān)控曲線上。5.2 典型場景決策參考以下選型建議來自我參與過的幾類真實(shí)項(xiàng)目不是教科書標(biāo)準(zhǔn)答案但大概率能幫你少走彎路業(yè)務(wù)場景消息特征推薦QoS理由傳感器高頻數(shù)據(jù)上報(bào)周期性、容忍少量丟失、量大QoS 0省帶寬、低延遲下游可以做插值或跳變檢測設(shè)備心跳 / 在線狀態(tài)低頻、需要不丟失QoS 1丟了就誤判離線正常重發(fā)可接受控制指令開關(guān)、調(diào)參低頻、需要必達(dá)QoS 1 業(yè)務(wù)冪等重發(fā)可接受但要做好指令去重計(jì)費(fèi) / 工單 / 支付回調(diào) / 授信變更低頻、語義重大、不允許重復(fù)QoS 2用協(xié)議層保證恰好一次省掉大量對賬離線設(shè)備指令緩存設(shè)備可能長期離線QoS 1 持久會(huì)話用 session 緩存成本比 QoS 2 低很多要注意的是表格里 QoS 1 業(yè)務(wù)冪等和 QoS 2 是兩條不同的技術(shù)路線。很多時(shí)候 QoS 2 能解決的問題QoS 1 配合冪等 ID 也能兜住只是實(shí)現(xiàn)位置不同QoS 2 把去重做在協(xié)議棧里QoS 1 把去重做在應(yīng)用代碼里。前者省心但費(fèi)帶寬后者省帶寬但費(fèi)開發(fā)。5.3 不要盲目升級 QoS 的另一個(gè)原因有人可能想我都用 QoS 2成本高點(diǎn)就高點(diǎn)至少保險(xiǎn)。但 QoS 2 的恰好一次有一個(gè)前提條件broker 必須能夠維護(hù)每個(gè) Packet ID 的會(huì)話狀態(tài)。如果 broker 宕機(jī)重啟、或者客戶端長時(shí)間離線導(dǎo)致會(huì)話過期那么 QoS 2 的握手狀態(tài)也會(huì)丟失此時(shí)若發(fā)送端重連并重發(fā) PUBRELbroker 可能已經(jīng)不認(rèn)識這個(gè) Packet ID 了這時(shí)候會(huì)回復(fù)一個(gè) DISCONNECT 或直接當(dāng)作新消息處理。所以 QoS 2 并不等于消息絕對可達(dá)它只是盡最大努力保證在鏈路和會(huì)話正常的前提下不重不丟。一個(gè)真正可靠的系統(tǒng)還是要靠業(yè)務(wù)層的最終一致性設(shè)計(jì)和重試機(jī)制兜底而不是寄希望于單一協(xié)議等級。6. 實(shí)際工程里影響 QoS 選擇的隱藏因素我不說你很難注意到上面聊的都是協(xié)議本身的語義但在真實(shí)項(xiàng)目里QoS 最終表現(xiàn)還受一堆外部因素制約。這些因素在報(bào)文數(shù)量層面看不出差異一旦上線都是暗坑。6.1 cleanSession 與持久會(huì)話對 QoS 的影響MQTT 連接由 CONNECT 報(bào)文里的 cleanSession 標(biāo)志控制。如果 cleanSessiontruebroker 不保存任何會(huì)話狀態(tài)客戶端重連后一切清零。此時(shí) QoS 1 或 QoS 2 的重發(fā)機(jī)制依舊存在但當(dāng)客戶端斷開期間到達(dá)的消息broker 不會(huì)緩存直接丟棄。如果 cleanSessionfalsebroker 會(huì)為這個(gè)客戶端保留 session包括未確認(rèn)的 QoS 1 / QoS 2 消息狀態(tài)和離線消息隊(duì)列這才會(huì)出現(xiàn)我們常說的離線消息補(bǔ)發(fā)。所以做選型的時(shí)候要問的不只是 QoS 等級還有 cleanSession 配置。設(shè)備上報(bào)場景通常 cleanSessiontrue簡單干脆但控制指令緩存、遺囑消息、狀態(tài)同步這些場景往往要開持久會(huì)話。我見過一個(gè)項(xiàng)目用了 QoS 2 但忘了關(guān) cleanSession結(jié)果設(shè)備一離線消息就丟排查了很久才發(fā)現(xiàn)是會(huì)話狀態(tài)沒保留。協(xié)議等級選得再高會(huì)話策略不對等于白搭。6.2 Broker 實(shí)現(xiàn)差異同一 QoS不同表現(xiàn)不同 broker 內(nèi)部實(shí)現(xiàn)方式差別很大直接體現(xiàn)在 QoS 處理路徑上。輕量級 broker 可能把所有消息都放在內(nèi)存里投遞完就刪企業(yè)級 broker 會(huì)對消息做持久化甚至在 QoS 2 轉(zhuǎn)發(fā)之前寫入消息存儲(chǔ)。如果你的 QoS 2 消息數(shù)量很大broker 的磁盤 IO 就是新的瓶頸。我實(shí)測過同一組 QoS 2 消息在嵌入式 broker 和企業(yè)級 broker 上的表現(xiàn)吞吐可以差一個(gè)數(shù)量級原因就是后者多了持久化步驟。另外某些 broker 為了性能會(huì)在轉(zhuǎn)發(fā)時(shí)做 QoS 降級。比如發(fā)布端用 QoS 2 發(fā)送但某個(gè)訂閱端訂閱主題時(shí)用的是 QoS 0那么 broker 按照取發(fā)布和訂閱 QoS 的較小值這個(gè)規(guī)則只會(huì)用 QoS 0 轉(zhuǎn)發(fā)給該訂閱端。很多人不知道這個(gè)規(guī)則以為發(fā)布端選了 QoS 2 訂閱端就一定能 QoS 2 收到實(shí)際上協(xié)議規(guī)定是 min(pubQoS, subQoS)。所以客戶端訂閱時(shí)的 QoS 也必須按業(yè)務(wù)需求明確設(shè)置否則前面省心后面鬧心。6.3 鏈路層不等于應(yīng)用層TCP 超時(shí)重傳與 MQTT 重發(fā)的疊加MQTT 跑在 TCP 上TCP 自己也有超時(shí)重傳這會(huì)不會(huì)和 MQTT 的 QoS 重發(fā)疊加會(huì)但它們的語義不同。TCP 重傳解決的是字節(jié)流層面的丟包保證整段字節(jié)到達(dá)對端MQTT 重傳解決的是 broker 應(yīng)用層是否處理完畢。舉一個(gè)極端例子發(fā)送端發(fā)出 QoS 1 的 PUBLISHTCP 層把它拆成幾個(gè) segment 發(fā)出去第一個(gè) segment 到了 broker第二個(gè) segment 丟了TCP 會(huì)重傳丟掉的 segment最終 broker 完整收到 PUBLISH回復(fù) PUBACK。這一過程 TCP 和 MQTT 都在參與但 MQTT 的重發(fā)邏輯不會(huì)介入因?yàn)榘l(fā)送端還沒到超時(shí)條件。如果網(wǎng)絡(luò)質(zhì)量極差TCP 重傳多次仍失敗MQTT 層才會(huì)啟動(dòng)自己的重發(fā)定時(shí)器。所以做測試時(shí)不要用拔網(wǎng)線來模擬 MQTT 消息丟失那模擬的是連接斷開觸發(fā)的行為往往是會(huì)話重建和 DUP 重發(fā)而不是 TCP 重傳。想要看 MQTT QoS 機(jī)制的真實(shí)表現(xiàn)更好的方式是人為丟包、亂序或延遲注入比如 tc 命令加 netem 模塊這樣可以分別觀察 QoS 1 的 PUBACK 超時(shí)和 QoS 2 的 PUBREC/PUBCOMP 超時(shí)。搞清楚這兩層機(jī)制線上出問題時(shí)才不至于把鍋甩錯(cuò)對象。6.4 消息體大小對 QoS 開銷的放大效應(yīng)協(xié)議開銷的計(jì)算不應(yīng)該只算報(bào)文個(gè)數(shù)還得乘消息體長度。QoS 0 和 QoS 1 / QoS 2 在 PUBLISH 報(bào)文的可變頭部上差異很小差值基本上就是 0 到 2 字節(jié)的 Packet ID。但是 QoS 1 和 QoS 2 的確認(rèn)報(bào)文 PUBACK / PUBREC / PUBREL / PUBCOMP 都很短固定頭 可變頭不超過 4 字節(jié)。所以當(dāng)消息體很大時(shí)比如固件升級包分片QoS 1 和 QoS 2 的額外開銷占比反而小當(dāng)消息體很小時(shí)比如開關(guān)狀態(tài)就幾個(gè)字節(jié)QoS 2 的控制報(bào)文開銷占比可能超過 100%。這也是為什么大量小報(bào)文的遙測場景要堅(jiān)持用 QoS 0哪怕業(yè)務(wù)方一開始喊著不能丟講完成本之后通常也會(huì)接受加業(yè)務(wù)層兜底而不是全局升 QoS。7. 最后的實(shí)操建議和幾個(gè)值得收藏的細(xì)節(jié)寫到這里把我自己項(xiàng)目里沉淀下來的幾條硬經(jīng)驗(yàn)放出來基本上可以直接抄作業(yè)。第一默認(rèn)從 QoS 1 起步再按需降級或升級。不要在項(xiàng)目啟動(dòng)會(huì)上拍腦袋定 QoS而是先按消息分類梳理出丟得起 / 丟不起但可重復(fù) / 絕不能重復(fù)三類每一類對應(yīng) QoS 0、QoS 1 冪等、QoS 2。這套方法我用在十幾個(gè)項(xiàng)目里都穩(wěn)。第二消息體里一定要帶業(yè)務(wù) ID即使你已經(jīng)用了 QoS 2。因?yàn)榭?broker 橋接、版本升級遷移、以及訂閱端做多副本消費(fèi)時(shí)都可能出現(xiàn)重復(fù)或亂序業(yè)務(wù) ID 是最后的兜底手段。QoS 2 節(jié)省了去重代碼但省不掉業(yè)務(wù)排重字段。第三QoS 2 的 PUBREL 重發(fā)是很常見的現(xiàn)象不要當(dāng)成錯(cuò)誤。正常網(wǎng)絡(luò)抖動(dòng)下每次 QoS 2 消息的傳播都可能伴隨一次 PUBREL 重發(fā)字節(jié)流日志里出現(xiàn) DUP 標(biāo)志是正常行為。真正需要警惕的是 PUBLISH 的 DUP 在 QoS 2 下頻繁出現(xiàn)那說明 PUBREC 遲遲未到大概率是 broker 處理能力存在瓶頸。第四做壓測時(shí)把報(bào)文數(shù)量統(tǒng)計(jì)帶上。只要在發(fā)布端和訂閱端分別統(tǒng)計(jì)收到的 PUBLISH 數(shù)就能立刻算出實(shí)際 QoS 生效比例。比如發(fā)布端發(fā)了 1000 條 QoS 1訂閱端收了 1012 條那說明至少有 12 條經(jīng)歷了重復(fù)投遞如果訂閱端只收到 958 條那不是 QoS 的錯(cuò)而是會(huì)話配置或 broker 丟消息得另行排查。第五不要在 QoS 2 上強(qiáng)行疊加離線永久緩存。離線緩存場景用 QoS 1 持久會(huì)話就夠了QoS 2 的握手狀態(tài)在長時(shí)間離線后大概率會(huì)失效到時(shí)候反而多出一堆 PUBREL 重發(fā)日志和數(shù)據(jù)殘留。把話說到底QoS 2 是為在線鏈路可靠性設(shè)計(jì)不是為離線海量緩存設(shè)計(jì)。我覺得 MQTT 的 QoS 選型本質(zhì)上是個(gè)系統(tǒng)工程問題協(xié)議只是給了一個(gè)解決可靠性的杠桿而你真正要做的是搞清楚業(yè)務(wù)能容忍什么語義再?zèng)Q定要不要花報(bào)文數(shù)量的成本去換取更嚴(yán)格的語義。報(bào)文數(shù)量會(huì)告訴你每個(gè)選擇的代價(jià)業(yè)務(wù)語義會(huì)告訴你每個(gè)選擇的收益兩者對齊答案自然就出來了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
激情五月丁香五月| 五月天丁香| 亚洲精品网址| 99热97| 精品婷婷五| 少妇被躁爽到高潮无码文| tingting五月天亚洲| 五月综亚洲| 欧美槡BBBB槡BBB少妇| 五月天精品视频| 黄网免费观看| 玖玖综合玖玖| 日韩人妻白浆视频系列| 99热这里只有精品22| 五月天开心成人网| 久久一级免费黄色片| 丁香五月大香蕉| 五月丁香六月停停| 九九家庭影院| 99re在线观看| 丁香九月综合| 日本久久99久久| 色情五月婷| www.国产亚洲69ty.久久久久久久久久久久 | 美女五月狠狠| 天天操天天操| 色视频2025| 第1影院之五月婷婷| 丁香六月综合| 色婷婷五月在线| 深爱激情五月天色婷婷| 五月天激情综合首页| 婷婷五月天激情免费在线观看| 国产超碰人人| 丰满少妇猛烈A片免费看观看| 婷婷丁香18| 五月丁香婷婷在线综合蜜桃| 亚洲国产精品五月天| 99热资源在线| 婷婷激情97| 五月婷丁香| 99九九精品视频| 婷婷五月天激情AV影院| 操射国产日本| 怡红院视频| 国产美女最新VA在线免费观看| 色狠狠色综合久久久绯色AⅤ影视| 国产肥白大熟妇BBBB视频| 色婷婷日本| 五月天天爽| www.日日日.com| 色综合久网| 欧美黄色一级录像| 啪啪视频99| 日日影院 | 99热这里只有精品9| 亚洲男女激情| 五月激情综合网| 五月婷婷六月丁香在线视频免费在线观看| 99这里只有精品99| 五月天婷婷激情小说电影| 婷婷涩涩网| 久久久久久草黄色片AV在线观看| 日韩色五月| 91在线日本| 亚洲另类AV| 99在线小视频| 久婷| 99这里有精品| 久久92| 野战毛片三一3| 79色色色色| 伊人色欲五月天| 丁香五月天激情网址| 97丁香婷婷| 五月 成人 婷婷| 欧美婷婷精品激| 婷婷99丁香| 五月开心激情| 综合久久六月| 大陆肏屄视频| 日本高清久| 婷婷五月激情的图片| 久久丁香综合| 97精品人人A片免费看| 五月丁香大香蕉| 可以免费观看的AV| 99re热视频这里只精品| 日本97久久久精品| 高清无码.com| 先锋资源婷婷| 五月丁香日本片| 99re久热只有精品6在线直播| 色婷婷丁香五月| 欧美成性色| 五月丁香网中文字幕| 欧洲免费视频色| 九九热只有精品| 99碰碰视频| 99re思思久久| 五月天激情日色在线| 久久精品91视频| 一级精品999WWW| 激情深爱婷婷网| 亚洲性图一区二区| 亚洲精品午夜国产va久久成人| 丁香五月天激情视频| 被男人添B超爽视频| 日韩欧美不卡| 97色色色色| 国产精品久久久丁香五月八戒视频| 亚洲欧美另类在线23p| 99性爱视频| 五月天婷婷久久视频| 99久热视频在线| 97电影99热| 日本色频| 九九视频这里有精品| 激情婷婷久久| 1024在线视频| 第四色婷婷色五月| 天天干夜夜谢| 天天搞天天色综合| 五月婷激情| 欧美日韩成人高清在线| 嫩草免费视频| 婷久看人爽| 99色视频| 99热在线爱| 综合久| 五月综合六月婷婷| 极品人妻VIDEOSSS人妻 | 婷婷天天日婷婷| 成人国产欧美大片一区| 婷婷成人综合免费视频| 六月婷婷色| 五月婷婷色白丝| 婷婷亚洲激情在线观看视频| 99色婷婷视频| 91超碰在线观看| 99热精品网| 五月丁香六月成人| 久久宗合影| 蜜臀av在线成人电影| 五月天色色网站| 丁香成人色情五月天| 五月天婷婷在线视频| 狠狠情色| 日韩综合天堂| 99综合色色色| 青青草国产亚洲精品久久| 9 1超碰九色| 国产夫妻操逼内射视频| 一起草AV| 九九在线免费观看| 国产毛片操B| 色九网| 色噜噜狠狠一区二区三区| 久久色大香蕉| 久久人人妻| 伊人热婷婷| 色婷婷亚洲精品天天综| 五月丁香琪琪| 农村熟妇高潮精品A片| 国产色婷婷亚洲| 色五月网址| 日日夜夜狠狠婷婷色| 婷婷丁香18| 久久视网36| 99热在线只有精品| 五月天婷婷高清无码| 亚洲精品**不卡在线播he| 人人爱人人添| 色欲婷婷五月天| 99精品久久| 激情网第九色| 第四色婷婷丁香五月| 亚洲美女裸体被操在线观看| 伊人婷婷综合| 国产美女最新VA在线免费观看| 国产69久久久欧美黑人A片| 综合色天天| 人人摸人人干| 玖玖婷婷五月天| 婷婷日| 九九热狼人| 亚洲第一精品成人999久久精品| 肏日网在线看| 91久久久久久| 天天插综合| 激情六月丁香| 2025神马午夜福利| 婷婷五月激情综合| 伊人久久五月天综合| 天堂综合久久| www.99riav99| 99re久久| 欧美色色色色色色色色色色| 久久机只有这里精品| 玖玖激情网| 天天天天天天操| 俺去也在线www色官网| 亚洲第一综合| ji'qing'luan'ren'lun| 99毛片| 免费看欧美成人A片无码| 婷婷五月视频| 亚洲狠狠婷婷综合久久久| 激情五月天色色色| 亚洲中字AV电影在线网站| 99热地址| 五月花亭亭| 色99网| 九九热9| 岛国AV网| PORNY九色9l自拍视频成人| 色婷婷丁香五月丁香| 成人毛片在线免费观看| 色婷婷aV四虎| 亚州成人综合在线| 国产午夜成人免费看片无遮挡| 色婷婷的五月天| 蜜臀av无码久久久久久久久| 亚洲成人一区| 色色免费网站| 久re热视频| 中文成人在线| 亚洲精品一区无码A片| www.maotanji.com| 99热这里只有精品8| 色婷婷在线视频久| 六月丁香基地| 丁香六月婷婷开心| 99热综合| 五月天成人免费视频| 女人天堂AV| www.激情五月天com| 99色激| av第一二区| 超碰在线50| 国产成人+综合亚洲+天堂| 99视频这里有精品| 亚洲综合在线播放| 性视频久久| 丁香五月电影| 99热日| 国产VA亚洲VA96| 九九热在这里只有精品| 婷婷六月天亚州| 五月天天天操天天爽夜夜操| 99爱免费在线观看| 深爱激情久久| 性生活视频98791| RenRenSe在线视频网站| 色五月婷婷婷婷| 天堂五月婷婷| 天天色域综合网| 五月婷婷我| 丁香婷婷十月| 超碰人人99| 182TV大香蕉| 亚洲综合五月| 色婷五月| 四川BBB搡BBB搡多人乱亂| 99热在线观看| 六月婷婷天堂| 综合色网站| 4438成人电影| 婷婷五月大| 91五月天| 成人国产网| 日本www免费九九| 婷婷中合| 五月丁香好婷婷A片网| 激情啪啪五月| 亚洲在线激情婷婷五月| 欧美日本va| 久久五月天激情| 色色亚洲视频| 五月婷婷六月天| 成人中文网| 亞洲自怕| 九九av| 色必久悠悠影院| 婷婷六月丁香1| 五月婷婷婷婷婷婷艺术| 久9精品视频| 五月丁香999| 久久久18| 欧美激情久| 99热播放| 激情五月天色爱| 夜夜躁爽日日| 国产成人精品一区二三区熟女在线 | 丁香色五月婷婷17C| 蜜桃婷婷五月| 欧洲激情精品婷婷| 艹| 五月婷综合网| 99热这里只有精品22| 99色在线视频| 大香蕉五月| 色色色视频免费无码| 九九婷婷五月天影视| 亚洲色婷婷五月| 成人一级片| 国产成人精品亚洲线观看| 一区操| 久久新| 色婷婷五月天天天天天| 啪啪黄页网| 这里只有九九精品| 色色网站| 久久久久久久久18久久| 婷婷激情小说网| 俺去也五月天婷婷| 九九热青草| 色综合久久88色综合天天看| 欧美激情-区二区三区| 亚洲无线视频| 激情啪啪五月天| 丁香五月日啪| 丁香六月激情| 成人在线精品| 人人干女人| 思思9久久| www色色色com| 婷婷五月香蕉| 婷婷色五月天色| 天天噜天天爱| 色婷婷网| 免费视频舔| 丁香六月婷婷久久综合| 婷婷新网址| 欧美久久五月婷婷| 丁香五月婷婷啪啪| 九热视频| 在线99热| 伊人婷婷五月天| 久热免费| 精品九九网| 丁香五月天成人| 国产精品99久久久久久久女警| 99色日本| 99超级碰碰| 丁香深五月婷婷| 深爱激情五月天色婷婷| 日日操夜夜擼| 婷婷五月天激情影片| 99热色精品| 99热国产精品| 久久99久久久久久| 亚洲国产婷婷色五月| 亚洲网站999| 九九热91| 伊人玖玖精品| 婷婷丁香六月| 天天干夜晚夜操| 久久XX| 婷婷激情丁香五月天综合| 九九热10| 欧美性爱五月天| 国产激情av| 亚洲无码成人网| 久久久久er热| 日本久久人| 欧美婷婷五月天| 亚洲啪啪自拍| 99热这里只有精品99| 啪啪色区| 色色综合网站| 97丁香五月天| 在线视频九色97| 26uuu另类| 99riAV成人在线视频| 欧美性色五月天| 狠狠ri| 性天天中文网| 玖玖爱综合网| 久久久久久久人妻| 日韩av网址大全| 青青色com久久| 五月狠狠| 婷婷九月激情网| 久久R激情| 91精品久久久久久综合五月天| 五月天婷婷青青草| 999激情视频| 五月婷成人| 无遮挡国产高潮视频免费观看| 国产va在线视频| 婷婷最新地址| 大香蕉网站,大香蕉综合| 亚洲国产精品成人免费一区久久久在线观看AAAA | 狠狠干综合| 亚洲不卡欧洲| 双性美人被调教到喷水A片| 国产色五月| 亚州色综合| 自拍偷窥99热| 操一操插一插| 久久婷狠狠色| 琪琪色网在线| 天天射美女| 无码G高清天| 色婷婷啪啪综合网| 婷婷五月天色播| 激情五月,深深爱五月| www色综合亚洲92| 超碰99在线观看| 丁香六月毛片| 婷婷久草| 婷婷五月色惰| 91大操| 中文字幕不卡+婷婷五月| 久久这里只有精品07| 9久9久9久女女女九九九一九| 综合性爱网| 婷婷五月激情丁香激情| 91丁香五月| 免费看欧美成人A片无码| 欧美黄色韩日网| 国产日批视频| 四色永久成人网站| 激情五月综合久久| 婷婷五月综合色小姐小说| 人妻av在线| 99er热精品视频| 五月婷婷在线视频免费观看| 2017人人操| 伊久大香蕉| 久久婷婷亚洲| 99超级碰碰| 六月色国内综合| 久久99网站| 丁香花婷婷五月天| 情色五月天 网站| 丁香色五月 97干| 天天澡天天狠天天天做| 亚洲欧州色情在线观看| 狠狠另类视频| site:esunnet.com| 五月婷婷干干干| 五月丁香综合成人社区| 97艹| 激情AV中文| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 99资源人人| 亚洲va综合va国产va中文| 久久五月天网| 色五月五月婷婷| 色五月丁香五月婷婷五月成人网 | 这里只有国产精品在线| 热99精品视频观看| 婷婷五月天va| 天天色综合色| 深爱激情五月天色婷婷| 九九热这里只有精品12| 久色五月婷婷综合| 婷婷亚洲五月色综合| 伊人久久婷婷五月天激情四射| 五月丁香琪琪| 九九综合精品| 婷婷激情伍月网| 丁香大香蕉| 日韩高清成人| 丁香五月综合高清在线| 激情五月天啪啪视频| 99国产小视频2013| 天天爽天天弄| 六月丁香激情婷婷| 婷婷五月激情天| 99在线精品免费视频| 九九热视| 婷婷五月天亚洲综合| 色五月偷偷| 婷婷五月色综合| 人人操AV| 丁香五月天视频| 日韩丰满少妇无码内射| 色九九九综合| 亚洲情色一区| 婷婷色无码| 丁香五月天激情综合网| 五月婷亚洲精品| 人妻aV在线| 丁香五月自拍| 成人无码精品1区2区3区免费看| 亚洲欧洲另类| 色九九中文字幕| 色五月婷婷影视| 欧美日韩国产一区| wwW天天干| 五月天色导航| 激情99| 五月丁香影视| 中文婷婷狠狠| 色婷婷AAA| 婷婷五月天无码视频| 五月天天综合网色婷婷| 98永久精品| 五月丁香六月久久| 夜夜爽天操| 日韩综合久| 色色亚洲视频| 婷婷五月色花丁香社区| 丁香五月天婷婷在线视频| 2020夜夜操天天爽| 无码99| 日日杆天天| 婷婷五月花.97| 婷婷五月色情| 婷婷五六日| 深爱五月激情| 99欧美| 91日综合欧美| 欧美美女国产日韩一区二区久| 色婷婷九月综合| 五月天丁香婷婷社区| 色色婷婷丁香| 97欧美在线| 亚洲综合丁香婷婷六月天| 99热a片免| 欧美丁香婷婷五月| www.com任你艹| 丁香六月婷婷综合色| 中文字幕乱轮| 国产午夜精品一区二区三区嫩草| 亚洲无aV在线中文字幕| 婷婷五月婷婷五月| 婷婷成人五月天| 91九色超碰正在播放| 五月天堂婷婷| 人妻狠狠操| 久久爱婷婷| 中国丰满熟女A片免费观| 91视频人人做97| 五月婷深深爱激情网| 日韩欧美一级大黄网站| av无码电影| 丁香五月婷婷综合网| 五月天婷婷成人网| 亚洲网视屏| 九九热视频精品| 国产AV一区二区三区日韩| 国产成人av在线播放| www.99成人视频| 99国产精品白浆在线观看免费 | 六月伊人婷婷| h在线看免费版在线看| 啪啪操操| 婷婷 丁香 精品| 国产激情一区| 国产精品久久久60086| 特级西西4444www无码| 草榴视频网| 色五月激情婷婷| 欧美69久成人做爰视频| 亚洲丁香五月天在线视频| www.久久99| 综合网啪啪| 综合网啪| 日本一级特黄大片AAAAA级| 97色色色色色| 丁香六月色| 九九视频这里只有精品| 99这里只有| 九月婷婷人人操人人舔人人爱| 大波美女VA网站| 九九成人| 婷婷五月天伦理| 五月天色综合| 免费试看小视频 99| 麻豆AV一区二区三区| 日本在线免费中文com.| 熟女人妻视频| 美女美女美女三级色天天天天天| 婷婷五月丁香成人网| 丁香五月天天高清在线| 综合一啪| 精品女人九九九| 性生活视频98791| 六月丁香综合| 2014天天爽| 欧美性爱五月天| 噜色精品| 久9热插入| 久久这里只有精品8| 亚洲色图81p| 亚洲在线综合| 色必久悠悠影院| 99热这里有精品| 天天操夜夜肏| 丁香五月天天| www.色婷婷.com| 婷婷深爱色五月| 9l视频自拍九色9l黑人| 91大神操美女| 五月天无码视屏播放| av免费在线看不卡无毒| 激情六月色| 丁香九月久久| 丁香六月视频免费观看| 欧美操逼天堂| 色色激情五月天| 婷婷六月伊人| 激情六月丁香| 色无婷婷| 激情综合无码| 五月五丁香婷婷| 婷婷五月六月丁香| 五月综合色| 色婷五月| 日韩影院三级| 玖玖婷婷免费| 亚洲精品午夜国产va久久成人| 蜘蛛女免费观看完整版高清电影| 五月丁香综缴情性爱| 色色99| 综合综合色色| 国产超碰人人| 99精品国产在热久久| 亚洲婷婷免费| 激情综合网,五月| 激情婷婷九月| 中文字幕婷婷9月天| 超碰网站在线观看| 激情五月网站| 婷婷中文在线| 日韩成人电影Av| 丁香五月性| 婷婷五月激情丁香| www.伊人天堂偷偷婷婷| 激情婷婷五月| 日操夜操天天操不卡| 九九人人操| 99热在线免费| 五月天色综合服务平台| 99久re热视频精品98| 婷婷另类小说| 激情丁香五月激情婷婷| 久久精品性爱视频,| 日本欧美999久久久三级片| 久久这里只精品| 精品人妻伦一二三区久久| 婷婷五月AA五月在线| 久久人人九| 人人操婷婷| 99人人干| 丁香五月性爱| 久久99激情| 开心五月深爱五月丁香五月激情五月 | 五月天婷综合| 色婷婷小视频| 91色性感五月婷婷丁香| 97在线精品| 日本久久综合| 欧洲亚洲免费视频9| 色色色色色色网| 精品怡红九九九| 婷婷五月天激情在线观看 | 这里只有精品9| 激情99热| 色六月天天激情综合网| www.色综合| 91碰碰视频| 色九九九九| 丁香五月综合激情久久潮喷| 超碰国产一区| 99爱操| 九色99视频| 字幕网AV中文字幕| 玩熟女五十AV一二三区| 玖玖精品资源| 79成人网| 日日激情网| 另类综合网| 99精品久久久久久久婷婷久久| 婷婷八月激情| 深情六月婷婷综合久久| 九九免费精品在线视频| 亚洲亚洲激情| 五月丁香成人| 丁香六月激情综合啪啪| 天天色亚洲| 婷婷激情图片| 亚洲综合草草| 99色视频| 国产精品天天狠天天看| 国产偷人爽久久久久久老妇APP| 天天色播| 婷婷综合性爱网| 色婷婷成人色网| 婷婷丁香五月天色色| 久久网婷婷| 久久婷丁香五月| 另类在线| 六月丁香深深爱| 狠狠狠夜夜夜| 久久婷婷五月综合伊人| 久久99热这里只有精品| 国产成人精品一区二三区熟女在线 | 丁香狠狠色婷婷久久无码视频| 开心五月综合| 天天肏天天肏天天肏| 婷婷久久五月| A片试看50分钟做受视频| 伊人九九68| 人人操女人| 欧洲永久精品| 欧美性爱5月天天天看| 亚洲热视频在线| 92久久| 国产偷人爽久久久久久老妇APP| 五月综合激情视频| 丁香五月欧美| 国产精品色| 丁香五月婷婷香| 九洲一级A片| wWw色五月| 色吧五月婷婷| 色婷婷色99国产综合精品| 五月美女婷婷风骚| 九九九九综合| 可以直接看的AV网站| 亚洲色图五月丁香| 91色呦哟| 久久九九综合| 直接看的AV| 可以免费观看的AV| 久久婷婷五月天激情| 色婷婷中文字母五月丁香| 久草热视频在线观看| 丁香五月人妻| 人人操操| 五月开心激情网| 女同激情久久av久久| W色综合| 丁香五月色色| 日韩色五月| 五月丁香激情综合| 伊人久久大香线蕉av一区| 丁香五月激情澎湃一区| 婷婷基地爱| 激情五月九九九| 六月婷五月丁香| 五月婷婷黄色| 成人短视频在线免费观看| 婷婷亚洲丁香五月| 久99热| 六月婷婷网| 热久久国产视频| 黄网在线播放| 97香蕉碰碰人妻国产欧美| 日日噜狠狠色| 婷婷伊人五月天| 99热精品少| 色婷婷黄色网络| 丁香激情五月| 色婷婷色| 久久ab| 婷婷五月色播天| 激情网五夜婷婷| 操久久网| 日本色图综合| 91久久五月天| 色五月天丁香婷婷色| 99av视频| 狠狠色色色| 色综合五月婷婷狠狠干| 这里有精品| 99色6爱9热| 久草五月天| 五月丁香色色| 久9久9久9久9久9久9| 丁香五月综合久久综合| 亚洲色五月天| 热99在线精品| 亚洲碰碰碰| 超碰99资源站| 99热在线中文字幕| 99精品视频偷拍| 五月丁香色色| 色狠狠综合| 婷婷久久五月| 开心久久xxx色| 久久婷色| 激情五月综合色婷婷| 亚洲精品久久久久AV无码| 亚洲激情图文小说| 无码成人播放器| 热久久视频99| 99ri精品在线观看| 噜一噜在线| 成人精品人妻| 九九AV| 激情网战码亚洲A| 91欧美| 欧美色小说婷婷| 97碰碰草| 这里只有精品视频| 亚洲无码另类| 五月天激情图| 人人综合色| 无码色| 婷婷午夜| 日韩艹比| 天天日综合| 亚洲在线操| 综合五月天| 亚洲小视频| 超碰a女人的天堂| 青草激情综合| 99re这里只有精品首页| 97色视频网| 久99久在线| 色在线五月天免费| 91丨九色丨老熟女激情| 午夜激情婷婷| 婷婷丁香五月久久| 久操人| 激情文学久久| 狠狠狠狠狠草| 国产免费一区二区三区三州老师F1F1.CC| 婷婷午夜激情| 黄涩毛片| 伊人狠狠色婷婷综合丁香一区| 99热在线观看精品| 开心五月丁香综合久久| 狠狠综合色网| 六月丁香五月婷婷| 六月丁香五月天| 色噜噜狠狠色综合无码久久欧美| 日99网站| 六月婷婷激情| 五月天婷婷高清无码| 色噜噜狠狠色综合成人网| 99性爱视频| 九九精品免费| 五月花婷婷最新| 六月丁香中文字幕| 欧美情色电影一区二区| 国产免费AV在线| 人人做人人看人人摸| 99热免费精品| av不卡网站| 99re6久热只有精品6在线直播| 99精品爱| 在线观看熟女少妇| 99伊人婷婷在线| 麻豆WWWCOM内射软件| 另类小说五月天| 超碰啪啪网| 亚洲色婷婷| 亚洲欧美丁香五月天亚洲欧美| 久久亚洲婷婷综合色五月| 色婷婷色| ZpRSw| 99爱爱| www.色综合.com| 一级操逼内射在线视频| 99热久久这里只有精品| 色九月婷婷综合| 色婷大香蕉| 国产性av| 亚洲超碰在线| 九月丁香| 婷婷久久精品| 99综合色| 婷婷五月噜噜| 天天操九九插| 99视频色在线观看| 五月天综合久久| 在线超碰91| 日本三级第一页| 无码激情AAAAA片-区区| 中文字幕在线免费观看视频| 久久狼人天堂| 天天日天天爽| 天天日综合| 思思热久热| 天天摸人人摸| 丁香五月天啪啪激情综和网| 婷婷激情六月中文| 99re思思在线视频| 六月婷婷六月天天在线免费| 91丨九色丨大屁股| 超碰九九热| 美女黄频aⅴ视频| 婷婷精品综合| 婷婷五月色综合| 色婷婷偷拍| 久热超碰91| 五月婷婷,狠狠操| 2020日日干| 碰97久久| 日本人妻A片成人免费看片| www.色综合.com| 在线天堂9| 久久久宗合| 五月丁香激情综合网| 色999亚洲人成色| 九九精品热| 日韩一级片| 亚洲乱码日产精品BD在线观看| 开心五月天激情网| 色爱综合网| 超碰在线免费观看日韩| 国产性爱大片久久| 亚洲第二AV| 99操免费视频| 亚洲操人| 婷婷成人综合免费视频| 婷婷五月丁香伊人网| 天天操夜夜肏| 九九热在线观看视频| 第四色五月婷婷| 99热国产精品| 免费视频无码| 玖玖伊人网| www热久久yy9| 热的五码久久精品| 99热这里只有精品13| 激情五月婷婷老师| 91九色视频在线观看| 伊人久久婷婷| 日日夜夜天天| 五六月婷婷久久| 五月天婷婷社区久久综合| 婷婷六月激情| 婷婷亚洲五月丁香综合在线| 丁香五月婷婷色偷偷| 六月婷婷色综合| 久久精彩免费视频| 色涩视频久久| 五月丁香啪综合| a69在线视频| 日韩AV大全| 丁香五月性| 成人草榴视频| 五月天丁香综合久久国产| 色五月涩涩婷婷蜜桃| www.亭亭五月天| 超碰免费人人| 五月停性愛| 色婷婷狠| 婷婷丁香五月天中文字幕| 爽极品色| 色综合久久之分久久| 五月丁香六月色| 色婷婷五月天天天天天天天天天| 婷婷五月天电影区小说区| 九九九九毛片| 五月丁香激情综合网官网| 五月丁香婷婷在线| 久久机热思思热| 婷婷九月色| 色婷婷色丁香色欲av| 中文字幕成人| 裸体美女丁香五月天。| 能看的AV| 亚洲成人九九九| 另类图片激情五月天| 99热综合色图| 熟女人妻视频| 婷婷九月丁香| 天天做天天爱天天综合| 99综合免费视频| 十区AV| 五月丁香狠狠地噜噜噜噜| 日韩成人无码人妻| 午夜]香婷婷深深爱| 综合激情啪啪| 婷婷99中文字幕| 婷婷婷五月香蕉| 初夜av| 激情五月综合网| 大天天伊人| 五月综合婷婷久久在线| 99免费视频| 色狠狠999综合| 激情综合网五月激情| 在线观看免费人成视频无码| 男女99免费视频| 五月久久婷婷天堂视频| 中文字幕精品推荐免费在线观| 亚洲性天天| 91久久婷婷| 综合伊人久久| 婷婷香五月天| 狠狠爱五月婷婷综合六月| 情婷婷五月天在线| 欧美激情综合色综合啪啪五月| 第四色网婷婷| 五月婷婷免费在线观看视频| 婷婷五月丁香图片人人操| 精品一二三区视频立| 国产亚洲色婷婷久久99精品91| 中文字幕无码成人电影| 色性五月天| 另类五月激情| 亚洲综合色丁香五月天| 极品少妇XXXX精品少妇偷拍| 亚洲国产精品成人免费一区久久久在线观看AAAA | 日日日日操| 丁香伍月婷电影全集| 婷婷五月天.com| 综合网色| 26UUU| 狠狠色狠狠操| 婷婷色激情网| 五月婷婷综合网| 久久精彩免费视频精彩免费视频| 99成人| 超碰猛烈的性猛交| 久婷五月| 99热免费精品| 97碰久久| 91九九| 五月天婷婷综合网| 婷婷五月天播| 成人做爰A片免费看视频| 草美女在线观看视频在线播放 | 激情综合网丁香| 五月激情六月宗合| 久久精品爱爱| 第九色区av天堂| 五月婷婷激情色情网| 久久综合久色欧美综合狠狠| 丁香婷婷色六月| 婷婷D区| 五月丁香六月婷婷操操操| 九月性爱网| 丰满熟女人妻一区二区三| 五月丁香最新| 97干在线观看视频| 99re这里只有精品99| 欧美久热| 婷婷六月伊人| ...婷婷五月综合不卡,国产在线手机 | 中文av网| 91视频精品99| 色五月婷婷网| 五月激情基地| 婷婷色情五月| 97色色色色色| 成人小说 五月天 婷婷| 北条麻妃伊人 | 99热免| xxxx久| 色色丁香| 丁香六月婷婷综合在线| 人人操插| 99精品在线观看| 这里只有精彩视| 五月天色色婷婷| 99网| 五月天激情啪啪| 五月99久久| 99热网站| 婷婷五月丁香在线视频| 成人片在线播放| 五月丁香婷婷成人网| 欧美色婷婷| 六月激情久久婷婷| Av在线资源| 99热在这里只有精品| 欧洲综合色| 99久久99视频| 国外亚洲成AV人片在线观看| 丁香五月天啪啪a日本| 欧美性二区| 1024成人免费看| 丁香五月久久| 五月停停丁香| 国产人妻操逼| 一区二区乱视频码| 在线综合网| 99A片| 广东99色在线| 丁香五月综合激情性爱| 成 人片 黄 色 大 片| 日亚二欧美| 六月丁香五月激情网| 久久综合五月天| 红桃91人妻爽人妻爽| 久久免片| 可以直接看的av| 一根材五月婷成人| 色情丁香五月婷婷精品| 99se丁香| 五月丁香六月激情综合| 99热精品在线观看| 这里只有免费的精品| 第四色婷婷日本| 欧美网站视频4399| 日本综合99| 天天综合精品| 91超级碰在线视频| 丁香五月婷婷色情综合| 五月丁香狠狠爱婷婷综合| 伊人久久婷| 超碰人人99| 人人操婷婷| 97在线观看| 丁香五月婷婷基地| 亚洲激情婷婷| 婷婷成人视频| 久久人妻在线| 五月亭亭激情综合| 久久婷婷五月天激情新地址| 色欲久久久久久综合网综合网| 久久综合五月天激情小说网站| 色五月在线观看| 日韩在线视频中文字幕| 婷婷五月激情五月激情| 激情综合另类| 6080av| 丁香五月天激情五月天激情五月天激情网| 五月99久久| 日本理论久久| 亚洲激情六月| 亚洲中文字幕在线电影| 婷婷婷婷婷婷婷婷婷婷丁香| 专区无日本视频高清8| 精品婷婷| 五月婷婷在线免费观看| 综合激情五月天| 超碰99资源站| 182TV大香蕉| 久色激情| 天天干天天拍| 狠狠99| 丁香五月综合激情性爱| 天堂久久性| 97香蕉久久超级碰碰高清版| 五月激情小说| 六月婷婷综合| 激情综合99| 婷婷色丁香五月| 97干在线视频| 久久久久er热| 99热啪啪| 国产成人精品亚洲线观看| 欧美人与性动交CCOO| 国产午夜精品一区二区三区四区| 五月婷在线| 亚洲色无码A片一区二区麻豆| 无人区码一码二码三码医生系列| 日本欧美成人片AAAA| 日韩色色色色| 日本波多野结衣视频| 精品一区二区三区三区| 人人操操| 超碰人人射| 欧美噜噜免费观看| 亚洲婷婷丁香五月亚洲| 26UUU精品一区二区Com| 婷婷丁香五月亚洲综合网在线视频观看| 黄页大全十八禁| 五月婷婷第四色| 日日干日日| 午夜一区| 麻豆AV一区二区三区| 丁香五月婷中字在线| 色级婷婷| 99热老网站| 日韩99色| 亚洲99热| 色欲久久综合| 伊人五月天| 婷婷五月丁香性爱| 五月天丁香久久| 日本妈妈乱| 日本激情综合| 99操久久| 欧美搡BBBBB摔BBBBB| 久久婷婷大香蕉| 国产精品人妻欲求不满| 六月丁香婷婷亚洲中文玖玖| 岛国AV网站| 超碰在线人妻| 久久婷婷九月国产精品| 先锋资源婷婷| 婷婷久久午夜网| 深爱五月网| 五月婷婷激情久久| 日本一级淫| 色九月婷婷丁香| 色天天久婷婷| 天天影院色| 五月天偷拍| 色婷婷情片| 99色色网站| 99热色精品| 中文字幕无码人妻少妇免费视频| wuyuedingxiang| www久| 啪啪六月婷婷| 亚洲六月婷婷| 激情五月婷婷她| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 五月天综合在线| 久热九九| 襙比视频| 99re热在线视频| 激情网 久久| 九月丁香婷婷综合| 我要射综合| 久久草大香蕉| 亚洲a片免费观看| 秋霞三级影视资源| 婷婷五月天影院| 欧美情色一区| 色婷久久| 激情五月天婷婷五月天| 亚洲亚洲人成综合网络| 九九热99免费视频| 五月婷婷色情| 天天操天天操天天操天天操天天操 | 激情综合4月| 久久538| 激情5月婷婷| 免费九九热| 性综合网| 1024AV视频| 婷婷五月深深的爱| 婷婷中文在线| 激情婷婷综合网| 丁香五月天BBw| 色色五月天激情| 67194成I人在线观看线路1| 狠狠色综合网站久久久久| 欧美性猛交AAAA片黑人 | 色99网| 人人摸人人干| 国产亚洲成人综合| 丁香婷停五月激情综合深爱| 天天综合精品| 秋霞A V毛片| 51国精产品自偷自偷综合| 在线观看视频1区| 国产精品五月丁香| 99精品视频在线观看| 人人97碰| 亚洲av日韩无码| 日本97在线| 国产激情综合五月久久| 在线综合啪| 五月天色婷婷图片| 久久精品99国产精品日本| xxxx五月激情| 五月丁香六月成人| 99热综合| 噜噜噜噜婷婷五月天| 五月天丁香网| 婷婷五月香蕉| 秋霞AV淫| 大香蕉网站,大香蕉综合| 成人av在线网址| 国产激情在线| 狠狠爱激情网| 97干视频| 99久久性爱| 天天操夜夜夜夜爽| 无码免费人妻A片AAA毛片西瓜|