精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

開源微服務編排框架:Netflix Conductor

開源
被worker服務執行,執行與引擎隔離開,worker通過隊列獲取任務后,執行并更新結果狀態到引擎。Worker的實現是跨語言的,其使用Http協議與Server通信。

[[438055]]

本文主要介紹netflix conductor的基本概念和主要運行機制。

一 簡介

netflix conductor是基于JAVA語言編寫的開源流程引擎,用于架構基于微服務的流程。它具備如下特性:

  • 允許創建復雜的業務流程,流程中每個獨立的任務都是由一個微服務所實現。
  • 基于JSON DSL 創建工作流,對任務的執行進行編排。
  • 工作流在執行的過程中可見、可追溯。
  • 提供暫停、恢復、重啟等多種控制模型。
  • 提供一種簡單的方式來最大限度重用微服務。
  • 擁有擴展到百萬流程并發運行的服務能力。
  • 通過隊列服務實現客戶端與服務端的分離。
  • 支持 HTTP 或其他RPC協議進行數據傳送

二 基本概念

1 Task

Task是最小執行單元,承載了一段執行邏輯,如發送HTTP請求等。

  • System Task:被conductor服務執行,這些任務的執行與引擎在同一個JVM中。
  • Worker Task:被worker服務執行,執行與引擎隔離開,worker通過隊列獲取任務后,執行并更新結果狀態到引擎。Worker的實現是跨語言的,其使用Http協議與Server通信。

conductor提供了若干內置SystemTask:

  • 功能性Task:
    • HTTP:發送http請求
    • JSON_JQ_TRANSFORM:jq命令執行,一般用戶json的轉換,具體可見jq官方文檔
    • KAFKA_PUBLISH: 發布kafka消息
  • 流程控制Task:
  • SWITCH(原Decision):條件判斷分支,類似于代碼中的switch case
  • FORK:啟動并行分支,用于調度并行任務
  • JOIN:匯總并行分支,用于匯總并行任務
  • DO_WHILE:循環,類似于代碼中的do while
  • WAIT:一直在運行中,直到外部時間觸發更新節點狀態,可用于等待外部操作
  • SUB_WORKFLOW:子流程,執行其他的流程
  • TERMINATE:結束流程,以指定輸出提前結束流程,可以與SWITCH節點配合使用,類似代碼中的提前return語句

自定義Task:

  • 對于System Task,Conductor提供了WorkflowSystemTask 抽象類,可以自定義擴展實現。
  • 對于Worker Task,可以實現conductor的client Worker接口實現執行邏輯。

2 Workflow

  • Workflow由一系列需要執行的Task組成,conductor采用json來描述Task的流轉關系。
  • 除基本的順序流程外,借助內置的SWITCH、FORK、JOIN、DO_WIHLE、TERMINATE任務,還能實現分支、并行、循環、提前結束等流程控制。

3 Input&Output

Task的輸入是一種映射,其作為工作流實例化的一部分或某些其他Task的輸出。允許將來自工作流或其他Task的輸入/輸出作為隨后執行的Task的輸入。

  • Task有自己的輸入和輸出,輸入輸出都是jsonobject類型。
  • Task可以引用其他Task的輸入輸出,使用${taskxxx.output}的方式引用。引用語法為json-path,除最基礎的${taskxxx.output}的值解析方式外,還支持其他復雜操作,如過濾等,具體見json-path語法。
  • 啟動Workflow時可以傳入流程的輸入數據,Task可以通過${workflow.input}的方式引用。

Task實現原子操作的處理以及流程控制操作,Workflow定義描述Task的流轉關系,Task引用Workflow或者其它Task的輸入輸出。通過這些機制,conductor實現了JSON DSL對流程的描述。

三 整體架構

主要分為幾個部分:

  • Orchestrator: 負責流程的流轉調度工作;
  • Management/Execution Service: 提供流程、任務的管理更新等操作;
  • TaskQueues: 任務隊列,Orchestrator解析出來的待執行Task會放到隊列中;
  • Worker: 任務執行worker,從TaskQueues中獲取任務,通過Execution Service更新任務狀態與結果數據;
  • Database: 元數據&運行時數據庫,用于保存運行時的Workflow、Task等狀態信息,以及流程任務定義的等原信息;
  • Index: 索引數據庫,用于存儲執行歷史;

四 運行模型

