久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

多Agent串行流水線:節(jié)點(diǎn)自治與狀態(tài)外置的斷點(diǎn)續(xù)跑實(shí)踐

多Agent串行流水線:節(jié)點(diǎn)自治與狀態(tài)外置的斷點(diǎn)續(xù)跑實(shí)踐 1. 為什么要把一個(gè)任務(wù)拆成 Pipeline 節(jié)點(diǎn)鏈1.1 從一把梭到分段跑的思維轉(zhuǎn)變最早做自動(dòng)化任務(wù)的時(shí)候我的習(xí)慣是把所有邏輯塞進(jìn)一個(gè)函數(shù)里讀數(shù)據(jù)、調(diào)模型、處理結(jié)果、寫文件一氣呵成。跑通了很爽但一旦中間某一步失敗整個(gè)流程就得從頭再來(lái)。最要命的是調(diào)模型那一步一次調(diào)用可能幾十秒甚至幾分鐘重跑一次成本極高而且前面已經(jīng)成功的結(jié)果全部作廢。后來(lái)我開(kāi)始接觸多 Agent 協(xié)作的場(chǎng)景發(fā)現(xiàn)問(wèn)題的本質(zhì)不是能不能跑通而是跑掛了之后怎么辦。一個(gè)任務(wù)如果涉及三到五個(gè) Agent 依次處理每個(gè) Agent 都有自己的輸入輸出和失敗模式把它們?nèi)喑梢慧绱a調(diào)試和維護(hù)都是災(zāi)難。于是就有了串行流水線這個(gè)思路把一個(gè)大任務(wù)拆成若干個(gè)獨(dú)立的 Pipeline 節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)只負(fù)責(zé)一件事節(jié)點(diǎn)之間通過(guò)明確的數(shù)據(jù)契約傳遞結(jié)果任何一個(gè)節(jié)點(diǎn)失敗都可以單獨(dú)重試整個(gè)流水線可以從斷點(diǎn)續(xù)跑。這個(gè)思路聽(tīng)起來(lái)簡(jiǎn)單但真正落地的時(shí)候有一堆細(xì)節(jié)要處理節(jié)點(diǎn)之間怎么傳數(shù)據(jù)、失敗怎么判定、重試幾次、狀態(tài)存哪里、怎么保證冪等。下面我把自己踩過(guò)的坑和最終跑通的方案完整拆一遍。1.2 什么樣的場(chǎng)景適合這種架構(gòu)不是所有任務(wù)都值得上流水線。如果一個(gè)任務(wù)總耗時(shí)不到幾秒、失敗率極低、重跑成本可以忽略那直接寫一個(gè)函數(shù)就夠了引入 Pipeline 框架反而是過(guò)度設(shè)計(jì)。真正適合拆節(jié)點(diǎn)鏈的場(chǎng)景通常滿足這幾個(gè)特征單次執(zhí)行耗時(shí)長(zhǎng)整個(gè)任務(wù)跑完要幾分鐘甚至更久重跑的時(shí)間成本讓人心疼。步驟之間有明顯的階段劃分比如采集→清洗→分析→生成→校驗(yàn)這種天然的分段。某些步驟失敗率高或成本高比如調(diào)用外部模型、訪問(wèn)不穩(wěn)定的接口這些步驟需要獨(dú)立的重試策略。需要人工介入中間結(jié)果有時(shí)候跑完前兩步想先看看結(jié)果對(duì)不對(duì)再?zèng)Q定要不要繼續(xù)。多個(gè) Agent 各司其職不同節(jié)點(diǎn)可能由不同的 Agent 負(fù)責(zé)職責(zé)邊界清晰。我做過(guò)的一個(gè)典型項(xiàng)目是內(nèi)容處理流水線第一個(gè) Agent 負(fù)責(zé)從原始素材里抽取結(jié)構(gòu)化信息第二個(gè) Agent 基于結(jié)構(gòu)化信息做分析和歸納第三個(gè) Agent 生成最終文案第四個(gè) Agent 做質(zhì)量校驗(yàn)。四個(gè)節(jié)點(diǎn)串行執(zhí)行每個(gè)節(jié)點(diǎn)都可能失敗每個(gè)節(jié)點(diǎn)的輸出都是下一個(gè)節(jié)點(diǎn)的輸入。這種場(chǎng)景如果不用 Pipeline調(diào)試起來(lái)簡(jiǎn)直是噩夢(mèng)。1.3 核心設(shè)計(jì)原則節(jié)點(diǎn)自治 狀態(tài)外置整個(gè)架構(gòu)最關(guān)鍵的兩個(gè)設(shè)計(jì)決策我總結(jié)成八個(gè)字節(jié)點(diǎn)自治狀態(tài)外置。節(jié)點(diǎn)自治的意思是每個(gè)節(jié)點(diǎn)是一個(gè)獨(dú)立的執(zhí)行單元它不關(guān)心自己前面是誰(shuí)、后面是誰(shuí)只關(guān)心給我輸入我還你輸出。節(jié)點(diǎn)內(nèi)部可以有自己的重試邏輯、超時(shí)控制、異常處理對(duì)外只暴露一個(gè)統(tǒng)一的執(zhí)行接口。這樣做的好處是節(jié)點(diǎn)可以單獨(dú)測(cè)試、單獨(dú)替換、單獨(dú)優(yōu)化不會(huì)牽一發(fā)而動(dòng)全身。狀態(tài)外置的意思是流水線的執(zhí)行狀態(tài)不存在內(nèi)存里而是持久化到外部存儲(chǔ)。每個(gè)節(jié)點(diǎn)執(zhí)行完就把結(jié)果和狀態(tài)寫下來(lái)下一個(gè)節(jié)點(diǎn)從存儲(chǔ)里讀。這樣即使整個(gè)進(jìn)程崩潰重啟也能從上次成功的節(jié)點(diǎn)繼續(xù)跑而不是從頭再來(lái)。狀態(tài)外置還帶來(lái)一個(gè)額外好處你可以隨時(shí)查看每個(gè)節(jié)點(diǎn)的中間產(chǎn)物排查問(wèn)題的時(shí)候一目了然。這兩個(gè)原則說(shuō)起來(lái)容易做起來(lái)有很多取舍。比如狀態(tài)存哪里存文件、存數(shù)據(jù)庫(kù)還是存對(duì)象存儲(chǔ)節(jié)點(diǎn)之間的數(shù)據(jù)契約怎么定義用 JSON 還是別的格式重試的時(shí)候怎么保證不重復(fù)執(zhí)行有副作用的操作這些后面會(huì)逐個(gè)展開(kāi)。2. 節(jié)點(diǎn)鏈的核心細(xì)節(jié)與實(shí)操要點(diǎn)2.1 節(jié)點(diǎn)數(shù)據(jù)契約的設(shè)計(jì)節(jié)點(diǎn)之間傳遞的數(shù)據(jù)格式是整個(gè)流水線的接口協(xié)議。這個(gè)協(xié)議設(shè)計(jì)得好后面擴(kuò)展和維護(hù)都輕松設(shè)計(jì)得爛改一個(gè)字段就要?jiǎng)雍脦讉€(gè)節(jié)點(diǎn)。我的做法是定義一個(gè)統(tǒng)一的節(jié)點(diǎn)輸出結(jié)構(gòu)所有節(jié)點(diǎn)都必須遵守。這個(gè)結(jié)構(gòu)至少包含四個(gè)部分狀態(tài)標(biāo)識(shí)、業(yè)務(wù)數(shù)據(jù)、元信息、錯(cuò)誤信息。狀態(tài)標(biāo)識(shí)告訴調(diào)度器這個(gè)節(jié)點(diǎn)是成功還是失敗業(yè)務(wù)數(shù)據(jù)是給下一個(gè)節(jié)點(diǎn)用的實(shí)際內(nèi)容元信息記錄執(zhí)行時(shí)間、重試次數(shù)、使用的模型版本等錯(cuò)誤信息在失敗時(shí)填充方便排查。# 節(jié)點(diǎn)輸出的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)示意 node_output { status: success, # success / failed / skipped data: { # 業(yè)務(wù)數(shù)據(jù)下一個(gè)節(jié)點(diǎn)的輸入 structured_info: {...}, raw_text: ... }, meta: { node_name: extract_agent, duration_ms: 3420, retry_count: 0, timestamp: 2025-01-01T10:00:00Z }, error: None # 失敗時(shí)填 {type: ..., message: ...} }這里有個(gè)容易忽略的點(diǎn)業(yè)務(wù)數(shù)據(jù)要盡量保持純數(shù)據(jù)不要塞入任何跟執(zhí)行環(huán)境相關(guān)的東西比如文件句柄、數(shù)據(jù)庫(kù)連接、臨時(shí)路徑。這些應(yīng)該放在元信息里或者干脆不傳。原因是業(yè)務(wù)數(shù)據(jù)需要被序列化存儲(chǔ)如果里面有不可序列化的對(duì)象整個(gè)狀態(tài)持久化就會(huì)失敗。我早期就犯過(guò)這個(gè)錯(cuò)把一個(gè)自定義對(duì)象塞進(jìn) data 里結(jié)果存的時(shí)候直接報(bào)錯(cuò)排查了半天。另一個(gè)要點(diǎn)是數(shù)據(jù)契約要向前兼容。意思是當(dāng)你在某個(gè)節(jié)點(diǎn)新增一個(gè)字段時(shí)不應(yīng)該導(dǎo)致下游節(jié)點(diǎn)崩潰。做法是下游節(jié)點(diǎn)讀取字段時(shí)永遠(yuǎn)用取不到就給默認(rèn)值的方式而不是假設(shè)字段一定存在。這個(gè)習(xí)慣能省掉大量因?yàn)榘姹静灰恢聦?dǎo)致的詭異 bug。2.2 狀態(tài)持久化的選型與實(shí)現(xiàn)狀態(tài)存哪里直接決定了流水線的可靠性和復(fù)雜度。我試過(guò)三種方案各有適用場(chǎng)景。方案一本地文件系統(tǒng)。每個(gè)節(jié)點(diǎn)的輸出寫成一個(gè) JSON 文件文件名帶上節(jié)點(diǎn)名和序號(hào)。優(yōu)點(diǎn)是零依賴、實(shí)現(xiàn)簡(jiǎn)單、方便人工查看。缺點(diǎn)是并發(fā)能力差多進(jìn)程同時(shí)寫可能沖突而且換臺(tái)機(jī)器就跑不了。適合單機(jī)、單人使用的小型流水線。方案二關(guān)系型數(shù)據(jù)庫(kù)。建一張表字段包括流水線 ID、節(jié)點(diǎn)名、狀態(tài)、輸出數(shù)據(jù)、時(shí)間戳。優(yōu)點(diǎn)是查詢方便、支持并發(fā)、事務(wù)保證一致性。缺點(diǎn)是數(shù)據(jù)量大的時(shí)候 JSON 字段存起來(lái)有點(diǎn)笨重而且需要維護(hù)數(shù)據(jù)庫(kù)。適合需要多任務(wù)并行、需要查詢歷史記錄的場(chǎng)景。方案三對(duì)象存儲(chǔ) 輕量索引。大塊的業(yè)務(wù)數(shù)據(jù)存對(duì)象存儲(chǔ)狀態(tài)和索引存數(shù)據(jù)庫(kù)或緩存。優(yōu)點(diǎn)是擴(kuò)展性好、存儲(chǔ)成本低。缺點(diǎn)是架構(gòu)復(fù)雜需要處理對(duì)象存儲(chǔ)的最終一致性問(wèn)題。適合數(shù)據(jù)量大、需要長(zhǎng)期保存中間產(chǎn)物的場(chǎng)景。我目前的主力方案是方案二用一張簡(jiǎn)單的表搞定。表結(jié)構(gòu)大概是這樣字段名類型說(shuō)明pipeline_idstring流水線實(shí)例唯一標(biāo)識(shí)node_namestring節(jié)點(diǎn)名稱node_indexint節(jié)點(diǎn)在鏈中的位置statusstringpending/running/success/failedoutput_datatext節(jié)點(diǎn)輸出的 JSON 序列化retry_countint已重試次數(shù)created_atdatetime創(chuàng)建時(shí)間updated_atdatetime更新時(shí)間關(guān)鍵點(diǎn)是pipeline_id node_name 建唯一索引這樣重試的時(shí)候可以直接 upsert不會(huì)產(chǎn)生重復(fù)記錄。另外 status 字段要支持running這個(gè)中間態(tài)用來(lái)標(biāo)記節(jié)點(diǎn)正在執(zhí)行防止重復(fù)觸發(fā)。注意寫狀態(tài)的時(shí)候一定要先寫running再執(zhí)行節(jié)點(diǎn)邏輯執(zhí)行完再更新為success或failed。如果進(jìn)程在執(zhí)行過(guò)程中崩潰重啟后看到running狀態(tài)的節(jié)點(diǎn)就知道這個(gè)節(jié)點(diǎn)可能執(zhí)行了一半需要根據(jù)冪等性決定是重試還是跳過(guò)。2.3 重試策略的粒度控制重試不是簡(jiǎn)單地失敗了再跑一次里面有很多講究。我的經(jīng)驗(yàn)是把重試分成三個(gè)層次每個(gè)層次處理不同的問(wèn)題。第一層節(jié)點(diǎn)內(nèi)部重試。針對(duì)那些瞬時(shí)故障比如網(wǎng)絡(luò)抖動(dòng)、接口限流。這種重試在節(jié)點(diǎn)內(nèi)部完成對(duì)調(diào)度器透明。通常用指數(shù)退避第一次等 1 秒第二次等 2 秒第三次等 4 秒最多重試 3 次。超過(guò) 3 次還失敗就把節(jié)點(diǎn)標(biāo)記為 failed交給上層處理。第二層節(jié)點(diǎn)級(jí)重試。當(dāng)節(jié)點(diǎn)內(nèi)部重試耗盡后調(diào)度器可以決定是否重新執(zhí)行整個(gè)節(jié)點(diǎn)。這一層重試通常針對(duì)那些重跑一次可能就好了的情況比如模型返回了不合規(guī)的內(nèi)容、外部服務(wù)臨時(shí)不可用。節(jié)點(diǎn)級(jí)重試要配合冪等性設(shè)計(jì)確保重復(fù)執(zhí)行不會(huì)產(chǎn)生副作用。第三層流水線級(jí)重試。從某個(gè)失敗的節(jié)點(diǎn)開(kāi)始重新跑后續(xù)所有節(jié)點(diǎn)。這一層通常由人工觸發(fā)或者由定時(shí)任務(wù)在檢測(cè)到失敗后自動(dòng)觸發(fā)。流水線級(jí)重試的關(guān)鍵是從斷點(diǎn)續(xù)跑而不是從頭再來(lái)。# 重試策略配置示意 retry_policy { extract_agent: { max_internal_retry: 3, # 節(jié)點(diǎn)內(nèi)部重試次數(shù) internal_backoff: exponential, max_node_retry: 2, # 節(jié)點(diǎn)級(jí)重試次數(shù) retryable_errors: [timeout, rate_limit, parse_error] }, generate_agent: { max_internal_retry: 2, internal_backoff: fixed, max_node_retry: 1, retryable_errors: [timeout, content_rejected] } }這里有個(gè)關(guān)鍵判斷哪些錯(cuò)誤值得重試哪些不值得。超時(shí)、限流、臨時(shí)不可用這些值得重試參數(shù)錯(cuò)誤、數(shù)據(jù)格式錯(cuò)誤、權(quán)限不足這些重試多少次都沒(méi)用應(yīng)該直接失敗并報(bào)警。我見(jiàn)過(guò)有人把所有錯(cuò)誤都無(wú)腦重試結(jié)果一個(gè)明顯的配置錯(cuò)誤被重試了十幾次浪費(fèi)了大量時(shí)間和資源。2.4 冪等性重試的安全底線冪等性是重試的前提。如果一個(gè)操作重復(fù)執(zhí)行會(huì)產(chǎn)生副作用那重試就是危險(xiǎn)的。比如給用戶發(fā)通知這個(gè)操作重試一次就多發(fā)一次用戶會(huì)收到重復(fù)消息。保證冪等的常見(jiàn)做法有三種。第一種是天然冪等比如把某個(gè)字段更新為固定值執(zhí)行多少次結(jié)果都一樣。第二種是去重標(biāo)識(shí)每次執(zhí)行前先檢查這個(gè)操作是否已經(jīng)做過(guò)用一個(gè)唯一 ID 標(biāo)記。第三種是狀態(tài)機(jī)約束只有處于特定狀態(tài)時(shí)才允許執(zhí)行執(zhí)行后狀態(tài)改變重復(fù)執(zhí)行會(huì)被拒絕。在流水線場(chǎng)景里我通常給每個(gè)節(jié)點(diǎn)操作分配一個(gè)基于 pipeline_id 和 node_name 生成的冪等鍵。節(jié)點(diǎn)執(zhí)行前先查這個(gè)鍵對(duì)應(yīng)的記錄如果已經(jīng)成功執(zhí)行過(guò)就直接返回上次的結(jié)果不再重復(fù)執(zhí)行。這個(gè)檢查要放在節(jié)點(diǎn)邏輯的最前面而且要保證檢查和執(zhí)行之間的原子性否則并發(fā)場(chǎng)景下還是可能重復(fù)。實(shí)操心得冪等鍵的生成要穩(wěn)定不能包含時(shí)間戳或隨機(jī)數(shù)否則每次生成的鍵都不一樣去重就失效了。我一般用pipeline_id : node_name作為冪等鍵簡(jiǎn)單可靠。3. 完整實(shí)操流程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 流水線調(diào)度器的骨架實(shí)現(xiàn)調(diào)度器是整個(gè)流水線的大腦它負(fù)責(zé)按順序執(zhí)行節(jié)點(diǎn)、處理失敗、管理狀態(tài)。我寫了一個(gè)簡(jiǎn)化版的調(diào)度器骨架核心邏輯不到一百行但覆蓋了主要場(chǎng)景。class PipelineRunner: def __init__(self, nodes, state_store, retry_policy): self.nodes nodes # 節(jié)點(diǎn)列表按執(zhí)行順序排列 self.state_store state_store # 狀態(tài)存儲(chǔ) self.retry_policy retry_policy def run(self, pipeline_id, initial_input): # 從狀態(tài)存儲(chǔ)里讀取已完成的節(jié)點(diǎn)實(shí)現(xiàn)斷點(diǎn)續(xù)跑 completed self.state_store.get_completed_nodes(pipeline_id) current_input initial_input for node in self.nodes: if node.name in completed: # 該節(jié)點(diǎn)已成功執(zhí)行過(guò)直接讀取上次的輸出 current_input completed[node.name][data] continue # 執(zhí)行節(jié)點(diǎn)帶重試 result self._execute_with_retry(node, current_input, pipeline_id) if result[status] ! success: # 節(jié)點(diǎn)最終失敗記錄狀態(tài)并中斷流水線 self.state_store.save(pipeline_id, node.name, result) return {status: failed, failed_node: node.name} self.state_store.save(pipeline_id, node.name, result) current_input result[data] return {status: success, final_output: current_input} def _execute_with_retry(self, node, input_data, pipeline_id): policy self.retry_policy.get(node.name, {}) max_retry policy.get(max_node_retry, 0) for attempt in range(max_retry 1): # 先標(biāo)記為 running防止重復(fù)觸發(fā) self.state_store.mark_running(pipeline_id, node.name) try: result node.execute(input_data) if result[status] success: return result except Exception as e: result {status: failed, error: str(e)} if attempt max_retry: time.sleep(self._backoff(attempt, policy)) return result這個(gè)骨架有幾個(gè)設(shè)計(jì)點(diǎn)值得說(shuō)明。第一斷點(diǎn)續(xù)跑是通過(guò)讀取已完成節(jié)點(diǎn)實(shí)現(xiàn)的每次 run 都先查一遍哪些節(jié)點(diǎn)已經(jīng)成功跳過(guò)它們。第二節(jié)點(diǎn)執(zhí)行前先標(biāo)記 running這樣如果進(jìn)程崩潰重啟后能看到哪些節(jié)點(diǎn)處于中間狀態(tài)。第三重試邏輯封裝在 _execute_with_retry 里節(jié)點(diǎn)本身不需要關(guān)心重試。3.2 單個(gè)節(jié)點(diǎn)的標(biāo)準(zhǔn)寫法每個(gè)節(jié)點(diǎn)都要遵循統(tǒng)一的接口這樣調(diào)度器才能無(wú)差別地調(diào)用它們。我定義的節(jié)點(diǎn)接口很簡(jiǎn)單一個(gè) execute 方法接收輸入數(shù)據(jù)返回標(biāo)準(zhǔn)格式的輸出。class ExtractAgentNode: name extract_agent def __init__(self, model_client): self.model_client model_client def execute(self, input_data): start time.time() try: raw_text input_data[raw_text] # 調(diào)用模型抽取結(jié)構(gòu)化信息 structured self.model_client.extract(raw_text) # 校驗(yàn)抽取結(jié)果不合格就拋異常觸發(fā)重試 if not structured.get(key_points): raise ValueError(抽取結(jié)果為空可能模型輸出異常) return { status: success, data: {structured_info: structured}, meta: { node_name: self.name, duration_ms: int((time.time() - start) * 1000) }, error: None } except Exception as e: return { status: failed, data: None, meta: {node_name: self.name}, error: {type: type(e).__name__, message: str(e)} }這里有個(gè)細(xì)節(jié)節(jié)點(diǎn)內(nèi)部要做結(jié)果校驗(yàn)。模型調(diào)用成功不代表結(jié)果可用可能返回了空內(nèi)容、格式錯(cuò)誤、或者明顯不合理的結(jié)果。這些情況應(yīng)該在節(jié)點(diǎn)內(nèi)部就判定為失敗觸發(fā)重試而不是把垃圾數(shù)據(jù)傳給下游。我一般會(huì)在節(jié)點(diǎn)里加幾個(gè)斷言比如關(guān)鍵字段不能為空、結(jié)果長(zhǎng)度在合理范圍內(nèi)。另一個(gè)細(xì)節(jié)是異常要捕獲并轉(zhuǎn)成標(biāo)準(zhǔn)格式不要讓異常直接拋到調(diào)度器。這樣調(diào)度器處理起來(lái)統(tǒng)一而且錯(cuò)誤信息能被完整記錄到狀態(tài)里。當(dāng)然如果是那種完全無(wú)法恢復(fù)的異常比如配置錯(cuò)誤也可以選擇直接拋出讓調(diào)度器快速失敗。3.3 節(jié)點(diǎn)間的數(shù)據(jù)傳遞與轉(zhuǎn)換節(jié)點(diǎn)之間的數(shù)據(jù)傳遞看起來(lái)簡(jiǎn)單實(shí)際上是最容易出問(wèn)題的地方。上游節(jié)點(diǎn)輸出的數(shù)據(jù)結(jié)構(gòu)下游節(jié)點(diǎn)不一定能直接用中間往往需要一層轉(zhuǎn)換。我的做法是在每個(gè)節(jié)點(diǎn)的入口處做一次輸入適配。下游節(jié)點(diǎn)不直接依賴上游節(jié)點(diǎn)的原始輸出而是通過(guò)一個(gè)適配函數(shù)把上游輸出轉(zhuǎn)成自己需要的格式。這樣做的好處是當(dāng)上游節(jié)點(diǎn)的輸出結(jié)構(gòu)變化時(shí)只需要改適配函數(shù)不用動(dòng)下游節(jié)點(diǎn)的核心邏輯。def adapt_extract_to_analyze(extract_output): 把抽取節(jié)點(diǎn)的輸出適配成分析節(jié)點(diǎn)的輸入 structured extract_output[data][structured_info] return { points: structured.get(key_points, []), context: structured.get(background, ), source_length: len(structured.get(raw_text, )) }適配函數(shù)要處理字段缺失的情況。上游節(jié)點(diǎn)可能因?yàn)榘姹静煌⒒蛘吣承┛蛇x字段沒(méi)生成導(dǎo)致下游需要的字段不存在。適配函數(shù)里用.get()加默認(rèn)值比直接索引安全得多。我踩過(guò)的坑就是上游改了字段名下游直接 KeyError整個(gè)流水線掛掉排查了半天才發(fā)現(xiàn)是字段名對(duì)不上。還有一個(gè)實(shí)踐是在適配函數(shù)里做數(shù)據(jù)量控制。上游可能輸出了很長(zhǎng)的文本下游如果直接全量處理可能超出模型的上下文限制。適配函數(shù)里可以截?cái)?、摘要、或者只取關(guān)鍵部分。這個(gè)邏輯放在適配層比放在節(jié)點(diǎn)內(nèi)部更清晰。3.4 斷點(diǎn)續(xù)跑的完整驗(yàn)證斷點(diǎn)續(xù)跑是這套架構(gòu)的核心價(jià)值但驗(yàn)證它是否真的工作需要專門設(shè)計(jì)測(cè)試。我的測(cè)試方法是在流水線跑到中間某個(gè)節(jié)點(diǎn)時(shí)人為殺掉進(jìn)程然后重新啟動(dòng)看它是否從斷點(diǎn)繼續(xù)而不是從頭再來(lái)。具體操作是在第三個(gè)節(jié)點(diǎn)執(zhí)行前加一個(gè)time.sleep(30)然后在 sleep 期間手動(dòng) kill 進(jìn)程。重啟后觀察日志如果前兩個(gè)節(jié)點(diǎn)被跳過(guò)、直接從第三個(gè)節(jié)點(diǎn)開(kāi)始說(shuō)明斷點(diǎn)續(xù)跑生效了。這個(gè)測(cè)試我建議每個(gè)流水線都做一遍因?yàn)閿帱c(diǎn)續(xù)跑的邏輯很容易因?yàn)闋顟B(tài)存儲(chǔ)的 bug 而失效。驗(yàn)證的時(shí)候要特別注意狀態(tài)寫入的時(shí)機(jī)。如果節(jié)點(diǎn)執(zhí)行完了但狀態(tài)還沒(méi)寫入就崩潰了重啟后這個(gè)節(jié)點(diǎn)會(huì)被重新執(zhí)行。這本身不是問(wèn)題只要冪等但會(huì)導(dǎo)致重復(fù)計(jì)算。更糟的情況是狀態(tài)寫入了但節(jié)點(diǎn)實(shí)際沒(méi)執(zhí)行完重啟后節(jié)點(diǎn)被跳過(guò)結(jié)果就是數(shù)據(jù)不完整。所以狀態(tài)寫入必須放在節(jié)點(diǎn)執(zhí)行成功之后而且要保證寫入的原子性。實(shí)操心得我習(xí)慣在狀態(tài)里額外記錄一個(gè)節(jié)點(diǎn)輸出摘要比如輸出數(shù)據(jù)的哈希值。重啟后如果發(fā)現(xiàn)狀態(tài)是 success 但摘要對(duì)不上說(shuō)明狀態(tài)可能被污染了這時(shí)候可以選擇強(qiáng)制重跑這個(gè)節(jié)點(diǎn)。這個(gè)檢查能發(fā)現(xiàn)一些隱蔽的狀態(tài)不一致問(wèn)題。4. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄4.1 節(jié)點(diǎn)卡死與超時(shí)處理節(jié)點(diǎn)卡死是流水線最常見(jiàn)的問(wèn)題之一。表現(xiàn)是某個(gè)節(jié)點(diǎn)一直處于 running 狀態(tài)既不成功也不失敗整個(gè)流水線就停在那里。原因通常是節(jié)點(diǎn)內(nèi)部有阻塞操作比如網(wǎng)絡(luò)請(qǐng)求沒(méi)有超時(shí)設(shè)置、模型調(diào)用卡住、或者死循環(huán)。解決方法是給每個(gè)節(jié)點(diǎn)加超時(shí)控制。超時(shí)控制要分兩層節(jié)點(diǎn)內(nèi)部的操作超時(shí)和調(diào)度器層面的節(jié)點(diǎn)超時(shí)。節(jié)點(diǎn)內(nèi)部的操作超時(shí)比如 HTTP 請(qǐng)求設(shè)置 30 秒超時(shí)模型調(diào)用設(shè)置 120 秒超時(shí)。調(diào)度器層面的節(jié)點(diǎn)超時(shí)是給整個(gè)節(jié)點(diǎn)執(zhí)行設(shè)一個(gè)上限比如 5 分鐘超過(guò)就強(qiáng)制中斷并標(biāo)記為失敗。# 調(diào)度器層面的超時(shí)控制 import signal def execute_with_timeout(node, input_data, timeout_seconds): def handler(signum, frame): raise TimeoutError(f節(jié)點(diǎn) {node.name} 執(zhí)行超時(shí)) signal.signal(signal.SIGALRM, handler) signal.alarm(timeout_seconds) try: result node.execute(input_data) finally: signal.alarm(0) # 取消鬧鐘 return result超時(shí)時(shí)間怎么定我的經(jīng)驗(yàn)是取正常執(zhí)行時(shí)間的 3 倍。比如某個(gè)節(jié)點(diǎn)正常跑 30 秒超時(shí)就設(shè) 90 秒。這樣既能容忍正常的波動(dòng)又不會(huì)讓卡死的節(jié)點(diǎn)拖太久。如果某個(gè)節(jié)點(diǎn)執(zhí)行時(shí)間波動(dòng)很大那就取 P99 耗時(shí)的 2 倍。4.2 狀態(tài)不一致的排查思路狀態(tài)不一致的表現(xiàn)是流水線報(bào)告某個(gè)節(jié)點(diǎn)成功了但下游節(jié)點(diǎn)拿到的數(shù)據(jù)是空的或者格式不對(duì)。這種問(wèn)題往往很隱蔽因?yàn)楸砻嫔狭魉€是成功的。排查這類問(wèn)題我一般按這個(gè)順序查先看狀態(tài)存儲(chǔ)里該節(jié)點(diǎn)的 output_data 是否完整再看下游節(jié)點(diǎn)的輸入適配函數(shù)是否正確處理了這份數(shù)據(jù)最后看下游節(jié)點(diǎn)是否真的收到了數(shù)據(jù)。很多時(shí)候問(wèn)題出在適配函數(shù)上比如字段名寫錯(cuò)了、默認(rèn)值給得不合理。還有一種狀態(tài)不一致是并發(fā)寫入導(dǎo)致的。如果同一個(gè)流水線被觸發(fā)了兩次兩個(gè)進(jìn)程同時(shí)寫狀態(tài)可能互相覆蓋。解決辦法是給狀態(tài)寫入加鎖或者用數(shù)據(jù)庫(kù)的唯一索引 upsert 來(lái)保證原子性。我傾向于后者因?yàn)椴灰蕾噾?yīng)用層的鎖更可靠。問(wèn)題現(xiàn)象可能原因排查方法節(jié)點(diǎn)一直 running節(jié)點(diǎn)卡死或進(jìn)程崩潰查進(jìn)程狀態(tài)看是否有超時(shí)控制下游拿到空數(shù)據(jù)適配函數(shù)字段名錯(cuò)誤打印上游輸出和適配后輸入對(duì)比狀態(tài)被覆蓋并發(fā)寫入檢查是否有重復(fù)觸發(fā)加唯一索引重試后結(jié)果重復(fù)冪等性失效檢查冪等鍵生成邏輯斷點(diǎn)續(xù)跑失效狀態(tài)寫入時(shí)機(jī)錯(cuò)誤檢查狀態(tài)寫入是否在節(jié)點(diǎn)成功后4.3 重試風(fēng)暴的預(yù)防重試風(fēng)暴是指大量節(jié)點(diǎn)同時(shí)失敗并同時(shí)重試導(dǎo)致下游服務(wù)被瞬間打爆。這種情況在批量處理場(chǎng)景里特別常見(jiàn)比如一次性提交了一百個(gè)流水線某個(gè)外部服務(wù)掛了一百個(gè)流水線同時(shí)重試直接把服務(wù)打得更掛。預(yù)防重試風(fēng)暴有幾個(gè)手段。第一是加隨機(jī)抖動(dòng)重試的等待時(shí)間加上一個(gè)隨機(jī)值避免所有重試同時(shí)發(fā)生。第二是限制并發(fā)同一時(shí)間只允許一定數(shù)量的節(jié)點(diǎn)在執(zhí)行超出的排隊(duì)等待。第三是熔斷機(jī)制當(dāng)某個(gè)外部服務(wù)的失敗率超過(guò)閾值時(shí)暫時(shí)停止調(diào)用它等一段時(shí)間再恢復(fù)。# 帶抖動(dòng)的指數(shù)退避 import random def backoff_with_jitter(attempt, base1.0, max_wait60.0): wait min(base * (2 ** attempt), max_wait) jitter random.uniform(0, wait * 0.3) # 加 30% 的隨機(jī)抖動(dòng) return wait jitter熔斷機(jī)制我一般用一個(gè)簡(jiǎn)單的計(jì)數(shù)器實(shí)現(xiàn)記錄最近 N 次調(diào)用的失敗次數(shù)如果失敗率超過(guò) 50%就打開(kāi)熔斷開(kāi)關(guān)后續(xù)調(diào)用直接返回失敗不實(shí)際調(diào)用等 60 秒后再半開(kāi)放幾個(gè)請(qǐng)求試探。這個(gè)邏輯不復(fù)雜但能有效防止雪崩。4.4 中間結(jié)果的清理策略流水線跑多了中間結(jié)果會(huì)越積越多占滿存儲(chǔ)。清理策略要根據(jù)業(yè)務(wù)需求來(lái)定。如果中間結(jié)果需要長(zhǎng)期保留用于審計(jì)或回溯那就不能隨便刪得做歸檔。如果只是臨時(shí)數(shù)據(jù)跑完就可以清理。我的做法是給每個(gè)流水線實(shí)例設(shè)置一個(gè) TTL生存時(shí)間默認(rèn) 7 天。超過(guò) TTL 的實(shí)例其狀態(tài)和中間結(jié)果會(huì)被定時(shí)任務(wù)清理。對(duì)于需要長(zhǎng)期保留的在創(chuàng)建實(shí)例時(shí)標(biāo)記為持久化跳過(guò)清理。清理任務(wù)本身也要冪等重復(fù)執(zhí)行不會(huì)誤刪。實(shí)操心得清理之前先做一次冷備份把要?jiǎng)h的數(shù)據(jù)導(dǎo)出到低成本存儲(chǔ)。我吃過(guò)虧有一次清理任務(wù)寫錯(cuò)了條件把還在用的數(shù)據(jù)刪了幸好有備份才恢復(fù)過(guò)來(lái)。從那以后所有刪除操作都先備份再刪。5. 多 Agent 協(xié)作下的節(jié)點(diǎn)編排進(jìn)階5.1 串行之外的編排模式雖然標(biāo)題說(shuō)的是串行流水線但實(shí)際項(xiàng)目里經(jīng)常需要更靈活的編排。我在串行的基礎(chǔ)上擴(kuò)展了兩種模式條件分支和并行匯聚。條件分支是指根據(jù)上游節(jié)點(diǎn)的輸出決定走哪條下游路徑。比如質(zhì)量校驗(yàn)節(jié)點(diǎn)發(fā)現(xiàn)內(nèi)容不合格就跳到重新生成分支而不是繼續(xù)往下走。實(shí)現(xiàn)方式是在節(jié)點(diǎn)輸出里加一個(gè)next_node字段調(diào)度器根據(jù)這個(gè)字段決定下一個(gè)執(zhí)行誰(shuí)。并行匯聚是指多個(gè)節(jié)點(diǎn)同時(shí)執(zhí)行都完成后匯聚到一個(gè)節(jié)點(diǎn)。比如同時(shí)調(diào)用三個(gè)不同的模型生成候選內(nèi)容然后由一個(gè)選擇節(jié)點(diǎn)挑出最好的。實(shí)現(xiàn)方式是調(diào)度器維護(hù)一個(gè)依賴圖只有所有前置節(jié)點(diǎn)都完成匯聚節(jié)點(diǎn)才能執(zhí)行。# 條件分支的節(jié)點(diǎn)輸出 { status: success, data: {...}, meta: {node_name: quality_check}, next_node: regenerate_agent # 指定下一個(gè)節(jié)點(diǎn) }這兩種模式讓流水線從一條直線變成了一張圖表達(dá)能力大大增強(qiáng)。但復(fù)雜度也上去了所以我建議先用串行跑通有明確需求再引入分支和并行。過(guò)早引入復(fù)雜編排調(diào)試成本會(huì)成倍增加。5.2 節(jié)點(diǎn)版本管理與灰度當(dāng)流水線跑了一段時(shí)間后你可能會(huì)想優(yōu)化某個(gè)節(jié)點(diǎn)比如換個(gè)更好的模型、調(diào)整提示詞。直接改節(jié)點(diǎn)代碼有風(fēng)險(xiǎn)因?yàn)檎谂艿牧魉€可能受影響。我的做法是給節(jié)點(diǎn)加版本號(hào)新版本和舊版本并存通過(guò)配置決定用哪個(gè)版本?;叶劝l(fā)布的流程是先讓新版本處理 10% 的流水線觀察成功率和輸出質(zhì)量沒(méi)問(wèn)題再擴(kuò)大到 50%最后全量切換。如果新版本出問(wèn)題改配置切回舊版本即可不用改代碼重新部署。版本管理還有一個(gè)好處是可追溯。每個(gè)流水線實(shí)例記錄它用的是哪個(gè)版本的節(jié)點(diǎn)出問(wèn)題的時(shí)候能精確定位到具體版本。我一般把版本號(hào)存在節(jié)點(diǎn)輸出的 meta 里方便查詢。5.3 監(jiān)控與告警的關(guān)鍵指標(biāo)流水線跑起來(lái)之后必須有一套監(jiān)控否則出了問(wèn)題都不知道。我關(guān)注的指標(biāo)有這么幾個(gè)節(jié)點(diǎn)成功率每個(gè)節(jié)點(diǎn)的成功比例低于 95% 就要警惕。節(jié)點(diǎn)耗時(shí) P9595% 的請(qǐng)求在多少時(shí)間內(nèi)完成用來(lái)發(fā)現(xiàn)性能退化。重試率重試次數(shù)占總執(zhí)行次數(shù)的比例高重試率說(shuō)明有系統(tǒng)性問(wèn)題。流水線完成率成功跑完的流水線占總提交量的比例??ㄋ拦?jié)點(diǎn)數(shù)處于 running 狀態(tài)超過(guò)閾值的節(jié)點(diǎn)數(shù)量。告警策略上我設(shè)置了兩級(jí)警告級(jí)和嚴(yán)重級(jí)。警告級(jí)發(fā)通知但不打斷比如成功率降到 95% 以下。嚴(yán)重級(jí)直接打電話比如成功率降到 80% 以下或者有節(jié)點(diǎn)卡死超過(guò) 10 分鐘。告警要帶上下文比如是哪個(gè)節(jié)點(diǎn)、哪個(gè)流水線實(shí)例、錯(cuò)誤信息是什么這樣排查起來(lái)快。6. 從零搭建時(shí)的幾個(gè)關(guān)鍵決策6.1 自研還是用現(xiàn)成框架市面上有不少工作流編排框架功能很全但我的建議是先用自研的輕量方案跑通有明確痛點(diǎn)再考慮引入框架。原因是框架有學(xué)習(xí)成本和適配成本而且很多框架為了通用性做了大量抽象調(diào)試起來(lái)反而更麻煩。自研方案的核心代碼其實(shí)不多一個(gè)調(diào)度器加一個(gè)狀態(tài)存儲(chǔ)幾百行就能搞定。等你的流水線復(fù)雜到需要 DAG 編排、需要可視化界面、需要復(fù)雜的權(quán)限控制時(shí)再考慮引入框架也不遲。我見(jiàn)過(guò)不少項(xiàng)目一上來(lái)就上重型框架結(jié)果大部分功能用不上反而被框架的約束綁住了手腳。6.2 狀態(tài)存儲(chǔ)的容量規(guī)劃狀態(tài)存儲(chǔ)會(huì)隨著流水線數(shù)量增長(zhǎng)而膨脹。一個(gè)流水線實(shí)例如果有 5 個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)的輸出平均 10KB那就是 50KB。一天跑 1000 個(gè)實(shí)例就是 50MB。一年下來(lái)接近 20GB。這個(gè)量級(jí)用普通數(shù)據(jù)庫(kù)完全扛得住但要注意索引和查詢優(yōu)化。如果數(shù)據(jù)量更大比如一天跑十萬(wàn)個(gè)實(shí)例那就要考慮分庫(kù)分表或者用專門的時(shí)序數(shù)據(jù)庫(kù)。不過(guò)大多數(shù)場(chǎng)景到不了這個(gè)量級(jí)我建議先按單表設(shè)計(jì)等真的遇到性能瓶頸再優(yōu)化。過(guò)早分片會(huì)讓架構(gòu)復(fù)雜化得不償失。6.3 團(tuán)隊(duì)協(xié)作下的接口約定如果流水線是多人協(xié)作開(kāi)發(fā)的節(jié)點(diǎn)之間的接口約定就特別重要。我的做法是維護(hù)一份節(jié)點(diǎn)契約文檔每個(gè)節(jié)點(diǎn)明確寫清楚輸入需要哪些字段、輸出會(huì)提供哪些字段、可能拋出哪些錯(cuò)誤、重試策略是什么。這份文檔是節(jié)點(diǎn)開(kāi)發(fā)的依據(jù)也是排查問(wèn)題的參考。契約變更要走流程先改文檔再改代碼通知所有相關(guān)方。我見(jiàn)過(guò)因?yàn)槟硞€(gè)節(jié)點(diǎn)偷偷改了輸出字段導(dǎo)致下游節(jié)點(diǎn)集體掛掉的事故。有了契約文檔和變更流程這類問(wèn)題能大幅減少。7. 我踩過(guò)的幾個(gè)印象深刻的坑7.1 狀態(tài)寫入順序?qū)е碌挠撵`成功有一次流水線報(bào)告某個(gè)節(jié)點(diǎn)成功了但下游拿到的數(shù)據(jù)是空的。排查了半天發(fā)現(xiàn)是狀態(tài)寫入的順序有問(wèn)題代碼先寫了 success 狀態(tài)再寫 output_data結(jié)果寫 output_data 的時(shí)候失敗了狀態(tài)卻已經(jīng)是 success。重啟后調(diào)度器看到 success 就跳過(guò)了這個(gè)節(jié)點(diǎn)下游拿到空數(shù)據(jù)。修復(fù)方法很簡(jiǎn)單把狀態(tài)和輸出數(shù)據(jù)放在一次寫入里要么都成功要么都失敗。如果存儲(chǔ)不支持原子寫入那就先寫數(shù)據(jù)再寫狀態(tài)狀態(tài)寫入作為提交動(dòng)作。這個(gè)教訓(xùn)讓我明白狀態(tài)管理里的順序問(wèn)題能造成很隱蔽的 bug。7.2 冪等鍵包含時(shí)間戳的慘案早期我生成冪等鍵的時(shí)候順手加了個(gè)時(shí)間戳想著每次執(zhí)行都是新的。結(jié)果重試的時(shí)候因?yàn)闀r(shí)間戳變了冪等鍵也變了去重完全失效同一個(gè)操作被執(zhí)行了多次。更糟的是這個(gè)操作有副作用導(dǎo)致數(shù)據(jù)重復(fù)。修復(fù)方法是把冪等鍵改成只包含穩(wěn)定標(biāo)識(shí)比如 pipeline_id 和 node_name。時(shí)間戳這種每次都變的東西絕對(duì)不能進(jìn)冪等鍵。這個(gè)坑讓我對(duì)什么該進(jìn)冪等鍵有了深刻認(rèn)識(shí)只有那些在同一次邏輯執(zhí)行中保持不變的東西才能進(jìn)。7.3 超時(shí)設(shè)置過(guò)短導(dǎo)致的誤判有個(gè)節(jié)點(diǎn)正常執(zhí)行需要 45 秒左右我一開(kāi)始把超時(shí)設(shè)成了 60 秒想著留點(diǎn)余量。結(jié)果高峰期的時(shí)候節(jié)點(diǎn)執(zhí)行時(shí)間漲到 70 秒頻繁超時(shí)。超時(shí)后重試重試又超時(shí)陷入了惡性循環(huán)。后來(lái)我把超時(shí)改成 180 秒問(wèn)題解決了。教訓(xùn)是超時(shí)時(shí)間要基于實(shí)際觀測(cè)的 P99 耗時(shí)來(lái)定而不是拍腦袋。而且要考慮高峰期的影響留足余量。超時(shí)設(shè)得太短會(huì)把正常的慢請(qǐng)求誤判為失敗反而增加系統(tǒng)負(fù)擔(dān)。8. 后續(xù)可以繼續(xù)擴(kuò)展的方向這套流水線跑穩(wěn)定之后我陸續(xù)加了一些擴(kuò)展。一個(gè)是節(jié)點(diǎn)緩存對(duì)于輸入相同的節(jié)點(diǎn)直接返回緩存結(jié)果省掉重復(fù)計(jì)算。緩存鍵用輸入數(shù)據(jù)的哈希緩存有效期根據(jù)業(yè)務(wù)定。這個(gè)優(yōu)化讓重復(fù)任務(wù)的耗時(shí)降低了一大半。另一個(gè)是人工審核節(jié)點(diǎn)。有些關(guān)鍵步驟需要人工確認(rèn)比如生成的內(nèi)容要人工審核后才能發(fā)布。我加了一種特殊的節(jié)點(diǎn)執(zhí)行時(shí)把任務(wù)掛起等人工在界面上點(diǎn)通過(guò)或拒絕后再繼續(xù)。這個(gè)節(jié)點(diǎn)讓流水線能處理需要人工介入的場(chǎng)景。還有一個(gè)方向是流水線的可視化。把每個(gè)節(jié)點(diǎn)的狀態(tài)、耗時(shí)、輸出用圖形界面展示出來(lái)排查問(wèn)題的時(shí)候一目了然。這個(gè)我還在做目前是用簡(jiǎn)單的 HTML 頁(yè)面渲染狀態(tài)數(shù)據(jù)夠用但不夠好看。這套架構(gòu)的核心思想其實(shí)就一句話把復(fù)雜任務(wù)拆成可獨(dú)立重試的小步驟把狀態(tài)外置以便隨時(shí)恢復(fù)。理解了這一點(diǎn)具體用什么技術(shù)實(shí)現(xiàn)都是次要的。我在實(shí)際項(xiàng)目里用這套思路處理過(guò)內(nèi)容生成、數(shù)據(jù)處理、報(bào)表生成等多種場(chǎng)景每次都能顯著降低調(diào)試成本和重跑成本。如果你也在做類似的多步驟任務(wù)不妨試試這個(gè)思路先從最簡(jiǎn)單的兩三個(gè)節(jié)點(diǎn)開(kāi)始跑通了再逐步擴(kuò)展。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产内射爽爽大片| 中国熟妇| 大香蕉欧美国产日韩高潮| 日本伦理一区二区| 中文幕97| 亚洲欧美97| 东北女人高潮视频| 无码 黑人一区二区三区| 天天干天天拍| 综合亚州欧美| 91bbb| 人人摸人人添人人操 | 69久久久久久久久久久久久| 亚洲天堂久| 国产91美女视频| 蜜臀久久99精品久久久久久-DVD原版全| 日韩三级在线观看网站| 日欧操屄视频| 校园春色综合色| 欧美综合777| 大香蕉人妻久久| 伊人91| 久综合国内精品自在自线| 岛国黄色短视频| 中文字幕 码 自拍 视频 区| 久久男人网| 久久久久九九九九九| 天天综合网在线91| 国产偷拍自拍在线视频| 色综合美国| 裸体美女久久久| 中文不卡视频| 乱伦av.com| 天天透伊人| 综合激情一一91| 91视频综合网| 国产懂色精品国产av| 日韩99神马视频播放片在线播放| 久久久久婷婷精品av电影| 男人天堂网站| 六十路日本| 欧美曰韩国产精品| 日产操逼| 亚欧国产无码精品在线| 欧美超碰96| 九九九成人| 无码精品久久久天天影视| 日韩一级二级| 九九九久| 亚洲第一狼人丝袜美女另类 | 成人午夜无码视频| 中文字幕精品乱码| 精品国产一区二区三区四区在线看| 色情五月丁香| 欧美肥臀在线| 婷婷精品视频| 久久精品一区二区一8| 国产欧洲精品亚洲午夜拍精品| 婷婷五月天激情四射| 日韩精品黄片免费观看| 亚洲欧洲第二视频在线观看色图| 青娱乐休闲视频在线观看| 国模精品一区二区三区苹果色戒| 美性中文综合网| 国产精品人妻无码久久久老鸭窝| 黄色毛片A片| 久婷婷一区| 日韩在线观看三级电影| 91啪啪| 欧美综合 站| 人妻一区二区三区视频 | 老司机香蕉| 操逼日批| 在线天堂999| 后入式999| 久久九九视频九九视频| 北条麻妃性愛视频| 日小BB小视频| 欧美日韩国产电影| 制度丝袜99| 亚洲综合888| 国产精品96久久久久久| 天天躁日日躁AAAXX| 加勒比伊人综合| 综合av社区| 日少妇亚洲版| 日韩福利综合一区| 黄色十八禁网站| 嗯嗯啊啊操我| 国精品一区二区三| 久久性爱视频99| 熟女性视频| 秋霞成人一级在线观看| 色爱综合网| 人妻精品一区一区三区蜜桃91| A 在线网址| 九月AV| 日韩大香蕉| 性色一线| 欧美日韩资源| 日韩av乱伦| 色悠久久久av| 中文字幕亚洲热播人妻| 久草毛片| 熟妇在线视频一区二区| 天天拍夜夜| 天美av在线观看| 欧美色女人| 97久久久久久久精| 91久久久亚洲| 99后入| 91 亚洲 欧美 日韩 国产 综合| 伊人精品国产| 亚洲五月婷| 久草这里只有精品 | 亚洲色诱惑| 欧美性高潮| 26uuu欧美| 视频一区二区免费在线| 亚洲揄拍网| 国产树林里野战在线看| 任我爽视频在线观看| 国产极品馒头逼| 97久精品| 国产午夜精品理论片一二三区区| 在线 亚洲 网爆 自拍| 欧美极品美女aaaaaa级黄片| 九九九九九九九九九五码| 无码天天操| 东北操逼| 丁香六月婷婷久久综合| 欧美日韩在线视频网站| 亚州色阁| 9久综合网| 日韩免费av片高清无码| 国产三级中文字幕粉嫩| 九九热AV| 亚洲欧美97| 成人综合色网| 人人妻人射| 亚洲欧美综合图片| 欧美狠狠操| 天天色综亚洲91污| 国产老太乱伦一区| 96精品一区| 亚洲欧洲偷拍一区| 国内自拍 日韩激情 99| 亚洲中文字幕精品一区| 国产精品丝袜久久亚洲不卡| 香蕉综合网| а√天堂资源官网在线资源| 狠狠操狠狠燥| 熟妇的味道HD中文字幕| 美女高潮国产高清| 欧洲精品欧洲精品| 欧美性爱一内片一区二区三区| 夜色AV无码手机在线影院| 欧美宗合色| 97一本大道亚洲一区| 六月天婷婷| 99re公开精品免费视频| 国内一区二区免费| 伊人久日| 久超超碰| 国产乱伦性爱AV| 能在线播放的国产三级| 婷婷五月天成人网| 国产综合色精品在线观看| 北条麻妃性愛视频| 久久色激情一区二区三区| 自拍偷拍 日韩无码| 亚洲色图亚洲| 中出91视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 91蜜臀在线久久久久| 欧美日韩国产高清在线一二三区| 久久大黄片| 欧日韩一二三f区| 天美欧美国产| 欧美暴力猛交| 人人摸.人人色| 精品少妇一区二区| 囯产精品强| 亚洲棕合电彰| 超踫中文字幕| 大香蕉五月天| 日韩人妻少妇 一区二区三区| 国产91乱伦| 国产精品白丝在线播放| 国产成人91一区二区三区| 久久9免费视频| 天天操美美| 九九在线精品| www.91理论| 国产精品天堂| 男女啊啊啊| 欧美综合网站999| 青青草成人视频在线观看二区| 你操综合| 欧美综合骚| 国产激情久久| 久久久 国产精品| 国产传媒操逼视频| 亚洲图片日本AⅤ欧美在线| 国产成人在线观看网址| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 免费试看60秒| 亚洲色图欧美| 色悠久| 天美传媒婬乱在| 久久嫩草| 日韩在线国产字幕| 国产精品一区二区手机看片| 欧美国产精品久久九九| 欧美色图中文字幕| 91在线|亚| 天综合网| 欧洲中文字幕| 久久首页| 91精品久久久久久| 日欧毛片久久| 欧美性综合| 日韩在线97| 高清不卡视频| 一区二区三区四区五区高清无码永久视频 | 青青草白白色| 蜜桃精品视频一区二区三区| 久久宗合97| 精品少妇人妻一区二区三区| 四虎免费视频| 久久97视频| 91丝袜在线播放| 极品色| 强奸乱伦免费网站| 亚洲日韩美女中文字幕乱| 强奸乱伦中文字幕AV| 97国产成人精品免费视频| 综合五月婷婷| 偷窥自拍亚洲色图| 91精品国久久久久久无码| 少好三P| 九九九国产| 日韩性爱小视频| 一区二区三区黄片免费观看| 97色婷| 亚洲熟女乱色| 五十路人妻在线| 91N综合网| 日本人妻最新在线中| se01国产在线视频| 激情丁香婷婷| 97香蕉人人乳| 91操熟女视频 | 日韩熟女无码| 郑州宾馆老熟女露脸啪啪| 综合色播| 亚洲吊色| 丝袜AV一区二区三区| 爱妃国产亚洲视频中文字幕| 尤物一级在线免费观看| 江都AV在线| 超碰到97情色| 另类小说综合网| 啊v视频在线观看| av麻豆啪啪| 久操国产在线| 欧美综合娱乐久久| 亚州伊人色综台| 成人天天爽| 日本一二区不卡| 可以免费观看的日韩av毛片| 91欧美偷拍| 婷婷性网| 伦伦成年午夜免费视频| 九九热男人天堂| 久久久9 9 9精品| 久久精品人妻一区| 操一区| 九九英色视频| 超碰美国| 亚洲啪啪性视频| 91总综合网| 97九色| 欧亚性爱视频免费看| 亚洲s在线观看| 欧美日韩中文字幕不卡| 国产精品激情久久久久久久| 国产精品爽爽v| 综合熟女| 精品一区二区久久| 成人精品一区二区91毛片不卡| 狠狠干综合| 天天天堂影视日韩亚洲91| 澳门黄片一香蕉视频| 婷婷中文字幕| 国内外毛片在线观看| 大香蕉视频一二三区| 性站 | 国产女性无套 免费观看| 性色国产东北露脸精品视频| 国产美女高潮| 亚洲丝袜二区| 欲香欲色综合天天伊人| 无色无码| 国产日韩欧美| 特级特黄一级毛片免费| 成人影 天天操 亚洲| 97天天操| 久久五月天婷婷| 国产精品久久久久999| www.91人妻.com| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 97硬碰| 夜夜嗨视频| 婷婷丁香久久| 中国91AV| 超碰久热| 欧美色97| 色色色热| juliaann欧美丝袜办公室| 思思热免费视频观看| 青青欧美| 在线视频日韩欧美国产| 久9爱精品| 97鸡把在线视频| 青青草丝袜在线视频| 亚州高清av| 高潮毛片无遮挡高清免费| 人人妻人人色| 国产树林里野战在线看| 龙兴卡官方查询| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 在线看片国产精品每日更新| 亚洲老司机123专区| 亚欧视频在线| 久久久精| 婷婷久久综合| 91人人| 亚殴在线| 日韩欧美操逼xxx| 99久久久无码| 丁香五六月啪啪| 夜夜 中文视频rt| 日韩欧美俄罗斯A片| 啊啊啊在线看| 日日夜夜狠狠| 私人尤物在线精品不卡| 91网站视频在线观看| 成年人三级黄色片视频| 97久久天天综合色天天综合色电影| 久久久无码av精| 91精品国产91久久久久久久久久久久| 99无码精品| 色五月av| a男人的天堂| 国产无码精品高清| 一本大道久| 久久国产三区| 欧美日韩另类在线播放| 色眯眯av| 久久久网站| 丁香五月天婷婷姐| 熟妇的味道HD中文字幕| 日日骚一区二区三区| 日本三级久| 91影库| 色偷偷综合91久久噜噜| 无码一区二区三区四区五区六区七区八区九区十区视频 | 亚洲人91| 91在线无码精品秘 软件| 992视频一区| 欧美 亚洲 大香| 特级丰满少妇一级AAAA爱毛片| 国产精品97视频| 热天堂一区二区| 亚洲毛片一级带毛片基地| 久操频道免费在线呗看| 精品乱码久久久久| 伊人五月天| 成人无码在线超碰网| 天天欧美97| 91欧美偷拍| 另类一区| 一区操逼| 风韵犹存大大大大香蕉 | 国产二区三区免费视频| 久久视频少妇美女| 国产原创精品| 午夜精品视频777| 91东京热男人的天堂| 一本色道久久综合狠狠操| 国产怡红院| 在线无码操| 中文AV制服乱伦| 国产青青综合伊人| 欧美亚洲成人在线一区二区三区| 欧美 亚洲 综合 制服| 亚洲一区二区久久久久| 97干色| 欧美91色| 久久婷婷在线观看视频| 免费视频无码| 精品人妻一区| 91精品人| 超碰色大香蕉| 91色s| 欧美在线色图| 骚逼高潮久久精品| 亚欧韩av| xxxx网站亚洲精品| 九九九精品成人免费视频小说| 黑人综合色| 躁躁日曰躁2020| 精品 码产区一区二-1080P高清在线www-B029AV | 亚洲人91| 夜夜嗨AV蜜臀av| 99色在线视频| 欧美性爱三区二区| 欧美呦呦性爱| 亚洲精品一区二区日本| 射久久| 久热精品在线| 国产又长又大又粗的视频| 性色av一区二区| 强上我不卡卡| 男人天堂站| 久久人妻丝袜一区二区三| 亚洲精品久久久久久久蜜桃臀| 亚洲三区视频| 黄色在线网站| 操迟操逼在巾线Fre看| 精品国产三级av韩国在线| 97超碰欧美中文字幕| 青青草一区二区高清无码视频| 土豪酒店各种姿势玩弄极品幼稚| 亚洲精品1区| 人妻人人澡人人爽人人| 国产乱弄免费在线视频。 | 91视频精品| 欧洲精品一级二级精品综合视频综合 | 亚洲人码13| 久久久久久久久久久久黄色| ,国产乱人伦精品一区二区三区| 6080yy午夜理论三级一区二区三区无码| 亚洲熟女av日韩熟女| 欧日a| 日韩视频啪啪| 精品毛片久久久精品毛片| 精品亚洲国产成人精品| 亚洲人妻中文高清| 欧美久久伊人| 在免费jIzzjIzz在线视频| 91成人在线免费视频| 国产精品久久久久久久黄无码 | 亚洲国产尤物yw在线观看| 九月激情婷婷| 国产欧美岛国精品一区| 久久‘黄片视频| 福利色色| 操逼日韩无码| 鲁鲁色综合网| 好吊色一区| 热久日综合| 加勒比海成人视频网 | 日韩啪啪啪啪啪| 欧美黄页在线| 久艹伊人精品综合在线| 玖玖资源中文字幕制服丝袜| 青青伊人加勒比海| 中文字幕欧美精品亚洲日韩蜜臀| 中国少妇啪啪视频| 日本阿v天堂在线观看| 国产精品点击进入在线影院高清 | 欧美内射少妇| 欧美青青视频| 久久男人| 大象AV在线| 无码人妻精品一区二区三区99不卡| 内射小黄片| 一区二区影院| 日本黄 R色 成 人网站| 亚洲熟妇丝袜在线观看| 另类av综合久久| 蜜臀一二三区| 91日韩| 午夜福利1区2区3区| 在线观看AV片| 亚洲激情网一二三四区| 屌妞视频久久久久久久| 日韩特一级久久| 丝袜AV一区二区三区| 亚洲男人的天堂V| 九九热九九热| 97色涩| 狠狠97| 亚洲天堂2020| 尤物黄色在线观看网站| 二色av| 中文字幕av色| 少妇色综合| 日本媚薬中文字幕在线| 欧美不卡在线一区二区| 精品v日韩欧美国产| 91欧美| 美骚妇av高清在线| 日天天九九天堂666| 青娱乐淫乱1314| 骚鸭AV| 91综合色噜噜| 亚洲精品亚洲人成在线麻豆| 蜜臀久久99精品久久久老,,| 97超碰超欧美。| 男人的天堂99| 欧美性爱中文字幕无线码| h在线看免费版在线看| surenchaopeng| 国产精品夜夜| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 青青草综合在线| 欧亚无码视频| 欧美日韩久久精品爱爱| 八戒午夜福利理论片| 久久99精品视频| 欧美情色亚洲| 久草视频在线视频在线视频在线观看| 校园春色综合| 91天天美女| 国产色综合亚洲色综合吹潮| 伊人久久88国产女| 视频二区熟女人妻| 97资源视频| 欧州色图区| 99精品无码| 亚洲最新av无码成人精品区| 夜夜高潮夜夜爽| 超碰吊日色| 上海一级黄片| 亚洲中文电影| 欧美色网| 天天拍天天操| 激情文学亚洲| 天天干夜夜一操| 久久久久久91香蕉国产| 97视频在线| 91粉嫩萝控精品福利网站_精品影音先锋国 | 99re视频在线播放青草| 中文字幕欧洲有码| 亚洲囯产精品女人久久久| 亚洲熟女国产综合另类| 麻豆AV一区二区天美传媒| 97人妻免费中文字幕| 国产精品色哟哟| 翔田千里AV无码秘 三区| 大香蕉九九| 久久久91福利姬| 人妻一区视频| 91网站视频在线观看| 国产偷人伦激情在线观看| 日本三级韩三级99久久| 亚欧洲日韩国产精品| 睡产熟女乱伦| 91国产伊人大香蕉| 少妇高潮对白在线观看| 91N综合网在线| 黑人狂躁日本妞一区二区三区| 天天碰操中国年青熟妇| 精品人妻视频入口| 91麻豆天美国产| 亚洲码在线中文在线观看| 人妻在线臀日韩| 久久久新亚洲AV| 蜜臀精品1区2区| 伊人国产成人av网站| 麻豆久久视频在线地址| 97精品免费| 精品91摸| 很很操在线| 欧美性,色九九| se吧提供国产乱老熟视频胖女人| 久久久久久久久久久久久久久乱码| 97精品久久| 台欧久久精品视频| 欧美成年人性爱视频免费观看| 中文字幕一二三区| 一级二级三级黑人无码| 亚洲熟女一区| 91天堂色男人的天堂| 噜噜噜噜天天狠狠| 爽爽淫人网| 中文一区二区三区影院| 日韩二三区| 人人操肉肉| 超碰碰小说97| 九九av| 国产精品操| 嗯嗯啊啊用力视频免费| 岛国激情视频在线观看| 99久久久无码国产精品性男| 97超碰伊人| 久久草大香蕉| 3PAV乱伦视频| 欧美国产一区二区三区麻豆传媒| 精品亚洲黄色片 国产精品导航一区二区 | 日韩成人高清一区二区| 操一区| 国产懂色精品国产av| 少妇三p| 亚洲s在线观看| 岛国色情视频在线观看| 中文字幕精品三级久久久| 狼人久草| 边做饭边操逼逼| 欧美激情久久久久| 亚洲男人的天堂亚洲| 国产无码三级视频在线观看| 97在线资源| 日日操天天操| 久久国产乱子伦精品免费女人| 日夜尻逼网| 超AV色女| 色综合久久88色综合久久天天| 欧美综合天堂| 欧美另类自拍 | 四虎国产精品永久在线囯在线| 北京美女一区二区| 无码伊人久久大杳蕉中文无码| 天天网综合| 精品999日本| 91丨九色丨东北熟女| 日本爽爽爽爽爽爽免费视频| 操死我了啊啊啊| 九九热精品免费视频| 亚洲日韩美国人妻| 91老女人| 插B在线观看| 久久的网站啊啊啊啊啊| 日韩性爱小视频在线观看| av三级电影在线播放| 人人操人人射人人干| 欧美日韩99精品麻豆传媒| 久久久久亚洲AV无码专区少妇| 九九九九亚洲| 蜜桃久久久久久久久久久久| 加勒比无码一区二区三区| 激情网色| 中文字幕蜜乳av| 骚逼自拍99| 色九九九| 五月天激情网站| 欧美aaaaaaa| 亚洲天天综合| 人妖欧美一区二区| 久久久啊啊| 日本精品中文字幕视频| 亚洲国产97在线精品一区| 国产肏屁眼视频| 大奶啊啊好爽| 4tube欧美女厕所| 9久精品视频在线观看| 精品人妻一区二区三区-国产精品| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 欧美78| 天天干天天日天天射黄色| 亚欧高清在线| 曰韩精品视频一区二区| 风月影院十八禁| 亚洲天天天| 91欧美另类| 1024亚洲中文字幕久在线看片你懂的| 中文字幕在线高清男人的天堂| 午夜超爽| 女欧美一区二三区| 4虎在线观看| 超碰97人人乐| 欧美91久久久久| 老熟妇综合| 91啪9色| 天天做天天爱| 国产伦精品一区二区三区在线观| 黄片com.| 人人 操人人 操人人| 人人弄人人摸| 欧美影院一区二区三区| 久久久久久九| 97在线观| 欧美丝袜91| 一区二区三区在线日韩影院观看| 加勒比东京热五月天天堂网| 亚洲吊色| 伊人国产视频| 校园春色综合色| 爱欲AV| 日韩一999精品| 日韩欧美视频青青| 亚洲欧美精品一区天堂久久 | 久久久久国产精品人妻aⅴ天堂| 中文字幕女同在线| 亚洲和欧美裸体美女双飞视频| 色女99一级片在线观看| 激情图片伦理国产一区二区日韩| 97色插| 99国产精品在线观看| 人妻天天爽夜夜爽爽| 大香蕉AV丝袜| 久九九九九九九热| 三级片大波波| 免费人人搞97| 99www.bibizy香蕉资源国产一区二区三区高清 | 91逼逼女人91| 99999精品视频| 精品久久99| 亚洲国产一级中文综合久久天堂在线免费观看| 九九久久首页| 青青草视频久久久久| 黄色十八禁网站| 91/欧美| 中亚黄色三级大片| 茄子社区国产精品| 麻豆色约约| 老熟妇91| 日本淫乱女一区二区三区视频| 亚洲欧美天堂| 色哟哟AⅤ| 日韩99精品视频综合区| 中文字幕一区二区韩| 日韩性爱再线视频| 超碰在线99| 久7色| 欧美精品91| 熟女网站最新| 亚洲图片视频小说| 男人久久天堂| 亚洲无码太久| 狠狠色狠狠色狠狠五月| 天天操天天舔| 花野真衣| 欧美在线55555| 色五月AV在线| 好属操| 国产第12页| 久久久国产亚洲精品系列| 乱伦熟女区| 嗯嗯啊在线视频| 欧美少妇第一页| 91欧美巨乳| 91亚洲欧洲| 色欲无码人妻日韩欧美精品| 99re国产中文字幕| 亚洲欧美九九九| 九色 蝌蚪 熟女自| 日本欧美中文字幕| 男人高清无码一区二区| 色色99| 色网在线| 久久超碰com| 欧美黄色片在线播放| 999岛国大片| 97色在线观看| 成人在线午夜视频一区| 熟女精品日韩一区二区三区| 影音先锋每日最新资源在线观看| 色官网在线| 亚洲美欧999| 欧洲色综合| 国产精品视频自拍在线| 99精品免费| 日本最新免费韩国1区2区视频播放| 精品美女少妇一区二区| 精品毛片av一区二区| 首页亚洲国产高跟丝袜诱惑视频| 牛牛久久国产精品视频一二三| 天天干18禁| 亚洲国产精品成人无码久久久| 九九热男人天堂| 啪啪91| 一区,二区,三区视频| 校园春色亚洲色图| 伊人五月天激情| 久久久久久大| 强乱老妇中文字幕| 奇米四色影视777久久久| 亚洲天堂男人在线| 日韩二区三四区五区六区在线看| 国产黄色视频久久| 99激情| 老鸭窝日丰县女人| 欧洲亚洲国产综合在线| 少妇二级| 尤物AV免费网站| 性暴力欧美猛交在线直播| 小泽玛利亚一二三| 欧美黑人168页欧美黑人167| 欧美爱三级日韩久久| baisiav| 伊人九九| 亚洲乱码尤物193YW| 91久久堂| 超碰精品日韩欧美国产| 婷婷五月天激情小说| 高清不卡 中文 人妻| 午夜超爽| 欧美老妇综合网| 九九九热| 香蕉在线一区二区三区| 天天欧美97| 国产乱人伦AVA麻豆软件.| 啊啊啊啊二区好大| 亚洲无码视频免费在线观看网址!| 激情五月综合网| 另类图片五月天| 亚洲av影院在线观看| 久操在97| 小日子操bb在线看| 色综合加勒比四四季| 亚洲?V高清一区二区三区尤物| 99热官网| 美女好片色日本| 在免费jIzzjIzz在线视频| 青青青青草av在线观看| 91肉丝| 综合影院亚洲| 久久超碰98| 伊人精品久久网站| 超碰综合色| 秋霞一集毛片观看| 性色avv| 人妻精品一区二区三区| 99无码视频| 舔人妻中文免费视频| 717影院理论午夜伦八戒| 五月天九九日国产精品一区二区三区| 超碰成人公开| 97精品久久久久中文字幕| 无码人妻精品一区二区三区99不卡| 骚乳在线| 在线视频 亚洲精品| 久久久久中出| 91一区二区三区蜜桃| 国产在线不卡导航| 日本性感人妻91| 18禁在线视频| 老师充足的奶水小说| 一级片视频啪啪| 亚洲欧洲精品成人| 91午夜无码| 欧色性第一页| 91成人在线免费视频| 日韩八十路老熟女| 操逼网站地址| 国产2.3.4区| 久久精品国产精品亚洲艾通辽熟妇| 亚洲人久久久久日| 91大胆欧美| 91在线精品一区二区三区| 97在线观看免费视频| 嗯嗯啊在线视频| 探花视频免费观看国产专区| 久久熟女人| 在线观看一级α片刺激高潮视频| 精品然女一区二区| 国产日韩区| 中出人妻中文字幕91在线| 国产美女mm131爽爽爽爽| 日韩电影中文字幕| av大香蕉| 精品无码欧美三级| 亚洲色图欧美另类在线| 91艹B视频| 成人天天爽| 国产特级毛片AAAAAA高潮流水 | 色噜噜人妻丝袜AV资源| av在线观看不卡网站| 中文字幕日产av人| 亚洲免费在线探花| 超碰在线日韩一区| 精品超碰中文在线| 最新国内自拍av免费| 九九自拍伦理| 五月婷婷激情综合| 91啦人妻| 999九九精品| AV电影在线播放| 欧美激情专区| 日韩电影天堂视频一区二区| 亚欧韩av| 久久无码精品| 日逼五月天| 国产偷拍自拍在线视频| 九热中文字幕| 日日做夜狠狠爱欧美黑人| 久久久精品视频免费观看| 综合欧美亚洲| 熟妇艹鸡八| 亚洲欧美成人在线| 欧美日韩午夜精品一区二区三区| 色综合99999| 综合婷婷| 亚洲国产美女久久久久| 久久综合久色欧美综合狠狠 | 久操网线| 免费视频一二三区| 精品国产国产AV| 99精品网| 亚洲密乳AV| 一本色道人妻久久| 超碰在线97国产| 亚洲色综合| 国产成人精品必看| 干美女人妻| 97激情97激情| 久99| av在线播放国产一区| 久久αⅴ| 久艹伊人精品综合在线| 九九热精品视频六| 亚洲在高跟鞋自慰久久在色线| 自拍鲍鱼一区在线高清观看免费| 立川理惠被中出无码| 97在线青| 91久久精品国产| 青青操狠狠撩| 欧美gv在线观看| henhen91| 噜噜噜亚洲精品| 天天综合亚在线| 国产超碰人人爽人人做| 大香蕉伊人网| 日韩天天综合| 天操老女人| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 99国产精品视频尤物| 亚洲色图欧美激情| 偷拍片久久| 双插在线| 爆乳免费黄网站| 欧美在线观看综合国产| 精品无码不卡视频| 国产综合色精品在线观看| 色噜噜人妻av中文字幕| 伊人991| 免费观看有码高清视频| 国产精品视频精品一二| 日韩卡一卡二卡三在线| 欧美成人一级麻豆| 欧美碰碰综合色| 精品无码久久久久| 天天干天天日天天射黄色| 成片免费观看视频大全| 青娱乐国产精品| 黄色片一区二区三区四区五区| 97在线观看| 精品一区二区三区18| 精久久久| 国产综合网站在线播放| www超碰| 欧美日本中字另类在线| 国产无码成人无码| 青青草原香蕉日本Ap| 东京热熟女亚洲视频网站| 小草三级久久观看| 五月婷婷综合网| 国产无马av| 亚洲精品亚洲人成在线麻豆| 尤物黄色在线观看网站| 天天看天天干| 成人久久久| 九热久| 亚洲色图第一页| 狠狠做深爱婷婷久久二区| 美女主播色欲91抠b在线播放| 欧美人妻精品| 亚洲……91| 日日狠狠久久偷偷色综合免费| 日本性爱不卡视频| 丰满岳乱妇一区二区三区| 日韩视频精品在线观看| 久久99国产精品| 久久日韩肥臀| 欧日韩一二三f区| 精品无码产区一区二| 欧美变态激情网| 九X超碰| 伊人久久久日韩一区| 日韩9999| 日本999精品视频| 久久国99999| 1二区9| 熟妇艹鸡八| 97国产天堂岛| 69超碰综合| 综合国产97| 蜜桃精久三区| 午夜成人福利影视| 国产精品高潮久久AV| 国产 大胆 对白| 亚洲少妇激情视频| 美女91av| 国产蜜臀精品一区二区尤物| 欧美日韩国产色五月综合在线| 久超碰这里只有精品| 91美女精品| 操熟女91| 99热在线观看| 97超碰逼| 好看的91视频| 龙兴卡官方查询| 91久久国产综合精品| 肉丝中文无码高清| 妇女一区二区三区| 国产深喉视频一区二区| AVE乱伦| 亚洲欧洲综合成人av一区| 变态乱伦伪娘灌肠一区二区| 玖玖玖玖精品国产剧情| 五月天婷婷久久| 九九热精品| 欧美日韩国产中文精品字幕自在自线, | 日韩无码a片| blacked精品一区国产| 亚洲九区| 亚洲熟妇乱女区二区三区| 亚洲中文字幕乱码无码一区二区 | 国产白丝网站| 亚州色综合| 欧美日韩*字幕一区| 欧美成人AⅤ大片在线观看| 亚洲欧美日韩精品久久久一区二区| 亚洲色综合| 91九色丨国产丨爆乳| 性性久久| 狠狠入| 亚洲成人精品在线一区| 久久社区一区二区三区| 91丨九色丨熟女高潮| 亚洲熟女乱色| 久久亚码| 97超碰欧美手机| 在线综合 亚洲 欧美中文字幕| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日本精品人妻少妇一区二区| 欧美大战久久久伊人| 中文字幕视频二区| 亚洲人成网站7777| 一级久久性爱视频| 北京专精特新企业招聘信息| 日韩精品操少妇| juliaann欧美丝袜办公室| 蜜乳AV.COM| 男人的天堂一区三区| 有码人妻系列| 欧美图片校园春色| 日韩成人高清一区二区| 成人性爱全视频观看| 北条麻妃99精品青青久久| 日韩资源网| 国内一区二区免费| 睡产熟女乱伦| 97玖玖人妻| 久久久天堂| 午夜激情成人在线观看| 丁香色色网| 96国产污污污丝袜| 日本精品五区| 亚洲熟女中文字幕在线| 男人的天堂成人的社区| 亚洲资源吧| 日韩性爱毛片操骚逼| 伊人99热| 午夜无码熟妇丰满人妻| A级片一区| 午夜福利成人免费视频| 97色色色综合网站| 精品国产乱码久久久A| 免费的黄片有限公司| 亚欧精品久久久久久久久久久| 狠操91,com| 男人天堂网站| 亚洲午夜av| 伊人精品国产| 九九九热| 婷婷久月| 少妇丝袜在线观看AV| 亚洲人体视频在线观看| 久久精彩视频| 午夜精品人妻二区三区| AV乱伦专区| 东京热亚洲一区二区| 97久久国产精品| 日韩欧美成人综合在线| 五月丁香六月婷| 日韩人妻丝袜美腿中文| 人人妻人人爽 97人人看碰人免费公开视频| 国产剧情一区在线观看| 亚洲女人毛茸茸91| 中文字幕一区二区三区字幕| 淫妻综合网| 国产精品无码论坛| 九九成人精品| 呦呦一区| 日本熟妇一区二区三区| 亚州欧美在线| 国产做?爰片久久毛片?片美国| 在线观看A啊啊啊| 囯产精品久久久久久久久久梁医生 | av草草在线电影| 人人操人人干网页| 欧美色一二三| 欧美激情一区| 色综合一区二区三巨| 天天欧美| 大地资源在线观看中文第二页| 中文字幕诱惑制服人妻丝袜美丝袜美 | 国产精品麻豆免费视频| 日韩99神马视频播放片在线播放| 一区二区影视| 激情丁香五月| 久久超碰av在线| 国产精品一级毛片不卡视| 精品美女久久一二三| 少妇人妻好深太紧了vr91| 青青色综合| 综合久久久久久久久91| 色狠狠综合噜一二三区| 亚州欧美在线| 综合色播| 欧美 色 亚洲| 中文字幕 人妻不满 在线视频| 亚洲97资源| 欧美激情综合| 日韩熟女精一区二区三区不卡| 色色亚洲| 狠久久| 人妻久久久| 天天肏天天干| 激情自拍 校园春色| 啊啊啊好想要| 国产久久视频| 秋霞一级A片黄色视频| 中文久久一区| 午夜福利av电影在线| 久久精品视频一区三区小泽玛利亚| 国产真乱mangent| 十八禁黄色成人网站观看| 无码人妻精品一区二区中文 | 超碰美国| 99久久com免费视频′| 欧美夜夜草视频| 亚州色图第三区| 婷婷色综合欧美日韩| 欧美综合加勒比在线| 黑人白女精品一区| 欧美色图下一页| 中国一区二区亚洲人妻| 亚洲色图 91| 亚洲日产专区| 国产精品美女久久久久久网站| 人人妻人人色| 在线精品福利免费播放| 欧美的精品的视频| 天天综合91在线|