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

笑不活了!項目真的用上 XXL-Job 了

開發 前端
我們項目組最近居然真的用上了 XXL-Job,這波操作簡直讓人笑不活了 —— 不是因為它名字搞笑(雖然 "XXL" 確實讓人聯想到某知名服裝品牌的加大碼),而是這套分布式任務調度系統真的把我們從定時任務的苦海里救出來了!

兄弟們,咱們公司的定時任務系統是否都踩過這些坑:線上任務突然不執行了,排查半天才發現是數據庫鎖表了;凌晨三點接到運維電話說任務超時把服務器內存吃爆了;想動態調整任務執行時間得求著運維改配置文件,改完還得重啟服務...... 說多了都是淚,這不,我們項目組最近居然真的用上了 XXL-Job,這波操作簡直讓人笑不活了 —— 不是因為它名字搞笑(雖然 "XXL" 確實讓人聯想到某知名服裝品牌的加大碼),而是這套分布式任務調度系統真的把我們從定時任務的苦海里救出來了!

一、先搞明白:XXL-Job 到底是個啥?

估計有剛入行的同學要問了:"我之前用 Quartz 挺順手的,為啥要換這個 XXL-Job?" 別急,先給大家講個故事:假設你是一個食堂的打飯阿姨,每天要給 1000 個學生打飯。剛開始學生少,你一個人拿著飯勺就能搞定(這就是單體應用里的定時任務)。后來學生越來越多,你發現自己忙不過來了,于是找了幾個幫手(集群部署),但問題來了:每個幫手都不知道其他人打了多少飯,有的窗口排起長隊,有的窗口卻沒人(任務執行不均衡)。這時候就需要一個總調度員,專門負責分配打飯任務,告訴每個幫手該打多少份、幾點打、怎么處理突發情況(比如某個幫手突然拉肚子)—— 這個總調度員,就是 XXL-Job。

1.1 官方定義太正經?人話版解讀來了

XXL-Job 是一個開源的分布式任務調度平臺,核心功能包括:

  • 分布式調度:支持任務在多臺服務器上分布式執行,解決單節點性能瓶頸
  • 可視化管理:自帶 Web 控制臺,任務狀態、執行日志、失敗重試策略都能圖形化配置
  • 彈性擴展:新增服務器時不需要修改代碼,注冊到調度中心就能自動分配任務
  • 故障容錯:任務執行失敗自動重試,支持分片廣播、故障轉移等高級特性

劃重點:它不是一個框架,而是一個完整的調度平臺!以前用 Quartz 的時候,你得自己搭數據庫、寫管理界面、處理集群沖突,現在 XXL-Job 把這些全都封裝好了,簡直是懶癌患者的福音。

1.2 和老對手 Quartz 比,到底強在哪?

功能特性

Quartz

XXL-Job

集群管理

需要自己實現(依賴數據庫鎖)

原生支持,自動選舉主節點

可視化管理

無(需手動開發)

自帶完整 Web 控制臺

任務動態管理

難(需重啟服務或更新數據庫)

支持動態新增、修改、暫停任務

故障重試

簡單重試策略

支持自定義重試次數、間隔、補償機制

分片處理

需手動實現

原生支持分片廣播,自動分配任務分片

語言支持

僅 Java

支持 Java、Python、PHP 等多語言

舉個真實案例:之前我們用 Quartz 做訂單超時關閉任務,每次擴容服務器都要手動修改數據庫里的節點配置,有一次運維小哥手抖改壞了配置,導致 80% 的任務都沒執行,那天晚上運營小姐姐的奪命連環 Call 簡直是噩夢。換成 XXL-Job 后,新服務器啟動后自動注冊到調度中心,再也不用手動改配置了,運維小哥現在看到我都笑得特別燦爛。

二、核心架構揭秘:XXL-Job 憑啥能搞定分布式調度?

