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

ARTICLE DETAIL

資訊詳情

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

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

多Agent串行流水線:節(jié)點自治與狀態(tài)外置的斷點續(xù)跑實踐 1. 為什么要把一個任務拆成 Pipeline 節(jié)點鏈1.1 從一把梭到分段跑的思維轉(zhuǎn)變最早做自動化任務的時候我的習慣是把所有邏輯塞進一個函數(shù)里讀數(shù)據(jù)、調(diào)模型、處理結(jié)果、寫文件一氣呵成。跑通了很爽但一旦中間某一步失敗整個流程就得從頭再來。最要命的是調(diào)模型那一步一次調(diào)用可能幾十秒甚至幾分鐘重跑一次成本極高而且前面已經(jīng)成功的結(jié)果全部作廢。后來我開始接觸多 Agent 協(xié)作的場景發(fā)現(xiàn)問題的本質(zhì)不是能不能跑通而是跑掛了之后怎么辦。一個任務如果涉及三到五個 Agent 依次處理每個 Agent 都有自己的輸入輸出和失敗模式把它們?nèi)喑梢慧绱a調(diào)試和維護都是災難。于是就有了串行流水線這個思路把一個大任務拆成若干個獨立的 Pipeline 節(jié)點每個節(jié)點只負責一件事節(jié)點之間通過明確的數(shù)據(jù)契約傳遞結(jié)果任何一個節(jié)點失敗都可以單獨重試整個流水線可以從斷點續(xù)跑。這個思路聽起來簡單但真正落地的時候有一堆細節(jié)要處理節(jié)點之間怎么傳數(shù)據(jù)、失敗怎么判定、重試幾次、狀態(tài)存哪里、怎么保證冪等。下面我把自己踩過的坑和最終跑通的方案完整拆一遍。1.2 什么樣的場景適合這種架構(gòu)不是所有任務都值得上流水線。如果一個任務總耗時不到幾秒、失敗率極低、重跑成本可以忽略那直接寫一個函數(shù)就夠了引入 Pipeline 框架反而是過度設計。真正適合拆節(jié)點鏈的場景通常滿足這幾個特征單次執(zhí)行耗時長整個任務跑完要幾分鐘甚至更久重跑的時間成本讓人心疼。步驟之間有明顯的階段劃分比如采集→清洗→分析→生成→校驗這種天然的分段。某些步驟失敗率高或成本高比如調(diào)用外部模型、訪問不穩(wěn)定的接口這些步驟需要獨立的重試策略。需要人工介入中間結(jié)果有時候跑完前兩步想先看看結(jié)果對不對再決定要不要繼續(xù)。多個 Agent 各司其職不同節(jié)點可能由不同的 Agent 負責職責邊界清晰。我做過的一個典型項目是內(nèi)容處理流水線第一個 Agent 負責從原始素材里抽取結(jié)構(gòu)化信息第二個 Agent 基于結(jié)構(gòu)化信息做分析和歸納第三個 Agent 生成最終文案第四個 Agent 做質(zhì)量校驗。四個節(jié)點串行執(zhí)行每個節(jié)點都可能失敗每個節(jié)點的輸出都是下一個節(jié)點的輸入。這種場景如果不用 Pipeline調(diào)試起來簡直是噩夢。1.3 核心設計原則節(jié)點自治 狀態(tài)外置整個架構(gòu)最關(guān)鍵的兩個設計決策我總結(jié)成八個字節(jié)點自治狀態(tài)外置。節(jié)點自治的意思是每個節(jié)點是一個獨立的執(zhí)行單元它不關(guān)心自己前面是誰、后面是誰只關(guān)心給我輸入我還你輸出。節(jié)點內(nèi)部可以有自己的重試邏輯、超時控制、異常處理對外只暴露一個統(tǒng)一的執(zhí)行接口。這樣做的好處是節(jié)點可以單獨測試、單獨替換、單獨優(yōu)化不會牽一發(fā)而動全身。狀態(tài)外置的意思是流水線的執(zhí)行狀態(tài)不存在內(nèi)存里而是持久化到外部存儲。每個節(jié)點執(zhí)行完就把結(jié)果和狀態(tài)寫下來下一個節(jié)點從存儲里讀。這樣即使整個進程崩潰重啟也能從上次成功的節(jié)點繼續(xù)跑而不是從頭再來。狀態(tài)外置還帶來一個額外好處你可以隨時查看每個節(jié)點的中間產(chǎn)物排查問題的時候一目了然。這兩個原則說起來容易做起來有很多取舍。比如狀態(tài)存哪里存文件、存數(shù)據(jù)庫還是存對象存儲節(jié)點之間的數(shù)據(jù)契約怎么定義用 JSON 還是別的格式重試的時候怎么保證不重復執(zhí)行有副作用的操作這些后面會逐個展開。2. 節(jié)點鏈的核心細節(jié)與實操要點2.1 節(jié)點數(shù)據(jù)契約的設計節(jié)點之間傳遞的數(shù)據(jù)格式是整個流水線的接口協(xié)議。這個協(xié)議設計得好后面擴展和維護都輕松設計得爛改一個字段就要動好幾個節(jié)點。我的做法是定義一個統(tǒng)一的節(jié)點輸出結(jié)構(gòu)所有節(jié)點都必須遵守。這個結(jié)構(gòu)至少包含四個部分狀態(tài)標識、業(yè)務數(shù)據(jù)、元信息、錯誤信息。狀態(tài)標識告訴調(diào)度器這個節(jié)點是成功還是失敗業(yè)務數(shù)據(jù)是給下一個節(jié)點用的實際內(nèi)容元信息記錄執(zhí)行時間、重試次數(shù)、使用的模型版本等錯誤信息在失敗時填充方便排查。# 節(jié)點輸出的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)示意 node_output { status: success, # success / failed / skipped data: { # 業(yè)務數(shù)據(jù)下一個節(jié)點的輸入 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: ...} }這里有個容易忽略的點業(yè)務數(shù)據(jù)要盡量保持純數(shù)據(jù)不要塞入任何跟執(zhí)行環(huán)境相關(guān)的東西比如文件句柄、數(shù)據(jù)庫連接、臨時路徑。這些應該放在元信息里或者干脆不傳。原因是業(yè)務數(shù)據(jù)需要被序列化存儲如果里面有不可序列化的對象整個狀態(tài)持久化就會失敗。我早期就犯過這個錯把一個自定義對象塞進 data 里結(jié)果存的時候直接報錯排查了半天。另一個要點是數(shù)據(jù)契約要向前兼容。意思是當你在某個節(jié)點新增一個字段時不應該導致下游節(jié)點崩潰。做法是下游節(jié)點讀取字段時永遠用取不到就給默認值的方式而不是假設字段一定存在。這個習慣能省掉大量因為版本不一致導致的詭異 bug。2.2 狀態(tài)持久化的選型與實現(xiàn)狀態(tài)存哪里直接決定了流水線的可靠性和復雜度。我試過三種方案各有適用場景。方案一本地文件系統(tǒng)。每個節(jié)點的輸出寫成一個 JSON 文件文件名帶上節(jié)點名和序號。優(yōu)點是零依賴、實現(xiàn)簡單、方便人工查看。缺點是并發(fā)能力差多進程同時寫可能沖突而且換臺機器就跑不了。適合單機、單人使用的小型流水線。方案二關(guān)系型數(shù)據(jù)庫。建一張表字段包括流水線 ID、節(jié)點名、狀態(tài)、輸出數(shù)據(jù)、時間戳。優(yōu)點是查詢方便、支持并發(fā)、事務保證一致性。缺點是數(shù)據(jù)量大的時候 JSON 字段存起來有點笨重而且需要維護數(shù)據(jù)庫。適合需要多任務并行、需要查詢歷史記錄的場景。方案三對象存儲 輕量索引。大塊的業(yè)務數(shù)據(jù)存對象存儲狀態(tài)和索引存數(shù)據(jù)庫或緩存。優(yōu)點是擴展性好、存儲成本低。缺點是架構(gòu)復雜需要處理對象存儲的最終一致性問題。適合數(shù)據(jù)量大、需要長期保存中間產(chǎn)物的場景。我目前的主力方案是方案二用一張簡單的表搞定。表結(jié)構(gòu)大概是這樣字段名類型說明pipeline_idstring流水線實例唯一標識node_namestring節(jié)點名稱node_indexint節(jié)點在鏈中的位置statusstringpending/running/success/failedoutput_datatext節(jié)點輸出的 JSON 序列化retry_countint已重試次數(shù)created_atdatetime創(chuàng)建時間updated_atdatetime更新時間關(guān)鍵點是pipeline_id node_name 建唯一索引這樣重試的時候可以直接 upsert不會產(chǎn)生重復記錄。另外 status 字段要支持running這個中間態(tài)用來標記節(jié)點正在執(zhí)行防止重復觸發(fā)。注意寫狀態(tài)的時候一定要先寫running再執(zhí)行節(jié)點邏輯執(zhí)行完再更新為success或failed。如果進程在執(zhí)行過程中崩潰重啟后看到running狀態(tài)的節(jié)點就知道這個節(jié)點可能執(zhí)行了一半需要根據(jù)冪等性決定是重試還是跳過。2.3 重試策略的粒度控制重試不是簡單地失敗了再跑一次里面有很多講究。我的經(jīng)驗是把重試分成三個層次每個層次處理不同的問題。第一層節(jié)點內(nèi)部重試。針對那些瞬時故障比如網(wǎng)絡抖動、接口限流。這種重試在節(jié)點內(nèi)部完成對調(diào)度器透明。通常用指數(shù)退避第一次等 1 秒第二次等 2 秒第三次等 4 秒最多重試 3 次。超過 3 次還失敗就把節(jié)點標記為 failed交給上層處理。第二層節(jié)點級重試。當節(jié)點內(nèi)部重試耗盡后調(diào)度器可以決定是否重新執(zhí)行整個節(jié)點。這一層重試通常針對那些重跑一次可能就好了的情況比如模型返回了不合規(guī)的內(nèi)容、外部服務臨時不可用。節(jié)點級重試要配合冪等性設計確保重復執(zhí)行不會產(chǎn)生副作用。第三層流水線級重試。從某個失敗的節(jié)點開始重新跑后續(xù)所有節(jié)點。這一層通常由人工觸發(fā)或者由定時任務在檢測到失敗后自動觸發(fā)。流水線級重試的關(guān)鍵是從斷點續(xù)跑而不是從頭再來。# 重試策略配置示意 retry_policy { extract_agent: { max_internal_retry: 3, # 節(jié)點內(nèi)部重試次數(shù) internal_backoff: exponential, max_node_retry: 2, # 節(jié)點級重試次數(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)限不足這些重試多少次都沒用應該直接失敗并報警。我見過有人把所有錯誤都無腦重試結(jié)果一個明顯的配置錯誤被重試了十幾次浪費了大量時間和資源。2.4 冪等性重試的安全底線冪等性是重試的前提。如果一個操作重復執(zhí)行會產(chǎn)生副作用那重試就是危險的。比如給用戶發(fā)通知這個操作重試一次就多發(fā)一次用戶會收到重復消息。保證冪等的常見做法有三種。第一種是天然冪等比如把某個字段更新為固定值執(zhí)行多少次結(jié)果都一樣。第二種是去重標識每次執(zhí)行前先檢查這個操作是否已經(jīng)做過用一個唯一 ID 標記。第三種是狀態(tài)機約束只有處于特定狀態(tài)時才允許執(zhí)行執(zhí)行后狀態(tài)改變重復執(zhí)行會被拒絕。在流水線場景里我通常給每個節(jié)點操作分配一個基于 pipeline_id 和 node_name 生成的冪等鍵。節(jié)點執(zhí)行前先查這個鍵對應的記錄如果已經(jīng)成功執(zhí)行過就直接返回上次的結(jié)果不再重復執(zhí)行。這個檢查要放在節(jié)點邏輯的最前面而且要保證檢查和執(zhí)行之間的原子性否則并發(fā)場景下還是可能重復。實操心得冪等鍵的生成要穩(wěn)定不能包含時間戳或隨機數(shù)否則每次生成的鍵都不一樣去重就失效了。我一般用pipeline_id : node_name作為冪等鍵簡單可靠。3. 完整實操流程與核心環(huán)節(jié)實現(xiàn)3.1 流水線調(diào)度器的骨架實現(xiàn)調(diào)度器是整個流水線的大腦它負責按順序執(zhí)行節(jié)點、處理失敗、管理狀態(tài)。我寫了一個簡化版的調(diào)度器骨架核心邏輯不到一百行但覆蓋了主要場景。class PipelineRunner: def __init__(self, nodes, state_store, retry_policy): self.nodes nodes # 節(jié)點列表按執(zhí)行順序排列 self.state_store state_store # 狀態(tài)存儲 self.retry_policy retry_policy def run(self, pipeline_id, initial_input): # 從狀態(tài)存儲里讀取已完成的節(jié)點實現(xià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é)點已成功執(zhí)行過直接讀取上次的輸出 current_input completed[node.name][data] continue # 執(zhí)行節(jié)點帶重試 result self._execute_with_retry(node, current_input, pipeline_id) if result[status] ! success: # 節(jié)點最終失敗記錄狀態(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): # 先標記為 running防止重復觸發(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這個骨架有幾個設計點值得說明。第一斷點續(xù)跑是通過讀取已完成節(jié)點實現(xiàn)的每次 run 都先查一遍哪些節(jié)點已經(jīng)成功跳過它們。第二節(jié)點執(zhí)行前先標記 running這樣如果進程崩潰重啟后能看到哪些節(jié)點處于中間狀態(tài)。第三重試邏輯封裝在 _execute_with_retry 里節(jié)點本身不需要關(guān)心重試。3.2 單個節(jié)點的標準寫法每個節(jié)點都要遵循統(tǒng)一的接口這樣調(diào)度器才能無差別地調(diào)用它們。我定義的節(jié)點接口很簡單一個 execute 方法接收輸入數(shù)據(jù)返回標準格式的輸出。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) # 校驗抽取結(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)} }這里有個細節(jié)節(jié)點內(nèi)部要做結(jié)果校驗。模型調(diào)用成功不代表結(jié)果可用可能返回了空內(nèi)容、格式錯誤、或者明顯不合理的結(jié)果。這些情況應該在節(jié)點內(nèi)部就判定為失敗觸發(fā)重試而不是把垃圾數(shù)據(jù)傳給下游。我一般會在節(jié)點里加幾個斷言比如關(guān)鍵字段不能為空、結(jié)果長度在合理范圍內(nèi)。另一個細節(jié)是異常要捕獲并轉(zhuǎn)成標準格式不要讓異常直接拋到調(diào)度器。這樣調(diào)度器處理起來統(tǒng)一而且錯誤信息能被完整記錄到狀態(tài)里。當然如果是那種完全無法恢復的異常比如配置錯誤也可以選擇直接拋出讓調(diào)度器快速失敗。3.3 節(jié)點間的數(shù)據(jù)傳遞與轉(zhuǎn)換節(jié)點之間的數(shù)據(jù)傳遞看起來簡單實際上是最容易出問題的地方。上游節(jié)點輸出的數(shù)據(jù)結(jié)構(gòu)下游節(jié)點不一定能直接用中間往往需要一層轉(zhuǎn)換。我的做法是在每個節(jié)點的入口處做一次輸入適配。下游節(jié)點不直接依賴上游節(jié)點的原始輸出而是通過一個適配函數(shù)把上游輸出轉(zhuǎn)成自己需要的格式。這樣做的好處是當上游節(jié)點的輸出結(jié)構(gòu)變化時只需要改適配函數(shù)不用動下游節(jié)點的核心邏輯。def adapt_extract_to_analyze(extract_output): 把抽取節(jié)點的輸出適配成分析節(jié)點的輸入 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é)點可能因為版本不同、或者某些可選字段沒生成導致下游需要的字段不存在。適配函數(shù)里用.get()加默認值比直接索引安全得多。我踩過的坑就是上游改了字段名下游直接 KeyError整個流水線掛掉排查了半天才發(fā)現(xiàn)是字段名對不上。還有一個實踐是在適配函數(shù)里做數(shù)據(jù)量控制。上游可能輸出了很長的文本下游如果直接全量處理可能超出模型的上下文限制。適配函數(shù)里可以截斷、摘要、或者只取關(guān)鍵部分。這個邏輯放在適配層比放在節(jié)點內(nèi)部更清晰。3.4 斷點續(xù)跑的完整驗證斷點續(xù)跑是這套架構(gòu)的核心價值但驗證它是否真的工作需要專門設計測試。我的測試方法是在流水線跑到中間某個節(jié)點時人為殺掉進程然后重新啟動看它是否從斷點繼續(xù)而不是從頭再來。具體操作是在第三個節(jié)點執(zhí)行前加一個time.sleep(30)然后在 sleep 期間手動 kill 進程。重啟后觀察日志如果前兩個節(jié)點被跳過、直接從第三個節(jié)點開始說明斷點續(xù)跑生效了。這個測試我建議每個流水線都做一遍因為斷點續(xù)跑的邏輯很容易因為狀態(tài)存儲的 bug 而失效。驗證的時候要特別注意狀態(tài)寫入的時機。如果節(jié)點執(zhí)行完了但狀態(tài)還沒寫入就崩潰了重啟后這個節(jié)點會被重新執(zhí)行。這本身不是問題只要冪等但會導致重復計算。更糟的情況是狀態(tài)寫入了但節(jié)點實際沒執(zhí)行完重啟后節(jié)點被跳過結(jié)果就是數(shù)據(jù)不完整。所以狀態(tài)寫入必須放在節(jié)點執(zhí)行成功之后而且要保證寫入的原子性。實操心得我習慣在狀態(tài)里額外記錄一個節(jié)點輸出摘要比如輸出數(shù)據(jù)的哈希值。重啟后如果發(fā)現(xiàn)狀態(tài)是 success 但摘要對不上說明狀態(tài)可能被污染了這時候可以選擇強制重跑這個節(jié)點。這個檢查能發(fā)現(xiàn)一些隱蔽的狀態(tài)不一致問題。4. 常見問題與排查技巧實錄4.1 節(jié)點卡死與超時處理節(jié)點卡死是流水線最常見的問題之一。表現(xiàn)是某個節(jié)點一直處于 running 狀態(tài)既不成功也不失敗整個流水線就停在那里。原因通常是節(jié)點內(nèi)部有阻塞操作比如網(wǎng)絡請求沒有超時設置、模型調(diào)用卡住、或者死循環(huán)。解決方法是給每個節(jié)點加超時控制。超時控制要分兩層節(jié)點內(nèi)部的操作超時和調(diào)度器層面的節(jié)點超時。節(jié)點內(nèi)部的操作超時比如 HTTP 請求設置 30 秒超時模型調(diào)用設置 120 秒超時。調(diào)度器層面的節(jié)點超時是給整個節(jié)點執(zhí)行設一個上限比如 5 分鐘超過就強制中斷并標記為失敗。# 調(diào)度器層面的超時控制 import signal def execute_with_timeout(node, input_data, timeout_seconds): def handler(signum, frame): raise TimeoutError(f節(jié)點 {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)驗是取正常執(zhí)行時間的 3 倍。比如某個節(jié)點正常跑 30 秒超時就設 90 秒。這樣既能容忍正常的波動又不會讓卡死的節(jié)點拖太久。如果某個節(jié)點執(zhí)行時間波動很大那就取 P99 耗時的 2 倍。4.2 狀態(tài)不一致的排查思路狀態(tài)不一致的表現(xiàn)是流水線報告某個節(jié)點成功了但下游節(jié)點拿到的數(shù)據(jù)是空的或者格式不對。這種問題往往很隱蔽因為表面上流水線是成功的。排查這類問題我一般按這個順序查先看狀態(tài)存儲里該節(jié)點的 output_data 是否完整再看下游節(jié)點的輸入適配函數(shù)是否正確處理了這份數(shù)據(jù)最后看下游節(jié)點是否真的收到了數(shù)據(jù)。很多時候問題出在適配函數(shù)上比如字段名寫錯了、默認值給得不合理。還有一種狀態(tài)不一致是并發(fā)寫入導致的。如果同一個流水線被觸發(fā)了兩次兩個進程同時寫狀態(tài)可能互相覆蓋。解決辦法是給狀態(tài)寫入加鎖或者用數(shù)據(jù)庫的唯一索引 upsert 來保證原子性。我傾向于后者因為不依賴應用層的鎖更可靠。問題現(xiàn)象可能原因排查方法節(jié)點一直 running節(jié)點卡死或進程崩潰查進程狀態(tài)看是否有超時控制下游拿到空數(shù)據(jù)適配函數(shù)字段名錯誤打印上游輸出和適配后輸入對比狀態(tài)被覆蓋并發(fā)寫入檢查是否有重復觸發(fā)加唯一索引重試后結(jié)果重復冪等性失效檢查冪等鍵生成邏輯斷點續(xù)跑失效狀態(tài)寫入時機錯誤檢查狀態(tài)寫入是否在節(jié)點成功后4.3 重試風暴的預防重試風暴是指大量節(jié)點同時失敗并同時重試導致下游服務被瞬間打爆。這種情況在批量處理場景里特別常見比如一次性提交了一百個流水線某個外部服務掛了一百個流水線同時重試直接把服務打得更掛。預防重試風暴有幾個手段。第一是加隨機抖動重試的等待時間加上一個隨機值避免所有重試同時發(fā)生。第二是限制并發(fā)同一時間只允許一定數(shù)量的節(jié)點在執(zhí)行超出的排隊等待。第三是熔斷機制當某個外部服務的失敗率超過閾值時暫時停止調(diào)用它等一段時間再恢復。# 帶抖動的指數(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% 的隨機抖動 return wait jitter熔斷機制我一般用一個簡單的計數(shù)器實現(xiàn)記錄最近 N 次調(diào)用的失敗次數(shù)如果失敗率超過 50%就打開熔斷開關(guān)后續(xù)調(diào)用直接返回失敗不實際調(diào)用等 60 秒后再半開放幾個請求試探。這個邏輯不復雜但能有效防止雪崩。4.4 中間結(jié)果的清理策略流水線跑多了中間結(jié)果會越積越多占滿存儲。清理策略要根據(jù)業(yè)務需求來定。如果中間結(jié)果需要長期保留用于審計或回溯那就不能隨便刪得做歸檔。如果只是臨時數(shù)據(jù)跑完就可以清理。我的做法是給每個流水線實例設置一個 TTL生存時間默認 7 天。超過 TTL 的實例其狀態(tài)和中間結(jié)果會被定時任務清理。對于需要長期保留的在創(chuàng)建實例時標記為持久化跳過清理。清理任務本身也要冪等重復執(zhí)行不會誤刪。實操心得清理之前先做一次冷備份把要刪的數(shù)據(jù)導出到低成本存儲。我吃過虧有一次清理任務寫錯了條件把還在用的數(shù)據(jù)刪了幸好有備份才恢復過來。從那以后所有刪除操作都先備份再刪。5. 多 Agent 協(xié)作下的節(jié)點編排進階5.1 串行之外的編排模式雖然標題說的是串行流水線但實際項目里經(jīng)常需要更靈活的編排。我在串行的基礎(chǔ)上擴展了兩種模式條件分支和并行匯聚。條件分支是指根據(jù)上游節(jié)點的輸出決定走哪條下游路徑。比如質(zhì)量校驗節(jié)點發(fā)現(xiàn)內(nèi)容不合格就跳到重新生成分支而不是繼續(xù)往下走。實現(xiàn)方式是在節(jié)點輸出里加一個next_node字段調(diào)度器根據(jù)這個字段決定下一個執(zhí)行誰。并行匯聚是指多個節(jié)點同時執(zhí)行都完成后匯聚到一個節(jié)點。比如同時調(diào)用三個不同的模型生成候選內(nèi)容然后由一個選擇節(jié)點挑出最好的。實現(xiàn)方式是調(diào)度器維護一個依賴圖只有所有前置節(jié)點都完成匯聚節(jié)點才能執(zhí)行。# 條件分支的節(jié)點輸出 { status: success, data: {...}, meta: {node_name: quality_check}, next_node: regenerate_agent # 指定下一個節(jié)點 }這兩種模式讓流水線從一條直線變成了一張圖表達能力大大增強。但復雜度也上去了所以我建議先用串行跑通有明確需求再引入分支和并行。過早引入復雜編排調(diào)試成本會成倍增加。5.2 節(jié)點版本管理與灰度當流水線跑了一段時間后你可能會想優(yōu)化某個節(jié)點比如換個更好的模型、調(diào)整提示詞。直接改節(jié)點代碼有風險因為正在跑的流水線可能受影響。我的做法是給節(jié)點加版本號新版本和舊版本并存通過配置決定用哪個版本。灰度發(fā)布的流程是先讓新版本處理 10% 的流水線觀察成功率和輸出質(zhì)量沒問題再擴大到 50%最后全量切換。如果新版本出問題改配置切回舊版本即可不用改代碼重新部署。版本管理還有一個好處是可追溯。每個流水線實例記錄它用的是哪個版本的節(jié)點出問題的時候能精確定位到具體版本。我一般把版本號存在節(jié)點輸出的 meta 里方便查詢。5.3 監(jiān)控與告警的關(guān)鍵指標流水線跑起來之后必須有一套監(jiān)控否則出了問題都不知道。我關(guān)注的指標有這么幾個節(jié)點成功率每個節(jié)點的成功比例低于 95% 就要警惕。節(jié)點耗時 P9595% 的請求在多少時間內(nèi)完成用來發(fā)現(xiàn)性能退化。重試率重試次數(shù)占總執(zhí)行次數(shù)的比例高重試率說明有系統(tǒng)性問題。流水線完成率成功跑完的流水線占總提交量的比例??ㄋ拦?jié)點數(shù)處于 running 狀態(tài)超過閾值的節(jié)點數(shù)量。告警策略上我設置了兩級警告級和嚴重級。警告級發(fā)通知但不打斷比如成功率降到 95% 以下。嚴重級直接打電話比如成功率降到 80% 以下或者有節(jié)點卡死超過 10 分鐘。告警要帶上下文比如是哪個節(jié)點、哪個流水線實例、錯誤信息是什么這樣排查起來快。6. 從零搭建時的幾個關(guān)鍵決策6.1 自研還是用現(xiàn)成框架市面上有不少工作流編排框架功能很全但我的建議是先用自研的輕量方案跑通有明確痛點再考慮引入框架。原因是框架有學習成本和適配成本而且很多框架為了通用性做了大量抽象調(diào)試起來反而更麻煩。自研方案的核心代碼其實不多一個調(diào)度器加一個狀態(tài)存儲幾百行就能搞定。等你的流水線復雜到需要 DAG 編排、需要可視化界面、需要復雜的權(quán)限控制時再考慮引入框架也不遲。我見過不少項目一上來就上重型框架結(jié)果大部分功能用不上反而被框架的約束綁住了手腳。6.2 狀態(tài)存儲的容量規(guī)劃狀態(tài)存儲會隨著流水線數(shù)量增長而膨脹。一個流水線實例如果有 5 個節(jié)點每個節(jié)點的輸出平均 10KB那就是 50KB。一天跑 1000 個實例就是 50MB。一年下來接近 20GB。這個量級用普通數(shù)據(jù)庫完全扛得住但要注意索引和查詢優(yōu)化。如果數(shù)據(jù)量更大比如一天跑十萬個實例那就要考慮分庫分表或者用專門的時序數(shù)據(jù)庫。不過大多數(shù)場景到不了這個量級我建議先按單表設計等真的遇到性能瓶頸再優(yōu)化。過早分片會讓架構(gòu)復雜化得不償失。6.3 團隊協(xié)作下的接口約定如果流水線是多人協(xié)作開發(fā)的節(jié)點之間的接口約定就特別重要。我的做法是維護一份節(jié)點契約文檔每個節(jié)點明確寫清楚輸入需要哪些字段、輸出會提供哪些字段、可能拋出哪些錯誤、重試策略是什么。這份文檔是節(jié)點開發(fā)的依據(jù)也是排查問題的參考。契約變更要走流程先改文檔再改代碼通知所有相關(guān)方。我見過因為某個節(jié)點偷偷改了輸出字段導致下游節(jié)點集體掛掉的事故。有了契約文檔和變更流程這類問題能大幅減少。7. 我踩過的幾個印象深刻的坑7.1 狀態(tài)寫入順序?qū)е碌挠撵`成功有一次流水線報告某個節(jié)點成功了但下游拿到的數(shù)據(jù)是空的。排查了半天發(fā)現(xiàn)是狀態(tài)寫入的順序有問題代碼先寫了 success 狀態(tài)再寫 output_data結(jié)果寫 output_data 的時候失敗了狀態(tài)卻已經(jīng)是 success。重啟后調(diào)度器看到 success 就跳過了這個節(jié)點下游拿到空數(shù)據(jù)。修復方法很簡單把狀態(tài)和輸出數(shù)據(jù)放在一次寫入里要么都成功要么都失敗。如果存儲不支持原子寫入那就先寫數(shù)據(jù)再寫狀態(tài)狀態(tài)寫入作為提交動作。這個教訓讓我明白狀態(tài)管理里的順序問題能造成很隱蔽的 bug。7.2 冪等鍵包含時間戳的慘案早期我生成冪等鍵的時候順手加了個時間戳想著每次執(zhí)行都是新的。結(jié)果重試的時候因為時間戳變了冪等鍵也變了去重完全失效同一個操作被執(zhí)行了多次。更糟的是這個操作有副作用導致數(shù)據(jù)重復。修復方法是把冪等鍵改成只包含穩(wěn)定標識比如 pipeline_id 和 node_name。時間戳這種每次都變的東西絕對不能進冪等鍵。這個坑讓我對什么該進冪等鍵有了深刻認識只有那些在同一次邏輯執(zhí)行中保持不變的東西才能進。7.3 超時設置過短導致的誤判有個節(jié)點正常執(zhí)行需要 45 秒左右我一開始把超時設成了 60 秒想著留點余量。結(jié)果高峰期的時候節(jié)點執(zhí)行時間漲到 70 秒頻繁超時。超時后重試重試又超時陷入了惡性循環(huán)。后來我把超時改成 180 秒問題解決了。教訓是超時時間要基于實際觀測的 P99 耗時來定而不是拍腦袋。而且要考慮高峰期的影響留足余量。超時設得太短會把正常的慢請求誤判為失敗反而增加系統(tǒng)負擔。8. 后續(xù)可以繼續(xù)擴展的方向這套流水線跑穩(wěn)定之后我陸續(xù)加了一些擴展。一個是節(jié)點緩存對于輸入相同的節(jié)點直接返回緩存結(jié)果省掉重復計算。緩存鍵用輸入數(shù)據(jù)的哈希緩存有效期根據(jù)業(yè)務定。這個優(yōu)化讓重復任務的耗時降低了一大半。另一個是人工審核節(jié)點。有些關(guān)鍵步驟需要人工確認比如生成的內(nèi)容要人工審核后才能發(fā)布。我加了一種特殊的節(jié)點執(zhí)行時把任務掛起等人工在界面上點通過或拒絕后再繼續(xù)。這個節(jié)點讓流水線能處理需要人工介入的場景。還有一個方向是流水線的可視化。把每個節(jié)點的狀態(tài)、耗時、輸出用圖形界面展示出來排查問題的時候一目了然。這個我還在做目前是用簡單的 HTML 頁面渲染狀態(tài)數(shù)據(jù)夠用但不夠好看。這套架構(gòu)的核心思想其實就一句話把復雜任務拆成可獨立重試的小步驟把狀態(tài)外置以便隨時恢復。理解了這一點具體用什么技術(shù)實現(xiàn)都是次要的。我在實際項目里用這套思路處理過內(nèi)容生成、數(shù)據(jù)處理、報表生成等多種場景每次都能顯著降低調(diào)試成本和重跑成本。如果你也在做類似的多步驟任務不妨試試這個思路先從最簡單的兩三個節(jié)點開始跑通了再逐步擴展。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩在线aaa| 激情五月丁香六月婷婷| 禁片二区| 国产精品久久久久久妇女6080| 五月婷婷激清网| 丁香蜜臀黄色婷婷五月天| 日韩操人| 天天干天天干天天干天天干天| 三级成人网站| 99热乎| 潘金莲AAAAAAAAAA| 97精品人人A片免费看| 人妻久久久久久久 | 99热66| 婷婷五月亚洲一本在线丁香| 五月婷婷丁香五月婷婷| 襙逼网| 在线你懂的亚洲欧| 天天综合色丁香| 色综合久久久无码中文字幕999| 五月婷婷色啪| 综合五月激情| 综合色在线| 99视频在线| 99热在这里只有精品| 月婷婷亚洲| 日本色99| 99精品久久久久久久婷婷| 91久女| 五月天色综合| 色婷婷久久| 在线观看免费狠狠色丁香香综合| 久久久久人妻| 无码色| 婷婷色色网| 欧美噜噜噜草| 这里只有精品视频在线观看免费| 九九精品片一| 九热视频这里只有精品| 亚洲一区二区无码蜜乳av| 狠狠色婷婷7777久| 中文人妻主播久久| 99色热视频| 7月婷婷六月丁香| 99热1| 性爱七区| 色呦呦美女| 99免费青青蜜臀| 亚洲丁香花五月丁香花| 色444综合网| 亚洲精品国产熟女久久久| 色5月婷婷| 六月丁香五月婷婷| 9精品久久999| 伊人影院久久网| 丁香六月成人网| 99热这里在线精品| 天天综合图片| 九九99精品视频在线观看| 一本道综合网| 99热97| 天天爽天天摸人妻综合网| 婷婷 亚洲图片 丁香| 亚洲色五月天在线| 夜夜撸天天操| 五月婷婷,六月丁香| 婷婷五月激情图片| 69人人操人人爽| 日韩五月婷婷久久| 丁香色综合| 婷婷精品在线| 巴基斯坦粉嫰无码视频| 婷婷色综合av| 激情五月婷婷| www.久久综合| 五月天婷婷爱丁香中文字幕| 日本va欧美va欧美精品88| www.五月天| 九九视屏| 欧美天堂婷婷日韩| 97在线综合| jiujiu热在线视频| 五月天婷婷爱| 成片免费播放| 69人人操人人爽| 婷婷爱爱蜜臀天天操| 伊人干综合| 一本道综合网| 另类图片色五月| 九九在线精点品| 人妻熟人中文字幕一区二区| 色综合丁香婷婷| 97亚洲色 torrent magnet| 欧美毛片www| 色播播五月| 色播婷婷五月天| 亚洲色综合| 亚洲狠狠爱婷婷| 国产精品国产| www.开心激情| 另类少妇人与禽zOZZ0性伦| 在线亚洲综合网| 日韩另类在线观看| 超碰人人摸人人操| 69精品人人人人| 日本成人噜噜| 中文字幕丰满孑伦无码专区| 婷婷五月天久久久| 美欧成人视频| 六月婷婷最新网址| 狠色色狠网| 国产激情AV| 9热网站| 色婷婷超碰| 热无码A∨| 丁香五月天啪啪| 久久xxxx| 97人人射| 激情文学久久| 婷婷九九| 超碰在线人妻| 人人摸人人操人人爽| 色狠狠六月| 人人摸人人干| 久久久久久久久久久月丁| 婷婷色色综合激情| 91啪啪视频| 黑人熟妇一区二区三区| 噜噜吧天天爱| 69色婷婷| 激情五月天小说网| 六月激情婷婷综合| www.婷婷五月天.com| 午夜不卡成人一区二区| 日韩成人中文| 五月花丁香婷婷| 超碰碰碰碰| www.久久爱.c n| 日韩六十路91性交电影| 亚洲V国产V欧美V久久久久久| 91精品综合久久婷婷九色| 99这里是精品| 伊人影院久久网| 久久久久久丁香五月| 99热在线播放| 激情小说五月天中文字幕| 色吧五月婷婷| 亚洲小说五月婷婷| 中文字幕中文有码在线| 亚洲精品午夜国产va久久成人| 婷婷情爱五月天6| 丁香五月91| 婷婷五月激情五月丁香五月| 九九热视频在线观看| 成人AV播放| 色丁香在线视频| 噼里啪啦完整版中文在线观看| 亚洲、欧美、国产另类笫二区| 五月天激情小说| 99久久婷婷五月| 99热这里有精品2| 国产日韩欧美| 秋霞三及片| 亚洲va久久久噜噜噜久久天堂| 丁香五月网| 五月天大香蕉av| 九九操综合网| 中日韩狠狠色| 五月天婷婷小说| 青青夜夜狠狠夜夜狠狠| 久久五月丁香综合| 丁香五月婷婷亚洲综合精品| 思思热99er在线视频| 狠狠干狠狠干| 丁香婷婷六月男男| 五月丁香色婷婷伊人| 五月丁香激情片| 亚州操人在线视频| 六月丁香好婷婷| 丁香五月激情综合久久| 婷婷五月天综合网| 久久久精品人妻录| 91狠狠综合久久| 99久在线精品99re8热| 伊人久久婷婷五月天激情四射| 琪琪色综合网站| 欧美婷婷五月丁香| 99色色热| 亚洲秘 无码一区二区三区妃光/1| 黄网免费观看| 日日夜夜天天爽| 人妻激情视频| 五月天开心色色网| 精品久久久人妻| 丁香婷婷人妻综合网| 五月天大香蕉婷| 婷婷色在线播放| 亚洲 综合中文| 亚洲成人在线观看av| 第四色五月天| Jh7Uf088VHafNm| 国产综合婷婷| 2015在线中文字幕| 婷婷丁香五月综合| www.91九色| 激情99热| 日韩成人电影AV| 琪琪布丁香社区激情五月天| 久久久久9| 狠狠色综合精品视频在线| 狠狠香蕉| 手机旧版看人妻1025| 人妻久久久久久| 五月婷婷,六月丁香| 99re99热| 91精品婷婷国产综合久久| 中文国产五月天| www.maotanji.com| 五月婷免费视频| 99色综合| 激情綜合W W W,激情五月天| 91人人网| 五月婷婷色| 五月丁香网中文字幕| 亚洲色图五月丁香| 日韩无码乱轮| 欧亚中文A V| 久久久噜噜噜久久人妻| 日韩黄黄| 国产在线黄色| 激情四射网| 开心五月网 | 欧美成人AAA片一区国产精品 | www五月婷婷| 亭亭色色五月天| 久久人妻乱| 99视频精品全部免费观看| 影音先锋一区| 9久热在线视频精品| 婷婷碰碰| 五月婷综合| 91干婷婷| 91av视频| 91干在线视频| 五月香蕉网| 日韩一级一片内射视频4K| 99亚州综合精品成人网| 热99在线| 91中文在线| 色色亚洲视频| 天天综合精品| 精品一二三区久久AAA片| 国产精产国品一二三在观看| av亚洲国产小电影| 色色亚洲99com| 无码免费人妻A片AAA毛片西瓜| 99精品免费视频| 婷婷激情九月| 日本色道视频网站| 色色色在线播放| 人妻久久久久久久久妻久久久久久久久 | 夜夜撸天天日| 五月丁香六月激情视频| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月丁香六月婷婷网站| 婷婷色六月| 人妻久久久久久久| 五月婷婷偷拍| www.色婷婷| 亚洲色久| 色婷婷亚洲综合网站| 久久五月天影院| 美女被操一区二区| 激情伊人网| 色99在线看| 久久伦乱| 少妇婷婷五月天| 久香草视频在线观看| 操逼福利视频| 中文AV在线观看| 久久婷婷亚洲| 欧美怡红院黄站| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 日韩成人av在线| 色五月六月| 另类图片五月天| 欧美特大片黄| 99九九在线精品热动漫| 亚洲丁香五月深爱五月| 丁香五月成人av| 玖玖婷婷色五月| www.五月丁香| 亚洲在线播放| 激情精品久久| 国产综合婷婷| 丁香五月婷婷天激情| 先锋av性爱成人电影| 国产性爱亚洲是图| www狠狠| www日本熟妇99在线视频| 久婷自拍视频| 开心五月丁香综合久久| 丁香五月欧美色综合| 婷婷在线播放| 九九九九大香蕉| 国产在线6| 久久这里只| 色色吧综合| 国产午夜成人免费看片无遮挡| 五月婷视频在线观看| 九九99在线免费在线观看视频| 日本五月丁香| AV性爱在线| 一级性感毛片| 久久婷婷五月丁香| 99碰碰| 亚洲激情六月| 99性感视频| 99热这里只有精品1025| 色网站9| 99在线er热| 99热激情| 欲色人妻| 99热精品6| 六月婷婷开心| 五月天激情图片| 五月丁香婷婷伊人| 国产又粗又大又爽又黄| 色就是色婷婷五月亚洲激情| 婷婷久久五月丁香| 久操97| 欧洲亚洲激情五月天在线| 亚洲不卡| 99久超碰| 五月婷激情影院| 亚洲色色色色| 亚洲视频在线网站| 亚洲无码成人性爰网| 四虎成人精品永久免费AV九九| 五月天婷婷婷| 五月婷AV| 青青久久五月天丁香婷婷| 婷婷五月天改成什么了| 久碰视频| 人人爽人人射-美女久久久久久久久久-成人AV | 婷婷五六日| 五月天综合视频| 欧美乱码国产一级A片| 丁香五月开心五月激情| 两性婷婷丁香五月| 婷婷五月噜噜| 香蕉色色网| 五月欧美色色五月| 久久看九九90| 99热免| 99久操视频| 夜夜噜夜夜奇| 97人碰人操| 翔田千里无码| WwW色婷婷| 午夜爱爱爱成人| 五月天丁香| 激情久久四色| 91久久日日| 日本成人噜噜噜噜噜| 九九热在线视频| 深爱五月婷婷开心中文字幕| 少妇性按摩无码中文A片| 婷婷五月AA五月在线| 大香蕉手机视频| 怕怕av| 天天日夜夜爽| 成 人片 黄 色 大 片| 久久女婷| 亚洲亚洲人成综合网络| 夜夜综合色| 青青操丝袜美腿| 色婷婷五月综合| 男人天堂AV在线一区二区| 26uuu日韩| 96精品久久久久久久久| 色综合久久888| 色七色九九| 中文中文在线| 99无码精品| 秋霞A V毛片| 天天综合精品| 婷婷丁香激情五月天色色| www.韩日视频| 五月天婷婷激情小说电影| 热的国产,热的综合,热的有码| 精品一二三区久久AAA片| 另类激情五月| 婷婷伊人综合中文字幕| 成人午夜视频精品一区| 久久五月天婷婷| 欧美三级欧美一级| 久久加勤综合| 精品久热| 夜夜爽天天干| 人妻射精AV| 亚洲天堂婷婷| 久久伊人五月天| 国产丁香五月天婷婷| 丁香五月婷婷婷桃花影院| 婷婷五月天激情综合| 激情文学天天| 婷婷五月天AV在线| www.91五月| 激情四射婷婷| 91婷婷视频| 亚洲性视频| 天天日天天摸天天| 五月丁香啪啪激情| 亚洲国产黄色电影| 精品一二三区久久AAA片| 五月丁香在线观看| 秋霞影音91人妻久久| 99亚洲精美视频在线观看| 国产亚洲精品久久久久久牛牛| 99久久6| 五月天激情播播网| 天天射综合网站| 99爱在线| 久久婷视频| 国产日韩欧美性生活| 亚洲人妻电影| 久在热99| 国产欧美日韩综合精品一区二区| 五月丁香好婷婷A片网| 日韩欧美骚货| 亚洲精| 色色吧综合| 色婷婷色五月综合| 婷婷丁香大香蕉| 色五月激情综合网| 成人网址在线观看| 久久婷婷网| 丁香五月婷婷六月| 五月天激情子轮| 五月色婷婷亚洲 | 五月天激情小说| 亚洲AV网站在线观看| 热99精品视频| 久久人妻情侣| 丁香婷停五月激情综合深爱| 99热 在线观看| 婷婷九月综合| 级情九色| 99热精品在线观看| 99超级碰免费视频| 色色色色色色色色五月先| 日本大逼91| 综合网精品99| 五月丁香另类网| 国产AV一区二区三区日韩| 99这里有精品| 狠狠干综合| 五月婷婷激情五月| 99性视频| 狠狠精品干练久久久无码中文字幕| 色婷婷激情| 色五月婷婷丁香五月| 99热大香蕉| 大香蕉99| 激情丁香五月婷婷| 少妇性BBB搡BBB爽爽爽电影| 免费超碰在线观看| jiujiuxiangjiaowang| 久久五月婷天天干| 国产精品黑丝| 99热综合色图| 色9999日韩国产| 久久九区| www.爱操com.| 丁香激情综合| 秋霞AV淫| 99久久久久| 五月丁香| 色拍九九九| 五月天丁香综合在线| 欧美久人人| 久久婷婷久久| 琪琪理论片| 五月天激情国产综合AV| 婷婷久久亚洲| 久久婷婷精品| 婷婷不干网| 99久久偷拍视频| 狠狠色丁香久久| 色婷婷久久| 丁香五月六月婷婷自拍| 国产在这里只有精品| 极品另类| 免费看欧美成人A片无码| 九九在线热九九在线热99热| 激情性爱网站| 激情综合青草| 亚洲AV色婷婷人禽五月天| 五月婷婷成人| 亚洲熟妇AV乱码在线观看| 色五月 婷婷, 大香蕉| avv在线| 色五月婷婷婷婷婷婷婷婷婷婷| 无码毛片992367| 六月久久狠狠| 成人在线99| 久久R激情| 五月婷婷草| 激情六月丁香综合| 丁香五月婷婷视频| 国产高潮A片羞羞视频涩涩| 情色五月天 网站| 伊人婷婷大香蕉| 婷婷激情综合网| 97色啪| 免看黄大片AA | 亚州综合色| 干婷婷五月天| 99久久久久久| 丁香五月婷婷香| 五月激情丁香五月| 天天透天天爱| 色欲AVV| 91色色色| 开心五月天激情网| 91夫妻网站九色| 色综合婷婷| 欧美色爱五月天| 精品色色| 色停停香蕉视频| 成人超碰Av| 婷婷五月成人| 99色热| 草综合14| 日本nghangse中文字幕| 三级成人网站| 丁香五月AV| www.精品99| 日日夜夜狠狠操| 婷婷久久综合久| 99婷婷国产最新视频| 99综合激情久久精品久久| 操人91| 91丨九色丨丰满人妖| 97色色在线视频| 亚洲无AV在线中文字幕| 五月婷婷激情四季| 色五月天电影| 亚洲色色色色色色色色色| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 91碰| 五月婷婷丁香综合| 99热在线观看精品| 丁香婷五月天开心六月| 99热久久日本| 狠狠做婷婷| 在线亚洲综合| 碰超亚洲| 亚洲色小说在线综合| 久热免费| 色色永久| 99国产精品久久久久久久久久久 | 女人天堂AV| 操婷婷基地| 五月丁香六月综合激情无码软件亮点| 午夜]香婷婷深深爱| 五月丁香六月综合激情网| 亚洲精品久久久久久久久久飞鱼| 色播五月丁香综合| 91男同视频| 免费观看的AV| 99久久久精品| 99综合| 五月丁香综合成人社区| 97人人做| 久热这里只有精品3| 五月丁香啪啪综合| 熟女乱论网| 日本不卡一区二区三区| 五月丁香六月综合激情网| 久久精品熟女亚洲AV麻豆| 婷婷激情5月| 婷婷丁香久久网| 婷婷五月婷| 99久久.www| www热久久yy9| 噜综合| 亚洲国产精品VA在线看黑人| 色五XX| 亚洲久久日| 久久免片| 午夜国产精品AV在线播放| 成人 AV播放| 99久久玖玖| 26UUU一区二区| 欧美成人精品A片免费一区99| 亚洲精品五月| 伊人激情综合网| 开心激情婷婷| 国产在这里只有精品| 久久五月丁香婷婷| 日韩黄在免| 六月丁香激情| 狠狠肏综合网| 色欲五月婷婷| 丁香五月花| 婷婷性爱五月天| 久99视频在线观看| 色涩视频久久| 五月丁香人妻| 九九这里都是精品| 大香蕉九九| 五月婷婷婷婷婷婷艺术| 五月丁香好婷婷A片网| 国产精品99久久久久久久女警| 天天婷婷色六月| 99在线精品观看99| 激情婷婷激情在线不卡| 亚洲激情久久| 婷婷亚洲综合| 操丝袜视频影院导航| 五月婷婷偷拍| 五月婷婷欧洲| 另类图片五月天| 99热这里只有精品在线| 亚洲综合色丁香婷婷六月| 91日视频| 婷婷丁香六月天激情四射网| 婷婷丁香六月天| 色五月亚洲| 思思热性操| 婷婷情色五月天| 日本久久九| 亚洲中文字幕av| 狠狠色大香蕉| www.久久av.com| 狠狠五月丁香色婷| 婷婷色激情网| 日本高清久| 殴美97色| 九月激情婷婷丁香| 疯狂做受XXXX高潮A片动画| 午夜亚洲国产精品av一区二区| 日日舔夜夜操| 久久这里只有国产视频| 六月色色综合| 密黄站| 天天肏天天肏天天肏| 大香蕉久久伊人网| 99久久国产宗和精品1上映| 五月天精品视频| 五月色影院| 五月丁香激情欧洲啪啪| 六月婷婷五月丁香首页| 亚洲天堂热| 久久人五月| 99热在线观看| 丁香六月综合| 91久久1118| 五月天伊人综合| 五月丁香六月欧美综合网站| 成人综合伍月天| 五月天婷婷丁香蜜桃91| 婷婷久久国产视频| site:wpjngj.com| 日韩伊人大香蕉| 色爱爱综合网| 激情五月婷婷色播网| 日本天天综合| 久久五月天婷婷视频 | 婷婷五月18永久免费网站| 中文AⅤ大全| 五月Huangsewang| 亚洲国产精品二二三三区| 日日夜夜天天综合| 色色色热热热| www.91久久| h在线看免费版在线看| 二色av| 婷婷久久综| 丁香五月天堂网| 婷婷丁香97| 九九热视频这里只有精品| 91五月天| 青草视频在线播放| 五月天色色无码| 五月天啪啪网| 一起操 91N.com| 欧美A级成人婬片免费看理论| 激情五月四色| 99ri精品在线观看| 91干在线| 国产亚洲99久久精品| 色七色九九| 色五月aV| 色五月婷婷亚洲| 丁香五月天资源网| 99久久性爱| 狠狠色婷婷7777久| 婷婷视频在线| 99日逼视频| 亚洲不卡| 亚洲综合婷婷| www.婷婷五月| 久久久免费精彩视频| 依人大香蕉| 久777| 亚洲成人网站在线播放| 伊人激情| 深爱激情网五月天| 九九这里是免费的视频5| 99视频精品| 色婷丁香91| 中文字幕九九九九| 亚洲色激婷| dingxiangtingtingliuyue| 国产无人区大片| 久久这里只有精品热在99| 日韩AC在线免费观看| 精品爆操| 激情五月婷婷啪啪| 五月婷婷九| 色一情一乱一伦一区二区三区| 五月天婷婷激情六月久久 | 激情五月天啪啪视频| 婷婷五月激情在线视频| 欧美日综合| 婷婷激情六月中文| 五月天婷婷久久| 99热在线观看免费| 东京热免费视频| 久热视频97AV在线观看| 97操操| 色婷婷综合网站| 久久最新色| 好好干Av| www.五月婷婷.com| 99丁香五月| 亚洲午夜精品久久久久久人妖| 丁香五月天综合网| 天天爽天天爽| 天天久综合网永久入口17v| SS丁香五月婷婷| 五月天啪啪| 69精品无码一区二区三区| 激情五月天啪啪视频| 婷婷丁香九月| 人人操碰| 丁香婷婷十月| 97自拍视频在线| 九九色人| 色噜噜狠狠色综无码久久合欧美| 五月婷婷综合久久| 丁香天堂夜| www.丁香黄色五月天人与| 久久久久9| 99re久热只有精品6在线直播.com| 久久九精品| 婷婷五月天影院| 亚洲、欧美、国产另类笫二区| 天天干狠狠艹| 久久加勤综合| 亚州激情网站无码| 五月天婷婷久久视频| 99久久.www| 激情欧美五月丁香| 性爱技巧五月| 精品色色色| 色欧美色色色| 五月天婷婷深深爱| 办公室少妇激情呻吟A片在线观看| 色婷婷影院| 日韩在线视频中文字幕| 9l视频自拍9l九色9l成人| 伊人五月成人| www狠狠爱com| 天天干天天操| AV六月丁香| 婷婷六月五月天综合| 色色五月天 亚洲| 99这里只有精品在线| 八戒青柠影视剧在线观看| 久久欧洲久久| 最近中文字幕大全免费版在线 | 五月天五月色婷婷综合| 五月天综合在线| 99久久综合| 人妻久久久久久| Av性爱网站| 久久人妻少妇嫩草AV| 日本无va视频| 一级内射毛片| 99热国产这里只有精品| 激情五月天的婷婷| 欧美久久网| a网站免费观看| 99丁香五月婷| 婷婷六月啪啪| 99re在线观看视频| 色五月 婷婷, 大香蕉| 激情5月天天天| 九九成年视频| 啪啪色区| 亚洲丁香婷婷五月天综合色| 六月丁香五月婷婷| 亚洲丁香五月美女| 热99视频精品在线| 丁五月激情视频免费| 久久看婷婷| 免费黄色片子| 五月婷色啪| 狠狠色丁香久久婷婷综合五月| 婷婷丁香五月网| 991自拍视频| www.yw色| 好好干Av| 色婷婷色99国产综合精品| 99久热这里有精品| 99九九精品视频推荐| 夜夜撸夜夜骑| 激情图片亚洲| 狠狠一日| 久久久999精品| 久青青久| 99久热视频在线| 五月丁香六月激情综合| 九九视频这里是精品五月| 丁香六月欧美| 亚州色色色| 天天天天色天天天天天干| 五月丁香色婷基地综合久久| 九九热超碰| 六月丁香好婷婷| 五月丁香另类图片| 秋霞AV吧| 99精色| 9久热这里只有精品| 亚洲操逼片| 超碰狠狠干99| 99热精品中文字幕| 青青草原福利在线| 人妻久久久久久久久妻久久久久久久久| 男女啪啪做爰高潮无遮挡| 99久久婷婷五月综合| 色婷婷五月丁香在线观看| 久久精品噜噜噜成人A∨色欲| 五月丁香天堂网| 激情五月色播五月| 色五月无码| 91精品久久久久久久久久久久| 无码人妻少妇色欲AV一区二区| 婷婷八月丁香激情综合| 五月天天天开心激情网| 91se在线视频| 亚洲色色五月| 日本人人超碰| 激情综合婷婷| 激情五月天色播| 色婷婷六月天在线| 天天日天天狠狠操| 狠狠久久婷五月| 蜜乳AV成人| 性一交一乱一交A片久| 99热思思| 五月婷婷,六月丁香| 色宗合,宗合网| 欧美日本VA| www九九| 激情五月天www| 五月青青草综合| 丁香九月久久| 激情综合五| 婷婷激情四射五月天| 久久免费高| 五月婷丁香| 色五月播五月| 中文字幕av在线| 成人精品人妻| 久热这里只有精品6| 天天色综合网吨吧| 五月天伊人手机在线播放AV| 97色色色视屏| 袁子仪视频观看| 另类天堂| 亚洲日韩国产黑丝黑丝AVAV一区二区三区| 婷婷六月色情| 97操碰人人| 在线超碰精品| 丁香五月婷婷亚洲天堂| www.久操| 九九综合九色欧美狠狠| 性爱网五月婷婷| 青柠影视免费高清电视剧| AA片在线观看视频在线播放| 久草热在线视频| 亚洲va成人va成人va在线观看| 涩综合网| 99精品在这里| 色色色色热| 国产激情综合五月久久| 欧美成人AAA片一区国产精品| 精品色色| 嫩草极品| 大香蕉AV电影在线| 五月激情婷婷四射| 亚洲国产黄色电影| 99视频在线观看网址| 日韩一级淫乱片一区二区三区| 欧美黄色一级录像| 丁香伊人五月色婷婷五十路| 亚洲影院婷婷色| 色婷婷先锋| www.婷婷亚洲基地| 99在线精品视频观看免费下载| 婷婷激情小说网| 中文字幕日韩无码制服诱或| 丁香五月aV| 久久婷婷亚洲五月天| 九九热在线视频观看| 婷婷五月成人| 久久精品人妻| www.五月天| 大香蕉视频99| 国产精品国产| 黄色大片又大粗又爽| 五月丁香六月婷婷不卡免费无码| 婷婷五月天视频在线观看| 婷婷五月综合激情免费| 五月天久久综合婷婷| 色播五月天激情| 国产乱人偷精品人妻A片| 丁香婷婷综合喷| 在线婷婷| 亚洲丁香五月天在线视频| 激情五月天伊人av| www.jiujiujiu| 亚洲乱码精品久久久久..| 婷婷五月丁香青青草在线| 偷拍91九色| 白人荫道BBWBBB大荫道| 国产成人精品123区免费视频| 亚洲色频| 激情丁香社区| 色操b| 91九色无码日韩| 免费看成人AA片无码视频吃奶| 五月丁香视频色色| 激情五月婷婷综合| 第四色婷婷丁香五月| 操久久网| 婷婷94s| 99自拍视频| 久久婷婷激情视频| 丁香在线视频| 日韩精品99久久| 婷婷成人综合免费视频| 丁香五月偷拍| 亚洲黄色网址| 成人日韩欧美| 五月婷亚洲精品| 亚洲日本韩国| 五月婷婷色啪| 婷婷激情五月综合丁| 日本五月婷| 99在线精品免费视频| 玖玖婷婷综合| 五月丁香六月婷婷手机无线| 大香网伊人久久综合| 中文字幕人妻一区二区| 综合99在线| 欧美色宗和激情| 久久免费少妇高潮99精品| 久久婷婷成人视频| 五月婷婷免费在线视频| 色婷婷8| 91操色| 丁香婷婷九月| sewuyuetingtingiii| 国产欧美婷婷五月| 天天搞天天爽| 五月天色小说| 99久99热| 色啪网| 综合五月丁香97| 日日日日操| 婷婷五月天堂| 玖玖激情五月天| 97色色色| AV亚洲在线| 六月婷婷色宗合| 婷婷啪啪| 色性综合| 五月婷婷综合网| 日本色久| 蜜桃人妻无码AV天堂三区| 免费看片在线观看| 99热最新网址| 91干婷婷| 丁香五月婷婷六月婷| 丁香五月综合| 激情深爱婷婷网| 色婷婷狠狠| 91啪啪| 人妻综合网| 九九99免费理论| 九九热欧美| 香蕉视频91| 久久色天堂| www,com,五月色色| 久久伊人9| 激情五月天啪啪| 狠狠狠狠狠狠| 激情图片婷婷| 五月婷婷AV| 琪琪色五月天| 99自拍视频| 丁香五月婷婷色| 日韩无码色色| 99热这是里只有精品| 色色a| 天天摸,天天爽| 激情开心五月天| 婷婷五月永远18免费久久久| 国产看真人毛片爱做A片| WWW、日本色丁香、co m| 任你躁XXXXX麻豆精品| 丁香婷婷人妻综合网| 成 人片 黄 色 大 片| 丁香伊人综合| 婷婷欠久少妇| 日韩AAAAA| 97视频91| 五月天色不卡| 婷婷成人五月天一区| 婷婷热色| 丁香五月激情网| 欧美色色色| 五月天婷婷色| 伍月婷丁香花全集| 亚洲AV第二区国产精品| 91AV婷婷| 亚洲激情免费久久| 日本波多野结衣视频| 人人草人| 五月丁香影院| 五月丁香啪啪| 99热这里只有精品16| 人人操日| 国产亚洲精品久久久久久郑州 | 精品久久人妻| 人妻videos人妻高清| 九九热99久久99| 午夜婷婷久久| 天天摸,天天爽| 婷婷五月色花丁香社区| 99久超碰| 五月丁香婷婷婷婷综合网| 久久九九九九| 思思re99视频在线观看| 深爱激情av| 久久婷婷综合网| 色色热| 激情五月天偷拍综合网| 五月天综合在线| 人人操9| 日韩成人综合网| 五月综合婷婷网| 91久久综合亚洲噜噜成人在线| 开心五月深爱五月| 九九精品网| 韩日在线熟女| 亚洲色基地| 丁香五月综合| 天天操天天干天天日| 啊v视频在线观看| 99ER热精品视频| 天天肏在线观看| 欧爱综合视频| 大香蕉综合在线| av在线不卡播放| 99色色视频| 婷婷五月天六月丁香| 五月天色五月天| 婷婷激情在线| 亚洲一级 片内射网站在线观看| 久热91| 99成人小视频| 思思网站| 婷婷久久网| 国产亚洲99久久精品熟女| 99ri精品| 色五月丁香伊人| 六月亚洲| 天天久久人人| 久久久久9久无码视频| 色五月婷婷五月天| 久婷婷婷| 婷婷久久亚洲| 这里只有国产精品在线| 久久精彩综合视频| 九月丁香八月婷婷久久综合久97| 91av传媒高清在线视频网| 夜夜干天天操| 偷偷操99| 99热这里只有精品青草| 99re这里只有精品在线观看| 99小视频在线| 碰碰91| 五月天婷婷綜合院| 玖玖综合色区在线观看| 无码91中文字幕| 欧洲第一无人区观看| 97在线精品| 1024国产| 激情五月丁香社区| 久久激情五月婷婷| www.成人婷婷综合| 26uuu亚洲欧美| 午夜 外网 精品 在线| 蜜桃婷婷五月| 婷婷丁香五月av| 性视频久久| 97人凄人人操人人爽| 人人综合久| 丝雨一区二区| 香港九九六区八区99| 久99在线| 九九视频在线观看视频6 | 亚洲黄色影视| 久久综合五月天| 99性爱| 丁香色五月 97干| 五月天成人免费视频| 久久久久久人妻| 久久免费精彩视频| 99色热| 免费看欧美成人A片无码| 国产毛片精品一区二区色欲黄A片| 久久婷婷六月综合综合| 六月丁香网| 精品一二三区久久AAA片| 99精品偷自拍| 天堂呦 呦百度搜索-百度搜索| 国产69久久久欧美黑人A片| 五月婷婷综合激情小说| 国产精品24r| 丁香五月婷婷激情蜜桃| 亚洲AV无码一区二| 99日这里只有精品| 色婷婷亚洲精品天天综| 色五月丁香五月| 9色在线| 婷婷五月天综合网| 国产SUV精品一区二区6| 色婷婷色综合久久精品V| 婷婷六月丁香五月图区| 99在线一区| 色色五月天网站| 中文无码婷婷| 99热这里只有精品10| 婷婷五月丁香五月天| 五月天天天色| 丁香激情五月| 夜夜骑夜夜撸| 国产一级片色色| 日韩AC在线免费观看| 99.N在线视频| 久久大香蕉| 久久五月天激情婷婷| 呦呦视频无码播放| 婷婷五月天成人| 玖玖热视频| 东京热免费视频| 精品香蕉99久久久久网站 | 国产黄色av| 久久人人看| 婷婷综合激情五月综合| 欧美人人草| 在线不卡视频| 九九精品免费视频99| 久久婷婷超碰| 五月丁香激情四射| 九九爱这里只有精品| www.色色色色| 国产在线黄色| 97在线观视频免费观看| 97色啪| 狠狠狠婷婷五月综合| 激情小说婷婷五月| 99激情视频| 久热AⅤ| 欧美性二区| 五月婷婷,六月丁香| 久久99网站| 激情五月婷色| 欧美成人无码一区二区三区| 婷婷五月色情天| 国产激情久久久| 丁香五夜激情四射夜夜夜| 九九热色视频| 五月丁香人妻| 五月天激情小说| 久久女人九九| 天天干狠狠操| 五月综合激情| 欧美 色婷婷| 久热这里只有精品性色AV| 五月丁香中文| 99色在线观看| 成人综合视频在线| 婷婷五月精品中文字幕| 五月天狠狠| 久久日曰| 思思99re这里只有| 九九久久综合| 五月丁香五月丁香五月丁香五月丁香91| 四月婷婷五月色综合| 婷婷激情图片| 九色在线五月婷婷网址| 色综合色五月| 五月开心久久| 操逼综合激情网| www.思思99热| 久久综合九九| 久久98热re| 色色网站| 在线不卡AC| 亚洲色婷婷色| 久色网| 超碰免费大香蕉| 激情综合网色播五月| 亚州在线中文字幕| 六月亚洲| 久操婷婷| 亚洲在线播放| 婷婷五月丁香网| 九月丁香婷婷基地| 狠狠草婷婷| 天天操天天干天天日| 久久综合五月天| 午夜激情婷婷| 久久人人九| 激情五月视频在线婷婷| 我淫我色婷婷五月天激情四射| 五月丁香六月激情综合啪啪| 六月婷婷综合| 啊V视频在线观看| www.91.com黄| 亚洲天堂爱爱| 大香蕉久| 熟女网站久久| 久操大| 丁香婷婷六月| 密黄站| 先锋资源91| 亚洲情欲| 天天综合色99| 五月丁香综合激情网| 亚洲成人中文字幕| 婷婷五月天激情AV影院| 9视频在线成人网站| 丁香婷婷综合激情五月色| 天堂网操| 激情深爱五月| 国产全是老熟女太爽了|