日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

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

多Agent串行流水線:節(jié)點(diǎn)自治與狀態(tài)外置的斷點(diǎn)續(xù)跑實(shí)踐 1. 為什么要把一個任務(wù)拆成 Pipeline 節(jié)點(diǎn)鏈1.1 從一把梭到分段跑的思維轉(zhuǎn)變最早做自動化任務(wù)的時候我的習(xí)慣是把所有邏輯塞進(jìn)一個函數(shù)里讀數(shù)據(jù)、調(diào)模型、處理結(jié)果、寫文件一氣呵成。跑通了很爽但一旦中間某一步失敗整個流程就得從頭再來。最要命的是調(diào)模型那一步一次調(diào)用可能幾十秒甚至幾分鐘重跑一次成本極高而且前面已經(jīng)成功的結(jié)果全部作廢。后來我開始接觸多 Agent 協(xié)作的場景發(fā)現(xiàn)問題的本質(zhì)不是能不能跑通而是跑掛了之后怎么辦。一個任務(wù)如果涉及三到五個 Agent 依次處理每個 Agent 都有自己的輸入輸出和失敗模式把它們?nèi)喑梢慧绱a調(diào)試和維護(hù)都是災(zāi)難。于是就有了串行流水線這個思路把一個大任務(wù)拆成若干個獨(dú)立的 Pipeline 節(jié)點(diǎn)每個節(jié)點(diǎn)只負(fù)責(zé)一件事節(jié)點(diǎn)之間通過明確的數(shù)據(jù)契約傳遞結(jié)果任何一個節(jié)點(diǎn)失敗都可以單獨(dú)重試整個流水線可以從斷點(diǎn)續(xù)跑。這個思路聽起來簡單但真正落地的時候有一堆細(xì)節(jié)要處理節(jié)點(diǎn)之間怎么傳數(shù)據(jù)、失敗怎么判定、重試幾次、狀態(tài)存哪里、怎么保證冪等。下面我把自己踩過的坑和最終跑通的方案完整拆一遍。1.2 什么樣的場景適合這種架構(gòu)不是所有任務(wù)都值得上流水線。如果一個任務(wù)總耗時不到幾秒、失敗率極低、重跑成本可以忽略那直接寫一個函數(shù)就夠了引入 Pipeline 框架反而是過度設(shè)計(jì)。真正適合拆節(jié)點(diǎn)鏈的場景通常滿足這幾個特征單次執(zhí)行耗時長整個任務(wù)跑完要幾分鐘甚至更久重跑的時間成本讓人心疼。步驟之間有明顯的階段劃分比如采集→清洗→分析→生成→校驗(yàn)這種天然的分段。某些步驟失敗率高或成本高比如調(diào)用外部模型、訪問不穩(wěn)定的接口這些步驟需要獨(dú)立的重試策略。需要人工介入中間結(jié)果有時候跑完前兩步想先看看結(jié)果對不對再決定要不要繼續(xù)。多個 Agent 各司其職不同節(jié)點(diǎn)可能由不同的 Agent 負(fù)責(zé)職責(zé)邊界清晰。我做過的一個典型項(xiàng)目是內(nèi)容處理流水線第一個 Agent 負(fù)責(zé)從原始素材里抽取結(jié)構(gòu)化信息第二個 Agent 基于結(jié)構(gòu)化信息做分析和歸納第三個 Agent 生成最終文案第四個 Agent 做質(zhì)量校驗(yàn)。四個節(jié)點(diǎn)串行執(zhí)行每個節(jié)點(diǎn)都可能失敗每個節(jié)點(diǎn)的輸出都是下一個節(jié)點(diǎn)的輸入。這種場景如果不用 Pipeline調(diào)試起來簡直是噩夢。1.3 核心設(shè)計(jì)原則節(jié)點(diǎn)自治 狀態(tài)外置整個架構(gòu)最關(guān)鍵的兩個設(shè)計(jì)決策我總結(jié)成八個字節(jié)點(diǎn)自治狀態(tài)外置。節(jié)點(diǎn)自治的意思是每個節(jié)點(diǎn)是一個獨(dú)立的執(zhí)行單元它不關(guān)心自己前面是誰、后面是誰只關(guān)心給我輸入我還你輸出。節(jié)點(diǎn)內(nèi)部可以有自己的重試邏輯、超時控制、異常處理對外只暴露一個統(tǒng)一的執(zhí)行接口。這樣做的好處是節(jié)點(diǎn)可以單獨(dú)測試、單獨(dú)替換、單獨(dú)優(yōu)化不會牽一發(fā)而動全身。狀態(tài)外置的意思是流水線的執(zhí)行狀態(tài)不存在內(nèi)存里而是持久化到外部存儲。每個節(jié)點(diǎn)執(zhí)行完就把結(jié)果和狀態(tài)寫下來下一個節(jié)點(diǎn)從存儲里讀。這樣即使整個進(jìn)程崩潰重啟也能從上次成功的節(jié)點(diǎn)繼續(xù)跑而不是從頭再來。狀態(tài)外置還帶來一個額外好處你可以隨時查看每個節(jié)點(diǎn)的中間產(chǎn)物排查問題的時候一目了然。這兩個原則說起來容易做起來有很多取舍。比如狀態(tài)存哪里存文件、存數(shù)據(jù)庫還是存對象存儲節(jié)點(diǎn)之間的數(shù)據(jù)契約怎么定義用 JSON 還是別的格式重試的時候怎么保證不重復(fù)執(zhí)行有副作用的操作這些后面會逐個展開。2. 節(jié)點(diǎn)鏈的核心細(xì)節(jié)與實(shí)操要點(diǎn)2.1 節(jié)點(diǎn)數(shù)據(jù)契約的設(shè)計(jì)節(jié)點(diǎn)之間傳遞的數(shù)據(jù)格式是整個流水線的接口協(xié)議。這個協(xié)議設(shè)計(jì)得好后面擴(kuò)展和維護(hù)都輕松設(shè)計(jì)得爛改一個字段就要動好幾個節(jié)點(diǎn)。我的做法是定義一個統(tǒng)一的節(jié)點(diǎn)輸出結(jié)構(gòu)所有節(jié)點(diǎn)都必須遵守。這個結(jié)構(gòu)至少包含四個部分狀態(tài)標(biāo)識、業(yè)務(wù)數(shù)據(jù)、元信息、錯誤信息。狀態(tài)標(biāo)識告訴調(diào)度器這個節(jié)點(diǎn)是成功還是失敗業(yè)務(wù)數(shù)據(jù)是給下一個節(jié)點(diǎn)用的實(shí)際內(nèi)容元信息記錄執(zhí)行時間、重試次數(shù)、使用的模型版本等錯誤信息在失敗時填充方便排查。# 節(jié)點(diǎn)輸出的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)示意 node_output { status: success, # success / failed / skipped data: { # 業(yè)務(wù)數(shù)據(jù)下一個節(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 # 失敗時填 {type: ..., message: ...} }這里有個容易忽略的點(diǎn)業(yè)務(wù)數(shù)據(jù)要盡量保持純數(shù)據(jù)不要塞入任何跟執(zhí)行環(huán)境相關(guān)的東西比如文件句柄、數(shù)據(jù)庫連接、臨時路徑。這些應(yīng)該放在元信息里或者干脆不傳。原因是業(yè)務(wù)數(shù)據(jù)需要被序列化存儲如果里面有不可序列化的對象整個狀態(tài)持久化就會失敗。我早期就犯過這個錯把一個自定義對象塞進(jìn) data 里結(jié)果存的時候直接報(bào)錯排查了半天。另一個要點(diǎn)是數(shù)據(jù)契約要向前兼容。意思是當(dāng)你在某個節(jié)點(diǎn)新增一個字段時不應(yīng)該導(dǎo)致下游節(jié)點(diǎn)崩潰。做法是下游節(jié)點(diǎn)讀取字段時永遠(yuǎn)用取不到就給默認(rèn)值的方式而不是假設(shè)字段一定存在。這個習(xí)慣能省掉大量因?yàn)榘姹静灰恢聦?dǎo)致的詭異 bug。2.2 狀態(tài)持久化的選型與實(shí)現(xiàn)狀態(tài)存哪里直接決定了流水線的可靠性和復(fù)雜度。我試過三種方案各有適用場景。方案一本地文件系統(tǒng)。每個節(jié)點(diǎn)的輸出寫成一個 JSON 文件文件名帶上節(jié)點(diǎn)名和序號。優(yōu)點(diǎn)是零依賴、實(shí)現(xiàn)簡單、方便人工查看。缺點(diǎn)是并發(fā)能力差多進(jìn)程同時寫可能沖突而且換臺機(jī)器就跑不了。適合單機(jī)、單人使用的小型流水線。方案二關(guān)系型數(shù)據(jù)庫。建一張表字段包括流水線 ID、節(jié)點(diǎn)名、狀態(tài)、輸出數(shù)據(jù)、時間戳。優(yōu)點(diǎn)是查詢方便、支持并發(fā)、事務(wù)保證一致性。缺點(diǎn)是數(shù)據(jù)量大的時候 JSON 字段存起來有點(diǎn)笨重而且需要維護(hù)數(shù)據(jù)庫。適合需要多任務(wù)并行、需要查詢歷史記錄的場景。方案三對象存儲 輕量索引。大塊的業(yè)務(wù)數(shù)據(jù)存對象存儲狀態(tài)和索引存數(shù)據(jù)庫或緩存。優(yōu)點(diǎn)是擴(kuò)展性好、存儲成本低。缺點(diǎn)是架構(gòu)復(fù)雜需要處理對象存儲的最終一致性問題。適合數(shù)據(jù)量大、需要長期保存中間產(chǎn)物的場景。我目前的主力方案是方案二用一張簡單的表搞定。表結(jié)構(gòu)大概是這樣字段名類型說明pipeline_idstring流水線實(shí)例唯一標(biāo)識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)建時間updated_atdatetime更新時間關(guān)鍵點(diǎn)是pipeline_id node_name 建唯一索引這樣重試的時候可以直接 upsert不會產(chǎn)生重復(fù)記錄。另外 status 字段要支持running這個中間態(tài)用來標(biāo)記節(jié)點(diǎn)正在執(zhí)行防止重復(fù)觸發(fā)。注意寫狀態(tài)的時候一定要先寫running再執(zhí)行節(jié)點(diǎn)邏輯執(zhí)行完再更新為success或failed。如果進(jìn)程在執(zhí)行過程中崩潰重啟后看到running狀態(tài)的節(jié)點(diǎn)就知道這個節(jié)點(diǎn)可能執(zhí)行了一半需要根據(jù)冪等性決定是重試還是跳過。2.3 重試策略的粒度控制重試不是簡單地失敗了再跑一次里面有很多講究。我的經(jīng)驗(yàn)是把重試分成三個層次每個層次處理不同的問題。第一層節(jié)點(diǎn)內(nèi)部重試。針對那些瞬時故障比如網(wǎng)絡(luò)抖動、接口限流。這種重試在節(jié)點(diǎn)內(nèi)部完成對調(diào)度器透明。通常用指數(shù)退避第一次等 1 秒第二次等 2 秒第三次等 4 秒最多重試 3 次。超過 3 次還失敗就把節(jié)點(diǎn)標(biāo)記為 failed交給上層處理。第二層節(jié)點(diǎn)級重試。當(dāng)節(jié)點(diǎn)內(nèi)部重試耗盡后調(diào)度器可以決定是否重新執(zhí)行整個節(jié)點(diǎn)。這一層重試通常針對那些重跑一次可能就好了的情況比如模型返回了不合規(guī)的內(nèi)容、外部服務(wù)臨時不可用。節(jié)點(diǎn)級重試要配合冪等性設(shè)計(jì)確保重復(fù)執(zhí)行不會產(chǎn)生副作用。第三層流水線級重試。從某個失敗的節(jié)點(diǎn)開始重新跑后續(xù)所有節(jié)點(diǎn)。這一層通常由人工觸發(fā)或者由定時任務(wù)在檢測到失敗后自動觸發(fā)。流水線級重試的關(guān)鍵是從斷點(diǎn)續(xù)跑而不是從頭再來。# 重試策略配置示意 retry_policy { extract_agent: { max_internal_retry: 3, # 節(jié)點(diǎn)內(nèi)部重試次數(shù) internal_backoff: exponential, max_node_retry: 2, # 節(jié)點(diǎn)級重試次數(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] } }這里有個關(guān)鍵判斷哪些錯誤值得重試哪些不值得。超時、限流、臨時不可用這些值得重試參數(shù)錯誤、數(shù)據(jù)格式錯誤、權(quán)限不足這些重試多少次都沒用應(yīng)該直接失敗并報(bào)警。我見過有人把所有錯誤都無腦重試結(jié)果一個明顯的配置錯誤被重試了十幾次浪費(fèi)了大量時間和資源。2.4 冪等性重試的安全底線冪等性是重試的前提。如果一個操作重復(fù)執(zhí)行會產(chǎn)生副作用那重試就是危險(xiǎn)的。比如給用戶發(fā)通知這個操作重試一次就多發(fā)一次用戶會收到重復(fù)消息。保證冪等的常見做法有三種。第一種是天然冪等比如把某個字段更新為固定值執(zhí)行多少次結(jié)果都一樣。第二種是去重標(biāo)識每次執(zhí)行前先檢查這個操作是否已經(jīng)做過用一個唯一 ID 標(biāo)記。第三種是狀態(tài)機(jī)約束只有處于特定狀態(tài)時才允許執(zhí)行執(zhí)行后狀態(tài)改變重復(fù)執(zhí)行會被拒絕。在流水線場景里我通常給每個節(jié)點(diǎn)操作分配一個基于 pipeline_id 和 node_name 生成的冪等鍵。節(jié)點(diǎn)執(zhí)行前先查這個鍵對應(yīng)的記錄如果已經(jīng)成功執(zhí)行過就直接返回上次的結(jié)果不再重復(fù)執(zhí)行。這個檢查要放在節(jié)點(diǎn)邏輯的最前面而且要保證檢查和執(zhí)行之間的原子性否則并發(fā)場景下還是可能重復(fù)。實(shí)操心得冪等鍵的生成要穩(wěn)定不能包含時間戳或隨機(jī)數(shù)否則每次生成的鍵都不一樣去重就失效了。我一般用pipeline_id : node_name作為冪等鍵簡單可靠。3. 完整實(shí)操流程與核心環(huán)節(jié)實(shí)現(xiàn)3.1 流水線調(diào)度器的骨架實(shí)現(xiàn)調(diào)度器是整個流水線的大腦它負(fù)責(zé)按順序執(zhí)行節(jié)點(diǎn)、處理失敗、管理狀態(tài)。我寫了一個簡化版的調(diào)度器骨架核心邏輯不到一百行但覆蓋了主要場景。class PipelineRunner: def __init__(self, nodes, state_store, retry_policy): self.nodes nodes # 節(jié)點(diǎn)列表按執(zhí)行順序排列 self.state_store state_store # 狀態(tài)存儲 self.retry_policy retry_policy def run(self, pipeline_id, initial_input): # 從狀態(tài)存儲里讀取已完成的節(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í)行過直接讀取上次的輸出 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這個骨架有幾個設(shè)計(jì)點(diǎn)值得說明。第一斷點(diǎn)續(xù)跑是通過讀取已完成節(jié)點(diǎn)實(shí)現(xiàn)的每次 run 都先查一遍哪些節(jié)點(diǎn)已經(jīng)成功跳過它們。第二節(jié)點(diǎn)執(zhí)行前先標(biāo)記 running這樣如果進(jìn)程崩潰重啟后能看到哪些節(jié)點(diǎn)處于中間狀態(tài)。第三重試邏輯封裝在 _execute_with_retry 里節(jié)點(diǎn)本身不需要關(guān)心重試。3.2 單個節(jié)點(diǎn)的標(biāo)準(zhǔn)寫法每個節(jié)點(diǎn)都要遵循統(tǒng)一的接口這樣調(diào)度器才能無差別地調(diào)用它們。我定義的節(jié)點(diǎn)接口很簡單一個 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)} }這里有個細(xì)節(jié)節(jié)點(diǎn)內(nèi)部要做結(jié)果校驗(yàn)。模型調(diào)用成功不代表結(jié)果可用可能返回了空內(nèi)容、格式錯誤、或者明顯不合理的結(jié)果。這些情況應(yīng)該在節(jié)點(diǎn)內(nèi)部就判定為失敗觸發(fā)重試而不是把垃圾數(shù)據(jù)傳給下游。我一般會在節(jié)點(diǎn)里加幾個斷言比如關(guān)鍵字段不能為空、結(jié)果長度在合理范圍內(nèi)。另一個細(xì)節(jié)是異常要捕獲并轉(zhuǎn)成標(biāo)準(zhǔn)格式不要讓異常直接拋到調(diào)度器。這樣調(diào)度器處理起來統(tǒng)一而且錯誤信息能被完整記錄到狀態(tài)里。當(dāng)然如果是那種完全無法恢復(fù)的異常比如配置錯誤也可以選擇直接拋出讓調(diào)度器快速失敗。3.3 節(jié)點(diǎn)間的數(shù)據(jù)傳遞與轉(zhuǎn)換節(jié)點(diǎn)之間的數(shù)據(jù)傳遞看起來簡單實(shí)際上是最容易出問題的地方。上游節(jié)點(diǎn)輸出的數(shù)據(jù)結(jié)構(gòu)下游節(jié)點(diǎn)不一定能直接用中間往往需要一層轉(zhuǎn)換。我的做法是在每個節(jié)點(diǎn)的入口處做一次輸入適配。下游節(jié)點(diǎn)不直接依賴上游節(jié)點(diǎn)的原始輸出而是通過一個適配函數(shù)把上游輸出轉(zhuǎn)成自己需要的格式。這樣做的好處是當(dāng)上游節(jié)點(diǎn)的輸出結(jié)構(gòu)變化時只需要改適配函數(shù)不用動下游節(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字段沒生成導(dǎo)致下游需要的字段不存在。適配函數(shù)里用.get()加默認(rèn)值比直接索引安全得多。我踩過的坑就是上游改了字段名下游直接 KeyError整個流水線掛掉排查了半天才發(fā)現(xiàn)是字段名對不上。還有一個實(shí)踐是在適配函數(shù)里做數(shù)據(jù)量控制。上游可能輸出了很長的文本下游如果直接全量處理可能超出模型的上下文限制。適配函數(shù)里可以截?cái)唷⒄?、或者只取關(guān)鍵部分。這個邏輯放在適配層比放在節(jié)點(diǎn)內(nèi)部更清晰。3.4 斷點(diǎn)續(xù)跑的完整驗(yàn)證斷點(diǎn)續(xù)跑是這套架構(gòu)的核心價值但驗(yàn)證它是否真的工作需要專門設(shè)計(jì)測試。我的測試方法是在流水線跑到中間某個節(jié)點(diǎn)時人為殺掉進(jìn)程然后重新啟動看它是否從斷點(diǎn)繼續(xù)而不是從頭再來。具體操作是在第三個節(jié)點(diǎn)執(zhí)行前加一個time.sleep(30)然后在 sleep 期間手動 kill 進(jìn)程。重啟后觀察日志如果前兩個節(jié)點(diǎn)被跳過、直接從第三個節(jié)點(diǎn)開始說明斷點(diǎn)續(xù)跑生效了。這個測試我建議每個流水線都做一遍因?yàn)閿帱c(diǎn)續(xù)跑的邏輯很容易因?yàn)闋顟B(tài)存儲的 bug 而失效。驗(yàn)證的時候要特別注意狀態(tài)寫入的時機(jī)。如果節(jié)點(diǎn)執(zhí)行完了但狀態(tài)還沒寫入就崩潰了重啟后這個節(jié)點(diǎn)會被重新執(zhí)行。這本身不是問題只要冪等但會導(dǎo)致重復(fù)計(jì)算。更糟的情況是狀態(tài)寫入了但節(jié)點(diǎn)實(shí)際沒執(zhí)行完重啟后節(jié)點(diǎn)被跳過結(jié)果就是數(shù)據(jù)不完整。所以狀態(tài)寫入必須放在節(jié)點(diǎn)執(zhí)行成功之后而且要保證寫入的原子性。實(shí)操心得我習(xí)慣在狀態(tài)里額外記錄一個節(jié)點(diǎn)輸出摘要比如輸出數(shù)據(jù)的哈希值。重啟后如果發(fā)現(xiàn)狀態(tài)是 success 但摘要對不上說明狀態(tài)可能被污染了這時候可以選擇強(qiáng)制重跑這個節(jié)點(diǎn)。這個檢查能發(fā)現(xiàn)一些隱蔽的狀態(tài)不一致問題。4. 常見問題與排查技巧實(shí)錄4.1 節(jié)點(diǎn)卡死與超時處理節(jié)點(diǎn)卡死是流水線最常見的問題之一。表現(xiàn)是某個節(jié)點(diǎn)一直處于 running 狀態(tài)既不成功也不失敗整個流水線就停在那里。原因通常是節(jié)點(diǎn)內(nèi)部有阻塞操作比如網(wǎng)絡(luò)請求沒有超時設(shè)置、模型調(diào)用卡住、或者死循環(huán)。解決方法是給每個節(jié)點(diǎn)加超時控制。超時控制要分兩層節(jié)點(diǎn)內(nèi)部的操作超時和調(diào)度器層面的節(jié)點(diǎn)超時。節(jié)點(diǎn)內(nèi)部的操作超時比如 HTTP 請求設(shè)置 30 秒超時模型調(diào)用設(shè)置 120 秒超時。調(diào)度器層面的節(jié)點(diǎn)超時是給整個節(jié)點(diǎn)執(zhí)行設(shè)一個上限比如 5 分鐘超過就強(qiáng)制中斷并標(biāo)記為失敗。# 調(diào)度器層面的超時控制 import signal def execute_with_timeout(node, input_data, timeout_seconds): def handler(signum, frame): raise TimeoutError(f節(jié)點(diǎn) {node.name} 執(zhí)行超時) signal.signal(signal.SIGALRM, handler) signal.alarm(timeout_seconds) try: result node.execute(input_data) finally: signal.alarm(0) # 取消鬧鐘 return result超時時間怎么定我的經(jīng)驗(yàn)是取正常執(zhí)行時間的 3 倍。比如某個節(jié)點(diǎn)正常跑 30 秒超時就設(shè) 90 秒。這樣既能容忍正常的波動又不會讓卡死的節(jié)點(diǎn)拖太久。如果某個節(jié)點(diǎn)執(zhí)行時間波動很大那就取 P99 耗時的 2 倍。4.2 狀態(tài)不一致的排查思路狀態(tài)不一致的表現(xiàn)是流水線報(bào)告某個節(jié)點(diǎn)成功了但下游節(jié)點(diǎn)拿到的數(shù)據(jù)是空的或者格式不對。這種問題往往很隱蔽因?yàn)楸砻嫔狭魉€是成功的。排查這類問題我一般按這個順序查先看狀態(tài)存儲里該節(jié)點(diǎn)的 output_data 是否完整再看下游節(jié)點(diǎn)的輸入適配函數(shù)是否正確處理了這份數(shù)據(jù)最后看下游節(jié)點(diǎn)是否真的收到了數(shù)據(jù)。很多時候問題出在適配函數(shù)上比如字段名寫錯了、默認(rèn)值給得不合理。還有一種狀態(tài)不一致是并發(fā)寫入導(dǎo)致的。如果同一個流水線被觸發(fā)了兩次兩個進(jìn)程同時寫狀態(tài)可能互相覆蓋。解決辦法是給狀態(tài)寫入加鎖或者用數(shù)據(jù)庫的唯一索引 upsert 來保證原子性。我傾向于后者因?yàn)椴灰蕾噾?yīng)用層的鎖更可靠。問題現(xiàn)象可能原因排查方法節(jié)點(diǎn)一直 running節(jié)點(diǎn)卡死或進(jìn)程崩潰查進(jìn)程狀態(tài)看是否有超時控制下游拿到空數(shù)據(jù)適配函數(shù)字段名錯誤打印上游輸出和適配后輸入對比狀態(tài)被覆蓋并發(fā)寫入檢查是否有重復(fù)觸發(fā)加唯一索引重試后結(jié)果重復(fù)冪等性失效檢查冪等鍵生成邏輯斷點(diǎn)續(xù)跑失效狀態(tài)寫入時機(jī)錯誤檢查狀態(tài)寫入是否在節(jié)點(diǎn)成功后4.3 重試風(fēng)暴的預(yù)防重試風(fēng)暴是指大量節(jié)點(diǎn)同時失敗并同時重試導(dǎo)致下游服務(wù)被瞬間打爆。這種情況在批量處理場景里特別常見比如一次性提交了一百個流水線某個外部服務(wù)掛了一百個流水線同時重試直接把服務(wù)打得更掛。預(yù)防重試風(fēng)暴有幾個手段。第一是加隨機(jī)抖動重試的等待時間加上一個隨機(jī)值避免所有重試同時發(fā)生。第二是限制并發(fā)同一時間只允許一定數(shù)量的節(jié)點(diǎn)在執(zhí)行超出的排隊(duì)等待。第三是熔斷機(jī)制當(dāng)某個外部服務(wù)的失敗率超過閾值時暫時停止調(diào)用它等一段時間再恢復(fù)。# 帶抖動的指數(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ī)抖動 return wait jitter熔斷機(jī)制我一般用一個簡單的計(jì)數(shù)器實(shí)現(xiàn)記錄最近 N 次調(diào)用的失敗次數(shù)如果失敗率超過 50%就打開熔斷開關(guān)后續(xù)調(diào)用直接返回失敗不實(shí)際調(diào)用等 60 秒后再半開放幾個請求試探。這個邏輯不復(fù)雜但能有效防止雪崩。4.4 中間結(jié)果的清理策略流水線跑多了中間結(jié)果會越積越多占滿存儲。清理策略要根據(jù)業(yè)務(wù)需求來定。如果中間結(jié)果需要長期保留用于審計(jì)或回溯那就不能隨便刪得做歸檔。如果只是臨時數(shù)據(jù)跑完就可以清理。我的做法是給每個流水線實(shí)例設(shè)置一個 TTL生存時間默認(rèn) 7 天。超過 TTL 的實(shí)例其狀態(tài)和中間結(jié)果會被定時任務(wù)清理。對于需要長期保留的在創(chuàng)建實(shí)例時標(biāo)記為持久化跳過清理。清理任務(wù)本身也要冪等重復(fù)執(zhí)行不會誤刪。實(shí)操心得清理之前先做一次冷備份把要刪的數(shù)據(jù)導(dǎo)出到低成本存儲。我吃過虧有一次清理任務(wù)寫錯了條件把還在用的數(shù)據(jù)刪了幸好有備份才恢復(fù)過來。從那以后所有刪除操作都先備份再刪。5. 多 Agent 協(xié)作下的節(jié)點(diǎn)編排進(jìn)階5.1 串行之外的編排模式雖然標(biāo)題說的是串行流水線但實(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)輸出里加一個next_node字段調(diào)度器根據(jù)這個字段決定下一個執(zhí)行誰。并行匯聚是指多個節(jié)點(diǎn)同時執(zhí)行都完成后匯聚到一個節(jié)點(diǎn)。比如同時調(diào)用三個不同的模型生成候選內(nèi)容然后由一個選擇節(jié)點(diǎn)挑出最好的。實(shí)現(xiàn)方式是調(diào)度器維護(hù)一個依賴圖只有所有前置節(jié)點(diǎn)都完成匯聚節(jié)點(diǎn)才能執(zhí)行。# 條件分支的節(jié)點(diǎn)輸出 { status: success, data: {...}, meta: {node_name: quality_check}, next_node: regenerate_agent # 指定下一個節(jié)點(diǎn) }這兩種模式讓流水線從一條直線變成了一張圖表達(dá)能力大大增強(qiáng)。但復(fù)雜度也上去了所以我建議先用串行跑通有明確需求再引入分支和并行。過早引入復(fù)雜編排調(diào)試成本會成倍增加。5.2 節(jié)點(diǎn)版本管理與灰度當(dāng)流水線跑了一段時間后你可能會想優(yōu)化某個節(jié)點(diǎn)比如換個更好的模型、調(diào)整提示詞。直接改節(jié)點(diǎn)代碼有風(fēng)險(xiǎn)因?yàn)檎谂艿牧魉€可能受影響。我的做法是給節(jié)點(diǎn)加版本號新版本和舊版本并存通過配置決定用哪個版本。灰度發(fā)布的流程是先讓新版本處理 10% 的流水線觀察成功率和輸出質(zhì)量沒問題再擴(kuò)大到 50%最后全量切換。如果新版本出問題改配置切回舊版本即可不用改代碼重新部署。版本管理還有一個好處是可追溯。每個流水線實(shí)例記錄它用的是哪個版本的節(jié)點(diǎn)出問題的時候能精確定位到具體版本。我一般把版本號存在節(jié)點(diǎn)輸出的 meta 里方便查詢。5.3 監(jiān)控與告警的關(guān)鍵指標(biāo)流水線跑起來之后必須有一套監(jiān)控否則出了問題都不知道。我關(guān)注的指標(biāo)有這么幾個節(jié)點(diǎn)成功率每個節(jié)點(diǎn)的成功比例低于 95% 就要警惕。節(jié)點(diǎn)耗時 P9595% 的請求在多少時間內(nèi)完成用來發(fā)現(xiàn)性能退化。重試率重試次數(shù)占總執(zhí)行次數(shù)的比例高重試率說明有系統(tǒng)性問題。流水線完成率成功跑完的流水線占總提交量的比例??ㄋ拦?jié)點(diǎn)數(shù)處于 running 狀態(tài)超過閾值的節(jié)點(diǎn)數(shù)量。告警策略上我設(shè)置了兩級警告級和嚴(yán)重級。警告級發(fā)通知但不打斷比如成功率降到 95% 以下。嚴(yán)重級直接打電話比如成功率降到 80% 以下或者有節(jié)點(diǎn)卡死超過 10 分鐘。告警要帶上下文比如是哪個節(jié)點(diǎn)、哪個流水線實(shí)例、錯誤信息是什么這樣排查起來快。6. 從零搭建時的幾個關(guān)鍵決策6.1 自研還是用現(xiàn)成框架市面上有不少工作流編排框架功能很全但我的建議是先用自研的輕量方案跑通有明確痛點(diǎn)再考慮引入框架。原因是框架有學(xué)習(xí)成本和適配成本而且很多框架為了通用性做了大量抽象調(diào)試起來反而更麻煩。自研方案的核心代碼其實(shí)不多一個調(diào)度器加一個狀態(tài)存儲幾百行就能搞定。等你的流水線復(fù)雜到需要 DAG 編排、需要可視化界面、需要復(fù)雜的權(quán)限控制時再考慮引入框架也不遲。我見過不少項(xiàng)目一上來就上重型框架結(jié)果大部分功能用不上反而被框架的約束綁住了手腳。6.2 狀態(tài)存儲的容量規(guī)劃狀態(tài)存儲會隨著流水線數(shù)量增長而膨脹。一個流水線實(shí)例如果有 5 個節(jié)點(diǎn)每個節(jié)點(diǎn)的輸出平均 10KB那就是 50KB。一天跑 1000 個實(shí)例就是 50MB。一年下來接近 20GB。這個量級用普通數(shù)據(jù)庫完全扛得住但要注意索引和查詢優(yōu)化。如果數(shù)據(jù)量更大比如一天跑十萬個實(shí)例那就要考慮分庫分表或者用專門的時序數(shù)據(jù)庫。不過大多數(shù)場景到不了這個量級我建議先按單表設(shè)計(jì)等真的遇到性能瓶頸再優(yōu)化。過早分片會讓架構(gòu)復(fù)雜化得不償失。6.3 團(tuán)隊(duì)協(xié)作下的接口約定如果流水線是多人協(xié)作開發(fā)的節(jié)點(diǎn)之間的接口約定就特別重要。我的做法是維護(hù)一份節(jié)點(diǎn)契約文檔每個節(jié)點(diǎn)明確寫清楚輸入需要哪些字段、輸出會提供哪些字段、可能拋出哪些錯誤、重試策略是什么。這份文檔是節(jié)點(diǎn)開發(fā)的依據(jù)也是排查問題的參考。契約變更要走流程先改文檔再改代碼通知所有相關(guān)方。我見過因?yàn)槟硞€節(jié)點(diǎn)偷偷改了輸出字段導(dǎo)致下游節(jié)點(diǎn)集體掛掉的事故。有了契約文檔和變更流程這類問題能大幅減少。7. 我踩過的幾個印象深刻的坑7.1 狀態(tài)寫入順序?qū)е碌挠撵`成功有一次流水線報(bào)告某個節(jié)點(diǎn)成功了但下游拿到的數(shù)據(jù)是空的。排查了半天發(fā)現(xiàn)是狀態(tài)寫入的順序有問題代碼先寫了 success 狀態(tài)再寫 output_data結(jié)果寫 output_data 的時候失敗了狀態(tài)卻已經(jīng)是 success。重啟后調(diào)度器看到 success 就跳過了這個節(jié)點(diǎn)下游拿到空數(shù)據(jù)。修復(fù)方法很簡單把狀態(tài)和輸出數(shù)據(jù)放在一次寫入里要么都成功要么都失敗。如果存儲不支持原子寫入那就先寫數(shù)據(jù)再寫狀態(tài)狀態(tài)寫入作為提交動作。這個教訓(xùn)讓我明白狀態(tài)管理里的順序問題能造成很隱蔽的 bug。7.2 冪等鍵包含時間戳的慘案早期我生成冪等鍵的時候順手加了個時間戳想著每次執(zhí)行都是新的。結(jié)果重試的時候因?yàn)闀r間戳變了冪等鍵也變了去重完全失效同一個操作被執(zhí)行了多次。更糟的是這個操作有副作用導(dǎo)致數(shù)據(jù)重復(fù)。修復(fù)方法是把冪等鍵改成只包含穩(wěn)定標(biāo)識比如 pipeline_id 和 node_name。時間戳這種每次都變的東西絕對不能進(jìn)冪等鍵。這個坑讓我對什么該進(jìn)冪等鍵有了深刻認(rèn)識只有那些在同一次邏輯執(zhí)行中保持不變的東西才能進(jìn)。7.3 超時設(shè)置過短導(dǎo)致的誤判有個節(jié)點(diǎn)正常執(zhí)行需要 45 秒左右我一開始把超時設(shè)成了 60 秒想著留點(diǎn)余量。結(jié)果高峰期的時候節(jié)點(diǎn)執(zhí)行時間漲到 70 秒頻繁超時。超時后重試重試又超時陷入了惡性循環(huán)。后來我把超時改成 180 秒問題解決了。教訓(xùn)是超時時間要基于實(shí)際觀測的 P99 耗時來定而不是拍腦袋。而且要考慮高峰期的影響留足余量。超時設(shè)得太短會把正常的慢請求誤判為失敗反而增加系統(tǒng)負(fù)擔(dān)。8. 后續(xù)可以繼續(xù)擴(kuò)展的方向這套流水線跑穩(wěn)定之后我陸續(xù)加了一些擴(kuò)展。一個是節(jié)點(diǎn)緩存對于輸入相同的節(jié)點(diǎn)直接返回緩存結(jié)果省掉重復(fù)計(jì)算。緩存鍵用輸入數(shù)據(jù)的哈希緩存有效期根據(jù)業(yè)務(wù)定。這個優(yōu)化讓重復(fù)任務(wù)的耗時降低了一大半。另一個是人工審核節(jié)點(diǎn)。有些關(guān)鍵步驟需要人工確認(rèn)比如生成的內(nèi)容要人工審核后才能發(fā)布。我加了一種特殊的節(jié)點(diǎn)執(zhí)行時把任務(wù)掛起等人工在界面上點(diǎn)通過或拒絕后再繼續(xù)。這個節(jié)點(diǎn)讓流水線能處理需要人工介入的場景。還有一個方向是流水線的可視化。把每個節(jié)點(diǎn)的狀態(tài)、耗時、輸出用圖形界面展示出來排查問題的時候一目了然。這個我還在做目前是用簡單的 HTML 頁面渲染狀態(tài)數(shù)據(jù)夠用但不夠好看。這套架構(gòu)的核心思想其實(shí)就一句話把復(fù)雜任務(wù)拆成可獨(dú)立重試的小步驟把狀態(tài)外置以便隨時恢復(fù)。理解了這一點(diǎn)具體用什么技術(shù)實(shí)現(xiàn)都是次要的。我在實(shí)際項(xiàng)目里用這套思路處理過內(nèi)容生成、數(shù)據(jù)處理、報(bào)表生成等多種場景每次都能顯著降低調(diào)試成本和重跑成本。如果你也在做類似的多步驟任務(wù)不妨試試這個思路先從最簡單的兩三個節(jié)點(diǎn)開始跑通了再逐步擴(kuò)展。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
老司机久久| 亚洲免费精品一区| 亚洲午夜免费狠狠干| 有码人妻系列| 自拍六区| 成人av动漫在线观看| 伊人丝袜美腿高跟在线观看高清| 亚洲毛片久久| 国产自偷自拍一区| 综合亚州欧美| 日本国产欧美一区三区二区| 国产激情在线| 欧美亚洲厕所精品偷拍91| 中文字幕在线免费观看| 在线观看视频91| 亚洲97超碰| 大香网站| 中国黄色特级精品一区二区三区片| 少妇厨房愉情理伦片bd在线观看| 丁香五月自拍| 南澳成人一级片在线播放| 日韩激情中文字幕有码| 熟女久久久| 国产精品女生av| 青青草亚洲一区 | 乱色视频中文字幕| 成人资源中文字幕在线观看| 欧美日韩岛国大片在线观看| 欧美少妇高潮视频| 97精品国产97久久久| 欧美久久人体| 亚洲天天艹| 啊啊啊想要| 99热亚洲| 84YTCOM性无码| 高清不卡一二三区视频......| 91亚.色| 在线可观看的黄色网址| 热热色AV| AA丁香综合激情| 死我十八禁| 亚洲精品乱码久久久久久蜜桃麻豆 | 中文字幕狠狠玩| 色老牛| 国产宅男宅女在线观看| 骚熟女AV网| 日韩精品永久在线观看| 91激情| 亚洲情色一区综合| 国产探花精品在线| 蜜臀久久99精品久久久久久-DVD| 亚洲成A∨人影院在线欢看| 伊人网一本| 不卡一区二区日本视频| www男人天堂| 女优视频第10页| 色综合天天爱去电影网| 中文字幕乱碼在线| 最新av网站在线观看| 欧美天天综| 国产精品人妻免费精品| 国产精品久久久久久久免牛肉蒲团| 人人操人人摸人人看人人干| 老司机香蕉| 超碰97精品在线| 国产高清成人mv在线观看| 久久九九精品一区二区| 99re在线观看| 综合av社区| 欧美青青草视频| 中文字幕一区日韩精| 欲香欲色| 久久超碰免费的| 国产熟女免费观看久久| 黄页av| 人人综合| 一区二区日韩欧美久久| 久久首页| 成人性交免费视频| 伊人色综合欧美| 色情综合| 国产成年精品高清在线观看91| 人妻少妇无码| 色色99| 色噜噜人妻丝袜a∨先锋影| 亚洲激情欧美色图| 国产精品在线网站| 亚洲欧美另类少妇精品| 久久久无码国精品无码三区三区| 后入人妻一区| 久久综合九九| 国产亚洲女v在线观看| 亚洲激情综合另类| 超碰视97中文| 美女干逼2| 六六久久日韩不卡| 欧美日韩性爱视屏免费看了| 国产女同视频在线播放| 2024黄色视频| 日本大香蕉综合网| 色娱乐色呦呦夜夜夜夜av| 精品国产一级久久| 男人a天堂手机在线版| 思思热在线视频精品| 老子午夜伦不卡影院| www欧美91| 美女让帅哥通她小鸡鸡| 日本精品性生活久久久| 日本伦理一区二区| 成人熟女视频一区二区三区| 国模限制级电影| 激情综合婷婷| 立川理惠无码一区二区| 亚洲成人免费中文字幕| 日韩熟女操逼| 91视频伊人| 天天综合网在线观看| 国内外毛片在线观看| 精品一区二区麻豆| 男人的天堂成人的社区| 啪啪91| 无码乱人伦中文视频| 性色av大全| 亚洲色图欧美一区二区不卡| 青青草好吊色| 久操视频在线观看| 日韩性爱一级片| 五十路三区在线| 91欧| 美女久久久久久久久久久| 黑人在线91| 超碰这里有精品| 久久超碰98| 久操操| 婷婷激情一区二区三区俺也去| 精品少妇一区二区三区在线视频| 一区二区三区视频在线观看免费| 爱做久久久久久| 熟女人妻一区二区三区| 99热91| 欧美日综合| 久久草大香蕉| 丁香五月天啪啪| 五月丁香婷婷综合| 欧美图片偷拍| 亚洲91亚洲| 久久久久久久久久久人妻| 区日韩亚洲乱码av电影| 亚洲综合网图| 一区二区不卡| 久久精品91| 国产精品夜夜夜| 久久久9 9 9精品| julia ann久久| 亚洲色图第一页| 熟女熟妇伦久久影院毛片一区二区| 亚洲清纯唯美| 91热| 97超碰磁| 久久久久久AV无码免费网站| 超碰狠狠操| 青青青国产| 中国黑人三级片网站上区| 嗯嗯啊啊视频一区二区三区| 91老熟女91老女人| 欧美在线天堂| 色色香蕉| 91久操| 夜夜狼人妻| 美美91成人国产精品欧美精品久久久久久久| 亚洲欧洲久久天堂| 色爱亚洲| 影音先锋新男人| 日韩精品碰碰| www.久久99| 久操高青| 尤物视频偷拍免费| 九九九九热| 大香焦A片| 久久综合九九| 内射中出日韩在线观看视频| 99精品人人爽| 久夜视频| 国模精品娜娜一二三区| 1区2区3区中文字幕日韩| 中文字幕午夜精品久久久| 粉嫩av一区二区三区天美传媒 | 日本九九九九| 九九热精品免费视频| 久久久网一区| 欧美性夜| 午夜福利在线合集| 伊人亚洲国产一成人久久精品,久久| 久久25| 日韩欧美资源| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 久久机热| 久久精品国产精品一区| 综合久| 天天天乱色综合全| 色色97爱| 欧美性爱日韩高清| www99热| 午夜欧美神马久久久久| 丰满人妻一区二区三区四区| 插穴性爱视频在线观看| 99青草| 成人草草视频| 成人av影院在线观看| 五月开心网| 中出在线视频| 成人日韩3| 啪啪91| 一本久久久精品| 日韩免费三级黄片电影| 95精品在线| 九色 蝌蚪 熟女自| 国产h片在线观看视频| 久久99黄色卞西瓜| 漂亮人妻被强中文字幕hd| 久久五十路熟女人妻| 亚洲中文制服诱惑| 黄色工厂这里只有精品| 免费毛片在线播放| 国产九区| 国产一区在线观看无码AV| 综合色图,成人综合网| 俺去啦自拍| 啪啪免费| 久久九精品| 黄片视频观看| 亚州成人a∨| 久久这里只有精品9| 无码抄逼网| 热久久国产精品视频大陆精品| 97在线免费观看| 精品少妇一区二区三区免费观看| 四虎影视精品| 伊色综合天堂色97| 天天拍夜夜| 无遮挡h肉动漫在线观看| 色女免费在线观看视频网址| 欧美日韩激情无码专区| 午夜后入| 国语国产操逼伊人AV网| 啊啊啊久久久视频| 麻花传媒免费网站在线观看| 亚洲少妇激情一区二区三区| 尤物国产一区在线观看| 日1区2区3区2020| 亚洲AV无码久久久国产精品| 啊啊啊啊操死我| 99性爱视频| 妇女一区二区三区| 久久国色天香香蕉| 人妻一区二区三区四区视频| 在线天堂999| 综合久久久久久久久91| 九九九九九九视频| 国产欧美岛国精品一区| 亚洲中字慕不卡| 玖玖婷婷五月天| 老熟女综合网| 九九热九九热| 人人艹亚洲| 躁躁日曰躁2020| 亚洲色色探花| 97操97干| 久久久穴999| 日韩黄片视频试看| 国产91丝袜在线播放蜜月| 一区三区啪啪| 大象AV在线| 免费9 1久久| 天天视频网站黄| 欧美亚洲se91| 日韩一级片在线看| 白丝AV| 免费久久9999| 国产高潮AA片免费看| 国产熟女一区二区| 色老汉色| 国产真实野战在线视频| 4虎在线观看| 人妻天天爽夜夜爽精品2| 免费观看性欧美一级| 天堂综合| 久久人妻视频网| 国产又猛又粗又爽又黄| 俺也射| 青青国产精品在线| 亚洲第2页| 97久久久久| 冬京热男人的天堂| 首页中文字幕中文字幕免费| 热99re69精品8在线播放| 亚洲棕合电彰| 中文字幕jul-617人妻熟女| 91久久青青草原精品| 91N综合网在线| 涩涩五月天| www.91人妻.com| 玖玖无码超碰| 色九九综合AV| 日韩av女优在线免费一区| 无码外流操逼视频| 热热色中文无码| 欧美 亚洲 另类 综合| 激情五月天婷婷| 正在播放国产精品一区| 97天天日| 欧美色图99| 一区二区三区蜜桃成人撸久久东京热| 婷婷五月色| 欧美aa一级片| 国产一区在线播放| 精品人妻视频一区二区在线播放 | 自拍第一页| 中文有码第五页| 日本三级韩三级99久久| 亚洲第一无码播放立川理惠| 无码高清少妇久久| 国产亚洲精品一区二区三区| 欧美黑人熟妇精品91| 日本黄页视频在线观看| 大香蕉中文aV在线| 亚洲麻豆精品二区三区| 色综合网1| 精品中文字幕第一页| 欧美综合网| 新91视频.cmp| 日韩无码服务区| 今日头条成人一区二区三区四虎精品| 欧美高清性猛交| 天天影视色香色欲| www.超碰| www.色五月| 不卡免费av在线播放| 精品九九国产无码| 中文字幕日韩专区精品系列| 色网站导航大全| 97国产人人| 蜜屁av| 欧美性Fer办公室秘书| 欧亚成人在线视频| 二三四区精品| 国产诱惑| 亚洲AV永久无码精品成人调教| 男人的天堂在线| 久久草视频污视频| 男人的天堂久久狠| 大白逼三四级| www.成人无码| 97日韩欧美亚洲| 久草线上视频免费看| 亚洲欧美日韩电影网站一区| 五月天欧美色图| 国产九九九九九九| 人妻喷水| 97国产精品在线观看| 青青操日韩| 国产精品久久久午夜夜伦鲁鲁| 一本色道久久综合亚洲二区三区| 精品无码人妻一区二区免费蜜桃| 亚州高清av| 久热99999| 亚洲性刺激| 久久久啊啊啊| 男人天堂网站| 亚洲欧美日韩中文播放| 人妻一区二区三区视频 | 久久爱超碰网| 啊啊啊啊免费视频| 欧美97在线欧| 天天躁日日躁AAAAXXXX国产| 91爆操视频| 熟女人妻一区二区三区| 久青草影院| 日韩99神马视频播放片在线播放| 久久的网站啊啊啊啊啊| 欧美 亚洲 另类 综合| 一区二区三区蜜桃成人撸久久东京热 | 国产欧美精选自拍一区| 一级久久性爱视频| 亚洲欧洲美腿丝袜| 国产成人主播| 999久久久久久久久| 九九九国产| 国产 日韩,欧美 自拍| 欧美日韩性爱电影在线| 国产一区二区视频在线播放| 99久在线精品99re8| 艹我哪美一区无码| 又摸又舔在线观看网站| 夫妻AV网站| 78久久| 国产精品内射婷婷一级二| 日本日逼高清| 91国产精品在线看| 大香蕉欧美国产日韩高潮| 久久风骚城市人| 麻豆天美制片厂网站视频| 久久亚洲不卡一区二区三区| 男女猛烈无遮掩视频免费软件| 久久久久久久人妻| 一本大道久| 狠狠色伊人亚洲综合网站色| 欧美黑人与女人91~| 91骚熟女| 女人妻一区| 亚洲人成在线放东京热| 久久久久久性爱视频| 啊啊在线| 五月婷丁香| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 亚洲一区二区中文字幕| 熟女露脸激情自拍视频| 亚洲超碰在线| 国产女人视频三四五区| 日本少妇va7777| 日产欧美电影一区二区三区| 青青操少妇| 欧美一级特黄淫片在线观看| 在线五区| 九九这里只有精品| 精品人妻中文字幕高清| 欧美 日韩 另类 亚洲| 亚洲精品性爱片| 蜜臀av网址| 熟女乱伦二区| 国产传媒午夜理伦精品| 亚洲偷91色| 91丨九色丨大屁股| 久久久啊啊啊| julia国产在线| 色一射色一射| 日韩操逼HD| 国产成人啪一区二区| 精品性爱一二三区| 东京热男人天堂| 亚洲色图 欧美热图 清纯唯美 另类自拍| 国产无码久久高清| 日本久久久精品电影| 麻豆久久久一区二区| 久久av无码| 精久久久| 97色诱| 精品无码一区二区三区| 亚洲日本大香蕉1| 精品一区96| 亚洲AV噜噜狠狠网址蜜桃动漫| 色网亚洲人| 一区=区三区视频| 中文字幕av亚洲在线| 亚洲九九九| 九九人妻| 欧美一二在线| 精品国产乱码久久久久久影片| 久久天天艹| 偷拍导航视频网站| 亚洲鸥美色图| 久久97资源 网| AV中文在线| 视频国产精品未满十八禁止在线观看| 日本女人久久久| 免费成人在线熟妇网| 国产精品午夜高潮呻吟久久av| 亚洲色天| 综合五月天| 天天内射| 日本一片一区| 伊色综合天堂色97| 五月香婷婷| 久久亚洲AV无码专区首页| 啊啊啊啊啊在线| 人妻丝袜肏逼| 国产婷婷一区| 青青草在线成人视频| 国产大学生高潮在线播放| 熟妇的味道HD中文字幕| 男女一进一出视频久久| 亚洲欧美电影| 好吊色综合| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 亚洲美女精品| 人妻天堂综合网| 国产亚洲99久久精品| 亚洲成?V人片在线观看福利| 精品人妻一二三| 色色97爱| 青娱乐黄色录像| 欧美另类天堂| 大色网久久| 91美女国产在线| 亚av顶级裸体一区二区三区四区五区 | 成人午夜小视频手机在线看| 3d成人精品一区二区| 超碰国产精品无码| 大香蕉视频一二三区| 国产精品白丝在线播放 | 婷婷亚洲五月***久久| 丰满人妻无码一区二区三区| 性影在线视频| 久久精品亚洲成a人天堂| 人妻系列无码专区中文有码| 国产亲戚伦亲在线| 狠狠色综合网| 在线 制服丝袜中出 人妻| 色婷婷丁香五月| 午夜欧美女人操逼| 插日本熟女视频| HEYZO高无码国产精品227| 久久99午夜精品一区人妻| 蜜臀操逼黄色视频操的好爽| 色婷婷亚洲婷婷| 日韩精品99999| 99re这里只有精品中心播放| 欧美色图私拍91| 97久久久精品| 91狠狠狠| 亚洲国产丝袜熟女av| 性色AV蜜色av色欲av| 亚洲日本激情| 国产呦精品一区二区三区下载 | 91爱| 免费1级a做爰片观看| 国产AV激情无码久久无码| 东亚亚洲无码高清| wwwss在线观看| 一本正道久久熟女| 一区二区三区色综合| 中韩中文字幕在线观看| 国产高清亚洲日韩一区| 一级黄碟在线观看| 果冻传媒一区二区三区| 97色97干| 日韩欧美俄罗斯A片| 超碰碰碰碰| 欧美白嫩在线放| 久久久国产护士丝袜美腿一| 欧美天天综合网| 国产A v无码专区| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 十八禁的黄污污免费网站| www…国产操逼| 久久草大香蕉| 欧美青青视频| 国产精品96久久久久久| 中国国产精品一区视频| 日韩一级片| 日本999精品| 欧美 色 亚洲| 九九干| 亚洲女毛多水多21P| 人妻天天爽夜夜爽爽| 欧美日韩国产人人| 日本熟妇浓毛hdsex| 欧美黑人精品一区二区| 嗯……啊…嗯嗯…啊…好舒服| 伊人亚洲综合| 色综合V| 五月综合久久| 91超碰在线观看| 国产毛片久久久久久久| 亚洲天堂性爱| 夜夜欧美 | 猛猛干| 日韩午夜精品一区二区三区电影| 大香蕉在线视频15| 国产suv一区二区三区6| 亚洲九月丁香| 成人片视频| 国内亚洲高清无码| 国产少妇与亚洲av| 91欧| 无遮挡猛进视频免费无限观看| 日韩国产十八禁| 呦呦一区| 天天欧美色| 97免费视频在线| 国产亚洲女v在线观看| 精品人人| 国产精品一区二区三区免费视频| 欧美性生活综合| 亚洲精品黑丝| 美女一区二区国产精品| 天天舔天天日天天射| 久久久久久久97| 无码9区| 97视频免费| 99热综合| 91精品人妻一品二品三品| 90后性网国产欧美| 四虎精品亚洲| 精品久久久久av影院| 麻豆国产成人精品| 少妇高潮特黄A片| 国产视频大全| 午夜精品探花| 玖玖无码超碰| www.婷婷六月天| 高清孕妇孕交 交| 久久人妻办公室视频| 欧美色青| 婷婷五月天久久精品视频一区二区三区 | 日韩中文字幕国产| 久久久久久波多野吉衣高潮| 91黑丝在线| 国产乱婷婷精品二区三区| 一级性爱网| 密桃99999| 日韩肏逼视频| 国产极品久久久| 午夜精品五区| 欧美综合色| 日韩AV电影网站| 人人弄人人摸| 熟女精品一区二区在线观看| 欧美极度丰满熟妇hd| BBBBB97COM| 亚州情色j区| 亚洲,日韩,欧美,成人播放| 日本新免费二区三区| 久久一区二区三区入口| 亚洲无码一区成人免费午夜 | 国产又黄又粗的视频| 91 综合 色| 九九热超碰| 日本国产欧美一区三区二区| 热热色色综合| 蜜桃臀av在线观看| 国产精品亚洲无码| 精品国产乱码久久久久久久久久毛片| 北条麻妃99精品青青久久| 9色国产精品一区粉嫩| 久久亚码| 国产一区96在线| 91伊人久| 9精品久久久久| 91在线免费观看处女| 国产成人自拍视频视频| 欧美人妖内射| 黄色十八禁网站| 四虎影视永久在线免费| 国产精品丝袜在线| 熟妇人妻一区二区三在线| 五月天色色网站| 成人一道本免费视频| 亚欧操逼片在线观看| 夜夜夜久久| 国产乱伦性爱AV| 天天日天天干天天色| 97操B| 伊人久久亚洲中文字幕| 免费观看国产不卡av| 综合欧美日本三级| 国产综合日韩伦理| 蜜桃传媒视频第一区入口在线看| 欧亚第一综合网| 99色在线| 最新中文字幕精品在线| 欧美传媒| 97爱亚洲| 亚洲啪啪啪啪视香蕉| 精品一区二区三区最新| 五月丁香影院| 另类 日韩 熟女| 亚洲欧美色图小说| 加勒比综合| a啊啊啊啊啊啊啊啊一区二区| 亚洲综合九| 亚州乱码中文字幕综合久久久| www.五月天| 午夜理论片在线观看免费| 欧美成年人性爱视频免费观看| 亚洲综合网91| 欧美色图99| 久久综合av| 亚洲精品国产av天美传媒| 四虎影库国产精品免费| 精品视频久久久久九九九九9999| 国内精品伊人久久久久影院会| 色狠狠 - 百度| 天天躁日日躁成人字幕aⅴ| 人人妻人人澡人人爽人人精品浪潮| 97久久国产亚洲精品超碰热| 色偷综合| 久久人妻少妇| 九九九精品一区二区无码| 麻豆天美国美国产| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 热久久这里只有精品| 探花一区在线| 日韩欧美中文日韩欧美色| 日韩无码a片| 久久五月天婷婷丁香中文字幕| 国产兽交视频在线播放| 亚洲 小说 欧美 激情 另类| 亚欧无码线免费观看视频| 久久久性爱| 国产成人久久久精品免费AV| 操逼逼福利视频| 性在久久久久久| 岛国AB视频| 伊人五月天激情| 手机午夜电影神马久久| 日本成人免费一区二区三区| 被窝影院午夜看片无码| 国产又黄又爽又刺激久久久久久| 一区二区三区亚洲| 中日韩欧美精品无码AⅤ一区二区| 中文字幕中文字幕一区二区| 五月天黄色激情视频| 熟女突然公开看18禁影片| 日本岛国黄色网址| 日韩乱码Av| 午夜天堂网| 日本顶级天天操狠狠操夜夜操中文字幕| 蜜桃久久久久久久久久久久| 亚州欧美综合| 91n处女在线观看| av激情亚洲五月天| 黄色激情电影在线观看| 精品性爱一二三区| 一区二区三区精品黑丝白丝酒店对鸡 | 久久久久久亚洲精品不卡人乳| 暖暖精品二区三区观看| 人妻免费观看| 日比av无码| 免费精品无码一级毛片牛牛影视| 国产精品99精品视频网站| 美女熟妇色| 亚洲成A∨人影院在线欢看| 在线国产福利网址导航| 超碰人人在线| 精品久久久久9999| 九一国产精品| 操东北女人| 亚洲欧洲精品视频发布| 色婷婷丁香五月| 人妻一区久久二区三区色播| 国产自偷| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | dy888午夜老子影视达达兔| 国产一级137片内射麻豆| 秋霞曰韩R级| 人人操天天爽| 色路综合| 精品中文字幕第一页| 天天天天操| 日韩一级二级三级免费看完整版国语版 | 日韩在线性爱免费视频| 男人天堂一区二区| 在线小视频| 午夜小电影在线插入淫高潮| 中文字幕性感少妇av| 亚洲综合图文| 午夜精品久久久久久久第一页按摩| 啪啪性爱免费视频| 亚州国产精品乱| 中文字幕丝袜人妻| 欧美碰碰综合色| 亚洲系列第一页| 96AV久久久| 久久无码精品| 日本在线视频导航| 天堂伊人久久| jizz啪啪| 大香交伊人网| 欧美亚洲se91| 东京日日夜夜| 亚洲中文日韩欧美大香蕉视频| 资源新线在线天堂| 97免费视频网| 一区二区 韩日AV| 乱伦3P视频| 亚洲国产成人综合碰碰三级经典| 色婷婷电影网| 欧美日韩妖精91com| 中文字幕亚洲永久精品| 亚洲少妇视频| 久久99久久99精品天美传媒棢·纸:. | 欧美熟妇人体| 日本天天操| A 天堂| 亚洲丝袜二区在线| 天天碰操中国年青熟妇| julia高潮后不停追击中出| 国产乱伦性爱区| 91亚洲欧美色图| 天堂九九九九九九九九九| 96久久精品一二三区色欲| 婷婷av在线中文字幕| 99操逼| 无码天天操| 欧美少妇高潮久久91| 婷婷情色综合网| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 高清在线不卡一区二区 视频| 五月婷婷综合激情| 欧美高清在线| 久草福利在线资源站| 极品一区二区三区免费| 久久九九网| 日韩97| 躁躁日曰躁2020| 国模艳艳啪啪一区| 素人伊尹大香蕉免费下载视频| 五月天成人综合| 午夜精品久久久| yirendaxiangjiashipin| 日韩精品一区二区高清| 97硬碰| 亚洲无线码欧洲精品区别| 狠狠爱AV| 人妻加勒比东京热| 国产精品蜜臀久久久久无码AV| 91性| 天综合网| 丰满岳乱妇一区二区三区| 人妻喷水| 欧美色图片91| 人人操人人大香蕉| 凹凸精品熟女在线观看| 99热 按摩 日韩| 精品无码一区二区三区| 欧美极品性爱天天射| 中文字暮97| 国产第11页| 好爽视频在线观看视频| 久久综合国产精品国产| 五月色综合| 18精品一区| 日日日日做夜夜夜夜做无码97| 国产天天骚| 亚洲97资源| 亚洲天堂色图| 国产一级作爱毛片| 精品亚洲| 亚洲天堂一区二区| 操人妻逼91| 亚洲.欧美.丝袜.中文.综合| 国产精品熟女九色九色蜜臀| 中文字幕三四五区| 999熟女精品| 九一综合精品视品av| 大香蕉乱伦视频网| 一区二区三区在线美女| 亚洲在线欧美| yazhouzaixian| 久久久久久久久九九久孕交| 99久热| 国产精品人妻熟女aⅴ| 激情小说亚洲色图| 日日97| 91AV天堂| 色爱综合网欧美| 色色无码| 自拍偷拍2025在线观看| 成人免费看吃奶视频网站| av中亚| 久久久555| 亚洲日韩黑丝| 亚洲综合骚逼| 99re只有精品| 亚洲熟妇图片| 91xingse| 67914亚洲精品| 亚洲中文字幕三级在线| aaaa黄片| 51一区二区三区| 人人操我人人干| 日本中文熟女视频| 高清视频一区| 揉揉揉夜夜| 亚洲成人AB| 亚洲精品久久久久久| 日日妻色网| 天天激色| 在线观看午夜婷婷久久久久清性观看| 欧美 青青草| 欧美性暴力猛交XXXX| 97操97色| 一区中文字幕二区日韩| 久久97资源 网| 亚洲国产综合久久久性感熟妇| 超碰97爽| wwe 天天干.com| 69视频福利导航| 久久天天躁日日躁狠狠躁| 久久亚洲不卡一区二区三区| 玖玖爱综合| 麻豆精品A片免费观看| 国产美女口爆吞精| 国产精品久久久999| 999九九精品| 老司机福利社视频在线观看| 91亚洲黄色网| 欧美亚洲首页| 一二三区操逼国产91| 人妻少妇久久中文字幕一区二区 麻豆| 亚洲日韩青青草色月| 丝袜天堂| av 模特一区了| 中出20p| 久久东京热久久| 小说区 图片区色 综合区| 搡老熟女免费视频| 日韩性爱1级片视频| 乱伦日本色图AⅤ| 丁香六月啪| 超碰公开久久网| 欧美成人色| 97精品人妻一二三四| 揉揉日日日日| 乱操乱伦AV| 国产精品蜜乳AV| 色五月婷婷网| 久久偷拍人| 麻豆区久久久久亚| 天天综合~91| 国产91啪| 亚洲成人在线播放| 96AV久久久| 本道在线| 国产品精品自在在线午夜免费| 国产亚洲欧美每日在线| 欧美一区二区观看在线| 神马久久啊啊| 在线观看啊啊啊啊啊| 绯色一区二区三区不卡少妇 | 精品免费一区二区三区在线亚洲人成| 日韩懂色网| 蜜桃臀av一区二区| 久久无码一区二区二三区性色| caoni国产亚洲av| 一本道综合色图| 1024手机看片欧美日韩| 91A欧美电影网站| av强奸乱轮| 亚洲性爱高潮影院| 美女黑人91神马| 丰满人妻一区二区三区免费| 人人艹亚洲| 东京热激情视频一二三区| 91精产一区二区三区| 天天噜| 91人妻素女| 中文字幕乱碼在线| 校园春色 亚洲| 一级黄色性爱A级片| 校园春色之综合网| 极品一区二区三区免费| 国产乱伦亚洲色图高清无码| 天天弄天天操| 超碰碰小说97| 91伊人久| 97亚洲综合电影| 97在线日韩中文字幕| 91东京热男人的天堂| 91校园春色长篇| 美女骚尻视频| 亚洲精品国产日韩无码AV永久免| 99热| 日韩欧美久久婷婷网站| 日日插夜夜| 91九色丨国产丨爆乳| 三及片网站| 性色av网站| 夜夜嗨绯色| 精品人成视频在线观看| 亚洲精品色| 91在线丝袜| 日韩激情中文字幕有码| 亚洲自拍另类丝袜综合| 成人羞羞视频国产| 天天综合,91综合永久| 国产精品另类一区大香蕉| av在线一区二区三区| 操逼精品视频| 欧洲黄色网| 超碰欧美在线欧美| 久久AV无码AV| 丝袜喷水在线| 精品久久无码午夜福利| 天天做天天爱天天爽AV| 国产无码精品高清| 91国产美女丝袜足交精品视频| 狠狠久久手机视频精品| 国产女大学生AV| 日韩中文字幕视频| 亚拍在线| 激情久久久| 亚洲毛片久久| 青青草视频久久久久| 久久久久骚| 天天综合网~91| 男女猛烈无遮掩视频免费软件| 亚洲色图91欧美日韩| 亚洲高清91| 亚洲一区二区麻豆影院| 日韩有码专区| 欧美黑人XXXⅩ高潮交| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 久久久久久国产精品| 男人的天堂99| 中文字幕二区日韩天堂| 97在线看| 大香蕉欧美伊| 亚洲天堂AV在线播放| 神马久久啊啊| 成年人一级黄色毛片大全在线观看| 国内成人圈中文字幕无码视频| 精品国产久热在线观看| 韩日欧亚a级| 丝袜熟女2P| 无码一区免费在线不卡| 熟女一区二区三区| 国产激情在线| 麻豆 美女 丝袜 人妻 中文| 五月久久HDAV| 日韩欧美成人午夜福利| 97se综合| 密桃99999| 午夜福利国产欧美日韩夜夜| 老熟妇一区二区三区啪啪| 青娱乐久久艹| 亚洲天天操| 欧美色一二三| 国内精品久久久久影院亚洲| 青草精品视频日本久久久久网站在线| 亚洲AV无码| 欧美,日韩综合久久| 9久9久9久9久视频网站| 91狠婷| 中文字幕乱码人妻二区三区| 久久99干一本高清| 日本熟妇熟色97一本在线观看| 国产日韩色综合| AV女资源| 97青娱乐超碰久久| 欧美日韩第一页| 熟妇乱伦一区二区| 日本黄色天堂| 久久久久骚| 搡老人老9丨女老熟人| 天天亚洲| 超碰久在线天天做| 台湾佬激情综合| 免费作爱一级视频| 精品亚洲| 青青草华人在线欧美在线| 婷婷国产精品九区| 亚洲一区二区中文字幕| 日本操逼视频在线| 玖日综合网| 综合 青草 伊久久 影院 综合 | 人人玩人人添人人澡免费| 精品国产乱码久久久久久久久久毛片| 欧美亚洲丝袜美女电影| 丁香九月激情啪| 中文字幕AV乱伦| 亚洲精品97久久| 啊啊啊啊在线播放| 97超碰色屌| 欧美男人一区| 自拍大香蕉乱插| 久久精品国产AV一区二区三区| 久久久亚洲精品中文字幕人妻| 欧美性生活内射| 一色网男人的天堂| 日韩成人大片一区二区| 亚洲熟女精品| 91这里只有精品| 久区视频| 亚洲怡春院| 热久日综合| 强上我不卡卡| 青青国产精品在线| 天天插天天操| 太久视频| 天天日天天搞天天干| 精品人妻中文字幕高清| 欧美激情区| 九九五月天| 亚州欧美综合| 国产久久久久影院老熟女| 亚洲三级网址久久最新| 久操99| 欧美黑人猛交春色影视大全| 色播五月丁香| 柠檬AV导航| 去干网最新版| 91在线精品| 粉嫩不卡一区二区性爱| 中文字幕亚洲永久精品| 性暴力欧美猛交在线直播| 亚洲97成人在线观看| 亚洲人成在线放东京热| 试看60秒 爽| 91性片| 91 丝袜在线播放| 伊人91| 91综合中文字幕| 91天天综合日韩欧美| 日本媚薬中文字幕在线| 91亚洲图片| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 大香蕉碰碰| 婷婷香蕉欧美在线一区二区三区| 亚欧精品久久久久久久久久久| 九九九九久久久| 精品少妇一区二区三区免费观看| 日产狠狠干| 高凊专区人人操| 老熟女91av| 亚洲欧洲无码97久久精品| 妇女视频网站| 国产视频大全| 亚洲女人毛茸茸91| 九九九九九九精品| 久久久久久久| w w w.久久精品| 成人av性爱电影在线观看| 91视频伊人| 国产日韩在线播放av| 亚洲黄色a级片| JULIA一区二区三区在线播放| 色婷婷成人| 97午夜剧场日韩| 国模不卡一本二本三电影| 999 久久久| 骚鸭AV| 亚洲欧美小说| 国产野战露脸在线播放| 人人射人人操人人摸| 色婷久久| 德国一二三不卡| 人妻少妇精品久久久| 青青草在线视频美女| 久久色精品视频在线| 久操操AV电影| 欧亚在线视频| 99热亚洲天堂| 久久99999| 9久9久9久9久视频网站| 超碰97网站| 韩国一级AAA| 色综合色| 天天享受天天看| 亚洲久草AV色图| 日本成a人v网站在线观看| 福利操逼| av九九| 97色涩| 97这里有精品| 欧美亚洲色图另类国产| 六月天婷婷| 日韩欧美水蜜桃人妻| 欧美精品一二三|