久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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)場(chǎng)出現(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 等級(jí)原因在于 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ù)中對(duì)應(yīng)的代價(jià)是什么。把這幾個(gè)問題算明白你自然知道什么場(chǎng)景用什么等級(jí)。2. QoS 0一發(fā)一收的裸奔模式到底省在哪QoS 0 是整個(gè)協(xié)議里最干脆的等級(jí)官方術(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 等級(jí)只占 2 bitQoS 0 對(duì)應(yīng)的值是 0所以 DUP 標(biāo)志位、RETAIN 標(biāo)志位的組合也相對(duì)簡(jiǎn)單。沒有 QoS 0 的消息沒有 Packet ID或者說 Packet ID 字段長度為 0這意味著從協(xié)議層面根本無法追蹤某一條消息是否被送達(dá)。2.2 省下來的開銷背后是什么QoS 0 最大的價(jià)值是極低的延遲和極小的帶寬占用。對(duì)于上報(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í)序拼接的場(chǎng)景下是合理的但在以下場(chǎng)景就危險(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 只放丟掉之后對(duì)業(yè)務(wù)無影響或影響可自然恢復(fù)的那一檔。這不是保守而是吃過虧之后的經(jīng)驗(yàn)。3. QoS 1多一來回買到的是至少一次的確定性QoS 1 全稱 At least once至少一次投遞。它的引入提供了消息到達(dá)確認(rèn)機(jī)制但同時(shí)也引入了重復(fù)消息的可能性。這個(gè)等級(jí)應(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è)甚至更多。對(duì)于每個(gè)匹配的訂閱端broker 向它轉(zhuǎn)發(fā)時(shí)同樣會(huì)進(jìn)行 QoS 1 的流程因此完整鏈路的報(bào)文量是 2 2N不考慮重發(fā)。3.2 重復(fù)消息為什么不可避免注意上面對(duì)話里第三步的時(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ā)訂閱端無法簡(jiǎn)單地通過 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í)間的方式來做離線消息緩存。比如控制指令場(chǎng)景設(shè)備可能離線一小段時(shí)間如果 cleanSessionfalse 且 session 未過期broker 會(huì)把 QoS 1 消息緩存在會(huì)話里等設(shè)備重連時(shí)再補(bǔ)發(fā)。這比直接用 QoS 2 便宜得多而且大部分業(yè)務(wù)對(duì)重復(fù)指令是可以容忍的——用冪等設(shè)計(jì)把重復(fù)消掉就好。所以 QoS 1 是可靠性和成本折中最均衡的等級(jí)也是我默認(rèn)的起步等級(jí)。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 為什么是兩階段提交而不是簡(jiǎn)單 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但是對(duì)外轉(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 從來不做跨訂閱端的全局去重它只做連接級(jí)的語義保證。更關(guān)鍵的是如果發(fā)布端和 broker 用 QoS 2但 broker 向某個(gè)訂閱端轉(zhuǎn)發(fā)時(shí)訂閱策略或會(huì)話配置把 QoS 降級(jí)了比如訂閱時(shí)請(qǐng)求 QoS 1或者 broker 對(duì) QoS 2 做了下鉆映射那么端到端的語義就不是恰好一次。所以當(dāng)你看到某個(gè)架構(gòu)說自己實(shí)現(xiàn)了端到端 exactly once一定要追問一句發(fā)布端到 broker 是什么等級(jí)broker 到訂閱端是什么等級(jí)兩個(gè)等級(jí)不一致的時(shí)候消息語義以更低的那個(gè)為準(zhǔn)。5. 三張表看懂 QoS 選型性價(jià)比才是第一原則把前三節(jié)的內(nèi)容壓縮一下QoS 等級(jí)的核心差異其實(shí)可以收斂成一張報(bào)文對(duì)照表、一張可靠性對(duì)照表、和一張選型決策表。我在實(shí)際評(píng)審方案時(shí)基本就是拿這三張表逐條過需求。5.1 報(bào)文量與開銷對(duì)照QoS等級(jí)最簡(jiǎn)報(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 典型場(chǎng)景決策參考以下選型建議來自我參與過的幾類真實(shí)項(xiàng)目不是教科書標(biāo)準(zhǔn)答案但大概率能幫你少走彎路業(yè)務(wù)場(chǎng)景消息特征推薦QoS理由傳感器高頻數(shù)據(jù)上報(bào)周期性、容忍少量丟失、量大QoS 0省帶寬、低延遲下游可以做插值或跳變檢測(cè)設(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é)議層保證恰好一次省掉大量對(duì)賬離線設(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 不要盲目升級(jí) 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)識(shí)這個(gè) Packet ID 了這時(shí)候會(huì)回復(fù)一個(gè) DISCONNECT 或直接當(dāng)作新消息處理。所以 QoS 2 并不等于消息絕對(duì)可達(dá)它只是盡最大努力保證在鏈路和會(huì)話正常的前提下不重不丟。一個(gè)真正可靠的系統(tǒng)還是要靠業(yè)務(wù)層的最終一致性設(shè)計(jì)和重試機(jī)制兜底而不是寄希望于單一協(xié)議等級(jí)。6. 實(shí)際工程里影響 QoS 選擇的隱藏因素我不說你很難注意到上面聊的都是協(xié)議本身的語義但在真實(shí)項(xiàng)目里QoS 最終表現(xiàn)還受一堆外部因素制約。這些因素在報(bào)文數(shù)量層面看不出差異一旦上線都是暗坑。6.1 cleanSession 與持久會(huì)話對(duì) 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 等級(jí)還有 cleanSession 配置。設(shè)備上報(bào)場(chǎng)景通常 cleanSessiontrue簡(jiǎn)單干脆但控制指令緩存、遺囑消息、狀態(tài)同步這些場(chǎng)景往往要開持久會(huì)話。我見過一個(gè)項(xiàng)目用了 QoS 2 但忘了關(guān) cleanSession結(jié)果設(shè)備一離線消息就丟排查了很久才發(fā)現(xiàn)是會(huì)話狀態(tài)沒保留。協(xié)議等級(jí)選得再高會(huì)話策略不對(duì)等于白搭。6.2 Broker 實(shí)現(xiàn)差異同一 QoS不同表現(xiàn)不同 broker 內(nèi)部實(shí)現(xiàn)方式差別很大直接體現(xiàn)在 QoS 處理路徑上。輕量級(jí) broker 可能把所有消息都放在內(nèi)存里投遞完就刪企業(yè)級(jí) broker 會(huì)對(duì)消息做持久化甚至在 QoS 2 轉(zhuǎn)發(fā)之前寫入消息存儲(chǔ)。如果你的 QoS 2 消息數(shù)量很大broker 的磁盤 IO 就是新的瓶頸。我實(shí)測(cè)過同一組 QoS 2 消息在嵌入式 broker 和企業(yè)級(jí) broker 上的表現(xiàn)吞吐可以差一個(gè)數(shù)量級(jí)原因就是后者多了持久化步驟。另外某些 broker 為了性能會(huì)在轉(zhuǎn)發(fā)時(shí)做 QoS 降級(jí)。比如發(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á)對(duì)端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í)器。所以做測(cè)試時(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ò)對(duì)象。6.4 消息體大小對(duì) 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í)比如固件升級(jí)包分片QoS 1 和 QoS 2 的額外開銷占比反而小當(dāng)消息體很小時(shí)比如開關(guān)狀態(tài)就幾個(gè)字節(jié)QoS 2 的控制報(bào)文開銷占比可能超過 100%。這也是為什么大量小報(bào)文的遙測(cè)場(chǎng)景要堅(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 起步再按需降級(jí)或升級(jí)。不要在項(xiàng)目啟動(dòng)會(huì)上拍腦袋定 QoS而是先按消息分類梳理出丟得起 / 丟不起但可重復(fù) / 絕不能重復(fù)三類每一類對(duì)應(yīng) QoS 0、QoS 1 冪等、QoS 2。這套方法我用在十幾個(gè)項(xiàng)目里都穩(wěn)。第二消息體里一定要帶業(yè)務(wù) ID即使你已經(jīng)用了 QoS 2。因?yàn)榭?broker 橋接、版本升級(jí)遷移、以及訂閱端做多副本消費(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 處理能力存在瓶頸。第四做壓測(cè)時(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)行疊加離線永久緩存。離線緩存場(chǎ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è)選擇的收益兩者對(duì)齊答案自然就出來了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
奇米狠999| 日韩9999| 欧美日韩免费性爱| 精品97久久| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 影音先锋国产精品| 亚洲最新av无码成人精品区| 日日干天天干夜夜爽| 青操影院| 久操影视| 加勒比综合九九99视频在线播放| 99热在线观看| 天天色播亚洲综合网站| 天堂种子在线www网资源| 国产中文字幕在线点播| 国内精品a| 免费在线看黄片av| 亚洲学生妹高清av| 欧美一级黄色18片免费看| 久久婷婷电影网| 9美女超碰在线免费观看| 夜夜青青无码影院| 欧美黑人168页欧美黑人167| 日本新免费二区三区| 日本曲间由美性生活片| 熟女精品一区二区三区| 欧美 日韩 另类 亚洲| 久久精品免费| 男女91| 91九九九馒头| 一级黄碟在线观看| 五月开心久久AV官网| 欧美激情视频一区二区三区不卡| 99爱久久视频频| 超碰国产情侣自拍网| 91色碰| 69精品少妇一区二区三区蜜桃| 色官网在线| 人人操人人大香蕉| 久99久视频| 久久9视频| 成人夜夜爽| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 97在线免费视频| AV女资源| 92一区二区| 人人爱人人乐人人操| 久久精品一区二区三区四区五区| 亚洲成人黄色在线观看| 日韩av一级黄片| 免费观看啪视频| 午夜一区| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 伊人久久亚洲色欲综合网站 | 天美av在线观看| 精品免费一区二区三区在线亚洲人成| 老熟妇一区二区三区啪啪| 校园春色综合香蕉| 国产不卡免费在线视频| 在线只有精品| 狠狠操一区二区| 素人无码中文字幕| 91免费看中出视频| 国产强奸乱伦欧美| α√在线| 国产天天骚| 欧美日本天堂| 白嫩少妇| 久久久久国产一区二| 精品久久99| 九九久久首页| 四虎影视 亚洲无码| 亚洲春色一区二区三区| 免费黄色片子| 久久香蕉超碰97国产精品| 人人妻人人色一区二区三区| 成人国产视频在线观看| 亚洲成熟国产精品美女| 久操B网| www被窝色com| 无码不卡亚洲成?人片| 亚洲小电影免费涩涩成人在线高清 | 成人综合色网| 久久久无码精品人妻二区| 另类图片欧美激情综合| 五月婷婷综合网| 人人搡人人肉久久精品| 日本成人免费一区二区三区| 狂操嫩妻视频一区二区三区| 青青草影视蜜久久| 91人妻做a观看视频| 激情六月婷婷| 玖玖爱视频网站| 国产精品亚洲高清在线| 夜夜操老骚逼视频网站| 神马久久久久| 最新加勒比丝袜在线| 欧美桃色网| 为用户提供免费看黄网址在线观看| 色色婷婷五月天| 久久爽爽精品| 亚洲春色一区二区三区| 中文字幕视频在线观看一区二区| 玖玖无码超碰| 丁香五月激情综合| 亚洲情色 自拍| 男人的天堂在线| 绯色一区二区三区不卡少妇| 98一区二区精品| 99视频自拍区| 一区二区娱乐网站| 破处bbq| 91精品微拍福利| 亚洲日韩肥臀视频在线观看| 亚洲久9| 欧美专区第一页| 999999精品| 久久伊人大香蕉| 欧美三四五区| 九九九九九九亚洲| 亚洲高清无毛一区二区| 91久久久久久久| 95自拍视频在线观看| 97大色网| 国语av最新自产拍在线观看| 中文字幕精品亚洲熟女| 天天综合网站| ,成人免费啪啪视频| 色狠狠综合噜一二三区| 顶级丝袜熟女一区二区三区| 超碰社区97| 爱我干综合| 这里只有精品97| 欧美色五月| 伊人网高清| 97硬碰| 插穴性爱视频在线观看| 免费国产视频| 蜜臀人妻少妇久久在线观看| 欧美日日操| 大香蕉男人的天堂| 免费看黄视频亚洲网站| 婷婷丁香五月激情啪啪| 另类小说综合网| 色月天AV导航| 亚洲在线a| 超碰av在线| 另类老少妇| 在线观看黄色电话| 丁香7月婷婷| 伊人五月天激情| 是还免费视频1727我| 欧美日韩日产免费网站看| 欧美天天谢综合网| 精品国产一区二区三区在线播出| 亚洲蜜臀懂色| 逼操网站| 亚洲色图大香| 精品国产乱码久久久兰草影视| 96久久久| 偷拍欧美激情| 久久久久国产精品人妻aⅴ天堂| 九九九九一级| 久久精品高清无码一区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 九九九九九九精品| 囯产操逼片| 熟女乱伦A| 怡红院网站在线视频| 强奸a片网| 亚洲超碰97| 亚洲美女 晚间男人天堂| 无套内射人妻在线播放| 人人操人人操人妻人| 国产不卡片| 夜夜影视四色| 日韩精品中文字幕人妻| 加勒比海成人视频网| 日本欧美国内在线| 五码视频在线观看| 精品人妻丰满熟妇一区二区三| 人人人人人人少妇| 日韩人妻 中文字幕| 97超碰人妻| 久热这里| 秋霞鲁丝午夜无码一区二区三| 极品极品色影院| 一线黄色免费性爱片| 天天久久| 麻豆天美在线| 欧美色图自拍| 超碰97在线中文| 另类av天堂| 日本一二区免费| www.91色综合| 亚洲日本韩国在线| 破苞ⅩXXX性无码动漫无码| 亚洲电影中字一区二区| 久久亚洲婷婷| 久草在线| 欧美的精品的视频| 中文字幕精品三级久久久| 国产三级中文有码在线视频| 亚洲另类色综合网站| 欧美v日韩v亚洲v最新在线| 最新日韩黄片| 色天天野狼综合社区| 国产Aα| 超碰日本97美女人妻人人玩人人爱| 国产树林里野战在线看| 国产九九九九九九九九| 色久桃花影院在线观看| 国产综合网站在线播放 | 91性高潮久久久久久久久| 3P乱轮视频| 家庭乱伦性爱av| 人妻中文字幕日韩电影| 妺妺跟我一起洗澡没忍住| 午夜寂寞欧美| 色婷婷激情| 你操综合| 国产成自自拍在线观看| 国产精彩女在线观看视频| 九九av| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 国产又大又硬又长又粗| 亚洲无码99| 日韩一级二级| 欧美内射少妇| 91国内外在线| 东京热毛片177b2viP| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 亚州中文字幕超碰97| www.91欧美| 久久久久极品| 97香蕉网| 一级久久性爱视频| 欧美超碰9798| 日韩精品9区| 人妻少妇无码 | 色色五月丁香| 伊人色综合超碰| 亚洲日韩久久精品一区| 绯色一区二区三区不卡少妇 | h色99999| 亚洲欧美综合| 日韩欧美一级特黄大片| 日韩精品三区四区| 日韩色图 一区二区| 不卡在线观看视频| 中文字幕一区二区三区高清| 国产欧美一区激情交| 中文字幕丝袜美腿| 亚洲激情深爱文学小说网站| 欧美色www亚洲国产阿娇要播| 日韩乱中文| 亚洲色色色| 人妻酒店出差被中出免费在线播放| 我想要啊 啊 啊| 黑人娇小av在线播放| 午夜偷拍久久熟女| 97超碰在线资源网站| 欧美亚洲系列| 在线中文字幕极品av| 97色五月天完| 性欧美999| 久久东京伊人一本到鬼色| 人人天天欧洲| 97伊人超碰| 日本操色导航| 久久超碰大香蕉| 97视频在线看| 97超碰美国| 国产精品白丝AV| 三级色综合| 人妻美腿丝袜制服诱惑综合天堂-| 亚洲综合 欧美| 一级人妻性爱视频| 日韩欧美成人大香蕉| 色色97爱| 久久综合99| 超碰97人人乐| 久久久免费一级黄片| 欧美中文狠| 国产强奸乱伦无码视频| 黑人中出21连凳花野真衣| 超碰在线一区二区| 亚洲欧美一区二区三区在钱蜜桃 | 成人网站 免费观看| 九一精品牛牛一区二区| 交换娇妻呻吟声不停中文字幕| 国产av尤物| 97AV在线观看| 日本三级小说中文字幕| 91在线欧美| 成人资源中文字幕在线观看天天| 天天综合网在线观看| 五月丁香六月婷| 三四中文字幕| 日韩天堂av电影在线观看| yiqicaoav| 久久9精品视频| 女性喷水高潮在线观看| 日韩啪啪啪视频| 中文字幕一区二区免费在线| 亚洲一二三| 精品亚洲黄色片 国产精品导航一区二区| 97色诱| 成人无码电影在线观看网| 最新av在线| 人妻中文字幕日韩电影| 精品91| 中文字幕十五区| 国产大学生口爆吞精合集| 天天干夜夜肏| 可以免费观看的av| 日韩黄色av中文字幕| 超碰欧美在线欧美| 五月天色图| 91精品国产一区三一| 九九久久久久久爱| 八人操人人摸人人看| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 东京热男人的天堂精品| JuliaAnnXXX888| 尤物av网站| 中文字幕乱在线伦视频中文字幕乱码在线| 精品无av| 98超碰日本| 九九热最新| 国产第12页| 亚洲做性| 日日夜夜国产综合| 亚洲高清无码免费观看视频| 欧美人与动性人交a| 大香蕉综合久久| 久久这里只精品99re66图| 亚州综合网| 国桃视频产巨乳精品一区二区在线| www成人啪啪18秘 免费| 肏逼视频日本| 国产91 丝袜在线播放00-百度| 红桃视频高潮| 99碰碰| 欧美黄色片在线播放| 青青草一区二区高清无码视频| 男人的天堂2018.| 日本精品第一视频在'| 在线播放成人高清免费视频| 熟妇人妻精品一区二区| yy少妇精品久久| 伊人综合色网| baisiav| 欧美亚洲日本激情在线| 日韩欧美操逼xxx| 亚洲天天操| 亚洲 欧美 综合 91| 日韩二级| 亚洲国产综合久久天堂| 色婷婷影院| 色噜噜精品一区二区三| 国产高清吃奶免费视频网站| 青青操视频在线| 99啪啪视频| 夜夜爽33333| 婷婷中文网| 久久黄色性爱视频| 亚洲密乳AV| 亚洲爽图| 人人人干干人人干| 九九碰九九爱97超碰| 超碰色97| 我要色综合网| 日本一道在线播放高清| 综合网91| 99这里只有精品国产| 69视频入口| 亚州综合网| 99国产女人| 久久久涩| 色97干| 熟妇女伦乱视频| 欧美综合中文| 少妇久久久久| 久久草草亚洲蜜桃臀| 超碰97色| 国产一级特黄大片处女| 性在久久久久久| 欧美一区二区三区蜜桃| 熟女视频久久| 97九色人妻| 国产超碰国产97| 校园春色制服丝袜中文字亚洲| 人妻少妇一区二区| 人妻久热在线| 久久伦理视频久久大香蕉视频| 蜜桃视频一区二区三区| 视频在线97| 啊啊啊爽爽| 久久精品熟女亚洲AV麻豆软件| 91黑丝在线| 久久久精品91八戒| 操比国产| 婷婷成人久久久精品| 性欧美天天| 桃色人妻在线视频| 精品人妻一区二区三区免费视频| 啊啊啊啊网站| 鸡巴插逼视频| www.yw尤物| 99re这里只有精品3| 高潮嗯啊性感美女久久久| 青青欧洲黑| 骚日日av| 成人蜜乳小视频网站| 91精品久久久久五月天精品| 国产激情片在线观看| 性色一线| 天天拍天| 99999精品| 18啪啪手机免费性爱| 女同性恋久久| 少妇天堂网络| 神马久久久久久伦理片| 久久性爱城| 日韩人妻操B| 精国久久一区二区三区98| 后入合集| 草草影院最新网址| 青青欧美在线| 一级免费精品| 久久久久久久久久久免费精品| 妺妺跟我一起洗澡没忍住| 中文字幕国产精品1区| 亚洲精品蜜桃久久久久久久| 麻豆亚洲AV成人无码久久精品| 国产视频一区二区三区在线免费观看| 五月婷婷久久综合| 天天色怡春院| 国内毛片热久久思思热| 色五月亚洲| 91影视亚洲| 大二网站亚洲| 欧美专区在线| 97色综合中文网| 精品一啪| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 国产v片在线免费观看| 啊视频在线| 久九9精品| 欧美91视频| 国产13区| 97精品一区二区视频| 一区二区 韩日AV| 天天干1区2区在线| 成年人黄色小视频网站| 九X超碰| 2023天天操夜夜操| 91原创在线观看| 校园春色亚洲色图| 91亚洲人电影| 野狼福利社区| 精品国产嫩穴视频| 欧美色宗合| 精品久久視頻在线| 97爱综合| 久操B网| 中文字幕精品探花视频| 久久9 9 9精品| 麻豆国产97在线| 欧美日韩淫加| 三级特黄60分钟播放| 97亚洲欧美日韩| 男人的天堂午夜av| 96久久久精品| 婷婷色播婷婷| 搡老女人老91妇女老熟女| 99热99re超碰精品| 中文字幕日韩专区精品系列 | 蜜桃久久一区| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 伊人影院日本| 99色日| 久久夜黄色无码A级大片| 热久久国产| 国产无码三级视频在线观看| 天天影视91看看| 久久日韩毛| 免费的很黄很污的全部视频| 少妇精品久久| 精品.99999| 曰本91情色| 一区二区三区黄片免费观看| 97鸡把在线视频| 久久9 9 9精品| 久久精品午夜国产亚洲AV无码| 97免费免费视频网| 人妻99p| 97色综合中文网| 伊人色综合超碰| 在线无码网站| 91黄站| 亚洲五区熟女| 婷婷AV一区二区三区| 天天噜| 国产九区| 亚洲图片 91| 久操凹凸视频| 国产99999| 亚洲天天影视综合网| 国产做?爰片久久毛片?片美国| 男人天堂欧美| 欧美日韩亚洲国产中文永久天天看| 依人大香蕉| 天天色天天干天天爱| 天天夜夜rb| 九草在线大香蕉| 伊人AAA| 亚洲第一黄色av网站| 九久精品| 91久久国产精品| 超碰97玖玖爱| 久操高青| 婷婷五月天丁香| 少妇一级无码精品| 天操天操夜操夜月操月年年操操| 一本正道久久熟女| 91黑丝露脚| 国产精品成人蜜臀AV在线| 久久久久亚洲Av无码专区老牛影视 | 97欧美日韩中文| 亚洲 欧美 中文 日韩超碰| 丰满少妇乱子伦精品无| 欧美大香蕉久| 91内射| 久久大香蕉97| 亚洲素人综合| 国产乱青青草久久| 情色五月天网| 亚洲精品国产av天美传媒| AV色天香在线| 亚洲人成色9999精品久久| 久久久中文| 人人考人人摸人人干| 蜜乳AV一区| 欧美黄色大片在线观看 | 少妇无码太爽| 人妻精品综合中文字幕在线| 中文字幕老熟妇黄色视频| 成人午夜视频免费播放| 亚洲无码AV九九九| 囯产乱伦一区二区三女 | 天天躁夜夜躁狠狠躁AV| 加勒比性爱成人在线| 亚洲999综合| 国产妇女精品视频青青草| 国产天美传媒精品| 久久99草| 九热超碰| 美女黄色91| 欧亚 另类 久| 国产精品福利视频| 人妻三级在线中文字幕| 色哟哟AⅤ| 在线有码中文字幕| 久久久久久国产无码精品| 亚洲成a人片在线观看中文!!!| 99热99在线播放激情| 亚洲av影院在线观看| 综合欧美日韩在线观看| 欧美美女后入| 亚欧操逼片在线观看 | 一本色道综合久久欧美| 久久久久免费看少妇A片特黄| 吖在线不卡一区二区国产剧情| 人人操我人人干| 国产精品呦一区二区三区| 国产美女高潮叫床视频| 一起草AV| 操人妻逼91| 九九九九免费视频| 成人青青草原伊人| 亚洲无码电影久久久| 成人a级高清视频在线观看| 夜夜影视四色| 91亚州日韩高清| 夜夜久久| 免费视频观看60秒| 性色AV蜜色av色欲av| 国产人伦a片信息免费片| www.色操逼| 精品熟女一区=区三区| 伊人991| 91高清欧美| 思思热在线视频免费| 男人a天堂手机在线版| 狠狠久久亚洲欧美专区| 亚洲Av噜噜一区二区三区妖精| 国产精品禁久久久精品| 久久这里只精品免费福利| 日本五十路熟女一区二区| 久久国产视频性吧 | 亚洲日韩电影| 天天视频综合在线观看视频| 江都AV在线| 中文字幕色AV| 性爱乱伦视频免费| 国产女人高潮视频| 十八禁电影伊人网| 我要去看2个日本美女.com曹逼| 亚洲第一无码播放立川理惠| 亚洲AV资源| 亚春色色| 亚洲欧美在线观看2021 | 国产日韩区| 亚洲91极品| 欧美色图片欧美色图| 1000部熟女视频在线观看| 99在线精品观看99| 天美麻豆黄色录像| 天天看天天在线精品| 97精彩视频网站| 极品人妻少妇综合| 日本操BAV| 又摸又舔在线观看网站| 日本阿v天堂在线观看| 91粉嫩萝控精品福利网站_精品影音先锋国 | 六月天婷婷| 骚人妻少妇视频| 青草草免费网站av| 欧美天堂日韩三级国产传媒| 色香欲影| 国模一区二区三区| 国产91 丝袜在线播放| www.色操逼| 韩国毛片一区二区三区| 亚洲成a人片在线观看中文!!!| 天天日天天射天天干| 中文字幕一区二区视频在线观看| 六月婷婷综合| 久久久日本电影| 色99在线| 亚洲天堂一区| 蜜桃传媒一区二区亚洲| 日韩性爱一级片| ,国产乱人伦精品一区二区三区| 69精品| 色999人与兽| 无码精品久久久久久亚洲| 十八禁网站在线| 人人搞人人插人人操| 一区久久久二区| 精品日韩人妻精品一二三区| 校园春色综合色| 最新国内自拍av免费| 国产白领连续中出在线播放| 99国产在线 精品 视频| 亚洲污污网站| 色官网在线| 亚洲中文字幕av| 亚洲男人bt天堂| 久久狠狠色噜噜狠狠狠狠97| av午夜玫瑰| 乳欲人妻办公室奶水| 久草老司机| 99色视频| 69av一区二区三区| 97精品在线| 国产毛片精品一区二区色欲黄A片| 久久久久久久| 大香蕉伊人在线成人AV在线观看| 欧美日韩在线国产在线| 26uuu性| 另类专区加勒比| 色色色欧美| 97超碰磁| 亚洲欧美变态| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 淫荡网址| 嫩草影院永久在线制服丝袜| 激情看片网站| 夜夜草我| 国产深喉| 1区2区3区中文字幕日韩| 免费中文在线| 99婷婷一区二区| 久热99999| 麻豆视频test| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 2026国产精品视频| 91无码中出人妻视频| 色黄污美女啪啪啪免费网站| 久久精品六区| 黑人天8A∨高清网站| 国内精品伊人久久久久影院会| 精品午夜福利导航| 欧美综合传媒| 亚洲中文字幕乱码无码一区二区| 久久久久久AⅤ无码免费肉站 | 日日AV加勒比| 日韩三级一区 | 欧美精品不卡一二三四在线91| 亚洲色图久久成人| 免费a在线播放v| 亚洲人体视频在线观看| 大香蕉淫人| 蜜桃精品一区二区三区久在线| 99精品丰满人妻无| 久久久久婷婷| 国产综合永久精品日韩鬼片| 色吧5亚洲| 91久久婷婷| 97伦乱| 吉川爱美亚洲二区在线| 日韩丝袜人妻AV| 99综合网| 91精品国产麻豆国产自产在| 免费超碰97在线观看| 久久大黄片| 色麻豆AV| 校园春色之综合网| 丁香五月婷婷色| 曰韩av中文字幕专区| 岛国黄色短视频| 风月影院十八禁| 国产精品农村妇女| aV中文麻| 精品少妇一区二区| 人人九九精| 狠狠操狠狠燥| 日本最新1区2区3区| 免费看污网址| 蜜臀AV成人精品蜜臀| 高树玛利亚无码流出| 无码一区二区三区四区五区六区七区八区九区十区视频 | 亚洲乱色熟女一区| 91一区二区三区蜜桃| 亚洲国产成人精品久久久国产成人一区二区 | 在线岛| 免费观看国产小粉嫩喷水精品午| 欧美性爱18观看| 日韩精品色呦呦| 黄色片,com| 欧美不卡二区| 国产亚州高清国产拍精| a级理论午夜日本| 欧美顶级黄片AAAAA在线免费看| 性开放中文AV高清无码免费看| 国产一级操B视频| 亚洲黄色a级片| 色爱国产| 天美传媒国产原创中文字幕亚洲欧美另类 | 久久久久久亚洲Av无码精| 操b在线观看| 啪啪视频亚洲第一| 伊人黄色视频免费观看| 激情专区综合| 五月天色图影视| 真实高潮91| 天天日天天操VV| 久久免费99精品久久久久久| 亚洲黄片免费在线播放| AV不卡在线| 欧美成va视频网站| 91在线页| 精品亚州18| 久久激情视频| 一级性爱网| 国产精品一区午夜福利| 四虎影院成年人片| 欧美色偷拍 | 国产精品黑人一区二区三区| 精品国产一区二区三区香蕉欧美| 亚州AV无码国产精品| 四虎AV在线观看| 欧美成人综合| 黄色工厂这里只有精品| 精品人妻中文字幕高清| 国产69精品久久久久99尤物| 久久久激情| 91n美女视频| 好吊色一区| 蜜桃久久久久久久久久久久| 97在线日韩中文字幕| 国产午夜在线观看| 欧美性爱在线无码| 性色中出| 久夜操| 爽极品影院| 久久极品一区二区| 97超碰人操| 国产精品美女视频诱惑| 国产1769在线| 麻豆AV短剧| 日韩15p| 国产综合网站在线播放 | 精品区9| 中文字幕一区二区三四五区日日骚| 亚洲性高潮| 岛国毛片手机在线观看| 91蜜臀在线久久久久| Julia Annxxxxx| 少妇熟女1区2区3区| 久久XX| 夜夜爽爽夜夜精品视频| 可免费观看的av毛片中日美韩| 人人操人人叉人人插人人| 国产日韩精品一区二区三区| 亚欧操逼片在线观看| 国产黄色在线播放观看| 欧美78p| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 大香蕉2017| 国产日韩在线播放av| 一二三区在线| 小电影欧美91| 思思在线免费视频| 97超碰资源网| 超清福利精品视频在线| 亚洲av在线免费观看| 欧美 日韩第一性色| 性爱免费视频成人| 夜夜人妻爽| 日本欧美一区二区三区视频麻豆| 欧美少妇大量自拍视频在线观看| 2017天天操天天日| 无码精品一区二区三区潘金莲| 台湾大香蕉99热| 精品国产一区探花在线观看| 999在线电影香蕉| 97Ai亚洲| 另类图片五月| 97在线免费观看视频| 天天欧美欧美亚洲网| 国产日韩怡红院| 综合久久婷婷| 麻豆天美在线| 亚洲宅男天堂| 91性情| 欧美第一页性| 青娱乐淫乱1314| 大香蕉免| 亚洲色系另类精品国产| 色婷婷久久综合超碰| 思思热免费在线视频| 亚洲色丰满少妇高潮| 久久riav中文精品| 久久精品高清无码一区| 婷婷AV一区二区三区| 国内毛片四区| 亚洲最大91网| 白丝被操91| 中国熟女网站| 性做久久久久久免费观看软件| 欧美在线综合| 亚洲五月婷婷| 国产激情视频一区区三区| 嗯嗯啊啊啊好舒服| 国产品精品自在在线午夜免费| 亚洲欧美精品一区天堂久久| 欧美色97| 中文字幕精品人妻丝袜| 欧美激情 日韩精品| 人妻一区二区三区四区视频| 人人澡人人弄| 天天操夜夜操狠很操| 国产精品毛片| 偷拍欧美综合| 日本狂喷奶水在线播放212| 嗯嗯啊啊日韩精品| 男人的天堂不卡一区二区| 天天综合97| 中文字幕78| 日本久久精品| 超清福利精品视频在线| 97在线欧| 亚洲91色在线| 无码日韩网站| 强奸抽插av| 超碰97人人乐| 5252色欧美在线| 日韩性爱视频免费在线| 亚洲无线观看久久| 久久久久深夜无码| 无码人妻丰满熟妇奶水区毛片| 黄色欧美性爱视频| 欧美成人性爱视频在线播放| 欧美色道啊| 欧美美女在线高潮999| 欧美成人性爱视频大全| AV一起草在线| 91精品国产一区三一| 91精产一区二区三区| 理论久久婷婷网 8| 手机看av网站在线看| 中文字幕在线免费观看2| 日本五区不卡| 丝袜无码a片| 亚洲色吧网| 无码 有码 国产18p| 成人午夜高潮av猛片| 5252色欧美在线男人的天堂| 国产91精品久久久久久久网曝门| 国产免费永久精品无码| 小视频玖玖| a片在线播放| 人人妻人人玩人人澡人人爽| 热热色AV| 综合久久99亚洲人妻中文在线| 又黄又爽在线观看视频| 一区在线观看中文字幕| 国产Aα| 欧美区亚洲区偷拍区| 性色A∨91| 91模特在线观看| 久久九操在线观看| 亚州综合AⅤ| 久久久久一本一区二区青青蜜月| 中文字幕在线观看丝袜| 2018色综合天天操| 亚洲最大的综合性av| 欧美性爱91| 熟女这里只有精品6| 一区二区三区免费视频入口 | 久久久久久性爱片| 久久久爆乳翘臀一线天伦理视频| 国产综合操逼高清| 精品久久人妻成人网| 女人喷水视频在线观看| 久久av一级av少妇av高潮 | 97色爱| 色综合潮| 亚洲人妻熟妇三十三区| 国产综合久久久鬼色| 色爱综合网欧美| 欧美天堂日韩三级国产传媒| 亚洲综合888| 好吊色一区| 大香蕉在线视频重口味毛片在线| 亚州综合电影| 国产精品熟女九九九| 亚州综合AⅤ| 国产精品久久久九九九| 亚洲 另类 丝袜 自拍 动漫| ai欧美亚洲小说| 欧美人妻中出| 日本精品九九九| 久久噜噜噜精品国产亚洲综合| 日本五区不卡| 亚洲视频精选| 1769成人国产精品视频| 自拍偷拍第26| 精品亚洲黄色片 国产精品导航一区二区 | 精品人妻伦一二三区久久| 日本福利社| 欧美最婬乱婬爆婬性视频 | 加勒比综合a∨| 欧美后入式| 大香蕉中文在线| 天天影视色香欲综合网小说| 国产传媒午夜理伦精品| 亚洲AV操| 婷婷尹人大香蕉免费| 99爱久久视频频| 97网址97| 九久精品| 超碰无码加勒比| 9999免费精彩视频| 久久亚洲影院一区二区| 日本不卡二三区| 四虎884| 欧美成人免费在线观看| 中文字幕精品日韩中文字幕| 色人久久| 超碰激情808| 亚洲AV人人澡人人爱| 蜜臀久久99精品久久久久久无删减 | 亚洲一级性爱视频免费看| 看一级黄色视频| 中文字幕版| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 99无码精品| 香蕉久久精品| 国语精品av| 成人一级性爱| 欧美亚洲综合色| 国产精品久久久久久久久久久久久久久| 噜噜噜噜天天狠狠| 人妻一区二区三区视频 | 欧美性视频二区三区| 97欧美视频| 天天天天天天天天天天干美女| 熟女丰满人妻一区| 99精品丰满人妻无码| 久久伊人最新网址视频| 日本亚洲熟女视频| 色大师网站www永久网站视频| 色97欧美| 久操网视频| 蜜臀亚洲中文| 美女黄页网站| 欧美日韩国产中文精品字幕自在自线| 操九九九九九九| av影院十区| 在线A日本| 欧美亚洲20p| 美女啊啊啊啊啊啊| 婷婷中文网| 色九九九综合| 人人性爱视频免费| 天天综合网~69| 精品成人久久久人人亚洲| 懂色av色欲av蜜臀av| 用力操死我| 啊啊啊啊操死我| 久9热| 久久久久久久综合,国产| 三级AV入口| 亚洲少妇诱惑| 在线免费观看高清无码视频| 天天爽夜夜操| 欧美色图20P| 国产成人自拍视频在线| 98福利在线视频| 亚洲va有码在线天堂| 自拍二页| 极品综合| 99re95| 日韩在线地址一| 久久精品亚洲东京热色播| 欧美色宗合| 久操视频免费在线观看| 伊人操| 99热亚洲天堂| 人人看黄色视频| 97操97色| 看日韩黄片| 九九九久千久久激情蜜桃在线看 | 亚洲欧美在线观看2021| 免费99精品国产自在在线| 亚洲中文日韩欧美大香蕉视频| 亚洲无限观看| 日韩久久.一级黄色片| 久草热制服丝袜在线观看| 成人精品一区二区91毛片不卡| 精品一区二区三区四区女| 激情五月天插| 九九九精品色乱九九九| 日韩黄色一区二区三区| 久久是精品| 久久女婷| 97天堂| 色五月69夫妻| 国产精品亚洲一级av第二区| 91路www| 日韩中文字幕视频在线观看| 快播久久人人aV| www.夜夜| 无码不卡亚洲成?人片| 操逼内射干逼白丝91| www.av在线视频| 大香蕉日韩欧美| 亚洲综合小说另类图欧美视频激情小说色五月天 | 国产诱惑| 色99视频| 国产无码三级视频在线观看| 欧美 牲| 久草视频分类在线| 人人摸人人入| 动漫av中文| 九九AV| 国产精品亚洲色婷婷久久久| 龙兴卡官方查询| 五月天色综合| 自拍偷拍国产欧美日韩韩| 日本不卡一区二区三区| 丁香六月综合激情| 精品人妻1区| 少妇色欲综合网2| julia在线观看久久| 草草网站影院白丝内射| 久久啊啊| 综合av影片| 99视频内射三四| AV在线性爱| 欧美色97| 91l欧美在线| 91美女中出| 精品国产人成在线| 9999久久久| 免费99精品国产自在在线| 日韩乱码Av| 911粉嫩人妻| 免费看黄片现成| 欧美综合综合| 色综和网| 欧美嗯啊……在线观看视频免费| 岛国视频免费在线观看| 国产美女高潮| 97伊人超碰| 9999九九九久久久| 久久免费中文字幕在线观看| 亚洲色图欧美视频| 日韩成人精品| 国产精品天堂| 久热这里| 好爽免费视频,| 欧美大香蕉97| 久久一二三四五六七八九区区区| 夜间福利片1000无码| 欧亚洲精品有视频| 天天日B夜夜干B时时操B| 激情五月综合开心五月| 久热这里只有精品9| 久操视频免费观看| 69精品人人人人| 国产suv精品一区二区四| 久久久婷婷婷| 久久一级无码精品毛片6| 日本色色视频网站| 91精品国产91综合久久蜜臀| 亚洲 欧美 第一页 | 亚洲欧美在线观看2021| 亚洲AV无码翔田千里网站| 亚洲污污网站| 亚洲第一免费视频| 色婷婷日韩精品一区二区三区| 亚洲av夫妻操穴网| 色婷婷香蕉| 美女操逼福利视频| 国产女同视频在线播放| 中文字幕丰满子伦无码专区在线视频最新| 97资源站久久| 任我爽在线视频免费观看| 欧美日本天堂| 欧美白嫩女HD| 伊人丝袜美腿高跟在线观看高清| 少妇99成人麻豆| 日本天天吊| 欧美精品人妻视频| 久久亚洲影院一区二区| 在线黄页看毛片| 欧美日韩丝袜| 国产免费一区二区三区最新不卡| 婷色五月| 五月天婷婷综合网| 天天日夜夜爽| 免费夜夜爱黄色视频毛片| 99综合视频一体| 日韩AV片| 精品人妻1237| 一个人在线看的黄色电影网站| 精品人妻二区三区| AV高清一区| 青娱乐手机日韩在线视频| 蜜臀久久久| 999熟女精品| 久热精品在线| 国产一区二区在线播放| 亚洲色图欧美色图另类图片|