1 Task狀態轉移

  • SCHEDULED:待調度,task放到隊列中還沒有被poll出來執行時的狀態
  • IN_PROGRESS:執行中,被poll出來執行但還沒有完成時的狀態
  • COMPLETED:執行完成
  • FAILED:執行失敗
  • CANCELLED:被中止時為此狀態,一般出現在兩種情況:
    • 1.手動中止流程時,正在運行中的task會被置為此狀態;
    • 2.多個fork分支,當某個分支的task失敗時,其它分支中正在運行的task會被置為此狀態;

2 任務隊列

任務的執行(同步的系統任務除外)都會先添加到任務隊列中,是典型的生產者消費者模式。

  • 任務隊列,是一個帶有延遲、優先級功能的隊列;
  • 每種類型的Task是一個單獨的隊列,此外,如果配置了domain、isolationGroup,還會拆分成多個隊列實現執行隔離;
  • decider service是生產者,其根據流程配置與當前執行情況,解析出可執行的task后,添加到隊列;
  • 任務執行器(SystemTaskWorker、Worker)是消費者,其長輪詢對應的隊列,從隊列中獲取任務執行;

隊列接口可插拔,conductor提供了Dynomite 、MySQL、PostgreSQL的實現。

3 核心功能實現機制

conductor調度的核心是decider service,其根據當前流程運行的狀態,解析出將要執行的任務列表,將任務入隊交給worker執行。

decide主要流程簡化如下,詳細代碼見WorkflowExecutor.java的decide方法:

其中,調度任務處理流程簡化如下,詳細代碼見WorkflowExecutor.java的scheduleTask方法:

decide的觸發時機

最主要的觸發時機:

新啟動執行時,會觸發decide操作

系統任務執行完成時,會觸發decide操作

Workder任務通過ExecutionService更新任務狀態時,會觸發decide操作

流程控制節點的實現機制

1)Task & TaskMapper

對于每一個Task來說,都有Task和TaskMapper兩部分:

Task:任務的執行邏輯代碼,它的作用是Task的執行

TaskMapper:任務的映射邏輯代碼,它通過Task的定義配置、當前實例的執行狀態等信息,返回實際需要執行的Task列表

對于一般的任務來說,TaskMapper返回的是就是Task本身,補充一些執行實例的狀態信息。但是對于控制節點來說,會有不同的邏輯。

2)條件分支(SWITCH)的實現機制

SWITCH用于根據條件判斷,執行不同的分支。

實際上,該節點的Task不做任何操作,TaskMapper根據分支條件,判斷出要走的分之后,返回對應分支的第一個Task。