接下來咱們深入底層,看看這個 "加大碼" 調度系統的核心組件是怎么分工協作的。建議打開官網的架構圖(https://www.xuxueli.com/xxl-job/),跟著我一起拆解:

2.1 調度中心:整個系統的 "大腦"

這是 XXL-Job 的核心組件,主要負責:

  • 任務注冊與發現:執行器啟動時會向調度中心注冊自己的 IP 和端口,就像員工每天上班打卡報崗
  • 任務調度:根據任務配置的 Cron 表達式生成調度計劃,比如每天凌晨 2 點執行的任務,調度中心會提前算好時間
  • 故障處理:如果某個執行器連續 3 次心跳檢測失敗,調度中心會自動把它從任務分配列表中剔除,就像發現某個員工總是摸魚,直接把他的任務派給其他人
  • 數據統計:記錄每個任務的執行次數、成功率、平均耗時,生成各種報表,方便我們排查性能瓶頸

劃重點:調度中心支持集群部署,通過數據庫實現高可用(多個調度中心節點共享同一個數據庫,利用數據庫鎖保證主節點唯一性),就算其中一個節點掛了,其他節點馬上就能頂上,媽媽再也不用擔心半夜調度中心掛掉了!

2.2 執行器:真正干活的 "打工人"

執行器就是我們自己的業務代碼,需要集成 XXL-Job 的客戶端 SDK。主要職責:

  • 接收任務:定時監聽調度中心的任務請求,就像快遞員隨時等待調度中心派單
  • 執行任務:調用具體的業務方法,比如發送短信、生成報表、清理過期數據
  • 結果反饋:任務執行完成后,不管成功還是失敗,都要給調度中心反饋結果,方便后續處理

這里有個很貼心的設計:執行器支持 "單機模式" 和 "分布式模式"。如果你的任務不需要分布式執行(比如簡單的本地文件清理),可以用單機模式;如果是復雜的分布式任務(比如分庫分表的數據統計),就用分布式模式,自動實現任務分片。

2.3 任務隊列:調度中心和執行器的 "傳話筒"

調度中心生成調度計劃后,不會直接通知執行器,而是把任務放到隊列里(支持數據庫隊列、Redis 隊列、Kafka 隊列)。執行器主動從隊列里拉取任務,這種 "生產者 - 消費者" 模式有兩個好處:

  1. 解耦:調度中心和執行器不需要直接通信,降低系統耦合度
  2. 削峰填谷:如果突然有大量任務需要執行(比如雙 11 零點的批量訂單處理),隊列可以緩沖任務,避免執行器被瞬間壓垮

我們項目里用的是數據庫隊列,因為業務量中等,數據庫性能足夠。如果是高并發場景,強烈建議用 Kafka 隊列,吞吐量能提升 10 倍以上!

三、實戰環節:從 0 到 1 搭建 XXL-Job 調度系統

光說不練假把式,接下來帶大家實操一遍如何在 Spring Boot 項目中集成 XXL-Job。提前聲明:這里用的是 2.3.0 版本,最新版本可能有些配置會變,但核心流程差不多。

3.1 環境準備:先把調度中心跑起來

調度中心是一個獨立的 Spring Boot 項目,官方已經提供了源碼,我們只需要下載編譯即可:

  • 下載源碼:
git clone https://github.com/xuxueli/xxl-job.git
cd xxl-job/xxl-job-admin
  • 配置數據庫:創建數據庫xxl_job,執行xxl-job/doc/db/tables_xxl_job.sql初始化表結構。然后修改application.properties中的數據庫配置:
spring.datasource.url=jdbc:mysql://localhost:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=123456
  • 啟動調度中心:直接運行XxlJobAdminApplication的 main 方法,訪問http://localhost:8080/xxl-job-admin,默認賬號密碼admin/123456

3.2 集成執行器:讓你的業務代碼支持調度

假設我們有一個訂單服務,需要定時關閉超時未支付的訂單,步驟如下:

  • 添加 Maven 依賴:
<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-job-core</artifactId>
    <version>2.3.0</version>
</dependency>
  • 配置執行器參數(application.properties):
# XXL-Job配置
xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin  # 調度中心地址
xxl.job.executor.appname=order-executor  # 執行器名稱,用于調度中心識別
xxl.job.executor.ip=  # 留空自動獲取本機IP
xxl.job.executor.port=9999  # 執行器端口,避免和其他服務沖突
xxl.job.executor.logpath=/data/xxl-job/logs  # 日志存儲路徑
xxl.job.executor.logretentiondays=30  # 日志保留天數
  • 創建執行器配置類:
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class XxlJobConfig {
    @Bean
    public XxlJobSpringExecutor xxlJobExecutor() {
        XxlJobSpringExecutor xxlJobExecutor = new XxlJobSpringExecutor();
        xxlJobExecutor.setAdminAddresses(xxlJobAdminAddresses);
        xxlJobExecutor.setAppname(xxlJobExecutorAppname);
        xxlJobExecutor.setIp(xxlJobExecutorIp);
        xxlJobExecutor.setPort(xxlJobExecutorPort);
        xxlJobExecutor.setLogPath(xxlJobExecutorLogpath);
        xxlJobExecutor.setLogRetentionDays(xxlJobExecutorLogretentiondays);
        return xxlJobExecutor;
    }
}
  • 編寫任務處理器:
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.handler.annotation.XxlJob;
import org.springframework.stereotype.Component;
@Component
public class OrderCloseJob {
    // 任務名稱隨便起,建議和業務相關
    @XxlJob("orderCloseHandler")
    public ReturnT<String> orderCloseHandler(String param) throws Exception {
        // 業務邏輯:查詢所有超時未支付的訂單,狀態改為"已關閉"
        int count = orderService.closeTimeoutOrders();
        return ReturnT.SUCCESS("關閉訂單數量:" + count);
    }
}

3.3 控制臺配置任務:讓調度中心知道該干啥

回到調度中心界面,依次點擊【任務管理】-【新增任務】,填寫以下關鍵信息:

  • 執行器名稱:選擇剛才配置的order-executor
  • 任務 handler 名稱:就是我們在代碼里寫的orderCloseHandler
  • Cron 表達式:比如0 0 2 * * ?表示每天凌晨 2 點執行
  • 路由策略:如果是分布式執行,建議選 "輪詢" 或 "隨機";如果是分片任務,選 "分片廣播"
  • 超時時間:根據任務實際執行時間設置,比如 180 秒,防止任務卡死
  • 失敗重試次數:建議設置 3 次,第一次失敗后間隔 1 分鐘重試,第二次間隔 5 分鐘,第三次間隔 10 分鐘(可在系統配置里修改默認重試策略)

保存后點擊【啟動任務】,不出意外的話,任務會按照 Cron 表達式準時執行,執行結果會顯示在【調度日志】里,點擊日志 ID 還能看到具體的執行日志,簡直不要太方便!

四、進階玩法:這些高級功能讓你玩轉分布式任務

4.1 分片任務:讓 1000 萬數據處理快到飛起

假設你要處理一張有 1000 萬條數據的表,單臺服務器處理可能需要 2 小時,用分片任務可以輕松解決:

  1. 在任務配置里將路由策略設為 "分片廣播"
  2. 執行器代碼中通過XxlJobHelper獲取分片參數:
@XxlJob("dataProcessHandler")
public ReturnT<String> dataProcessHandler(String param) throws Exception {
    // 獲取分片信息
    int shardIndex = XxlJobHelper.getShardIndex();
    int shardTotal = XxlJobHelper.getShardTotal();
    // 計算當前分片處理的數據范圍
    long start = shardIndex * 10000;
    long end = (shardIndex + 1) * 10000;
    // 處理數據
    dataService.processRange(start, end);
    return ReturnT.SUCCESS("分片" + shardIndex + "處理完成");
}
  1. 調度中心會自動將任務分配給多個執行器節點,每個節點處理不同的分片,處理時間直接縮短到原來的 1/N(N 是節點數)。我們項目用 4 臺服務器分片處理訂單統計任務,原來需要 3 小時,現在 40 分鐘就搞定了,運維小哥看監控的時候都驚掉了下巴。

4.2 故障轉移:讓任務永遠不會 "無人處理"

假設某個執行器節點突然掛掉,正在處理的任務怎么辦?XXL-Job 有兩種處理策略:

  • 快速失敗:任務直接標記為失敗,觸發重試機制(適合非關鍵任務)
  • 故障轉移:調度中心檢測到節點故障后,會自動將任務重新分配給其他正常節點(適合關鍵任務,比如訂單支付回調)

配置方法:在任務配置里的 "容錯策略" 選擇 "故障轉移",默認是快速失敗。建議對核心業務任務開啟故障轉移,雖然會增加一點延遲,但能保證任務最終執行。

4.3 動態參數:讓任務配置更靈活

以前改任務參數得改代碼、打包、重啟,現在 XXL-Job 支持動態傳遞參數:

  1. 在任務配置的 "任務參數" 里填寫參數,比如{"startTime":"2025-05-22 00:00:00","endTime":"2025-05-22 23:59:59"}
  2. 執行器代碼中通過參數解析:
@XxlJob("reportGenerateHandler")
public ReturnT<String> reportGenerateHandler(String param) throws Exception {
    // 解析JSON參數
    ReportParam reportParam = JSON.parseObject(param, ReportParam.class);
    // 生成報表
    reportService.generate(reportParam.getStartTime(), reportParam.getEndTime());
    return ReturnT.SUCCESS("報表生成完成");
}

甚至可以在調度中心手動觸發任務時臨時修改參數,比如某天需要重新生成昨天的報表,直接在觸發界面改時間參數就行,再也不用求開發改代碼了,運營小姐姐現在自己就能搞定。

五、原理剖析:為什么 XXL-Job 能做到高可靠、高性能?

5.1 調度流程大揭秘:從 Cron 表達式到任務執行

  1. 表達式解析:調度中心啟動時,會掃描所有任務的 Cron 表達式,生成未來一段時間的調度計劃(默認生成 1000 個調度周期),存在xxl_job_trigger表中
  2. 任務觸發:調度中心有一個獨立的線程池,專門負責掃描xxl_job_trigger表中即將執行的任務,通過任務隊列發送給執行器
  3. 執行器響應:執行器收到任務后,放入本地的線程池異步執行,避免阻塞主線程
  4. 結果回調:執行器執行完成后,通過 HTTP 接口將結果回調給調度中心,更新任務狀態和執行日志

這里有個優化點:調度中心不會頻繁掃描數據庫,而是用 "時間輪" 算法(類似 Linux 的定時器)來管理調度計劃,性能比傳統的數據庫輪詢高 10 倍以上。

5.2 負載均衡策略:如何讓任務分配更合理

XXL-Job 支持 6 種路由策略,常用的有:

  • 輪詢:按順序分配給每個執行器節點,適合無狀態任務
  • 隨機:隨機選擇節點,適合負載均衡
  • 最少活躍數:選擇當前執行任務最少的節點,適合 CPU 密集型任務
  • 分片廣播:每個節點都執行一次任務,適合需要遍歷全量數據的任務

我們項目在處理訂單導出任務時,用 "最少活躍數" 策略,讓配置高的服務器處理更多任務,資源利用率提升了 30%。

5.3 容錯機制:三層保護確保任務不丟失

  1. 調度中心容錯:集群部署,數據庫鎖保證主節點唯一性,即使所有調度中心節點掛掉,重啟后會自動恢復未執行的任務
  2. 執行器容錯:任務執行失敗時,自動記錄失敗次數,達到重試次數后標記為失敗,并觸發報警(需要配置報警郵箱或釘釘機器人)
  3. 數據持久化:所有任務調度記錄、執行日志都存在數據庫里,支持歷史查詢和審計,再也不用擔心任務執行情況 "死無對證" 了

六、選型對比:XXL-Job、Quartz、Elastic-Job 到底怎么選?

6.1 適用場景對比

框架

適用場景

優勢

劣勢

Quartz

單體應用、簡單定時任務

輕量、靈活

分布式支持差、管理界面需自建

Elastic-Job

復雜分布式任務、高并發場景

支持分片、分布式協調強大

學習成本高、依賴 ZooKeeper

XXL-Job

中等規模分布式任務、快速落地

開箱即用、可視化管理、易維護

功能復雜度低于 Elastic-Job

6.2 我們為什么選 XXL-Job?

  • 快速上線:從調研到上線只用了 3 天,包括搭建調度中心、改造業務代碼、配置監控報警
  • 易維護:運維同學通過 Web 界面就能管理任務,再也不用求開發改代碼
  • 社區活躍:作者持續更新,Issues 響應快,遇到問題基本都能在社區找到解決方案
  • 多語言支持:雖然我們用 Java,但未來如果有 Python 服務需要接入,直接用官方提供的 Python 執行器就行

6.3 避坑指南:這些坑我們替你踩過了

  1. 端口沖突:執行器端口默認是 9999,如果和其他服務沖突,記得在配置里修改,否則啟動會報錯
  2. 分片參數解析:用分片廣播時,一定要檢查shardIndex和shardTotal是否正確,否則可能導致數據重復處理或遺漏
  3. 日志存儲:默認日志存在本地磁盤,如果執行器是 Docker 容器,記得掛載日志目錄,否則容器重啟后日志就沒了
  4. 任務超時:如果任務執行時間超過配置的超時時間,調度中心會強制終止任務(通過調用線程的 interrupt 方法),但對于數據庫連接等資源可能無法正確釋放,建議在代碼里做好超時處理
  5. 數據庫分表:如果任務量非常大(比如每天百萬級調度記錄),建議對xxl_job_trigger、xxl_job_log等表進行分表,否則單表數據量過大會影響查詢性能

七、寫在最后:XXL-Job 真香,但別濫用!

說實話,剛開始聽說要用 XXL-Job 的時候,我心里是抗拒的 —— 畢竟 Quartz 用了好幾年,代碼里到處都是它的影子,改造起來麻煩。但真正用了之后才發現,真香!現在我們項目里的定時任務:

  • 從原來的 "黑盒" 變成了 "透明工廠",每個任務的執行狀態、耗時、失敗原因都一目了然
  • 運維效率提升 50% 以上,再也不用半夜起來改配置文件、重啟服務
  • 故障處理更從容,任務失敗自動重試,關鍵任務還有故障轉移,運營小姐姐再也沒打過半夜電話

但還是要提醒大家:XXL-Job 雖然強大,但不是萬能的。如果你的項目還是單體應用,任務量不大,用 Quartz 完全夠用,沒必要引入這么復雜的調度平臺。但如果是分布式系統,有大量定時任務需要管理,那 XXL-Job 絕對是你的不二之選。

責任編輯:武曉燕 來源: 石杉的架構筆記
相關推薦

2025-09-18 09:31:01

2025-02-18 14:08:14

2020-07-17 09:33:39

CPU內存調度

2022-03-26 17:13:22

ElasticJobxxl-job分布式

2022-09-23 13:57:11

xxl-job任務調度中間件

2024-08-27 09:34:24

2025-08-05 01:45:00

XXL-JOB自動注冊運維

2023-01-04 09:23:58

2025-06-27 09:31:25

2024-09-09 08:11:12

2023-11-30 22:06:43

2023-11-22 10:07:22

2024-07-31 08:18:40

2024-12-04 10:47:26

2021-12-26 00:03:27

響應式編程異步

2022-01-27 08:44:58

調度系統開源

2021-12-26 19:07:51

MySQL存儲容器

2023-06-27 07:44:53

xxl-job分布式任務調度平臺

2022-12-29 08:32:50

xxl-job緩存Schedule

2023-11-07 07:56:40

點贊
收藏

51CTO技術棧公眾號

中文字幕日本视频| 欧美国产在线一区| 91亚洲精选| 久久99精品久久久久久国产越南| 久久九九亚洲综合| 日韩精品――色哟哟| 91超碰国产在线| 中文字幕精品三区| ts人妖另类在线| 午夜精品一区二| 久久久久久久久丰满| 亚洲福利视频网站| 亚洲性猛交xxxxwww| 97免费视频观看| 国产免费av高清在线| 国内精品久久久久影院薰衣草| 久久久久久久爱| 日本人亚洲人jjzzjjz| 日韩中文一区二区| 欧美手机在线视频| 男女激情免费视频| 69久久久久| 91一区一区三区| 91牛牛免费视频| 精品免费囯产一区二区三区| 在线中文一区| 色悠悠久久久久| 久久人人爽人人爽人人片| 99精品女人在线观看免费视频| 黑人巨大精品欧美一区二区| 国产 国语对白 露脸| av在线电影免费观看| 99久久久久免费精品国产| 91日韩在线视频| 久久久久久久亚洲| 亚洲永久网站| 欧美激情videos| 懂色av粉嫩av浪潮av| 最近国产精品视频| 亚洲精品456在线播放狼人| 999热精品视频| 韩国精品视频在线观看 | 欧美一区二区视频在线观看2020 | 可以直接看的黄色网址| 久久一区二区中文字幕| 在线国产精品播放| 88久久精品无码一区二区毛片| 欧洲在线一区| 亚洲精品久久久一区二区三区| 少妇性l交大片7724com| 亚洲欧美久久精品| 91麻豆精品国产91久久久| 亚洲人成在线一二| 爱情岛论坛成人| 成人亚洲欧美| 日韩欧美在线看| 国产精品第12页| 欧美7777| 欧美三电影在线| 亚洲一区在线不卡| 国产精品原创视频| 在线播放日韩导航| 69久久精品无码一区二区| 婷婷综合国产| 亚洲精品国产精品自产a区红杏吧 亚洲精品国产精品乱码不99按摩 亚洲精品国产精品久久清纯直播 亚洲精品国产精品国自产在线 | 欧美做受高潮中文字幕| ccyy激情综合| 日韩精品极品在线观看| 久久久亚洲av波多野结衣| 亚洲人亚洲人色久| 在线看日韩欧美| 日本激情视频一区二区三区| 午夜免费一区| 久久久久久久网站| 久久午夜免费视频| 爽好久久久欧美精品| 国产精品xxx视频| 一区二区国产欧美| 国产.欧美.日韩| 精品久久久久久综合日本| 日韩一区二区三区中文字幕| 欧美激情一区不卡| 青青草综合在线| 白浆视频在线观看| 日本高清不卡在线观看| 污视频网站观看| 成人激情自拍| 亚洲欧美在线免费观看| 亚洲女人毛茸茸高潮| 欧美影院一区| 日本一区二区三区四区视频| 国产精品视频在线观看免费| 成人免费av网站| 日韩色妇久久av| h网站久久久| av在线1区2区| 久久久国产综合精品女国产盗摄| 一区二区三区四区欧美| 日本小视频在线免费观看| 欧美视频在线观看免费| 中文字幕永久有效| 欧美性生活一级片| 久久精品国产精品| 成人午夜视频在线播放| 国产真实乱子伦精品视频| 国产精品视频入口| 免费av在线播放| 欧美日韩国产在线播放| 天天色天天综合网| 久久成人av| 久久青草福利网站| 国产精品欧美综合亚洲| 91视视频在线直接观看在线看网页在线看| 一区二区三区av在线| 欧美裸体视频| 日韩你懂的在线播放| 国产欧美小视频| 久久黄色影院| 国产亚洲精品久久飘花| 国产秀色在线www免费观看| 色婷婷一区二区三区四区| 亚洲成人精品在线播放| 欧美激情另类| 国产精品国产自产拍高清av水多 | 日韩少妇高潮抽搐| 国产一区二区在线观看视频| 亚洲精品白虎| 午夜精品成人av| 亚洲第一男人av| 手机在线免费看片| 麻豆一区二区三| 欧美一区二区三区成人久久片| av2020不卡| 日韩一区二区电影| 高h视频免费观看| 另类综合日韩欧美亚洲| 亚洲a∨一区二区三区| 美女扒开腿让男人桶爽久久软| 日韩精品一区二区三区三区免费 | 欧洲毛片在线| 另类激情视频| 欧美日韩中文国产| 一区二区三区伦理片| 国产精品一二| 精品免费国产| 在线男人天堂| 日韩精品有码在线观看| 影音先锋亚洲天堂| 成a人片亚洲日本久久| 精品人妻大屁股白浆无码| 7m精品国产导航在线| 欧美肥婆姓交大片| 国产 欧美 自拍| 亚欧色一区w666天堂| 日本美女视频网站| 亚洲久久视频| 老牛影视免费一区二区| 亚洲www.| 伊人久久大香线蕉av一区二区| av首页在线观看| 中文字幕不卡在线观看| 精品综合久久久久| 欧美搞黄网站| 国产麻豆一区二区三区在线观看| 波多野结衣精品| 国产偷亚洲偷欧美偷精品| 日本视频免费观看| 国产精品午夜免费| 欧美精品色视频| 尤物在线精品| 欧洲精品久久| 青青伊人久久| 欧美激情一级欧美精品| 天堂av在线免费| 欧美日韩一区二区三区| 色www亚洲国产阿娇yao| 国产不卡高清在线观看视频| 老太脱裤让老头玩ⅹxxxx| 妖精视频一区二区三区| 成人激情黄色网| 国产后进白嫩翘臀在线观看视频| 亚洲高清不卡av| 男操女视频网站| 一区二区三区丝袜| 加勒比综合在线| 国产在线乱码一区二区三区| 久久99久久99精品| 成人黄色小视频| 91亚洲一区精品| 伊人久久在线| 久久亚洲精品网站| 你懂的视频在线播放| 亚洲少妇诱惑| 国产+人+亚洲| 最新国产在线观看| 亚洲精品美女久久久久| 一起草av在线| 一本色道a无线码一区v| 久久国产露脸精品国产| 国产调教视频一区| 艳妇乳肉豪妇荡乳xxx| 免费人成精品欧美精品 | 性高湖久久久久久久久| avove在线观看| 蜜桃精品wwwmitaows| 91黄色国产视频| 国产成人免费9x9x人网站视频| 久久久久久久av| 麻豆视频在线| 亚洲新中文字幕| 外国精品视频在线观看| 日韩一级二级三级精品视频| 91丨九色丨海角社区| 亚洲国产欧美另类丝袜| 少妇高潮一区二区三区喷水| 久久久久久久久免费| 年下总裁被打光屁股sp| 久久国产精品72免费观看| 一女被多男玩喷潮视频| 精品动漫av| 男女裸体影院高潮| 国产精品久久久久蜜臀| 欧美重口乱码一区二区| 欧美日韩一区二区三区不卡视频| 亚洲wwwav| 国产成人a视频高清在线观看| 国产91精品久久久久久久| 蜜臀av国内免费精品久久久夜夜| 日韩在线视频免费观看高清中文| 欧美精品少妇| 精品无人国产偷自产在线| 亚洲高清在线观看视频| 日韩欧美国产精品| 91在线观看喷潮| 欧美日韩国产另类不卡| jizz国产在线| 欧美性色黄大片| chinese国产精品| 欧美午夜片在线免费观看| 日本黄色片视频| 亚洲成人一区在线| 日韩三级视频在线播放| 亚洲成人av电影在线| 国产在线观看免费av| 亚洲一区二区三区四区五区黄 | 最新中文字幕第一页| 国产免费观看久久| 91国模少妇一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 你懂的在线观看网站| 99久久综合精品| 亚洲图片综合网| 99国产欧美久久久精品| 亚洲久久久久久| 99久久精品99国产精品| 五月开心播播网| 99久久久久久| 欧美老熟妇乱大交xxxxx| 久久先锋影音av鲁色资源网| 9.1成人看片免费版| 26uuu欧美| 精品少妇一区二区三区免费观| 国产亚洲精品免费| 亚洲激情图片网| 一区二区在线免费| 国产精品老女人| 色爱区综合激月婷婷| 91九色蝌蚪91por成人| 欧美一区二区视频网站| 亚洲第一页视频| 亚洲国产精品久久| 日本一级在线观看| 一个人www欧美| 在线观看三级视频| 1769国产精品| 亚洲电影有码| 亚洲影院色在线观看免费| 中文字幕一区图| 美国av一区二区三区| 久久综合99| 欧美乱大交xxxxx潮喷l头像| 久久一区视频| 四川一级毛毛片| 99精品热视频| 亚洲熟女毛茸茸| 精品国产精品自拍| 96亚洲精品久久久蜜桃| 亚洲国产精品va在线看黑人| 国产免费av高清在线| 欧美区二区三区| 欧美三区四区| 国产精品国产三级欧美二区| 成人在线免费小视频| 激情五月婷婷六月| 老司机午夜精品99久久| 性久久久久久久久久久| 日韩一区中文字幕| 国产 欧美 日韩 在线| 欧美日韩电影一区| 天天射天天操天天干| www.久久久久久.com| 亚洲一二三四| 99超碰麻豆| 久久在线播放| 少妇高清精品毛片在线视频 | 日本一区二区免费视频| 中文字幕不卡的av| 色播视频在线播放| 欧美一区二区三区婷婷月色 | 久久精品99无色码中文字幕| 成人影院在线播放| 国产三级精品网站| 亚洲综合福利| 热99这里只有精品| 国产在线不卡视频| 亚洲精品国产精品国自| 舔着乳尖日韩一区| 欧美aⅴ在线观看| 亚洲欧美日韩专区| 日批视频在线看| 国产精品久线在线观看| 五月婷婷激情视频| 亚洲国产成人精品一区二区| a天堂中文在线官网在线| 国产精品久久久久久久久久小说 | 91情侣在线视频| 欧美freesextv| 国产极品美女高潮无套久久久| 成人国产免费视频| 免费在线观看日韩| 777午夜精品视频在线播放| 成年人在线视频| 国产精品白嫩初高中害羞小美女 | 久久99九九99精品| 国产视频三区四区| 日韩欧美亚洲综合| 深夜影院在线观看| 97视频com| 国内自拍欧美| 国产美女在线一区| 成人激情校园春色| 国产午夜视频在线播放| 精品裸体舞一区二区三区| av理论在线观看| 亚洲自拍小视频免费观看| 中文字幕av亚洲精品一部二部| 亚洲黄色av片| 亚洲品质自拍视频网站| 国产日韩欧美视频在线观看| 久久久国产视频| 伊人精品综合| 国产午夜福利在线播放| 93久久精品日日躁夜夜躁欧美 | 香蕉视频在线免费看| 国产精品亚洲视频在线观看| 欧美成免费一区二区视频| www.cao超碰| 一区二区三区日韩| 日本波多野结衣在线| 91精品国产乱码久久久久久久久| 天海翼亚洲一区二区三区| 久久国产色av免费观看| 亚洲国产经典视频| aaa国产视频| 97婷婷大伊香蕉精品视频| 伊人久久大香线蕉综合网蜜芽| 一道本视频在线观看| 亚洲视频在线一区二区| 亚洲成熟女性毛茸茸| 国内精品久久久久久影视8| 欧美电影在线观看完整版| 日本美女高潮视频| 亚洲靠逼com| 日批免费在线观看| 日韩免费在线看| 久久精品亚洲欧美日韩精品中文字幕| 亚洲av无码久久精品色欲| 欧美日韩国产丝袜另类| 成年人在线观看视频| 亚洲自拍偷拍一区| 欧美亚洲免费| 亚洲综合网在线| 日韩av在线免费观看| 国产人妖一区| 国产婷婷一区二区三区| 中文字幕乱码亚洲精品一区| 国产激情视频在线播放| 欧美在线视频免费播放| 国产精品久久占久久| 日本一区二区在线免费观看| 欧美影视一区二区三区| 欧美人与动牲性行为| 欧美日韩免费高清| 国产精品一区二区久久精品爱涩| 欧美a∨亚洲欧美亚洲| 久久久国产精彩视频美女艺术照福利 | 欧美三级小说| 小早川怜子久久精品中文字幕| 欧美一区二区黄色| 户外露出一区二区三区|