亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

以太網(wǎng)溫濕度采集的斷線重連與斷點續(xù)傳機(jī)制解析

以太網(wǎng)溫濕度采集的斷線重連與斷點續(xù)傳機(jī)制解析 先講一件真事。前年我負(fù)責(zé)一個藥品陰涼庫的溫濕度監(jiān)控改造采集器用的是帶以太網(wǎng)口的嵌入式設(shè)備上報頻率30秒一次。上線當(dāng)天一切正常結(jié)果第二天凌晨三點被值班電話吵醒——庫房溫濕度曲線從零點開始出現(xiàn)一整段空洞。排查到最后原因是庫房配電柜旁邊的一根網(wǎng)線被叉車壓斷設(shè)備斷線后又沒有重連和數(shù)據(jù)補(bǔ)傳邏輯網(wǎng)絡(luò)恢復(fù)后只能干瞪眼監(jiān)控大屏上永遠(yuǎn)是“離線”。這個項目之后我徹底想明白一件事以太網(wǎng)溫濕度采集通訊難點從來不在“讀取傳感器”和“把數(shù)據(jù)塞進(jìn)TCP包”而在網(wǎng)絡(luò)鏈路不可靠時如何保證數(shù)據(jù)不丟、鏈路自愈、歷史可補(bǔ)。本文要聊的是一套實際落地在溫濕度采集器上的通訊機(jī)制設(shè)計涵蓋多協(xié)議支持Modbus TCP、MQTT、HTTP、斷線重連狀態(tài)機(jī)、斷點續(xù)傳緩存與確認(rèn)機(jī)制以及現(xiàn)場踩過的那些文檔里不會寫的坑。適合正在做環(huán)境監(jiān)控采集器、IoT網(wǎng)關(guān)、工業(yè)數(shù)據(jù)上云的嵌入式或后端工程師參考。1. 溫濕度采集通訊的需求拆解為什么“低頻數(shù)據(jù)”反而最怕斷線1.1 數(shù)據(jù)的“低頻高價值”特性決定了通訊設(shè)計方向溫濕度數(shù)據(jù)和視頻流、高頻振動數(shù)據(jù)完全不同它的采集頻率通常很低短則1秒一條長則5分鐘一條。單條數(shù)據(jù)本身只有幾十字節(jié)一年滿打滿算也就幾百萬條算下來占用的帶寬和存儲幾乎可以忽略不計。但恰恰是這種低頻數(shù)據(jù)對“連續(xù)性”的要求高得嚇人。一個醫(yī)藥冷庫的溫度標(biāo)準(zhǔn)可能是2℃到8℃一旦溫度越界監(jiān)管要求你必須能證明“從什么時候開始越界、持續(xù)了多久”。如果中間斷了一小時數(shù)據(jù)審計人員根本不會認(rèn)可“這段時間大概率沒問題”這種解釋。數(shù)據(jù)缺失記錄缺失管理事故。所以溫濕度采集通訊系統(tǒng)的第一設(shè)計原則從來不是“把單條數(shù)據(jù)發(fā)出去”而是“保證端到端的數(shù)據(jù)最終連續(xù)、完整、可追溯”。這一點和常見的文件傳輸有本質(zhì)區(qū)別文件傳丟了可以重新傳整個文件但溫濕度數(shù)據(jù)如果斷了幾小時重新生成這幾小時的“假數(shù)據(jù)”根本不可能。唯一的辦法是在源頭把它緩存下來等待鏈路恢復(fù)后補(bǔ)傳。1.2 一條完整鏈路中哪些環(huán)節(jié)最容易斷一個典型的以太網(wǎng)溫濕度采集系統(tǒng)設(shè)備端到服務(wù)器之間隔著好幾層采集器自身的以太網(wǎng)PHY和協(xié)議棧現(xiàn)場的交換機(jī)或路由器跨網(wǎng)段時的防火墻和NAT設(shè)備服務(wù)器端的監(jiān)聽服務(wù)進(jìn)程每一層都可能出問題。我在多個現(xiàn)場踩到過這幾類典型的斷鏈交換機(jī)和設(shè)備之間自協(xié)商失敗網(wǎng)口指示燈亮著物理層顯示link up但設(shè)備收不到任何ARP響應(yīng)路由器NAT會話超時默認(rèn)空閑超時一般是300秒。設(shè)備保持TCP連接不發(fā)數(shù)據(jù)連接被靜默拆除設(shè)備端還以為自己在線服務(wù)器端服務(wù)重啟或部署更新舊連接沒有正常發(fā)FIN包設(shè)備端半開連接直到自己發(fā)數(shù)據(jù)收到RST才反應(yīng)過來供電不穩(wěn)導(dǎo)致采集器反復(fù)重啟尤其是現(xiàn)場用POE供電但交換機(jī)POE預(yù)算不足的情況這些斷鏈場景有一個共同特點它不是你關(guān)掉設(shè)備電源那種明確的“下線”而是鏈路狀態(tài)和設(shè)備本地狀態(tài)不一致。處理這種“半開連接”和“靜默失效”正是斷線重連機(jī)制要解決的問題。1.3 “重連”和“續(xù)傳”必須配套設(shè)計缺一個都白搭我最初接手這個項目時只想著加一個斷線重連。后來發(fā)現(xiàn)只加重連根本沒用。鏈路恢復(fù)后設(shè)備確實能重新連上服務(wù)器但它只會把“當(dāng)前這一條”數(shù)據(jù)發(fā)上去。斷線期間積累的數(shù)據(jù)全部留在本地如果不做續(xù)傳歷史空洞照樣存在。反過來如果只做續(xù)傳不做重連那緩存里的數(shù)據(jù)永遠(yuǎn)沒有機(jī)會傳出去。所以這兩者是一對閉環(huán)設(shè)計斷線重連負(fù)責(zé)“把通道重新建立起來”斷點續(xù)傳負(fù)責(zé)“把通道斷開期間欠下的數(shù)據(jù)補(bǔ)上去”。沒有續(xù)傳重連只是表面在線沒有重連續(xù)傳連觸發(fā)的機(jī)會都沒有。這套設(shè)計還有一個隱含要求斷線期間設(shè)備必須持續(xù)在本地采集并緩存數(shù)據(jù)而不是停下來等待。設(shè)備的本職是“采集”通訊只是“運(yùn)輸”。運(yùn)輸斷了采集不能斷。2. 多協(xié)議選型Modbus TCP、MQTT、HTTP不是排他關(guān)系2.1 為什么一個采集器要支持多協(xié)議有的工程師會問直接定一種協(xié)議不就行了為什么要做多協(xié)議答案在兩個場景里很清楚。第一個場景是存量設(shè)備集成。很多現(xiàn)場的PLC或者老式環(huán)境監(jiān)控主機(jī)只支持Modbus TCP你新上的溫濕度采集器如果不同時支持這個協(xié)議就只能另配協(xié)議轉(zhuǎn)換網(wǎng)關(guān)成本和故障點都增加。第二個場景是服務(wù)器端不固定。同一個采集器可能今天接的是客戶自己的SCADA系統(tǒng)明天被接到云端IoT平臺兩邊的協(xié)議棧完全不一樣。與其給每個項目都定制固件不如在設(shè)備端做一個可配置的協(xié)議層。這里要強(qiáng)調(diào)一個原則多協(xié)議指的是“同一份數(shù)據(jù)按配置選擇通道和格式”而不是每個協(xié)議維護(hù)一套獨立的數(shù)據(jù)邏輯。協(xié)議只是編碼和傳輸方式數(shù)據(jù)的來源、緩存、補(bǔ)傳邏輯必須統(tǒng)一。2.2 Modbus TCP兼容存量工業(yè)設(shè)備的最穩(wěn)選項Modbus TCP在工業(yè)場景里的地位不用多說結(jié)構(gòu)簡單報文是純粹的寄存器讀寫。溫濕度傳感器掛到Modbus TCP上通常就是把溫度和濕度映射到兩個保持寄存器比如溫度寄存器地址0x0001濕度0x0002單位精確到0.1。從通訊機(jī)制設(shè)計來看Modbus TCP有幾個特點需要注意它是一種“請求-響應(yīng)”協(xié)議服務(wù)器輪詢設(shè)備。設(shè)備端不能主動推數(shù)據(jù)只能等PLC或上位機(jī)來讀默認(rèn)端口502報文有MBAP頭功能碼數(shù)據(jù)CRC在TCP模式下是不需要的它沒有應(yīng)用層心跳機(jī)制連接斷開只能靠TCP本身去判斷這帶來一個設(shè)計上的麻煩如果采集器作為Modbus TCP的Server斷線重連邏輯幾乎沒法做因為主動發(fā)起連接的是對方。所以在多協(xié)議架構(gòu)里Modbus TCP更適合作為“被動服務(wù)”存在PLC周期性來讀寄存器我們保證寄存器的值永遠(yuǎn)是最新的同時把每次被讀走的記錄標(biāo)記為已同步。真正需要主動上報和斷點續(xù)傳的業(yè)務(wù)走M(jìn)QTT或HTTP通道。2.3 MQTT給云端平臺準(zhǔn)備的默認(rèn)通道MQTT是這批溫濕度采集器里我最推薦的上報協(xié)議主要原因有三個一是始終保持長連接但極其輕量。一條溫濕度數(shù)據(jù)轉(zhuǎn)成JSON后可能才100字節(jié)不到加上MQTT的固定頭開銷也就幾個字節(jié)非常適合小帶寬場景。二是QoS等級可以匹配不同的可靠性要求。QoS 0最多一次QoS 1至少一次QoS 2恰好一次。對溫濕度數(shù)據(jù)來說用QoS 1很合適允許重復(fù)但絕不能丟重復(fù)由服務(wù)器端去重即可。三是天然適合多個訂閱方。同一個溫濕度主題既可以給監(jiān)控平臺訂閱也可以給告警服務(wù)訂閱互不影響。不過MQTT有一個需要特別注意的點它自帶的心跳機(jī)制是PINGREQ/PINGRESP間隔由KeepAlive參數(shù)控制默認(rèn)可以設(shè)到60秒甚至更長。但實際網(wǎng)絡(luò)里NAT會話超時、交換機(jī)老化時間都可能比這個值短。我的建議是在公網(wǎng)或跨NAT場景下KeepAlive不要超過30秒如果用的是4G或者WiFi這類不穩(wěn)定鏈路甚至可以縮到15秒。代價只是每15秒多幾個字節(jié)的PING包完全值得。2.4 HTTP作為兜底通道簡單但別當(dāng)主力HTTP上報的好處是接入成本極低服務(wù)器端隨便寫個接口就能收。缺點是開銷相對較大而且HTTP是典型的請求-響應(yīng)模型設(shè)備要主動POST服務(wù)器沒法主動下發(fā)控制指令至少得用輪詢配合。在這個項目里我把HTTP設(shè)計成“兜底通道”觸發(fā)條件有兩個MQTT連續(xù)多次連接失敗確認(rèn)當(dāng)前網(wǎng)絡(luò)到MQTT broker不通設(shè)備檢測到服務(wù)器端HTTP接口可達(dá)但MQTT端口被運(yùn)營商或防火墻屏蔽這種場景在真實項目里遇到不止一次。某些客戶的網(wǎng)絡(luò)安全策略非常嚴(yán)格只放行了80/443端口其他端口一律不通。這時候MQTT走不了但HTTP還能用數(shù)據(jù)就不至于完全斷供。HTTP斷點續(xù)傳的實現(xiàn)也比較直白設(shè)備把緩存數(shù)據(jù)分批POST到服務(wù)器的補(bǔ)傳接口每批附帶起始序列號和結(jié)束序列號服務(wù)器返回ACK。這里要特別注意HTTP連接的復(fù)用如果一個一個POST每次都要重新建TCP連接效率太低最好是同一個連接內(nèi)連續(xù)上傳多批數(shù)據(jù)傳完一批再請求下一批。2.5 協(xié)議層之上的統(tǒng)一數(shù)據(jù)抽象多協(xié)議共存最怕的是各寫各的最后邏輯亂成一團(tuán)。我在設(shè)計時把所有協(xié)議收斂到同一個統(tǒng)一數(shù)據(jù)模型上設(shè)備ID全局唯一出廠寫入序列號單調(diào)遞增本地持久化是斷點續(xù)傳的游標(biāo)基礎(chǔ)采集時間設(shè)備本地時間戳單位秒溫度值、濕度值浮點采集質(zhì)量標(biāo)記正常/越界/傳感器異常不管是走M(jìn)QTT、HTTP還是Modbus寄存器的值底層都從這個統(tǒng)一模型取出。緩存和續(xù)傳也只針對這個模型操作和具體協(xié)議無關(guān)。這樣后期再加一個CoAP或者WebSocket完全不需要動緩存層的代碼。3. 斷線重連機(jī)制設(shè)計狀態(tài)機(jī)、心跳與退避策略3.1 重連的本質(zhì)是連接狀態(tài)機(jī)很多初學(xué)TCP編程的人會犯一個錯誤把重連邏輯做成一個while循環(huán)連不上就sleep一秒然后繼續(xù)連。這個寫法在線程里湊合能跑但一旦涉及連接狀態(tài)變化、數(shù)據(jù)緩存、補(bǔ)傳觸發(fā)這些聯(lián)動邏輯就會變得不可維護(hù)。正確做法是把連接生命周期抽象成一個狀態(tài)機(jī)至少包含四個狀態(tài)IDLE初始狀態(tài)當(dāng)前沒有任何連接CONNECTING正在嘗試建立連接CONNECTED連接已建立可以收發(fā)數(shù)據(jù)WAITING_RETRY連接失敗或斷開正在等待下一次重試狀態(tài)轉(zhuǎn)換的決策邏輯大致是IDLE收到啟動指令進(jìn)入CONNECTINGCONNECTING成功進(jìn)入CONNECTED同時復(fù)位連續(xù)失敗計數(shù)CONNECTED檢測到心跳超時或socket異常進(jìn)入WAITING_RETRYWAITING_RETRY的等待計時結(jié)束回到CONNECTINGCONNECTING失敗記錄失敗次數(shù)退出WAITING_RETRY狀態(tài)機(jī)的最大好處是每一個狀態(tài)下的行為都是確定的不會出現(xiàn)“明明斷開了還在發(fā)數(shù)據(jù)”這種尷尬。比如在WAITING_RETRY狀態(tài)下采集線程照常工作緩存照常寫入但發(fā)送線程必須掛起。數(shù)據(jù)緩存和連接狀態(tài)完全解耦。3.2 心跳機(jī)制TCP層的KeepAlive靠不住必須自己做應(yīng)用層心跳TCP有SO_KEEPALIVE選項默認(rèn)空閑2小時才發(fā)一個探測包而且探測失敗后還要等若干次才確認(rèn)連接死亡。對于溫濕度采集這種本來就低頻發(fā)送的場景SO_KEEPALIVE基本起不到及時斷鏈的作用。我采用的方案是應(yīng)用層心跳兩條消息設(shè)備→服務(wù)器PING每30秒一次服務(wù)器→設(shè)備PONG如果設(shè)備連續(xù)3個PING周期也就是90秒沒收到對應(yīng)的PONG就判定連接失效主動關(guān)閉socket并進(jìn)入WAITING_RETRY狀態(tài)。這里有個細(xì)節(jié)很容易踩坑PING和PONG都必須包含一個會話標(biāo)識或遞增序號用來匹配。否則一個遲到的PONG會被誤認(rèn)為是當(dāng)前連接的回應(yīng)導(dǎo)致狀態(tài)判斷混亂。我在實際項目里見過有同事用簡單的PING/PONG字符串結(jié)果服務(wù)器端重連后舊連接的PONG延遲到達(dá)設(shè)備把新連接的PONG和舊的對上號誤判連接正常。加一個32位遞增序號就徹底解決了。心跳周期怎么定我的經(jīng)驗是心跳間隔必須小于網(wǎng)絡(luò)鏈路中最短的空閑超時時間。如果不知道具體值按NAT默認(rèn)300秒的一半來選比較穩(wěn)也就是不超過150秒。再根據(jù)“連續(xù)失敗N次”來判斷一般N取2到3。所以30秒心跳、連續(xù)3次失敗90秒判死這個參數(shù)實測下來在公網(wǎng)和跨網(wǎng)段場景都足夠靈敏。3.3 指數(shù)退避加抖動別讓一堆設(shè)備同時撞車斷線重連最忌諱的是所有設(shè)備在同一個時刻瘋狂重試。如果現(xiàn)場有上百臺采集器同時掉電又同時來電如果用固定5秒重連恢復(fù)供電的瞬間網(wǎng)絡(luò)里全是重連風(fēng)暴交換機(jī)都可能被沖垮。正確做法是指數(shù)退避第1次失敗后等1秒第N次失敗后等2^N秒設(shè)置上限比如最長60秒加上隨機(jī)抖動實際等待時間在計算值基礎(chǔ)上乘以(0.8~1.2)舉個例子第1次失敗等1秒第2次等2秒第3次等4秒第4次等8秒第5次等16秒第6次等30秒之后封頂60秒。同時每次加20%以內(nèi)的隨機(jī)量。這個策略的效果單臺設(shè)備的恢復(fù)時間是秒級但上百臺設(shè)備不會集中在同一毫秒發(fā)起連接而是散布在幾十秒范圍內(nèi)。實測我們102臺設(shè)備同時斷電重啟后第一條MQTT連接在2秒內(nèi)建立最后一條在約90秒內(nèi)完成服務(wù)器負(fù)載完全可控。3.4 重連成功后的行為不只是把socket建起來重連成功容易讓人以為“萬事大吉”實際上重連成功后要做的事情比“建立socket”多得多發(fā)送一條上線通知攜帶設(shè)備當(dāng)前的狀態(tài)信息刷新會話向服務(wù)器端查詢最近一條已確認(rèn)的數(shù)據(jù)序列號用來確定續(xù)傳起點觸發(fā)斷點續(xù)傳把本地緩存里序列號大于服務(wù)器確認(rèn)點的數(shù)據(jù)按序補(bǔ)傳補(bǔ)傳完成后恢復(fù)實時數(shù)據(jù)的正常上報第二步特別重要。如果不查詢服務(wù)器端的已確認(rèn)序列號設(shè)備就只能盲目地把本地緩存全部倒上去既浪費(fèi)帶寬也可能重復(fù)傳大量服務(wù)器早就收到的數(shù)據(jù)。一個簡單的GetLatestAckedSeq請求就能讓續(xù)傳有的放矢。4. 斷點續(xù)傳機(jī)制從緩存設(shè)計到可靠確認(rèn)4.1 斷點續(xù)傳和“重新上傳”的本質(zhì)區(qū)別這里必須把概念掰清楚斷點續(xù)傳不是“把所有數(shù)據(jù)重新上傳一遍”?!爸匦律蟼鳌笔潜哭k法服務(wù)器反正要全量數(shù)據(jù)我不管三七二十一全部重發(fā)。這在數(shù)據(jù)量小時看著可行一旦斷線一天、每30秒一條數(shù)據(jù)就是2880條全部重發(fā)不僅浪費(fèi)帶寬還會和實時數(shù)據(jù)搶占連接造成“越補(bǔ)越亂”。真正的斷點續(xù)傳是精確到序列號的增量補(bǔ)傳設(shè)備端維護(hù)一個“最后推送游標(biāo)”服務(wù)器端維護(hù)一個“最后確認(rèn)游標(biāo)”兩者之差就是需要補(bǔ)傳的數(shù)據(jù)區(qū)間。服務(wù)器已經(jīng)確認(rèn)過的數(shù)據(jù)一條都不多傳沒確認(rèn)的一條都不少傳。這個設(shè)計在溫濕度場景里的效果非常明顯斷線2小時240條數(shù)據(jù)補(bǔ)傳時每個包壓縮后可能10KB就能搞定幾乎是瞬間完成。而且因為只補(bǔ)缺失區(qū)間實時數(shù)據(jù)的延遲幾乎不受影響。4.2 嵌入式設(shè)備上的緩存介質(zhì)選擇別一上來就上SQLite溫濕度采集器大多是MCU級別設(shè)備資源有限。緩存介質(zhì)的選擇直接影響續(xù)傳機(jī)制的復(fù)雜度。我按設(shè)備檔次給三種方案低端MCU無文件系統(tǒng)用Nor Flash或EEPROM按塊寫入原始二進(jìn)制數(shù)據(jù)。容量一般256KB到4MB每條約32字節(jié)可以存幾千到幾萬條中端設(shè)備帶SD卡或文件系統(tǒng)直接寫CSV或二進(jìn)制日志文件容量寬裕得多高端邊緣網(wǎng)關(guān)可以上嵌入式數(shù)據(jù)庫但老實說溫濕度數(shù)據(jù)用不上別把簡單問題復(fù)雜化我在這批采集器上選的是Nor Flash方案存儲結(jié)構(gòu)非常直接固定分塊每塊存一條完整記錄塊頭部寫序列號和寫入時間戳Flash剩余空間不足時最老的未確認(rèn)數(shù)據(jù)可以被覆寫同時告警通知服務(wù)器“緩存溢出”這里有個關(guān)鍵判斷要不要覆蓋舊數(shù)據(jù)我的選擇是“寧丟數(shù)據(jù)保證設(shè)備不死”。傳感器采集不能停緩存如果滿了還在繼續(xù)寫要么設(shè)備死機(jī)要么數(shù)據(jù)全毀。前者更不可接受。所以緩存滿了之后策略是覆蓋最老的未確認(rèn)數(shù)據(jù)并在下一次上線時把溢出區(qū)間標(biāo)記為“已丟失”讓服務(wù)器知道這段數(shù)據(jù)不完整比假裝沒有發(fā)生過強(qiáng)得多。4.3 數(shù)據(jù)幀格式讓斷點可以被精確定位斷點續(xù)傳的實現(xiàn)前提是每條數(shù)據(jù)都有一個可比較的游標(biāo)。我用的是“設(shè)備ID序列號”雙字段定位設(shè)備ID區(qū)分不同的采集器默認(rèn)32位整數(shù)序列號每條采集記錄一個全局單調(diào)遞增重啟不重置序列號有兩個作用一是排序二是去重。服務(wù)器端只要記錄每個設(shè)備ID下“最大已確認(rèn)序列號”就能計算出設(shè)備需要補(bǔ)傳的區(qū)間。一條補(bǔ)傳數(shù)據(jù)幀的格式大致是typedef struct { uint32_t device_id; uint32_t seq; uint32_t timestamp; int16_t temperature; // 單位 0.01℃ int16_t humidity; // 單位 0.01%RH uint16_t flags; // 質(zhì)量標(biāo)記 } sensor_record_t;字段全部定長好處是解析簡單、節(jié)省空間、也不需要JSON解析器占用MCU資源。服務(wù)器端解析后再轉(zhuǎn)換成JSON或數(shù)據(jù)庫記錄即可。4.4 續(xù)傳流程分批上送加ACK游標(biāo)更新別一次全發(fā)續(xù)傳最忌諱一次把幾千條數(shù)據(jù)全部塞進(jìn)一個TCP包或者一大串MQTT報文里。一旦中途斷鏈到底是哪些收到了、哪些沒收到又是一筆糊涂賬。我的做法是分批續(xù)傳每批最多100條每批發(fā)送完成后等待服務(wù)器返回ACKACK里帶上這一批的最大序列號設(shè)備收到ACK后把本地“最后已確認(rèn)序列號”更新到ACK值然后發(fā)送下一批所有批次都確認(rèn)后切回實時模式這個流程雖然保守但每一步都可恢復(fù)。比如傳完第3批、共300條后連接斷了服務(wù)器已確認(rèn)到seq300設(shè)備本地游標(biāo)也更新到300。重連后設(shè)備只問服務(wù)器確認(rèn)線服務(wù)器返回300然后從301繼續(xù)補(bǔ)傳。斷點續(xù)傳的“斷點”就是這么精確容錯粒度控制在100條以內(nèi)通常只有幾十條甚至幾條。4.5 冪等設(shè)計重復(fù)數(shù)據(jù)不可怕缺失數(shù)據(jù)才可怕實現(xiàn)續(xù)傳時為了避免“萬一ACK丟了設(shè)備重傳了已經(jīng)確認(rèn)的數(shù)據(jù)”這種情況服務(wù)器端的接收邏輯必須設(shè)計成冪等。也就是說同一序列號的數(shù)據(jù)傳兩次不會產(chǎn)生兩條記錄而是以第一次到達(dá)的為準(zhǔn)。具體做法是在數(shù)據(jù)庫表里給“設(shè)備ID序列號”建唯一索引重復(fù)插入時直接忽略或者做UPSERT。這樣設(shè)備的ACK丟失重傳也好、服務(wù)器端收到重復(fù)數(shù)據(jù)也好都不會污染數(shù)據(jù)。這個細(xì)節(jié)我在好幾個項目里都被坑過一開始沒做冪等后來發(fā)現(xiàn)服務(wù)器數(shù)據(jù)庫里同一秒出現(xiàn)了兩條溫度記錄而且數(shù)值還不一樣。排查半天發(fā)現(xiàn)是補(bǔ)傳和實時上報在時間窗口內(nèi)重疊了。做了冪等之后這類問題徹底消失。5. 現(xiàn)場最容易翻車的四個環(huán)節(jié)與排查記錄5.1 網(wǎng)線物理斷開時協(xié)議棧的真實表現(xiàn)讓人迷惑很多開發(fā)者在實驗室里用網(wǎng)線斷開測試發(fā)現(xiàn)設(shè)備在幾十毫秒內(nèi)就感知到了連接斷開。真實場景遠(yuǎn)沒有這么理想。在某個倉庫項目里網(wǎng)線被老鼠咬斷了一根芯物理層處于一個“半斷不斷”的詭異狀態(tài)指示燈偶爾亮偶爾滅設(shè)備有時能ping通網(wǎng)關(guān)但一到跨網(wǎng)段通信就丟包。我們的設(shè)備表現(xiàn)是TCP連接長期掛在ESTABLISHED狀態(tài)心跳偶爾能收到PONG但實際數(shù)據(jù)上報成功率只有30%。這種問題靠應(yīng)用層心跳不一定能快速識別因為間歇性通斷會“騙過”超時判斷。最后的排查方法是加了一個“連續(xù)N次數(shù)據(jù)包往返超時”的計數(shù)器。事件概況是如果連續(xù)5次任意類型的網(wǎng)絡(luò)交互PING、上報、ACK都失敗即使心跳沒超時也強(qiáng)制觸發(fā)重連流程。這個方法實測對半斷狀態(tài)很有效。5.2 緩存被寫穿斷線時間太長Flash先扛不住了按30秒一條、每條32字節(jié)算256KB的Flash大概能緩存2700多條也就是22小時左右。聽起來夠用但遇到下面這種情況就崩了某項目停電檢修設(shè)備恢復(fù)供電后運(yùn)維人員發(fā)現(xiàn)設(shè)備一直離線排查發(fā)現(xiàn)是斷線期間緩存滿了主控在Flash擦除和寫入之間反復(fù)循環(huán)導(dǎo)致系統(tǒng)看門狗超時設(shè)備反復(fù)重啟。后續(xù)我把緩存策略改成了“緩存滿后不再覆寫未確認(rèn)數(shù)據(jù)而是停止寫入并保留已有數(shù)據(jù)”。雖然會丟實時數(shù)據(jù)但至少保留了一部分歷史可用數(shù)據(jù)設(shè)備也能正常上線。這個場景的選擇取決于業(yè)務(wù)我傾向于保設(shè)備穩(wěn)定因為溫濕度數(shù)據(jù)本身重復(fù)采集成本很低但歷史數(shù)據(jù)丟了無法挽回。之后我又加了一個措施緩存用量超過80%時如果鏈路仍未恢復(fù)就降低采集頻率從30秒降到60秒極限情況下降到5分鐘。這樣盡量延長緩存的覆蓋時間換取更多的歷史數(shù)據(jù)。5.3 設(shè)備本地時間戳漂移補(bǔ)傳數(shù)據(jù)的時間軸可能錯位斷點續(xù)傳時每條數(shù)據(jù)都帶有設(shè)備本地時間戳。但嵌入式設(shè)備用的晶振便宜溫漂大加上沒有NTP同步跑幾天就可能差出幾分鐘。斷線期間如果一口氣補(bǔ)傳240條數(shù)據(jù)服務(wù)器端按時間戳排序會出現(xiàn)輕微的順序錯亂甚至和實時數(shù)據(jù)交錯。解決方案是服務(wù)器端對補(bǔ)傳數(shù)據(jù)做“時間軸重對齊”用設(shè)備的序列號作為主排序鍵時間戳只作為展示參考。同時在設(shè)備端加入NTP對時邏輯只要鏈路可用每天至少對時一次。對時成功后會修正本地時間但由于序列號是單調(diào)遞增的修正時間戳不會影響數(shù)據(jù)順序。這里我特別想強(qiáng)調(diào)序列號的一個重要優(yōu)勢它讓數(shù)據(jù)排序不再依賴時間戳等于自動免疫了時鐘漂移。這也是為什么我在設(shè)計數(shù)據(jù)幀時堅持把序列號放在時間戳之前的排序優(yōu)先級。5.4 斷電恢復(fù)后的“補(bǔ)傳風(fēng)暴”多臺設(shè)備同時搶線上報項目里102臺設(shè)備同時在線某次市電閃斷又恢復(fù)后幾乎同時涌進(jìn)來全量補(bǔ)傳請求。雖然每批100條、間隔時間不長但在幾十秒內(nèi)服務(wù)器的接收線程還是被打滿了數(shù)據(jù)庫寫入隊列一度積壓到幾萬條。解決辦法分兩頭設(shè)備端補(bǔ)傳時增加一個隨機(jī)的啟動延遲0~30秒避免大家同時涌進(jìn)來服務(wù)器端接收接口前加一層內(nèi)存隊列削峰填谷入庫改為批量寫入每次事務(wù)提交100~500條實測效果很理想補(bǔ)傳風(fēng)暴從幾十分鐘縮短到一兩分鐘服務(wù)器CPU峰值從85%降到35%。設(shè)備端的“隨機(jī)延遲補(bǔ)傳”是成本最低、收益最大的一個改動。6. 這套設(shè)計在真實項目里跑出來的數(shù)據(jù)項目最終交付時的關(guān)鍵指標(biāo)102臺以太網(wǎng)溫濕度采集器30秒上報周期Modbus TCP、MQTT、HTTP三通道按項目配置切換連續(xù)運(yùn)行3個月設(shè)備在線率從最初的96%提升到99.95%月掉線次數(shù)從30多次降到1~2次斷線2小時以內(nèi)的數(shù)據(jù)續(xù)傳完成率100%斷線24小時以內(nèi)完成率大于98%未完成部分主要是緩存溢出導(dǎo)致的數(shù)據(jù)丟失服務(wù)器端接入延遲從補(bǔ)傳風(fēng)暴高峰期的分鐘級恢復(fù)到秒級這些數(shù)字不能說驚艷但確實是在真實現(xiàn)場跑出來的比實驗室里好看的結(jié)果可靠得多。我在實際項目中最大的體會是以太網(wǎng)溫濕度采集的“技術(shù)難度”不高難的是把斷線重連、斷點續(xù)傳、多協(xié)議適配、緩存管理、冪等處理這些細(xì)節(jié)串成一個整體。每一個環(huán)節(jié)單獨看都很簡單但它們之間的狀態(tài)聯(lián)動才是真正容易出錯的地方。建議大家都用狀態(tài)機(jī)把邏輯先畫清楚再動手寫代碼能少走很多彎路。最后分享一個小技巧設(shè)計斷線重連機(jī)制時可以人為構(gòu)造“斷電重啟、網(wǎng)線抽拔、交換機(jī)重啟、服務(wù)器重啟、NAT超時”五種故障每種故障測試一遍。能把這五種故障全部跑通這套通訊機(jī)制在絕大多數(shù)現(xiàn)場就不會有太大問題了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香蕉一区二区在线观看.| 啊啊啊免费视频| 亚洲中文国际强奸字幕| 99少妇| 99热在线播放| 成人aⅴ一区二区三区| 97久久久久久久久久| 97精品国产97久久久久久| 伊人网青青| 国产乱码久久久久久| 国产在线视频二区| 91人妻人人澡人人爽人人精品| 国产性刺激| 亚洲无线码一区国产欧美国| 搡老女人老熟女91| 99超碰网| 免费看国产大AB| 在线观看一卡二卡| 国产成人在线观看综合| 精品国产Av无码久久久亚洲| 玖玖综合色| 日本精品一区三区| 新版天堂中文资源8在线| 91色香| 热久久无毒不卡| 中文字幕55555| 久久老子无码午夜伦不卡| 国产美女销魂在线观看不卡| av黄图片在线观看| 日本孕妇一区二区视频操逼免费看| 欧美日韩97在线| AV天天综合| 欧美性爱五月天| 精品毛片av一区二区| 亚洲天天操| 人妻少妇久久| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 欧美三级免费伊人| 乱日视频| 另类av综合久久| 91九久| 久久久精品国产亚洲AV无码| 激情综合婷婷| 99激情| 欧美中字二区| 色噜噜国产在线| 色色色网站| 国产兽交视频在线播放| 精品高潮| 26UUU欧美日本| 久久超碰av在线| 久久999久| 亚洲人在线| 婷色五月| 午夜天天碰综合视频| 这里只有精品视频在线| 久超碰在| 天天做天天爱天天爽AV| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 亚洲精品久久久久久| 久久久久久少妇| 日本免费一区二区不卡| 国产尤物在线三区| 夫妻天天操岛国视频| 欧美高清第一页| 91精品人| 国产av强奸美女| 秋霞无码av鲁丝片一区| 国内三级自拍小视频在线观看| 玖玖玖玖精品国产剧情| 天天插天天操| 美女啪欧美一区| 久久精9| 精品人妻视频一区二区在线播放| 另类老少妇| 91亚洲电影| 免费精品无码一级毛片牛牛影视 | 高清成年美女黄网站免费大全| 亚洲 在线| 欧美性爱第一页久久| 人干人人人操人人摸| 激情综合二| 操逼网站地址| 爱干爱射网啊啊啊| 亚洲天堂久久| 在线不卡视频| 黄骗免费| www熟女乱伦com| 青青草好吊| 都市激情人妻一区二区青青操视频 | 五月天黄色激情视频| 桃花色综合影院| 天天拍夜夜| 久久伦理视频久久大香蕉视频| 偷拍亚洲高清图片| 九九性视频| 大香蕉黄色一区| 精品超碰中文在线| 中文字幕精品专区搜索结果91| 97精品97久久| 超碰偷拍| 免费试看60秒| 亚洲国产成人精品无码专区| 五月天开心网| 91爱看| 国产97综合| 大香蕉日韩| 国产精品成人无码av无码免费| 乱精品一区字幕二区| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 人妻夜夜爽天天爽三区麻豆AV网站| WWW.操逼.COM| 国产高潮AA片免费看| 婷婷丁香六月| 黑人天8A∨高清网站| 韩日自拍| 成人八戒网站| 欧美A√综合网| 久久久久久久六六| 少妇一区二区三区| 青青11操操操操操操操操| 久久大香蕉97| 超碰人妻在线| 无码人妻一区二区三区四区老鸭窝| 不卡中文字幕aⅴ在线| 99热在线播放| 校园激情狠狠四射| 激情婷婷丁香| 9美女超碰在线免费观看| 美日韩男女操屄视频| 久久亚洲色图中文字幕| 午夜福利精品| 欧美中日韩XXXX| 久99久视频| 偷拍亚洲情色| 国产亚洲精品美女久久久m| 日韩78m视频| 少妇厨房愉情理伦片bd在线观看| 人人操人人射人人干| 欧美一级美片在线观看免费| 97久久国产亚洲精品超碰热| xxx亚洲午夜天堂| 在线中文AV| 免费A V在线| 诱惑网综合| 性性久久| 中文字幕一区二区三区蜜臀| 日本免费一级AAA大片器| 天天看特黄的免费网站| 婷婷五月天伊人| 中文字幕在线观看永久| 九热中文字幕| 91麻豆天美国产欧美高潮| 亚洲永久AV无码精品秋霞| 9久久精品| 1024人妻熟女一区二区三区| 免费家庭乱伦视频| 91人妻在线视频| 怡红院亚洲怡春院av| 五月天伊人网| 日韩欧美女求操每天更新| 日韩精品三区四区| 一二三区在线| 男人天堂久久精品| 九九无码久久精品视频| 伊人五月天青青草婷婷| 中文字幕91综合| 国产精品熟女乱伦| 在线啊v一区| 91三级理论片播放器| 狠狠操狠狠插| 俺去俺来也在线www| 人妻少妇被猛烈进入中| 国产成人网| 国产原创自拍| 久久大陆| 中文字幕精品三级久久久| 9999亚洲精品| 国产日韩美女小穴视频网站不卡| 久久精品国产97欧美精品亚洲 | 欧美在线 亚洲| 97视频在线免费| 中文字幕78| 330dv亚洲成年视频网| 欧美美女在线高潮999| 天天综合精品| 中文字幕AV片| 97精| 亚洲黄色影视| 激情人妻另类| 欧美色欧美| 91视频精品| 欧美日韩一区二区三区四区蜜桃| 嗯啊不要在线观看嗯啊| 国产熟女二区| 亚洲有码视频二区| 金莲网址| 一区 欧美 日韩 麻豆| 97在线公开视频| 最新亚洲人成网站在线影院| 99精品久久| 色婷婷久久综合超碰| 欧洲精品二区| 狠狠综合网| 区日韩亚洲乱码av电影| 在线观看视频91| 男人天堂新在线| 久久欧美性爱视频| 极品久久久久久久久久久久久久| 激情另类激情| 国产 丝袜 欧美中文 另类| 五十路熟女工口| 啊啊啊好想要| 日本亚洲vr欧美不卡高清专区| 午夜美女诱惑电源网| 五月综合婷婷久久网站| 麻豆天美在线| 天天爽天天爽| 日日操夜夜操天天操免费观看麻豆| 亚洲黄色网址视频| 综合激情一一91| 91P0RNY大屁股人妻| 18禁美女裸体无遮挡啪啪| 国产欧美伊人| 男女做爰猛烈动高潮A片免费应用| 亚洲日产专区| 欧美精品23| 亚洲综合影片| 夜夜操av亚洲一区二区| 超清福利精品视频在线| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 午夜人妻精品综合在线| 亚欧美色| 天天综合网~91综合网| 日本特黄f c2| 国模吧 一区二区三区| 97在线免费视频观看| 91扒丝袜综合在线| 日本视频在线观看污污污| 亚洲欲色| 久久久精品九| 欧美日韩亚洲高清不卡一区二区三区| 激情小说图片亚洲首页| 久久九九热| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 亚洲色图欧美色图日韩色图| 三及片网站| 亚洲熟女综合| 超碰79人人乐| 柠檬AV导航| 97爱爱官网| 爱干爱射网啊啊啊| 99久久e免费热视| 日韩射精| 骚货操死你| 97se综合网| 五月婷婷深深爱| a级理论午夜日本| 91综合网| 人妻无码一区二区三区久久99| 伊人影院在线理论播放| www.狠狠干.coom| 日韩在线观看字幕精品| 久久精品国内Av熟女高清| 人妻大香蕉| 白丝1区2区3区| 欧美一区二区观看在线| 日本成人A片网站| 91综合在线| 91精品国产综合久久久蜜臀酒店| 亚洲小说视频| 少妇的嫩逼图片| 中文字幕午夜精品久久久| 欧美 亚洲 91| 精品人妻一区二区三区不卡断 | 精品伊人久久久大香线蕉小说| 日韩有码 一区二区三区| 97色碰| 男女啪啪网站免费视频| 亚洲伊人久久综合97| 日韩小电影| 秋霞怕怕片| 大奶啊啊好爽| 九久9精品| 成人综合网 欧美| 国产区日韩区在线观看| 韩国免费播放一级毛片| 黄色网址在线免费观看| 熟女啪啪视频| 丁香婷婷大香蕉| 精品人妻一区春色| 99久久精品国产高潮| 加勒比aⅴ| 欧美有码激情视频一区二区三区| 久久超碰网| 中文字幕女同在线| 女人爽到高潮潮喷18禁网站| 麻豆久久一区二区三区| 熟女一区二区三区| 熟女视频久久| 黄色人人| 超碰色97| 99re在线视频| 91久久午夜无码鲁丝片久久人妻| 人妻人人做人人澡人人爽欧美一区| 啊啊啊 在线| WWW.加勒比人妻一区不卡.com| 成人网站 免费观看| 操b在线观看| 人伦四五区| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 国产一级αv免费看片| 成人国产二区三区在线,男女精品。| 另类亚洲图色| 五月婷婷激情网| 欧美性生活免费网| 成人精品在线免费视频| 91色噜噜狠狠| 青青操轻轻| 91暧暧| 日韩成人高清一区二区| 射丝袜大香蕉| 五月天春色激情网| 久久精品视频一区三区小泽玛利亚| 五月天激情小说| 在线A日本| 精品久久久久久AV无码| 精品午夜福利国产一区二区在线观看| 欧美色97| 丁香五月激情综合| 日本人体九九九九九九| 国产丝袜美女在线一区| 精品国产乱码久久久| 精品亚洲天堂| 不卡av在线中文字幕| 金莲网址| 极品色www影院| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩乱伦视频| 高清有码一区二区| 大香蕉综合在线| 久久9精品网站| 丰满少妇一区二区三区专区| 国产av又色又爽又黄| 九九九国产精品| 精品人妻一区二区三区-国产| 国产成人手机视频激情| 日韩特一级久久| 亚洲精品97在线| 丁香五月色情| 久操精品网| 芊芊操逼视频无码| 日韩国产不卡在线视频| 97在线免费观看| 一区二区无码视频| 搡老女人老91妇女熟女| 精品国产国产AV| 91av天美性媒精品视频| 打av高清| 男人天堂综合| 欧美久久人体| 欧美日韩制服| 青青草这里只有精品| 欧美精品不卡一二三四在线91| 精品女同一区| 亚州,欧美在线| 欧美国产操逼| 国产女人视频三四五区| 精品无码久久久久久久久果冻糖心| 一区二区三区麻豆| 麻豆三极片| 久久久久久久伊人精品| 岛国网址国产| 超碰超碰95| 国产精品乱码久久久久久久久久久久| 国产精品熟女九九九| 亚洲高清男人天堂| 亚洲综合九九| 欧美黄片欧美黄片xxx| 久久婷婷国产一区二区色| 少妇蜜汁| 亚洲性综合11| 国产一区二区三三视频| 天天日日夜夜| 一区,二区,三区视频| 天堂av最新电影网| av天堂精品久久| 久久久中文| 成人一区二区三区四区| 亚洲欧美97√| 亚洲另类电影| 99视频在线| 亚州色国| 精品一区二区成人| 久艹伊人精品综合在线| 国产黄a三级三级三级av在线看| 天天日老熟妇| 97 国产一区| 欧美色图99| 岛国片在线播放| 艳尻美人妻| 乱伦一区二区三区‘| 天天看高清麻豆| 又粗又长又爽在线观看| 色色色色色色色色综合| 操比国产| 激情一区二区| 91在线丝袜视频| 一区二区三区黄色片a| 久久99精品九九久久久婷婷| 免费的很黄很污的全部视频| 欧洲一区二区三区四区在线观看| 91GD.COM| 亚洲欧美色图| 老女人爆菊| 人人潮人人摸| 国产97亚洲| 色综合潮| 精品国产一区二区三区av在线资源| 青青草啪啪网| av凤凰久久久| 亚州男人天堂| 精品综合久久久久久97| 色五月综合| av网站在线看| 天天情欲宗合网| 大香蕉AV丝袜| 秋霞视频一区二区| 美国人人操人人操| 超碰地址久久| 99re在线视频国产| 三级三久久线久久99久目本WW| 国产精品香蕉| 超碰这里有精品| 精品久久久中文字幕不| 99精品久久久久久久婷婷| 色哟哟av网址| 97 超碰 人人做 人人爱| 欧美精品人妻视频| 日本精品国产视频| 国语对白在线播放视频| 亚洲精品白浆高清久久久久久 | 乱伦一二三区| 安徽熟妇视频| 香蕉久久国产AV一区二区| 丝袜熟女一区二区三区| 日本色日夜干| 疯操AV| 18一区二区三区| 色噜噜精品一区二区三| 久热一区二区| 九九九九97| 日夜久久久九九九久| 丁香五月天社区| 色久桃花影院在线观看| 青娱乐二区免费| 17c嫩草51久久91嫩草| 国产精品农村妇女| 亚洲欧美91| 国产精品播放| 综合第一页| 东京热毛片177b2viP| 天天做天天爱| 日本人妻丰满熟妇久久久久久| 少妇久久久久久| 成人性爱av| 国产精品不卡一区二区三区av| 97超碰人人操人人操| 国产精品免费久久久久久久久久| 精品人妻一区二区三区四区石在线 | 狠狠久久亚洲欧美专区| 99精品无码| 神马久久久久久| 97操97干| 美女国产一区二区久久| 天天综合影院91| 欧美色91| 一区在线观看中文字幕| 精国久久一区二区三区98| 久久久新亚洲AV| 综合久久六月久久婷婷| 青青操在线亚洲视频观看欧美在线| 神马久久久久久久| 一区二区三区在线资源| 亚洲熟女综合一区二区| 97人肏| 99在线精品观看视频中文| 91在线精品| 天天躁日日躁狠狠狠躁| 日韩一区二区三区四区五区 | 国产午夜无码片在线观看影视| 欧美色图亚洲特色| 人人干人人操人人爱| 五月婷婷爱六月丁香色| 亚洲欧美内射| 成人资源中文字幕在线观看天天| 97在线观看免费视频| 九九久久首页| 亚欧视频在线| 九九九九九精品| 一区,二区,三区网站| 久久东京伊人一本到鬼色| 97天天在线| 95人妻爽爽人人做人人澡| www久久国产精品| 婷婷五月天无码 | 区日韩亚洲乱码av电影| AV无码久久久精品| 在线αⅴ| 激激五月| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 在线视频免费观看午夜| 亚洲日韩美女中文字幕乱| 黄呦呦在线| 女人18精品一区二区三区| 国产精品午夜成人福利| 久久精品一区| AV女资源| 伊人久久综合影院| 人人透人人操| 日本999精品| 欧美少妇性爱网站| 人妻嗯啊啊在线播放| 天天日天天舔东京热| 高清无码久操视频| 日日日大屁股骚女人精品| 久久九精品| 国模限制级电影| 伊人国产av| 91东北熟女| 色色婷婷丁香| 久草视频在线视频在线视频在线观看| 网页导航五月天免费一二三区| 亚洲成人久久美女| 高潮内射在线| 久久久天美| 欧美啪啪啪91| AA丁香综合激情| a久久| 国产粉嫩出水在线播放| caopeng97| 欧美日韩1234| 丁香五月大香蕉| 午夜男女爽爽大片免费观看| 欧美熟女丝袜| 99re不伦| 日韩有码一区三区| 综合久久欧美| 欧美黄色片在线播放| 久久亚洲日韩国产欧| 国产乱码久久| 欧美日本一区二区a人| 亚洲欧美人妻| 91欧美经典| 97精品中文字幕| 人妻无码后入| 国产日本熟女顶级一区二区三区视频| 五月天黄色激情视频| 人人贴人人摸| 新怡红院| 亚洲少妇自拍中文字幕懂色| 99热在线不卡| 中文有码第五页| 中文字幕一区av| 麻豆啪啪啪视频| 操逼www.| 精品视频免费在线一区| 午夜性生活av免费在线看| 操老熟女AV| 超碰碰激情97+久| 国产亚卅97| 亚洲国产欧美日韩人妻日中文| 丁香五月性| 97人人模人人爽人人| 啪啪资源网| 一类无码操逼视频| 国产AV线| 欧美一区二区在线资源| 丝袜色综合| 日韩综合97P| 色香综合天天影视综合| 亚洲系列欧美| 白嫩妹子国产骚| 欧美另类天堂| 97Ai亚洲| 亚洲av噜噜噜噜噜噜| 啊啊啊好多水| 精品人妻1区| 手机在线A片| 中日韩一区二区三区欧美| 91免费看一区二区三区 | 色五月综合| 亚洲图片偷拍视频区| 久久久爆乳翘臀一线天伦理视频| 九月AV| 亚欧美色图| 蜜臀一区二区三区在线| 亚洲精品啪视频| 五月综合久久| 98精品国产乱码久久久久久| 男女香蕉一区二区| 爱丝福利| 秋霞Av理论一级在线| 粉嫩av久久一区二区三区| 1769国内精品视频| 日韩不卡a级视频专区| 天天弄天天操| 亚洲色图超碰在线| 加勒比AV天堂| 超碰在线91| 中文字幕蜜乳av| 少妇高潮特黄A片| 天天日夜夜爽| 久久久久久大| 中文字幕精品亚洲熟女| 中文字幕人妻色偷偷久久皮 | 春色综合免费| 久久9精品| 国产精品点击进入在线影院| 亚洲有码 视频一区| 亚洲欧洲激情| 久久精品国产99精品亚洲蜜...| 亚洲天堂区| 国产又大又粗又长视频| 久久久久久亚洲Av无码| 国产suv精品一区二区四区999 | 亚洲成A∨人影院在线欢看| 嗯~啊~快点 死我视频| 日本熟妇人妻一区二区三区| 久久精品国产96精品亚洲拳交| 久久綜合很很很| 欧美不卡五十路| 色色婷| 嫩草91| 国产AV毛片| 97精品久久久久久久| 久久一区二区三区四区五区| 99色| 欧美美女视频| 麻豆国产尤物AV| 国产后入式在线观看| 国产精品嫩草影院免费| 成人热久久精品| 国产欧美日本亚洲精品| 精品免费1| 综合网欧美| 97中文超碰| 蜜臀久久99精品久久久电影| 98一区二区精品| 狠狠爱大香蕉| 99超碰色| 18禁止看精品中文字幕| 情色av电影| 懂色中文一区二区三区| 亚洲大色堂| 岛国片在线播放| 日韩少妇无吗| 人看人人摸人人操| 91中文字幕制服丝袜免费视频| 久久五月丁香| 蜜臀久久99精品久久久电影| 人人手机欧洲亚洲国产人妻| 肏逼视频日本| 免费网站观看www在线观| 亚洲AV成人无码一二三久久 | 2024黄色视频| 美欧老女人97| 亚洲第一无码播放立川理惠| 91操熟女视频 | 国产强奸乱伦无码视频| 欧色综合| 國產尤物AV尤物在線觀看| 伊人久大| 美女在线H91| 国产女人与拘做受视频免费| 久久9999| 麻豆视频test| 狠狠中文字幕| 蜜汁欧美| 9久久久久久| 综合网欧美在线| 日韩有码 一区二区三区| 97精品在线| 久久人妻视频| 日本三级A片网站com| 羞答答AV中文字| 久操B网| 亚洲色 国产 欧美 日韩| 中文有码9| 操b网站亚洲无码| 免费看一级a性色生活片久久无| 日本不卡五区| 熟女91网| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 国产精品网站www| 日本在线激情一区二区三区| 久久在线观看免费视频| 欧美,亚洲,日韩,v,天堂,手机在线观看| 日韩精品 资源| 黑人操一区二区| 欧美亚洲| 国产又粗又长又大的视频| 青青国产在线拍揄自揄拍| 中文字幕jul-617人妻熟女| 人妻9117c| 日比av无码| A一级色女| 蜜桃久久久久久久| 激情丁香五月婷婷| 亚洲乱码国产乱码精网站| 久久精品国产亚洲AV清纯| 国产AB视频| 自拍视频大全亚洲专媒视频/一区二区三区| 少妇滛荡视频| 夜夜天天噜狠狠爱2021| 夜草网站| 78久久| 欧美在线大香999| 中文字幕神马久久| 人妻一区久久二区三区色播| 久操大香蕉手机视频在线看| 日日操丁香五月天| 亚洲另类小说卡通动漫| 成人五月天丁香激情综合| 日韩欧美三级| 久超碰这里只有精品| 日韩一级二级三级免费看完整版国语版 | 亚洲激情av| 国产第25页在线观看| 一起草欧美| 中文字幕一区二区三区字幕| 69视频入口| 亚洲色综合| 欧美激情专区| 97色在线视频| 夜夜爽夜夜爽| 97 色综合| 人妻丝袜日本| 夜夜爽夜夜操| 中文字幕后石码四区五区| 伊香蕉综合久久久久久久噜噜噜 | 亚洲精品久久久久久久蜜桃臀| 大香网站| 搡老人老9丨女老熟人| 干干干天天| 黄片色区软件| 欧美日韩岛国大片在线观看| www网站黄| 强奸a片网| 色婷婷色99国产综合精品| 免费中文在线| 天天色播| 操九九九九九九| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 婷婷亚洲综合| 一区二区三区在线资源| 成人AV素股で擦久久| 91精品久久久久| 超碰九7| 97精品一区二区视频| 蜜乳视频网站| 婷婷午夜成人色中色| 欧美性爱在线无码| 嗯啊不要在线| 爱爱动态试试看6 0秒| 91日产欧美| 超碰欧美在线欧美| 九九九九九精品十六| 啊啊啊啊,啊啊好多水| 国产成人五月天丁香花| 欧美成人免费在线观看| 日本东京热加勒比久久| 岛国片在线观看视频亚洲| 极品色社| 亚洲大色堂| 日本二区不卡| 成 人 A V免费视频在线观看| 看免费的黄片| 久操不卡视频| 超碰97资源大奶| 欧美日韩国产色五月综合在线| 丰满人妻一区二区三区免费 | 麻豆人妻精品一区二区| 看黑丝美女操逼青青网站| 爱丝福利| 免费视频在线一区二区不卡| 六月婷婷一区二区三区| 亚洲在线a| 性爱Av免费| 亚洲欧美精品91| 一区二区三区四区久久视1| 黑白配性爱AV成| 中文字幕精品免费一区二区| 女人被添高潮免费视频| 久久精品亚洲东京热色播| 精品人妻视频一区二区在线播放| 97爱| 中字乱伦AV| 污污污8888| 玖玖爱影院| 国产成人www免费人成看片| 国产白嫩精品久久| 乱人乱色一区二区三区免费| 欧亚性爱在线视频| 97国产色综合| 无码二级三级| 免费作爱一级视频| 99re只有精品| 亚洲学生妹高清av| 久久久九九网站| 啊啊啊啊啊啊啊网址在线观看| 日本成a人v网站在线观看| 久99热| 骚货 中文字幕 av| 日韩精品在线观看观看| 亚洲限制级在线| 亚洲欧美另类图片| 综合激情婷婷| 国产乱不卡| 国产精品宅男免费| 少妇内射www在线观看视频| 最新日本中文字幕| 亚洲天天艹| 亚洲一区二区AV| 另类天堂| 78精品| 在线只有精品| 99热婷婷一区二区三| 亚洲精品人妻吞精av| 欧美大干日韩| 亚洲AV噜噜狠狠网址蜜桃动漫| 人人污日韩一区二区| 久久精品国产亚洲AV先锋| 91大胆欧美| 少妇高潮流水av免费| 91红杏| 国产又色又粗又黄又爽| 夜夜嗨av午夜成人| 午夜男女爽爽爽影院视频| 偷窥自拍亚洲色图| 国产资源中文字幕在线| 97青青操视频| 亚洲性爱成人| 丰满少妇高潮无码| 亚洲va有码在线天堂| 欧美色图人妻| 久久久久久AⅤ无码免费肉站| 亚洲精品人伦一区二区| 亚洲欧美国产其他二区| 久久精品操| 激情五月天色播| 亚洲精品久久久久久久蜜桃臀| 91N欧美| 国产资源中文字幕在线| 色欲人妻一区二区在线| 激情无码日韩| 大香蕉2017| 3571色综合一区二区二区| 91肉丝| 午夜操一操| 淫色网综合| 高清一区AV无码| 婷婷久草| 99综合| 亚洲欧洲av影音| 涩涩久久精品| 婷色五月| 欧美性爱第一页久久| 欧美 亚洲 综合 制服 另类| 日韩精品中文字幕二区| 青草精品视频-日本久久久久网站| 嗯阿好爽好紧| 亚洲精品第一| 欧美色就是色| 97就爱干| 亚洲AV小说| 涩涩这里只有精品视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 免费观看性欧美一级| 狠狠干妹子| 99热免费| 亚洲天堂无码| 一区二区三区免费视频入口| 另类专区加勒比| 麻豆亚洲Av成人无码一区精品| 一本精品日本在线视频精品| 东京热毛片调教| 97免费免费视频网| 9久热| 日韩免费在线视频观看| 日逼97| 久偷拍欧美日韩三区| 天天日天天操心| 午夜啪啪片| 日韩亚洲欧美中文字幕| 超碰无码五月97| 欧美少妇大量自拍视频在线观看| 欧亚性爱啪啪| 亚洲欧美日韩制服另类| 亚洲欧美综合图片| 加勒比海成人视频网| 亚洲91少妇| 久久高清欧美国产| 最新av中文字幕高清| 久久久久久加勒比| 国产女主播视频在线观看| 综合日韩激情另类图片| 操碰97| 精品一啪| 国产精品久久久久无码A√| 精品黄色电影| 又黄又硬又粗又长国产视频| 欧美在线l亚洲| 日韩精品三区四区| 中文字幕精品一区二区精品| 亚洲色图亚洲无码强奸乱伦| 一级日本牲交大片好爽在线看| 欧美性暴力| 中国熟妇| 9久9久| 亚洲诱惑天堂| 呦女网站| 欧美激情色婷婷花野真衣一区二区| 欧美熟爽综合| 九色 人妻 大香蕉| 亚洲综合五月天婷婷丁香| 天天干人妇| 国产精品无码论坛| 国产高清MV操逼视频| 亚洲欧洲综合av在线| 在线观看亚洲成人精品| 色激情综合网站| 亚洲综合九九| 91丝袜在线观看| 欧美性第一页| 色99999| 国产精品免费久久久久久久久久| 天天肏视频| 中文字幕熟女人妻丝袜| 九九九九免费| 人人模人人看| 人人操人人舒服| 欧美精品23| 在线欧美69V免费观看视频| 一级毛片久久久久久久女人18| 亚洲国产一区二区日韩专区| 亚洲天堂中文字| 性色av蜜臀av色欲aV| 精品亚洲国产成人精品| 国产乱人伦AVA麻豆软件.| 亚洲av影院在线观看| 久久精品国产免费观看99| 91在线无码精品秘 软件| 中文字幕在线观看视频www| 久久九九综合| 久久天天性久久伊人| 蜜臀AV成人精品蜜臀AV久久| 亚洲Av噜噜一区二区三区妖精| 亚洲综合射| 欧美性少妇| suv精产一二三区| 青娱乐淫乱1314| 成人av福利在线观看| 黄色区免费观看中文字幕| 在线观看黄色电话| 五月天激情婷婷| www.操| 99热日| av天堂5| 99精品久久| 欧美亚男人的天堂| 无码人妻精品一区二区三区九九| 91精品人妻五十路| 超碰色老头| 日韩免费在线视频观看| 91人妻Pr| 午夜天堂网| 欧美另类天堂| 日本中文熟女视频| 亚洲色 国产 欧美 日韩| 五月丁香色婷婷| 青娱乐蜜桃臀AV色婷| 亚洲成人帖图| 1000部熟女视频在线观看| 入口操逼网站| 欧美久久婷| 精品二区久久| 操操逼视频| 五月天大香蕉| 日韩精品9999| 91精品国产一区三一| 日本狂喷奶水在线播放212| 97操操| 九九九九九九九九九九九九九九九女| 国产精选视频| 人干人人人操人人摸| 亚洲色图超碰在线| 毛片麻豆91糖心精品毛情片| 日本影视久久免费| 人人色人人操在线| 日韩啪啪啪视频| 激情欧美97| 日本性爱网址| 国模不卡一本二本三电影| 亚洲综合伊人无码久久| 国产女人极品高潮毛片| 青青欧美在线| 欧美综合中文| 操逼视频免费日韩无码| 三上制服丝AV| 97免费视频在线| 90后性网国产欧美| 亚洲和欧美裸体美女双飞视频| 校园春色五月天| 欧美一区二区亚洲天堂| 97视频www| 伊人五月天婷婷| 天天日日舔舔| 激情欧美97| 色综合久久888| 天天日熟妇| 日本成人电影资源网| 久久內射| 被操高清无码视频| 中文字幕一区 二区三四五 区日 日骚| 后入式999| 秋霞蝌科网日本一区| 欧美情色贴图| 伊人丁香五月婷婷| 麻豆性爱视频在线播放| 人人爱人人乐人人操| 精品丰满人妻一区二区三区免费观| 狠狠躁久久躁| 无码国产精品午夜不卡(| 日韩亚洲97| 国产精品女生av| 丰满精品人妻少妇久久字幕| 无码不卡亚洲成?人片| 亚洲国产欧美日韩人妻日中文| 久久久青青草| 九九色精品| 精品人妻一区二区三区视频在线| 欧美一区二区三区日韩| 中文一区二区| 乱伦3P视频| 99精品综合久久久久五月天| 人人操人人摸人| 天天日骚逼熟女| 免费A V在线| 18+91网站| 丁香六月婷婷| 久久久人妻| 久久一区无码| 人人操人人舒服| 亚洲天堂人人妻| 日韩av一级黄片| 色天天野狼综合社区| 亚洲AV免费在线| 精品一区二区三区丰满熟女-亚洲欧美一区| 九九久久精品| 日韩一级二级三级免费看完整版| 日韩紧密久久| 搞中出久久| 97操综合| 成人资源中文字幕在线观看天天| 91无遮挡| 97超碰巨乳| 无码少妇精品一区二区60岁老人| 亚洲中文字幕熟女少妇一区二区| 国产人妻精品久久久一区二区三区 | 无码高清操逼| 蜜屁Av| 99热99色| a片 xxxx受爽视频| 嗯嗯嗯啊啊啊干死我吧| 亚洲欧美经典一区二区| 亚洲欧美黄| 人人超碰在线观看黄| 久久久久久久久成人av解说| 97久久久久| AV高清一区| 亚洲色欲天天人妻无码系列专区| 国产精品操| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 超碰97护士| 国产熟女二区| 欧美色图天堂在线| 色在线亚洲视频www| 亚洲图片小说欧洲| 亚洲瓯美色图| 日本久久天堂| 一区二区免费电影久久| 亚洲中文字幕久久无码精品| 宅男午夜在线视频| 人人扣人人操| 在线色导航| 淫荡网址| 在线播放中文字幕| 久久99手机免费视频| 色色婷婷丁香| 99re公开精品免费视频| 夜夜嗨视频| 中出20p| 欧美 日韩 另类 亚洲| 国产精品麻豆成人AV艾秋| 岛国AB视频| 无码久久亚洲高清,| 国产在线激情| 骚人妻少妇视频| 色鬼在线综合| 人妻天堂综合网| 久久香蕉国产线看观看猫咪av| 亚洲一区日韩精品| 久久久久夜夜夜夜| 久久久78| 久久色AV线| 一区二区三区成人 | 日韩亚洲欧美中文字幕| 日韩78m视频| 天天肏夜夜肏| 无码人妻系列少妇| 免费人人搞97| 啊啊啊 在线观看| 欧美99热| 日本色色色视频| 少妇啪啪自拍| A一区片| 欧洲久久一二线| 78操B| 狠狠入| 五月天久久人妻| 91久久久久| 97久久国产精品| 制服诱惑亚洲一区二区三区在线观看| 久草视频制服诱惑| 蜜色网色哟哟| 天天日B狠狠操| 性色一线| 97视频网站在线观看| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 超碰在线一区二区三区| 久久久亚洲精品中文字幕人妻| 亚洲精品久久一区二区三区蜜桃臀| 久久人爽| 性交一区二区在线播放| 亚洲色丰满少妇高潮| 精品久久久不卡一区二区| 操死我了嗯嗯嗯| 77国产精品| 9 9无尺码天堂网| 加勒比av网| 中文字幕国产| 欧美亚洲首页| 男人的午夜天堂| 国产粉嫩蜜臀av一区二区三区| 91狠狠| 免费a级毛片av无码久久精品中文字幕| 无码直播久久久| 国产曰批免费观看久久久| 精品偷拍13p欧美dodk视频|