SwitchTaskMapper.java getMappedTasks方法關鍵代碼:

  1. // 待調度的Task list,最終返回結果 
  2. List<Task> tasksToBeScheduled = new LinkedList<>(); 
  3. // evalResult是分支條件變量的值(case
  4. // decisionCases是一個Map結構,key為分支的case值,value為對應分支的任務定義list(分支內的任務定義會有多個) 
  5. // 根據分支變量的實際值,獲取對應分支的任務定義list 
  6. List<WorkflowTask> selectedTasks = taskToSchedule.getDecisionCases().get(evalResult); 
  7. // default的邏輯:如果獲取不到對應的分支或者分支為空,則用默認的分支 
  8. if (selectedTasks == null || selectedTasks.isEmpty()) { 
  9.   selectedTasks = taskToSchedule.getDefaultCase(); 
  10. if (selectedTasks != null && !selectedTasks.isEmpty()) { 
  11.   // 獲取分支的第一個(下標0)task,返回給decider service去做調度(decider會把任務添加到隊列里,交給worker去執行) 
  12.   WorkflowTask selectedTask = selectedTasks.get(0); 
  13.   // 調用了deciderService的getTasksToBeScheduled方法,此方法里又獲取到TaskMapper調用了getMappedTasks。這里采用了遞歸調用的方式,解析嵌套的Task 
  14.   List<Task> caseTasks = taskMapperContext.getDeciderService() 
  15.     .getTasksToBeScheduled(workflowInstance, selectedTask, retryCount, taskMapperContext.getRetryTaskId()); 
  16.   tasksToBeScheduled.addAll(caseTasks); 
  17.   switchTask.getInputData().put("hasChildren""true"); 
  18. return tasksToBeScheduled; 

3)并行(FORK)的實現機制

FORK用于開啟多個并行分支。

實際上,該節點的Task不做任何操作,TaskMapper返回所有并行分支的第一個Task。

ForkJoinTaskMapper.java getMappedTasks關鍵代碼:

  1. // 待調度的Task list,最終返回結果 
  2. List<Task> tasksToBeScheduled = new LinkedList<>(); 
  3. // 配置中的所有fork分支 
  4. List<List<WorkflowTask>> forkTasks = taskToSchedule.getForkTasks(); 
  5. for (List<WorkflowTask> wfts : forkTasks) { 
  6.   // 每個分支取第一個Task 
  7.   WorkflowTask wft = wfts.get(0); 
  8.   // 調用了deciderService的getTasksToBeScheduled方法,此方法里又獲取到TaskMapper調用了getMappedTasks。這里采用了遞歸調用的方式,解析嵌套的Task 
  9.   List<Task> tasks2 = taskMapperContext.getDeciderService() 
  10.     .getTasksToBeScheduled(workflowInstance, wft, retryCount); 
  11.   tasksToBeScheduled.addAll(tasks2); 
  12. return tasksToBeScheduled; 

總的來說,分支(SWITCH)、并行(FORK)節點本身沒有執行邏輯,其通過TaskMapper返回到實際要執行的Task,然后交給Decider Service處理。

重試的實現機制

重試和其延遲時間設置,都是借助任務隊列的功能實現的。

重試:將任務重新添加到任務隊列

重試的延遲時間:添加到任務隊列時設置延遲時間,延遲時間過后,任務才能在隊列中被poll出來執行

五 完整性保障機制

由于調度過程中可能會出現因機器重啟、網絡異常、JVM崩潰等偶發情況,這些會導致的decide過程意外終止,流程執行不完整,展現出如流程一直運行中(實際已經沒有在調度),或者其它狀態錯誤等異?,F象。

1 WorkflowReconciler

針對這種情況,conductor有一個WorkflowReconciler,會定期嘗試decide所有正在運行中的流程,修復流程執行的一致性。此外,它還有一個作用是校驗流程超時時間。

2 decideQueue

那么WorkflowReconciler是如何獲取到當前運行中的流程呢,答案是decideQueue。

decideQueue和任務隊列相同,也是一個具有延遲功能的隊列,其存放的是正在執行中的流程的實例id。在任務開始執行時(包括新啟動執行、重試執行、恢復執行、重跑執行等),會將實例id push到decideQueue中;在執行結束(成功、失敗)時,會從decideQueue中刪除實例id。

3 ExecutionLockService

WorkflowReconciler會定期嘗試decide所有正在運行中的流程用于超時判斷、維護流程一致性。但是流程本身正常執行也會觸發decide,如果同一個執行同時觸發兩個decide,可能會導致狀態混亂,執行卡住等問題。

conductor采用了鎖來解決這個問題,其提供了單機LocalOnlyLock(基于信號量實現)、redis分布式鎖(基于redission實現)、zookeeper分布式鎖三種實現。

decide方法中最開始會嘗試獲取鎖,如果獲取失敗則直接返回。通過鎖來保障不會對同一個流程實例并發執行decide。

  1. if (!executionLockService.acquireLock(workflowId)) { 
  2.  
  3. return false
  4.  

由于鎖是可配置的,可能會導致一個誤區:單臺機器的話不用配置鎖。其實單機也是需要配置鎖的,因為WorkflowReconciler和流程正常執行會產生沖突,可能會導致偶發的流程狀態混亂問題。

參考:

Github: https://github.com/Netflix/conductor

官方文檔:https://netflix.github.io/conductor/

WorkflowReconciler:https://github.com/Netflix/conductor/blob/main/core/src/main/java/com/netflix/conductor/core/reconciliation/WorkflowReconciler.java

WorkflowSystemTask:https://github.com/Netflix/conductor/blob/main/core/src/main/java/com/netflix/conductor/core/execution/tasks/WorkflowSystemTask.java?spm=ata.21736010.0.0.2b501a3cYnrSfT&file=WorkflowSystemTask.java

 

責任編輯:武曉燕 來源: 阿里技術
相關推薦

2024-01-05 16:46:26

2022-10-08 07:31:26

微服務編排體系

2019-07-12 08:45:07

開源微服務框架

2024-07-09 10:57:29

2021-02-20 17:25:18

Netflix開源GraphQL

2024-10-15 17:28:05

2022-06-08 08:52:04

Tars微服務開發C++開發

2023-10-26 23:35:02

SSH登錄部署

2020-09-19 17:54:04

Netflix

2022-07-01 08:36:44

流編排主流框架

2017-01-19 11:10:20

5G網絡Open Baton虛擬網絡

2023-10-27 18:47:35

微服務底層機制

2020-10-26 07:05:02

大數據管道編排編排框架

2021-01-12 09:38:02

微服務服務組合編排

2023-02-17 18:06:33

微服務架構

2020-11-27 10:50:06

微服務架構框架

2021-03-02 16:25:52

微服務架構技術

2017-06-08 13:31:40

NetflixEureka服務器

2021-01-08 10:45:40

框架微服務架構

2022-02-20 22:10:20

微服務框架gRPC
點贊
收藏

51CTO技術棧公眾號

亚洲免费观看高清在线观看| 久久电影国产免费久久电影| 亚洲成在人线av| 波多野结衣家庭教师在线播放| 国 产 黄 色 大 片| 野花国产精品入口| 色哟哟亚洲精品一区二区| 永久免费黄色片| 69av在线| 成人污视频在线观看| 国产成人精品日本亚洲| 免费看一级黄色| avtt综合网| 欧美最猛性xxxxx直播| 特色特色大片在线| 黄色网址在线播放| 国产成人免费在线| 国产精品流白浆视频| 三级影片在线看| 亚洲美女久久| 日韩一区二区三| 久草在在线视频| 色呦呦在线视频| 国产香蕉久久精品综合网| 亚洲一区二区免费| 无码人妻av免费一区二区三区| 久久精品亚洲人成影院| 日韩激情视频在线| 女人扒开腿免费视频app| 午夜欧美巨大性欧美巨大| 一区二区三区在线视频观看| 亚洲春色在线视频| 婷婷国产在线| 国产成人一区在线| 成人福利在线观看| 波多野结衣电车| 亚洲精品乱码| 色在人av网站天堂精品| 国产亚洲精品久久久久久豆腐| 中文字幕av一区二区三区人| 精品国产青草久久久久福利| 欧美一级小视频| 韩国女主播一区二区| 精品福利免费观看| 欧美久久久久久久久久久久久 | 国产伦久视频在线观看| 国产精品久久久久久久蜜臀| 你懂的网址一区二区三区| 欧美在线精品一区二区三区| 韩国av一区二区三区| 国产又爽又黄的激情精品视频| 草莓视频18免费观看| 中国女人久久久| 久久免费视频这里只有精品| 久久久久久久九九九九| 欧美成人久久| 欧美大片在线看| 午夜国产福利一区二区| 在线一区免费| 久久99久久久久久久噜噜| 亚洲AV成人无码精电影在线| 国产精品国内免费一区二区三区| 日韩在线视频播放| 在线观看黄网址| 五月婷婷六月综合| 久久久精品久久久久| 日韩在线一卡二卡| 一区二区在线| 久久久天堂国产精品女人| 久久久久香蕉视频| 日韩一级精品| 国产v综合ⅴ日韩v欧美大片 | 国产精品区一区二区三在线播放 | 日本电影欧美片| 色综合天天综合网国产成人综合天| 免费看国产曰批40分钟| 中文在线最新版地址| 91国模大尺度私拍在线视频| 亚洲综合av在线播放| 日韩色性视频| 精品少妇一区二区三区视频免付费 | av最新在线观看| 亚洲有吗中文字幕| 高清视频欧美一级| 亚洲婷婷综合网| 美女一区二区视频| av免费观看久久| 亚洲av成人无码网天堂| 国产日韩v精品一区二区| 亚洲一区二区精品在线| 亚洲wwwww| 色又黄又爽网站www久久| 国产精品拍拍拍| 亚洲第一二区| 亚洲伦理中文字幕| 老司机精品免费视频| 欧美日韩一区二区三区四区在线观看| 午夜免费日韩视频| 中文字幕视频一区二区| 国产成a人亚洲| 日韩av电影免费在线| a毛片在线播放| 欧美色欧美亚洲高清在线视频| www.精品在线| 精品少妇一区| 久久视频在线看| 中文字幕激情小说| 国产精品一区二区不卡| 欧美激情国产日韩| 26uuu亚洲电影在线观看| 色噜噜狠狠成人网p站| 伊人色在线视频| 免费短视频成人日韩| 欧美成人免费全部观看天天性色| 99久久久久久久久| 国产成人啪免费观看软件 | 女人香蕉久久**毛片精品| 青青草精品毛片| 亚洲精品一区二区三区不卡| 国产精品午夜电影| 91猫先生在线| 中文在线综合| 日韩在线视频网站| 亚洲第一网站在线观看| 不卡一区二区三区四区| 日本老太婆做爰视频| 高清电影一区| 日韩av一卡二卡| 久久久久国产精品夜夜夜夜夜| 久久国产夜色精品鲁鲁99| 日本不卡一区| 国产高潮在线| 欧美变态tickle挠乳网站| 手机免费观看av| 久久在线精品| 精品欧美日韩在线| av伦理在线| 欧美哺乳videos| 青青操国产视频| 美国三级日本三级久久99 | 成av人电影在线观看| 欧美性生交大片免网| 亚洲色偷偷色噜噜狠狠99网| 欧美久久99| 成人在线视频网站| 男人天堂手机在线| 欧美日韩一卡二卡三卡| 欧美激情视频二区| 奇米888四色在线精品| 欧美午夜精品久久久久久蜜| 中文字幕 在线观看| 亚洲欧美精品在线| 日韩 欧美 综合| 波多野结衣中文字幕一区二区三区| 女人被男人躁得好爽免费视频| avtt久久| 欧美xxxx综合视频| www.激情五月| 亚洲一区二区三区免费视频| 9.1在线观看免费| 日韩天天综合| 免费国产在线精品一区二区三区| 成人影院大全| 国产亚洲精品日韩| 亚洲视频一区在线播放| 综合久久久久综合| 人妻换人妻仑乱| 黄色成人在线网站| 精品国产福利| 欧美人体一区二区三区| 这里只有精品在线播放| 在线视频你懂得| 亚洲欧美激情视频在线观看一区二区三区| 国产精品嫩草影视| 悠悠资源网久久精品| 精品国产乱码久久久久软件| 丝袜美腿一区| xxx一区二区| 高清毛片aaaaaaaaa片| 狠狠色香婷婷久久亚洲精品| 人妻视频一区二区| 韩国成人在线视频| 国产欧美日韩小视频| 亚洲香蕉视频| 国产日韩精品在线观看| 免费在线观看的电影网站| 亚洲精品自产拍| 亚洲综合精品国产一区二区三区| 亚洲人妖av一区二区| 国模私拍在线观看| 免费一级片91| 国产精品入口芒果| 欧美裸体在线版观看完整版| 91超碰rencao97精品| 亚洲最大成人| 伦伦影院午夜日韩欧美限制| 亚洲欧洲精品视频| 欧美日韩国产欧美日美国产精品| 久草视频手机在线观看| 国产免费观看久久| av在线天堂网| 日本免费在线视频不卡一不卡二| 日韩视频一二三| 精品久久中文| 国精产品99永久一区一区| 电影一区二区| 91精品国产乱码久久久久久蜜臀| 午夜免费福利在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲a v网站| 国产精品夜夜嗨| 国产熟人av一二三区| 国内精品亚洲| 中文字幕在线亚洲精品 | 伊人久久大香线蕉精品| 欧美激情极品| 91成人理论电影| 成人精品国产| 青青草成人在线| 欧美性爽视频| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 精品国产亚洲一区二区三区在线| 欧美最猛性xxxxx免费| 女人黄色免费在线观看| 久久久极品av| 日韩在线资源| 亚洲欧美国内爽妇网| 午夜成人免费影院| 欧美不卡一二三| 成人h动漫精品一区二区无码 | 91国产视频在线| 污污的网站在线免费观看| 中文字幕欧美日韩va免费视频| 亚洲AV成人无码一二三区在线| 亚洲精品一区二区三区福利| av官网在线观看| 666欧美在线视频| 在线观看免费视频一区| 91高清视频在线| 在线能看的av| 日韩欧美亚洲综合| 天堂а√在线中文在线新版| 午夜精品久久久久影视| 久久伊人成人网| 亚洲综合精品久久| 免费在线一级片| 一区二区三区四区中文字幕| 国产精品三区在线观看| 亚洲精品久久久久久国产精华液| 亚洲色偷偷综合亚洲av伊人| 综合欧美亚洲日本| 青娱乐av在线| 亚洲一区在线播放| 国产九色在线播放九色| 黑人巨大精品欧美一区二区一视频| 日韩 欧美 亚洲| 激情久久av一区av二区av三区| 日产电影一区二区三区| 色婷婷综合久久久中文字幕| 国产免费av一区| 在线视频国内自拍亚洲视频| 国产亚洲久一区二区| 欧美日韩一级二级| 国产老妇伦国产熟女老妇视频| 欧美一区二区女人| 性网爆门事件集合av| 亚洲第一区第一页| 久久久久久久影视| 色av吧综合网| 色呦呦在线观看视频| 性欧美xxxx视频在线观看| 天堂√中文最新版在线| 国产精品99久久久久久久久| 成人高清一区| 亚洲自拍中文字幕| 精品精品国产毛片在线看| 欧美成ee人免费视频| 日韩一区电影| 肉大捧一出免费观看网站在线播放| 在线看片一区| 四季av一区二区| 国产精品一区二区x88av| 亚洲熟女乱综合一区二区三区| 久久久不卡网国产精品二区| 91 在线视频| 亚洲成av人片在线| 人人妻人人爽人人澡人人精品| 91麻豆精品国产91久久久久| 欧美一级免费片| 一区二区三区日韩在线| bestiality新另类大全| 欧美一级视频在线观看| 亚洲影视资源| 国产麻豆乱码精品一区二区三区| 精品久久久久中文字幕小说| 黄色成人在线免费观看| 日日夜夜免费精品| 亚洲AV成人精品| 国产欧美一区视频| 免费视频一二三区| 欧美视频日韩视频在线观看| 亚洲高清视频在线播放| 亚洲无亚洲人成网站77777| 在线黄色网页| 国产精品福利小视频| 国产精品久av福利在线观看| 亚洲欧美日本国产有色| 在线一区免费观看| 国产老头和老头xxxx×| 国产欧美日韩久久| 日产欧产va高清| 日韩欧美中文一区二区| 97人人在线| 欧美一区二区三区免费观看| 亚洲色图综合| 日韩亚洲不卡在线| 999在线观看精品免费不卡网站| 亚洲第一区第二区第三区| 久久久99久久| 99热国产在线观看| 精品乱码亚洲一区二区不卡| 午夜老司机在线观看| 日韩av电影免费观看高清| 北条麻妃一区二区三区在线| 波多野结衣三级在线| 日本亚洲一区二区| 成人精品在线观看视频| 亚洲高清在线精品| www.黄色一片| 久久亚洲精品中文字幕冲田杏梨 | 欧美日韩在线播放| 精品推荐蜜桃传媒| 91福利视频网| 九九热播视频在线精品6| 久久av高潮av| 国产成人精品一区二| 永久久久久久久| 欧美一区二区视频在线观看2020| 亚洲精品承认| 国产精品麻豆va在线播放| 日韩深夜福利| 阿v天堂2017| 成人精品视频网站| 国产真实的和子乱拍在线观看| 日韩一二三四区| 欧美videosex性欧美黑吊| 91大片在线观看| 午夜性色一区二区三区免费视频 | 国产一级片av| 夜夜嗨av一区二区三区免费区 | 色呦呦日韩精品| 你懂的在线看| 国产成人精品综合久久久| 成人免费在线观看av| 91精品无人成人www| 中文字幕不卡在线播放| 岳乳丰满一区二区三区| 日日狠狠久久偷偷四色综合免费| 国产三级一区| 久久国产精品免费观看| 国产精品 欧美精品| 国产午夜视频在线播放| 日韩精品亚洲元码| 欧美性xxx| 一区二区三区视频在线播放| 精品午夜久久福利影院| 国产高潮国产高潮久久久91| 精品久久久久久久久久久久久久久久久| 久久香蕉一区| 久久国产欧美精品| 日韩电影在线一区二区三区| 手机免费观看av| 欧美xxx久久| 波多野结衣亚洲| 亚洲欧美日韩国产yyy| 国产剧情一区二区| 日本五十熟hd丰满| 亚洲无线码在线一区观看| 91精品福利观看| 精品视频在线观看一区| 久久久久一区二区三区四区| 一级淫片免费看| 欧美黑人巨大精品一区二区| 天海翼亚洲一区二区三区| 国产精品一区二区小说| 樱花草国产18久久久久| 美州a亚洲一视本频v色道| 国产美女久久久| 伊人精品在线| 在线观看亚洲大片短视频| 日韩一级片网址| 欧美××××黑人××性爽| 日韩hmxxxx| 国产黄人亚洲片| 国产精品久久久久久久久夜色| 久久精品夜夜夜夜夜久久| 欧美一区 二区| 日本黄色一级网站| 91久久精品一区二区三| 性欧美ⅴideo另类hd|