3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

轻量级分布式任务调度平台 XXL-JOB

發(fā)布時(shí)間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 轻量级分布式任务调度平台 XXL-JOB 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

From:https://www.cnblogs.com/xuxueli/p/5021979.html

github 地址 及 中文文檔地址:https://github.com/xuxueli/xxl-job

?

?

《分布式任務(wù)調(diào)度平臺XXL-JOB》

?

?

一、簡介

1.1 概述

XXL-JOB是一個(gè)輕量級分布式任務(wù)調(diào)度平臺,其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡單、輕量級、易擴(kuò)展。現(xiàn)已開放源代碼并接入多家公司線上產(chǎn)品線,開箱即用。

1.2 特性

  • 1、簡單:支持通過Web頁面對任務(wù)進(jìn)行CRUD操作,操作簡單,一分鐘上手;
  • 2、動態(tài):支持動態(tài)修改任務(wù)狀態(tài)、暫停/恢復(fù)任務(wù),以及終止運(yùn)行中任務(wù),即時(shí)生效;
  • 3、調(diào)度中心HA(中心式):調(diào)度采用中心式設(shè)計(jì),“調(diào)度中心”基于集群Quartz實(shí)現(xiàn)并支持集群部署,可保證調(diào)度中心HA;
  • 4、執(zhí)行器HA(分布式):任務(wù)分布式執(zhí)行,任務(wù)"執(zhí)行器"支持集群部署,可保證任務(wù)執(zhí)行HA;
  • 5、注冊中心: 執(zhí)行器會周期性自動注冊任務(wù), 調(diào)度中心將會自動發(fā)現(xiàn)注冊的任務(wù)并觸發(fā)執(zhí)行。同時(shí),也支持手動錄入執(zhí)行器地址;
  • 6、彈性擴(kuò)容縮容:一旦有新執(zhí)行器機(jī)器上線或者下線,下次調(diào)度時(shí)將會重新分配任務(wù);
  • 7、路由策略:執(zhí)行器集群部署時(shí)提供豐富的路由策略,包括:第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移、忙碌轉(zhuǎn)移等;
  • 8、故障轉(zhuǎn)移:任務(wù)路由策略選擇"故障轉(zhuǎn)移"情況下,如果執(zhí)行器集群中某一臺機(jī)器故障,將會自動Failover切換到一臺正常的執(zhí)行器發(fā)送調(diào)度請求。
  • 9、阻塞處理策略:調(diào)度過于密集執(zhí)行器來不及處理時(shí)的處理策略,策略包括:單機(jī)串行(默認(rèn))、丟棄后續(xù)調(diào)度、覆蓋之前調(diào)度;
  • 10、任務(wù)超時(shí)控制:支持自定義任務(wù)超時(shí)時(shí)間,任務(wù)運(yùn)行超時(shí)將會主動中斷任務(wù);
  • 11、任務(wù)失敗重試:支持自定義任務(wù)失敗重試次數(shù),當(dāng)任務(wù)失敗時(shí)將會按照預(yù)設(shè)的失敗重試次數(shù)主動進(jìn)行重試;其中分片任務(wù)支持分片粒度的失敗重試;
  • 12、任務(wù)失敗告警;默認(rèn)提供郵件方式失敗告警,同時(shí)預(yù)留擴(kuò)展接口,可方面的擴(kuò)展短信、釘釘?shù)雀婢绞?#xff1b;
  • 13、分片廣播任務(wù):執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會廣播觸發(fā)集群中所有執(zhí)行器執(zhí)行一次任務(wù),可根據(jù)分片參數(shù)開發(fā)分片任務(wù);
  • 14、動態(tài)分片:分片廣播任務(wù)以執(zhí)行器為維度進(jìn)行分片,支持動態(tài)擴(kuò)容執(zhí)行器集群從而動態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。
  • 15、事件觸發(fā):除了"Cron方式"和"任務(wù)依賴方式"觸發(fā)任務(wù)執(zhí)行之外,支持基于事件的觸發(fā)任務(wù)方式。調(diào)度中心提供觸發(fā)任務(wù)單次執(zhí)行的API服務(wù),可根據(jù)業(yè)務(wù)事件靈活觸發(fā)。
  • 16、任務(wù)進(jìn)度監(jiān)控:支持實(shí)時(shí)監(jiān)控任務(wù)進(jìn)度;
  • 17、Rolling實(shí)時(shí)日志:支持在線查看調(diào)度結(jié)果,并且支持以Rolling方式實(shí)時(shí)查看執(zhí)行器輸出的完整的執(zhí)行日志;
  • 18、GLUE:提供Web IDE,支持在線開發(fā)任務(wù)邏輯代碼,動態(tài)發(fā)布,實(shí)時(shí)編譯生效,省略部署上線的過程。支持30個(gè)版本的歷史版本回溯。
  • 19、腳本任務(wù):支持以GLUE模式開發(fā)和運(yùn)行腳本任務(wù),包括Shell、Python、NodeJS、PHP、PowerShell等類型腳本;
  • 20、任務(wù)依賴:支持配置子任務(wù)依賴,當(dāng)父任務(wù)執(zhí)行結(jié)束且執(zhí)行成功后將會主動觸發(fā)一次子任務(wù)的執(zhí)行, 多個(gè)子任務(wù)用逗號分隔;
  • 21、一致性:“調(diào)度中心”通過DB鎖保證集群分布式調(diào)度的一致性, 一次任務(wù)調(diào)度只會觸發(fā)一次執(zhí)行;
  • 22、自定義任務(wù)參數(shù):支持在線配置調(diào)度任務(wù)入?yún)?#xff0c;即時(shí)生效;
  • 23、調(diào)度線程池:調(diào)度系統(tǒng)多線程觸發(fā)調(diào)度運(yùn)行,確保調(diào)度精確執(zhí)行,不被堵塞;
  • 24、數(shù)據(jù)加密:調(diào)度中心和執(zhí)行器之間的通訊進(jìn)行數(shù)據(jù)加密,提升調(diào)度信息安全性;
  • 25、郵件報(bào)警:任務(wù)失敗時(shí)支持郵件報(bào)警,支持配置多郵件地址群發(fā)報(bào)警郵件;
  • 26、推送maven中央倉庫: 將會把最新穩(wěn)定版推送到maven中央倉庫, 方便用戶接入和使用;
  • 27、運(yùn)行報(bào)表:支持實(shí)時(shí)查看運(yùn)行數(shù)據(jù),如任務(wù)數(shù)量、調(diào)度次數(shù)、執(zhí)行器數(shù)量等;以及調(diào)度報(bào)表,如調(diào)度日期分布圖,調(diào)度成功分布圖等;
  • 28、全異步:任務(wù)調(diào)度流程全異步化設(shè)計(jì)實(shí)現(xiàn),如異步調(diào)度、異步運(yùn)行、異步回調(diào)等,有效對密集調(diào)度進(jìn)行流量削峰,理論上支持任意時(shí)長任務(wù)的運(yùn)行;
  • 29、跨平臺:原生提供通用HTTP任務(wù)Handler(Bean任務(wù),"httpJobHandler");業(yè)務(wù)方只需要提供HTTP鏈接即可,不限制語言、平臺;
  • 30、國際化:調(diào)度中心支持國際化設(shè)置,提供中文、英文兩種可選語言,默認(rèn)為中文;

1.3 發(fā)展

于2015年中,我在github上創(chuàng)建XXL-JOB項(xiàng)目倉庫并提交第一個(gè)commit,隨之進(jìn)行系統(tǒng)結(jié)構(gòu)設(shè)計(jì),UI選型,交互設(shè)計(jì)……

于2015-11月,XXL-JOB終于RELEASE了第一個(gè)大版本V1.0, 隨后我將之發(fā)布到OSCHINA,XXL-JOB在OSCHINA上獲得了@紅薯的熱門推薦,同期分別達(dá)到了OSCHINA的“熱門動彈”排行第一和git.oschina的開源軟件月熱度排行第一,在此特別感謝紅薯,感謝大家的關(guān)注和支持。

于2015-12月,我將XXL-JOB發(fā)表到我司內(nèi)部知識庫,并且得到內(nèi)部同事認(rèn)可。

于2016-01月,我司展開XXL-JOB的內(nèi)部接入和定制工作,在此感謝袁某和尹某兩位同事的貢獻(xiàn),同時(shí)也感謝內(nèi)部其他給與關(guān)注與支持的同事。

于2017-05-13,在上海舉辦的 "第62期開源中國源創(chuàng)會" 的 "放碼過來" 環(huán)節(jié),我登臺對XXL-JOB做了演講,臺下五百位在場觀眾反響熱烈(圖文回顧?)。

于2017-10-22,又拍云 Open Talk 聯(lián)合 Spring Cloud 中國社區(qū)舉辦的 "進(jìn)擊的微服務(wù)實(shí)戰(zhàn)派上海站",我登臺對XXL-JOB做了演講,現(xiàn)場觀眾反響熱烈并在會后與XXL-JOB用戶熱烈討論交流。

于2017-12-11,XXL-JOB有幸參會《InfoQ ArchSummit全球架構(gòu)師峰會》,并被拍拍貸架構(gòu)總監(jiān)"楊波老師"在專題 "微服務(wù)原理、基礎(chǔ)架構(gòu)和開源實(shí)踐" 中現(xiàn)場介紹。

于2017-12-18,XXL-JOB參與"2017年度最受歡迎中國開源軟件"評比,在當(dāng)時(shí)已錄入的約九千個(gè)國產(chǎn)開源項(xiàng)目中角逐,最終進(jìn)入了前30強(qiáng)。

于2018-01-15,XXL-JOB參與"2017碼云最火開源項(xiàng)目"評比,在當(dāng)時(shí)已錄入的約六千五百個(gè)碼云項(xiàng)目中角逐,最終進(jìn)去了前20強(qiáng)。

于2018-04-14,iTechPlus在上海舉辦的 "2018互聯(lián)網(wǎng)開發(fā)者大會",我登臺對XXL-JOB做了演講,現(xiàn)場觀眾反響熱烈并在會后與XXL-JOB用戶熱烈討論交流。

于2018-05-27,在上海舉辦的 "第75期開源中國源創(chuàng)會" 的 "架構(gòu)" 主題專場,我登臺進(jìn)行“基礎(chǔ)架構(gòu)與中間件圖譜”主題演講,臺下上千位在場觀眾反響熱烈(圖文回顧?)。

我司大眾點(diǎn)評目前已接入XXL-JOB,內(nèi)部別名《Ferrari》(Ferrari基于XXL-JOB的V1.1版本定制而成,新接入應(yīng)用推薦升級最新版本)。 據(jù)最新統(tǒng)計(jì), 自2016-01-21接入至2017-12-01期間,該系統(tǒng)已調(diào)度約100萬次,表現(xiàn)優(yōu)異。新接入應(yīng)用推薦使用最新版本,因?yàn)榻?jīng)過數(shù)十個(gè)版本的更新,系統(tǒng)的任務(wù)模型、UI交互模型以及底層調(diào)度通訊模型都有了較大的優(yōu)化和提升,核心功能更加穩(wěn)定高效。

至今,XXL-JOB已接入多家公司的線上產(chǎn)品線,接入場景如電商業(yè)務(wù),O2O業(yè)務(wù)和大數(shù)據(jù)作業(yè)等

?

1.4 下載

文檔地址

  • 中文文檔
  • English Documentation

源碼倉庫地址

源碼倉庫地址Release Download
https://github.com/xuxueli/xxl-jobDownload
http://gitee.com/xuxueli0323/xxl-jobDownload

中央倉庫地址

<!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ --> <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${最新穩(wěn)定版本}</version> </dependency>

技術(shù)交流

  • 社區(qū)交流
  • Gitter

1.5 環(huán)境

  • JDK:1.7+
  • Servlet/JSP Spec:3.1/2.3
  • Tomcat:8.5.x/Jetty9.2.x
  • Spring-boot:1.5.x/Spring4.x
  • Mysql:5.6+
  • Maven:3+

?

?

二、快速入門

2.1 初始化“調(diào)度數(shù)據(jù)庫”

請下載項(xiàng)目源碼并解壓,獲取 "調(diào)度數(shù)據(jù)庫初始化SQL腳本" 并執(zhí)行即可,正常情況下應(yīng)該生成16張表。

"調(diào)度數(shù)據(jù)庫初始化SQL腳本" 位置為:

/xxl-job/doc/db/tables_xxl_job.sql

調(diào)度中心支持集群部署,集群情況下各節(jié)點(diǎn)務(wù)必連接同一個(gè)mysql實(shí)例;

如果mysql做主從,調(diào)度中心集群節(jié)點(diǎn)務(wù)必強(qiáng)制走主庫;

2.2 編譯源碼

解壓源碼,按照maven格式將源碼導(dǎo)入IDE, 使用maven進(jìn)行編譯即可,源碼結(jié)構(gòu)如下:

xxl-job-admin:調(diào)度中心 xxl-job-core:公共依賴 xxl-job-executor:執(zhí)行器Sample示例(選擇合適的版本執(zhí)行器,可直接使用,也可以參考其并將現(xiàn)有項(xiàng)目改造成執(zhí)行器):xxl-job-executor-sample-spring:Spring版本,通過Spring容器管理執(zhí)行器,比較通用,推薦這種方式;:xxl-job-executor-sample-springboot:Springboot版本,通過Springboot管理執(zhí)行器;:xxl-job-executor-sample-jfinal:JFinal版本,通過JFinal管理執(zhí)行器;:xxl-job-executor-sample-nutz:Nutz版本,通過Nutz管理執(zhí)行器;

2.3 配置部署“調(diào)度中心”

調(diào)度中心項(xiàng)目:xxl-job-admin 作用:統(tǒng)一管理任務(wù)調(diào)度平臺上調(diào)度任務(wù),負(fù)責(zé)觸發(fā)調(diào)度執(zhí)行,并且提供任務(wù)管理平臺。

步驟一:調(diào)度中心配置:

調(diào)度中心配置文件地址:

/xxl-job/xxl-job-admin/src/main/resources/xxl-job-admin.properties

調(diào)度中心配置內(nèi)容說明:

### 調(diào)度中心JDBC鏈接:鏈接地址請保持和 2.1章節(jié) 所創(chuàng)建的調(diào)度數(shù)據(jù)庫的地址一致 xxl.job.db.driverClass=com.mysql.jdbc.Driver xxl.job.db.url=jdbc:mysql://localhost:3306/xxl-job?useUnicode=true&characterEncoding=UTF-8 xxl.job.db.user=root xxl.job.db.password=root_pwd### 報(bào)警郵箱 xxl.job.mail.host=smtp.163.com xxl.job.mail.port=25 xxl.job.mail.ssl=false xxl.job.mail.username=ovono802302@163.com xxl.job.mail.password=asdfzxcv xxl.job.mail.sendFrom=ovono802302@163.com xxl.job.mail.sendNick=《任務(wù)調(diào)度平臺XXL-JOB》### 登錄賬號 xxl.job.login.username=admin xxl.job.login.password=123456### 調(diào)度中心通訊TOKEN,非空時(shí)啟用 xxl.job.accessToken=### 調(diào)度中心國際化設(shè)置,默認(rèn)為中文版本,值設(shè)置為“en”時(shí)切換為英文版本 xxl.job.i18n=

步驟二:部署項(xiàng)目:

如果已經(jīng)正確進(jìn)行上述配置,可將項(xiàng)目編譯打war包并部署到tomcat中。 調(diào)度中心訪問地址:http://localhost:8080/xxl-job-admin?(該地址執(zhí)行器將會使用到,作為回調(diào)地址),登錄后運(yùn)行界面如下圖所示

至此“調(diào)度中心”項(xiàng)目已經(jīng)部署成功。

步驟三:調(diào)度中心集群(可選):

調(diào)度中心支持集群部署,提升調(diào)度系統(tǒng)容災(zāi)和可用性。

調(diào)度中心集群部署時(shí),幾點(diǎn)要求和建議:

  • DB配置保持一致;
  • 登陸賬號配置保持一致;
  • 集群機(jī)器時(shí)鐘保持一致(單機(jī)集群忽視);
  • 建議:推薦通過nginx為調(diào)度中心集群做負(fù)載均衡,分配域名。調(diào)度中心訪問、執(zhí)行器回調(diào)配置、調(diào)用API服務(wù)等操作均通過該域名進(jìn)行。

2.4 配置部署“執(zhí)行器項(xiàng)目”

“執(zhí)行器”項(xiàng)目:xxl-job-executor-sample-spring (提供多種版本執(zhí)行器供選擇,現(xiàn)以Spring版本為例,可直接使用,也可以參考其并將現(xiàn)有項(xiàng)目改造成執(zhí)行器) 作用:負(fù)責(zé)接收“調(diào)度中心”的調(diào)度并執(zhí)行;可直接部署執(zhí)行器,也可以將執(zhí)行器集成到現(xiàn)有業(yè)務(wù)項(xiàng)目中。

步驟一:maven依賴

確認(rèn)pom文件中引入了 "xxl-job-core" 的maven依賴;

步驟二:執(zhí)行器配置

執(zhí)行器配置,配置文件地址:

/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/xxl-job-executor.properties

執(zhí)行器配置,配置內(nèi)容說明:

### xxl-job admin address list:調(diào)度中心部署跟地址:如調(diào)度中心集群部署存在多個(gè)地址則用逗號分隔。執(zhí)行器將會使用該地址進(jìn)行"執(zhí)行器心跳注冊"和"任務(wù)結(jié)果回調(diào)"。 xxl.job.admin.addresses=http://127.0.0.1:8080/xxl-job-admin### xxl-job executor address:執(zhí)行器"AppName"和地址信息配置:AppName執(zhí)行器心跳注冊分組依據(jù);地址信息用于"調(diào)度中心請求并觸發(fā)任務(wù)"和"執(zhí)行器注冊"。執(zhí)行器默認(rèn)端口為9999,執(zhí)行器IP默認(rèn)為空表示自動獲取IP,多網(wǎng)卡時(shí)可手動設(shè)置指定IP,該IP不會綁定Host僅作為通訊實(shí)用。單機(jī)部署多個(gè)執(zhí)行器時(shí),注意要配置不同執(zhí)行器端口; xxl.job.executor.appname=xxl-job-executor-sample xxl.job.executor.ip= xxl.job.executor.port=9999### xxl-job, access token:執(zhí)行器通訊TOKEN,非空時(shí)啟用 xxl.job.accessToken=### xxl-job log path:執(zhí)行器運(yùn)行日志文件存儲的磁盤位置,需要對該路徑擁有讀寫權(quán)限 xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler/### xxl-job log retention days:執(zhí)行器Log文件定期清理功能,指定日志保存天數(shù),日志文件過期自動刪除。限制至少保持3天,否則功能不生效; xxl.job.executor.logretentiondays=-1

步驟三:執(zhí)行器組件配置

執(zhí)行器組件,配置文件地址:

/xxl-job/xxl-job-executor-samples/xxl-job-executor-sample-spring/src/main/resources/applicationcontext-xxl-job.xml

執(zhí)行器組件,配置內(nèi)容說明:

<!-- 配置01、JobHandler 掃描路徑:自動掃描容器中JobHandler --> <context:component-scan base-package="com.xxl.job.executor.service.jobhandler" /><!-- 配置02、執(zhí)行器 --> <bean id="xxlJobExecutor" class="com.xxl.job.core.executor.XxlJobExecutor" init-method="start" destroy-method="destroy" ><!-- 執(zhí)行器注冊中心地址[選填],為空則關(guān)閉自動注冊 --><property name="adminAddresses" value="${xxl.job.admin.addresses}" /><!-- 執(zhí)行器AppName[選填],為空則關(guān)閉自動注冊 --><property name="appName" value="${xxl.job.executor.appname}" /><!-- 執(zhí)行器IP[選填],為空則自動獲取 --><property name="ip" value="${xxl.job.executor.ip}" /><!-- 執(zhí)行器端口號[選填],小于等于0則自動獲取 --><property name="port" value="${xxl.job.executor.port}" /><!-- 訪問令牌[選填],非空則進(jìn)行匹配校驗(yàn) --><property name="accessToken" value="${xxl.job.accessToken}" /><!-- 執(zhí)行器日志路徑[選填],為空則使用默認(rèn)路徑 --><property name="logPath" value="${xxl.job.executor.logpath}" /><!-- 日志保存天數(shù)[選填],值大于3時(shí)生效 --><property name="logRetentionDays" value="${xxl.job.executor.logretentiondays}" /> </bean>

步驟四:部署執(zhí)行器項(xiàng)目:

如果已經(jīng)正確進(jìn)行上述配置,可將執(zhí)行器項(xiàng)目編譯打部署,系統(tǒng)提供多種執(zhí)行器Sample示例項(xiàng)目,選擇其中一個(gè)即可,各自的部署方式如下。

xxl-job-executor-sample-springboot:項(xiàng)目編譯打包成springboot類型的可執(zhí)行JAR包,命令啟動即可; xxl-job-executor-sample-spring:項(xiàng)目編譯打包成WAR包,并部署到tomcat中。 xxl-job-executor-sample-jfinal:同上 xxl-job-executor-sample-nutz:同上

至此“執(zhí)行器”項(xiàng)目已經(jīng)部署結(jié)束。

步驟五:執(zhí)行器集群(可選):

執(zhí)行器支持集群部署,提升調(diào)度系統(tǒng)可用性,同時(shí)提升任務(wù)處理能力。

執(zhí)行器集群部署時(shí),幾點(diǎn)要求和建議:

  • 執(zhí)行器回調(diào)地址(xxl.job.admin.addresses)需要保持一致;執(zhí)行器根據(jù)該配置進(jìn)行執(zhí)行器自動注冊等操作。
  • 同一個(gè)執(zhí)行器集群內(nèi)AppName(xxl.job.executor.appname)需要保持一致;調(diào)度中心根據(jù)該配置動態(tài)發(fā)現(xiàn)不同集群的在線執(zhí)行器列表。

2.5 開發(fā)第一個(gè)任務(wù)“Hello World”

本示例以新建一個(gè) “GLUE模式(Java)” 運(yùn)行模式的任務(wù)為例。更多有關(guān)任務(wù)的詳細(xì)配置,請查看“章節(jié)三:任務(wù)詳解”。 ( “GLUE模式(Java)”的執(zhí)行代碼托管到調(diào)度中心在線維護(hù),相比“Bean模式任務(wù)”需要在執(zhí)行器項(xiàng)目開發(fā)部署上線,更加簡便輕量)

前提:請確認(rèn)“調(diào)度中心”和“執(zhí)行器”項(xiàng)目已經(jīng)成功部署并啟動;

步驟一:新建任務(wù):

登錄調(diào)度中心,點(diǎn)擊下圖所示“新建任務(wù)”按鈕,新建示例任務(wù)。然后,參考下面截圖中任務(wù)的參數(shù)配置,點(diǎn)擊保存。

步驟二:“GLUE模式(Java)” 任務(wù)開發(fā):

請點(diǎn)擊任務(wù)右側(cè) “GLUE” 按鈕,進(jìn)入 “GLUE編輯器開發(fā)界面” ,見下圖。“GLUE模式(Java)” 運(yùn)行模式的任務(wù)默認(rèn)已經(jīng)初始化了示例任務(wù)代碼,即打印Hello World。 ( “GLUE模式(Java)” 運(yùn)行模式的任務(wù)實(shí)際上是一段繼承自IJobHandler的Java類代碼,它在執(zhí)行器項(xiàng)目中運(yùn)行,可使用@Resource/@Autowire注入執(zhí)行器里中的其他服務(wù),詳細(xì)介紹請查看第三章節(jié))

步驟三:觸發(fā)執(zhí)行:

請點(diǎn)擊任務(wù)右側(cè) “執(zhí)行” 按鈕,可手動觸發(fā)一次任務(wù)執(zhí)行(通常情況下,通過配置Cron表達(dá)式進(jìn)行任務(wù)調(diào)度出發(fā))。

步驟四:查看日志:

請點(diǎn)擊任務(wù)右側(cè) “日志” 按鈕,可前往任務(wù)日志界面查看任務(wù)日志。 在任務(wù)日志界面中,可查看該任務(wù)的歷史調(diào)度記錄以及每一次調(diào)度的任務(wù)調(diào)度信息、執(zhí)行參數(shù)和執(zhí)行信息。運(yùn)行中的任務(wù)點(diǎn)擊右側(cè)的“執(zhí)行日志”按鈕,可進(jìn)入日志控制臺查看實(shí)時(shí)執(zhí)行日志。

在日志控制臺,可以Rolling方式實(shí)時(shí)查看任務(wù)在執(zhí)行器一側(cè)運(yùn)行輸出的日志信息,實(shí)時(shí)監(jiān)控任務(wù)進(jìn)度;

三、任務(wù)詳解

配置屬性詳細(xì)說明:

- 執(zhí)行器:任務(wù)的綁定的執(zhí)行器,任務(wù)觸發(fā)調(diào)度時(shí)將會自動發(fā)現(xiàn)注冊成功的執(zhí)行器, 實(shí)現(xiàn)任務(wù)自動發(fā)現(xiàn)功能; 另一方面也可以方便的進(jìn)行任務(wù)分組。每個(gè)任務(wù)必須綁定一個(gè)執(zhí)行器, 可在 "執(zhí)行器管理" 進(jìn)行設(shè)置; - 任務(wù)描述:任務(wù)的描述信息,便于任務(wù)管理; - 路由策略:當(dāng)執(zhí)行器集群部署時(shí),提供豐富的路由策略,包括;FIRST(第一個(gè)):固定選擇第一個(gè)機(jī)器;LAST(最后一個(gè)):固定選擇最后一個(gè)機(jī)器;ROUND(輪詢):;RANDOM(隨機(jī)):隨機(jī)選擇在線的機(jī)器;CONSISTENT_HASH(一致性HASH):每個(gè)任務(wù)按照Hash算法固定選擇某一臺機(jī)器,且所有任務(wù)均勻散列在不同機(jī)器上。LEAST_FREQUENTLY_USED(最不經(jīng)常使用):使用頻率最低的機(jī)器優(yōu)先被選舉;LEAST_RECENTLY_USED(最近最久未使用):最久為使用的機(jī)器優(yōu)先被選舉;FAILOVER(故障轉(zhuǎn)移):按照順序依次進(jìn)行心跳檢測,第一個(gè)心跳檢測成功的機(jī)器選定為目標(biāo)執(zhí)行器并發(fā)起調(diào)度;BUSYOVER(忙碌轉(zhuǎn)移):按照順序依次進(jìn)行空閑檢測,第一個(gè)空閑檢測成功的機(jī)器選定為目標(biāo)執(zhí)行器并發(fā)起調(diào)度;SHARDING_BROADCAST(分片廣播):廣播觸發(fā)對應(yīng)集群中所有機(jī)器執(zhí)行一次任務(wù),同時(shí)傳遞分片參數(shù);可根據(jù)分片參數(shù)開發(fā)分片任務(wù);- Cron:觸發(fā)任務(wù)執(zhí)行的Cron表達(dá)式; - 運(yùn)行模式:BEAN模式:任務(wù)以JobHandler方式維護(hù)在執(zhí)行器端;需要結(jié)合 "JobHandler" 屬性匹配執(zhí)行器中任務(wù);GLUE模式(Java):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段繼承自IJobHandler的Java類代碼并 "groovy" 源碼方式維護(hù),它在執(zhí)行器項(xiàng)目中運(yùn)行,可使用@Resource/@Autowire注入執(zhí)行器里中的其他服務(wù);GLUE模式(Shell):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "shell" 腳本;GLUE模式(Python):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "python" 腳本;GLUE模式(PHP):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "php" 腳本;GLUE模式(NodeJS):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "nodejs" 腳本;GLUE模式(PowerShell):任務(wù)以源碼方式維護(hù)在調(diào)度中心;該模式的任務(wù)實(shí)際上是一段 "PowerShell" 腳本; - JobHandler:運(yùn)行模式為 "BEAN模式" 時(shí)生效,對應(yīng)執(zhí)行器中新開發(fā)的JobHandler類“@JobHandler”注解自定義的value值; - 阻塞處理策略:調(diào)度過于密集執(zhí)行器來不及處理時(shí)的處理策略;單機(jī)串行(默認(rèn)):調(diào)度請求進(jìn)入單機(jī)執(zhí)行器后,調(diào)度請求進(jìn)入FIFO隊(duì)列并以串行方式運(yùn)行;丟棄后續(xù)調(diào)度:調(diào)度請求進(jìn)入單機(jī)執(zhí)行器后,發(fā)現(xiàn)執(zhí)行器存在運(yùn)行的調(diào)度任務(wù),本次請求將會被丟棄并標(biāo)記為失敗;覆蓋之前調(diào)度:調(diào)度請求進(jìn)入單機(jī)執(zhí)行器后,發(fā)現(xiàn)執(zhí)行器存在運(yùn)行的調(diào)度任務(wù),將會終止運(yùn)行中的調(diào)度任務(wù)并清空隊(duì)列,然后運(yùn)行本地調(diào)度任務(wù); - 子任務(wù):每個(gè)任務(wù)都擁有一個(gè)唯一的任務(wù)ID(任務(wù)ID可以從任務(wù)列表獲取),當(dāng)本任務(wù)執(zhí)行結(jié)束并且執(zhí)行成功時(shí),將會觸發(fā)子任務(wù)ID所對應(yīng)的任務(wù)的一次主動調(diào)度。 - 任務(wù)超時(shí)時(shí)間:支持自定義任務(wù)超時(shí)時(shí)間,任務(wù)運(yùn)行超時(shí)將會主動中斷任務(wù); - 失敗重試次數(shù);支持自定義任務(wù)失敗重試次數(shù),當(dāng)任務(wù)失敗時(shí)將會按照預(yù)設(shè)的失敗重試次數(shù)主動進(jìn)行重試; - 報(bào)警郵件:任務(wù)調(diào)度失敗時(shí)郵件通知的郵箱地址,支持配置多郵箱地址,配置多個(gè)郵箱地址時(shí)用逗號分隔; - 負(fù)責(zé)人:任務(wù)的負(fù)責(zé)人; - 執(zhí)行參數(shù):任務(wù)執(zhí)行所需的參數(shù),多個(gè)參數(shù)時(shí)用逗號分隔,任務(wù)執(zhí)行時(shí)將會把多個(gè)參數(shù)轉(zhuǎn)換成數(shù)組傳入;

3.1 BEAN模式

任務(wù)邏輯以JobHandler的形式存在于“執(zhí)行器”所在項(xiàng)目中,開發(fā)流程如下:

步驟一:執(zhí)行器項(xiàng)目中,開發(fā)JobHandler:

- 1、繼承"IJobHandler":“com.xxl.job.core.handler.IJobHandler”;- 2、注冊到Spring容器:添加“@Component”注解,被Spring容器掃描為Bean實(shí)例;- 3、注冊到執(zhí)行器工廠:添加“@JobHandler(value="自定義jobhandler名稱")”注解,注解value值對應(yīng)的是調(diào)度中心新建任務(wù)的JobHandler屬性的值。- 4、執(zhí)行日志:需要通過 "XxlJobLogger.log" 打印執(zhí)行日志; (可參考Sample示例執(zhí)行器中的DemoJobHandler,見下圖)

步驟二:調(diào)度中心,新建調(diào)度任務(wù)

參考上文“配置屬性詳細(xì)說明”對新建的任務(wù)進(jìn)行參數(shù)配置,運(yùn)行模式選中 "BEAN模式",JobHandler屬性填寫任務(wù)注解“@JobHandler”中定義的值;

3.2 GLUE模式(Java)

任務(wù)以源碼方式維護(hù)在調(diào)度中心,支持通過Web IDE在線更新,實(shí)時(shí)編譯和生效,因此不需要指定JobHandler。開發(fā)流程如下:

步驟一:調(diào)度中心,新建調(diào)度任務(wù):

參考上文“配置屬性詳細(xì)說明”對新建的任務(wù)進(jìn)行參數(shù)配置,運(yùn)行模式選中 "GLUE模式(Java)";

步驟二:開發(fā)任務(wù)代碼:

選中指定任務(wù),點(diǎn)擊該任務(wù)右側(cè)“GLUE”按鈕,將會前往GLUE任務(wù)的Web IDE界面,在該界面支持對任務(wù)代碼進(jìn)行開發(fā)(也可以在IDE中開發(fā)完成后,復(fù)制粘貼到編輯中)。

版本回溯功能(支持30個(gè)版本的版本回溯):在GLUE任務(wù)的Web IDE界面,選擇右上角下拉框“版本回溯”,會列出該GLUE的更新歷史,選擇相應(yīng)版本即可顯示該版本代碼,保存后GLUE代碼即回退到對應(yīng)的歷史版本;

3.3 GLUE模式(Shell)

步驟一:調(diào)度中心,新建調(diào)度任務(wù)

參考上文“配置屬性詳細(xì)說明”對新建的任務(wù)進(jìn)行參數(shù)配置,運(yùn)行模式選中 "GLUE模式(Shell)";

步驟二:開發(fā)任務(wù)代碼:

選中指定任務(wù),點(diǎn)擊該任務(wù)右側(cè)“GLUE”按鈕,將會前往GLUE任務(wù)的Web IDE界面,在該界面支持對任務(wù)代碼進(jìn)行開發(fā)(也可以在IDE中開發(fā)完成后,復(fù)制粘貼到編輯中)。

該模式的任務(wù)實(shí)際上是一段 "shell" 腳本;

3.4 GLUE模式(Python)

步驟一:調(diào)度中心,新建調(diào)度任務(wù)

參考上文“配置屬性詳細(xì)說明”對新建的任務(wù)進(jìn)行參數(shù)配置,運(yùn)行模式選中 "GLUE模式(Python)";

步驟二:開發(fā)任務(wù)代碼:

選中指定任務(wù),點(diǎn)擊該任務(wù)右側(cè)“GLUE”按鈕,將會前往GLUE任務(wù)的Web IDE界面,在該界面支持對任務(wù)代碼進(jìn)行開發(fā)(也可以在IDE中開發(fā)完成后,復(fù)制粘貼到編輯中)。

該模式的任務(wù)實(shí)際上是一段 "python" 腳本;

3.5 GLUE模式(NodeJS)

步驟一:調(diào)度中心,新建調(diào)度任務(wù)

參考上文“配置屬性詳細(xì)說明”對新建的任務(wù)進(jìn)行參數(shù)配置,運(yùn)行模式選中 "GLUE模式(NodeJS)";

步驟二:開發(fā)任務(wù)代碼:

選中指定任務(wù),點(diǎn)擊該任務(wù)右側(cè)“GLUE”按鈕,將會前往GLUE任務(wù)的Web IDE界面,在該界面支持對任務(wù)代碼進(jìn)行開發(fā)(也可以在IDE中開發(fā)完成后,復(fù)制粘貼到編輯中)。

該模式的任務(wù)實(shí)際上是一段 "nodejS" 腳本;

3.6 GLUE模式(PHP)

同上

3.7 GLUE模式(PowerShell)

同上

?

?

四、任務(wù)管理

4.0 配置執(zhí)行器

點(diǎn)擊進(jìn)入"執(zhí)行器管理"界面, 如下圖:?

1、"調(diào)度中心OnLine:"右側(cè)顯示在線的"調(diào)度中心"列表, 任務(wù)執(zhí)行結(jié)束后, 將會以failover的模式進(jìn)行回調(diào)調(diào)度中心通知執(zhí)行結(jié)果, 避免回調(diào)的單點(diǎn)風(fēng)險(xiǎn); 2、"執(zhí)行器列表" 中顯示在線的執(zhí)行器列表, 可通過"OnLine 機(jī)器"查看對應(yīng)執(zhí)行器的集群機(jī)器。

點(diǎn)擊按鈕 "+新增執(zhí)行器" 彈框如下圖, 可新增執(zhí)行器配置:

執(zhí)行器屬性說明

AppName: 是每個(gè)執(zhí)行器集群的唯一標(biāo)示AppName, 執(zhí)行器會周期性以AppName為對象進(jìn)行自動注冊。可通過該配置自動發(fā)現(xiàn)注冊成功的執(zhí)行器, 供任務(wù)調(diào)度時(shí)使用; 名稱: 執(zhí)行器的名稱, 因?yàn)锳ppName限制字母數(shù)字等組成,可讀性不強(qiáng), 名稱為了提高執(zhí)行器的可讀性; 排序: 執(zhí)行器的排序, 系統(tǒng)中需要執(zhí)行器的地方,如任務(wù)新增, 將會按照該排序讀取可用的執(zhí)行器列表; 注冊方式:調(diào)度中心獲取執(zhí)行器地址的方式;自動注冊:執(zhí)行器自動進(jìn)行執(zhí)行器注冊,調(diào)度中心通過底層注冊表可以動態(tài)發(fā)現(xiàn)執(zhí)行器機(jī)器地址;手動錄入:人工手動錄入執(zhí)行器的地址信息,多地址逗號分隔,供調(diào)度中心使用; 機(jī)器地址:"注冊方式"為"手動錄入"時(shí)有效,支持人工維護(hù)執(zhí)行器的地址信息;

4.1 新建任務(wù)

進(jìn)入任務(wù)管理界面,點(diǎn)擊“新增任務(wù)”按鈕,在彈出的“新增任務(wù)”界面配置任務(wù)屬性后保存即可。詳情頁參考章節(jié) "三、任務(wù)詳解"。

4.2 編輯任務(wù)

進(jìn)入任務(wù)管理界面,選中指定任務(wù)。點(diǎn)擊該任務(wù)右側(cè)“編輯”按鈕,在彈出的“編輯任務(wù)”界面更新任務(wù)屬性后保存即可,可以修改設(shè)置的任務(wù)屬性信息:

4.3 編輯GLUE代碼

該操作僅針對GLUE任務(wù)。

選中指定任務(wù),點(diǎn)擊該任務(wù)右側(cè)“GLUE”按鈕,將會前往GLUE任務(wù)的Web IDE界面,在該界面支持對任務(wù)代碼進(jìn)行開發(fā)。可參考章節(jié) "3.2 GLUE模式(Java)"。

4.4 暫停/恢復(fù)任務(wù)

可對任務(wù)進(jìn)行“暫停”和“恢復(fù)”操作。 需要注意的是,此處的暫停/恢復(fù)僅針對任務(wù)的后續(xù)調(diào)度觸發(fā)行為,不會影響到已經(jīng)觸發(fā)的調(diào)度任務(wù),如需終止已經(jīng)觸發(fā)的調(diào)度任務(wù),可查看“4.8 終止運(yùn)行中的任務(wù)”

4.5 手動觸發(fā)一次調(diào)度

點(diǎn)擊“執(zhí)行”按鈕,可手動觸發(fā)一次任務(wù)調(diào)度,不影響原有調(diào)度規(guī)則。

4.6 查看調(diào)度日志

點(diǎn)擊“日志”按鈕,可以查看任務(wù)歷史調(diào)度日志。在歷史調(diào)入日志界面可查看每次任務(wù)調(diào)度的調(diào)度結(jié)果、執(zhí)行結(jié)果等,點(diǎn)擊“執(zhí)行日志”按鈕可查看執(zhí)行器完整日志。

調(diào)度時(shí)間:"調(diào)度中心"觸發(fā)本次調(diào)度并向"執(zhí)行器"發(fā)送任務(wù)執(zhí)行信號的時(shí)間; 調(diào)度結(jié)果:"調(diào)度中心"觸發(fā)本次調(diào)度的結(jié)果,200表示成功,500或其他表示失敗; 調(diào)度備注:"調(diào)度中心"觸發(fā)本次調(diào)度的日志信息; 執(zhí)行器地址:本次任務(wù)執(zhí)行的機(jī)器地址 運(yùn)行模式:觸發(fā)調(diào)度時(shí)任務(wù)的運(yùn)行模式,運(yùn)行模式可參考章節(jié) "三、任務(wù)詳解"; 任務(wù)參數(shù):本地任務(wù)執(zhí)行的入?yún)?執(zhí)行時(shí)間:"執(zhí)行器"中本次任務(wù)執(zhí)行結(jié)束后回調(diào)的時(shí)間; 執(zhí)行結(jié)果:"執(zhí)行器"中本次任務(wù)執(zhí)行的結(jié)果,200表示成功,500或其他表示失敗; 執(zhí)行備注:"執(zhí)行器"中本次任務(wù)執(zhí)行的日志信息; 操作:"執(zhí)行日志"按鈕:點(diǎn)擊可查看本地任務(wù)執(zhí)行的詳細(xì)日志信息;詳見“4.7 查看執(zhí)行日志”;"終止任務(wù)"按鈕:點(diǎn)擊可終止本地調(diào)度對應(yīng)執(zhí)行器上本任務(wù)的執(zhí)行線程,包括未執(zhí)行的阻塞任務(wù)一并被終止;

4.7 查看執(zhí)行日志

點(diǎn)擊執(zhí)行日志右側(cè)的 “執(zhí)行日志” 按鈕,可跳轉(zhuǎn)至執(zhí)行日志界面,可以查看業(yè)務(wù)代碼中打印的完整日志,如下圖;

4.8 終止運(yùn)行中的任務(wù)

僅針對執(zhí)行中的任務(wù)。 在任務(wù)日志界面,點(diǎn)擊右側(cè)的“終止任務(wù)”按鈕,將會向本次任務(wù)對應(yīng)的執(zhí)行器發(fā)送任務(wù)終止請求,將會終止掉本次任務(wù),同時(shí)會清空掉整個(gè)任務(wù)執(zhí)行隊(duì)列。

任務(wù)終止時(shí)通過 "interrupt" 執(zhí)行線程的方式實(shí)現(xiàn), 將會觸發(fā) "InterruptedException" 異常。因此如果JobHandler內(nèi)部catch到了該異常并消化掉的話, 任務(wù)終止功能將不可用。

因此, 如果遇到上述任務(wù)終止不可用的情況, 需要在JobHandler中應(yīng)該針對 "InterruptedException" 異常進(jìn)行特殊處理 (向上拋出) , 正確邏輯如下:

try{// TODO } catch (Exception e) {if (e instanceof InterruptedException) {throw e;}logger.warn("{}", e); }

而且,在JobHandler中開啟子線程時(shí),子線程也不可catch處理"InterruptedException",應(yīng)該主動向上拋出。

4.9 刪除執(zhí)行日志

在任務(wù)日志界面,選中執(zhí)行器和任務(wù)之后,點(diǎn)擊右側(cè)的"刪除"按鈕將會出現(xiàn)"日志清理"彈框,彈框中支持選擇不同類型的日志清理策略,選中后點(diǎn)擊"確定"按鈕即可進(jìn)行日志清理操作;?

4.10 刪除任務(wù)

點(diǎn)擊刪除按鈕,可以刪除對應(yīng)任務(wù)。

?

五、總體設(shè)計(jì)

5.1 源碼目錄介紹

- /doc :文檔資料 - /db :“調(diào)度數(shù)據(jù)庫”建表腳本 - /xxl-job-admin :調(diào)度中心,項(xiàng)目源碼 - /xxl-job-core :公共Jar依賴 - /xxl-job-executor-samples :執(zhí)行器,Sample示例項(xiàng)目(大家可以在該項(xiàng)目上進(jìn)行開發(fā),也可以將現(xiàn)有項(xiàng)目改造生成執(zhí)行器項(xiàng)目)

5.2 “調(diào)度數(shù)據(jù)庫”配置

XXL-JOB調(diào)度模塊基于Quartz集群實(shí)現(xiàn),其“調(diào)度數(shù)據(jù)庫”是在Quartz的11張集群mysql表基礎(chǔ)上擴(kuò)展而成。

XXL-JOB首先定制了Quartz原生表結(jié)構(gòu)前綴(XXL_JOB_QRTZ_)。

然后,在此基礎(chǔ)上新增了幾張張擴(kuò)展表,如下: - XXL_JOB_QRTZ_TRIGGER_GROUP:執(zhí)行器信息表,維護(hù)任務(wù)執(zhí)行器信息; - XXL_JOB_QRTZ_TRIGGER_REGISTRY:執(zhí)行器注冊表,維護(hù)在線的執(zhí)行器和調(diào)度中心機(jī)器地址信息; - XXL_JOB_QRTZ_TRIGGER_INFO:調(diào)度擴(kuò)展信息表: 用于保存XXL-JOB調(diào)度任務(wù)的擴(kuò)展信息,如任務(wù)分組、任務(wù)名、機(jī)器地址、執(zhí)行器、執(zhí)行入?yún)⒑蛨?bào)警郵件等等; - XXL_JOB_QRTZ_TRIGGER_LOG:調(diào)度日志表: 用于保存XXL-JOB任務(wù)調(diào)度的歷史信息,如調(diào)度結(jié)果、執(zhí)行結(jié)果、調(diào)度入?yún)ⅰ⒄{(diào)度機(jī)器和執(zhí)行器等等; - XXL_JOB_QRTZ_TRIGGER_LOGGLUE:任務(wù)GLUE日志:用于保存GLUE更新歷史,用于支持GLUE的版本回溯功能;

因此,XXL-JOB調(diào)度數(shù)據(jù)庫共計(jì)用于16張數(shù)據(jù)庫表。

5.3 架構(gòu)設(shè)計(jì)

5.3.1 設(shè)計(jì)思想

將調(diào)度行為抽象形成“調(diào)度中心”公共平臺,而平臺自身并不承擔(dān)業(yè)務(wù)邏輯,“調(diào)度中心”負(fù)責(zé)發(fā)起調(diào)度請求。

將任務(wù)抽象成分散的JobHandler,交由“執(zhí)行器”統(tǒng)一管理,“執(zhí)行器”負(fù)責(zé)接收調(diào)度請求并執(zhí)行對應(yīng)的JobHandler中業(yè)務(wù)邏輯。

因此,“調(diào)度”和“任務(wù)”兩部分可以相互解耦,提高系統(tǒng)整體穩(wěn)定性和擴(kuò)展性;

5.3.2 系統(tǒng)組成

  • 調(diào)度模塊(調(diào)度中心): 負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請求,自身不承擔(dān)業(yè)務(wù)代碼。調(diào)度系統(tǒng)與任務(wù)解耦,提高了系統(tǒng)可用性和穩(wěn)定性,同時(shí)調(diào)度系統(tǒng)性能不再受限于任務(wù)模塊; 支持可視化、簡單且動態(tài)的管理調(diào)度信息,包括任務(wù)新建,更新,刪除,GLUE開發(fā)和任務(wù)報(bào)警等,所有上述操作都會實(shí)時(shí)生效,同時(shí)支持監(jiān)控調(diào)度結(jié)果以及執(zhí)行日志,支持執(zhí)行器Failover。
  • 執(zhí)行模塊(執(zhí)行器): 負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)邏輯。任務(wù)模塊專注于任務(wù)的執(zhí)行等操作,開發(fā)和維護(hù)更加簡單和高效; 接收“調(diào)度中心”的執(zhí)行請求、終止請求和日志請求等。

5.3.3 架構(gòu)圖

5.4 調(diào)度模塊剖析

5.4.1 quartz的不足

Quartz作為開源作業(yè)調(diào)度中的佼佼者,是作業(yè)調(diào)度的首選。但是集群環(huán)境中Quartz采用API的方式對任務(wù)進(jìn)行管理,從而可以避免上述問題,但是同樣存在以下問題:

  • 問題一:調(diào)用API的的方式操作任務(wù),不人性化;
  • 問題二:需要持久化業(yè)務(wù)QuartzJobBean到底層數(shù)據(jù)表中,系統(tǒng)侵入性相當(dāng)嚴(yán)重。
  • 問題三:調(diào)度邏輯和QuartzJobBean耦合在同一個(gè)項(xiàng)目中,這將導(dǎo)致一個(gè)問題,在調(diào)度任務(wù)數(shù)量逐漸增多,同時(shí)調(diào)度任務(wù)邏輯逐漸加重的情況加,此時(shí)調(diào)度系統(tǒng)的性能將大大受限于業(yè)務(wù);
  • 問題四:quartz底層以“搶占式”獲取DB鎖并由搶占成功節(jié)點(diǎn)負(fù)責(zé)運(yùn)行任務(wù),會導(dǎo)致節(jié)點(diǎn)負(fù)載懸殊非常大;而XXL-JOB通過執(zhí)行器實(shí)現(xiàn)“協(xié)同分配式”運(yùn)行任務(wù),充分發(fā)揮集群優(yōu)勢,負(fù)載各節(jié)點(diǎn)均衡。

XXL-JOB彌補(bǔ)了quartz的上述不足之處。

5.4.2 RemoteHttpJobBean

常規(guī)Quartz的開發(fā),任務(wù)邏輯一般維護(hù)在QuartzJobBean中,耦合很嚴(yán)重。XXL-JOB中“調(diào)度模塊”和“任務(wù)模塊”完全解耦,調(diào)度模塊中的所有調(diào)度任務(wù)使用同一個(gè)QuartzJobBean,即RemoteHttpJobBean。不同的調(diào)度任務(wù)將各自參數(shù)維護(hù)在各自擴(kuò)展表數(shù)據(jù)中,當(dāng)觸發(fā)RemoteHttpJobBean執(zhí)行時(shí),將會解析不同的任務(wù)參數(shù)發(fā)起遠(yuǎn)程調(diào)用,調(diào)用各自的遠(yuǎn)程執(zhí)行器服務(wù)。

這種調(diào)用模型類似RPC調(diào)用,RemoteHttpJobBean提供調(diào)用代理的功能,而執(zhí)行器提供遠(yuǎn)程服務(wù)的功能。

5.4.3 調(diào)度中心HA(集群)

基于Quartz的集群方案,數(shù)據(jù)庫選用Mysql;集群分布式并發(fā)環(huán)境中使用QUARTZ定時(shí)任務(wù)調(diào)度,會在各個(gè)節(jié)點(diǎn)會上報(bào)任務(wù),存到數(shù)據(jù)庫中,執(zhí)行時(shí)會從數(shù)據(jù)庫中取出觸發(fā)器來執(zhí)行,如果觸發(fā)器的名稱和執(zhí)行時(shí)間相同,則只有一個(gè)節(jié)點(diǎn)去執(zhí)行此任務(wù)。

# for cluster org.quartz.jobStore.tablePrefix = XXL_JOB_QRTZ_ org.quartz.scheduler.instanceId: AUTO org.quartz.jobStore.class: org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.isClustered: true org.quartz.jobStore.clusterCheckinInterval: 1000

5.4.4 調(diào)度線程池

調(diào)度采用線程池方式實(shí)現(xiàn),避免單線程因阻塞而引起任務(wù)調(diào)度延遲。

org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount: 50 org.quartz.threadPool.threadPriority: 5 org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true

5.4.5 @DisallowConcurrentExecution

XXL-JOB調(diào)度模塊的“調(diào)度中心”默認(rèn)不使用該注解,即默認(rèn)開啟并行機(jī)制,因?yàn)镽emoteHttpJobBean為公共QuartzJobBean,這樣在多線程調(diào)度的情況下,調(diào)度模塊被阻塞的幾率很低,大大提高了調(diào)度系統(tǒng)的承載量。

XXL-JOB的每個(gè)調(diào)度任務(wù)雖然在調(diào)度模塊是并行調(diào)度執(zhí)行的,但是任務(wù)調(diào)度傳遞到任務(wù)模塊的“執(zhí)行器”確實(shí)串行執(zhí)行的,同時(shí)支持任務(wù)終止。

5.4.6 misfire

錯(cuò)過了觸發(fā)時(shí)間,處理規(guī)則。 可能原因:服務(wù)重啟;調(diào)度線程被QuartzJobBean阻塞,線程被耗盡;某個(gè)任務(wù)啟用了@DisallowConcurrentExecution,上次調(diào)度持續(xù)阻塞,下次調(diào)度被錯(cuò)過;

quartz.properties中關(guān)于misfire的閥值配置如下,單位毫秒:

org.quartz.jobStore.misfireThreshold: 60000

Misfire規(guī)則: withMisfireHandlingInstructionDoNothing:不觸發(fā)立即執(zhí)行,等待下次調(diào)度; withMisfireHandlingInstructionIgnoreMisfires:以錯(cuò)過的第一個(gè)頻率時(shí)間立刻開始執(zhí)行; withMisfireHandlingInstructionFireAndProceed:以當(dāng)前時(shí)間為觸發(fā)頻率立刻觸發(fā)一次執(zhí)行;

XXL-JOB默認(rèn)misfire規(guī)則為:withMisfireHandlingInstructionDoNothing

CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(jobInfo.getJobCron()).withMisfireHandlingInstructionDoNothing(); CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity(triggerKey).withSchedule(cronScheduleBuilder).build();

5.4.7 日志回調(diào)服務(wù)

調(diào)度模塊的“調(diào)度中心”作為Web服務(wù)部署時(shí),一方面承擔(dān)調(diào)度中心功能,另一方面也為執(zhí)行器提供API服務(wù)。

調(diào)度中心提供的"日志回調(diào)服務(wù)API服務(wù)"代碼位置如下:

xxl-job-admin#com.xxl.job.admin.controller.JobApiController.callback

“執(zhí)行器”在接收到任務(wù)執(zhí)行請求后,執(zhí)行任務(wù),在執(zhí)行結(jié)束之后會將執(zhí)行結(jié)果回調(diào)通知“調(diào)度中心”:

5.4.8 任務(wù)HA(Failover)

執(zhí)行器如若集群部署,調(diào)度中心將會感知到在線的所有執(zhí)行器,如“127.0.0.1:9997, 127.0.0.1:9998, 127.0.0.1:9999”。

當(dāng)任務(wù)"路由策略"選擇"故障轉(zhuǎn)移(FAILOVER)"時(shí),當(dāng)調(diào)度中心每次發(fā)起調(diào)度請求時(shí),會按照順序?qū)?zhí)行器發(fā)出心跳檢測請求,第一個(gè)檢測為存活狀態(tài)的執(zhí)行器將會被選定并發(fā)送調(diào)度請求。

調(diào)度成功后,可在日志監(jiān)控界面查看“調(diào)度備注”,如下;?

“調(diào)度備注”可以看出本地調(diào)度運(yùn)行軌跡,執(zhí)行器的"注冊方式"、"地址列表"和任務(wù)的"路由策略"。"故障轉(zhuǎn)移(FAILOVER)"路由策略下,調(diào)度中心首先對第一個(gè)地址進(jìn)行心跳檢測,心跳失敗因此自動跳過,第二個(gè)依然心跳檢測失敗…… 直至心跳檢測第三個(gè)地址“127.0.0.1:9999”成功,選定為“目標(biāo)執(zhí)行器”;然后對“目標(biāo)執(zhí)行器”發(fā)送調(diào)度請求,調(diào)度流程結(jié)束,等待執(zhí)行器回調(diào)執(zhí)行結(jié)果。

5.4.9 調(diào)度日志

調(diào)度中心每次進(jìn)行任務(wù)調(diào)度,都會記錄一條任務(wù)日志,任務(wù)日志主要包括以下三部分內(nèi)容:

  • 任務(wù)信息:包括“執(zhí)行器地址”、“JobHandler”和“執(zhí)行參數(shù)”等屬性,點(diǎn)擊任務(wù)ID按鈕可查看,根據(jù)這些參數(shù),可以精確的定位任務(wù)執(zhí)行的具體機(jī)器和任務(wù)代碼;
  • 調(diào)度信息:包括“調(diào)度時(shí)間”、“調(diào)度結(jié)果”和“調(diào)度日志”等,根據(jù)這些參數(shù),可以了解“調(diào)度中心”發(fā)起調(diào)度請求時(shí)具體情況。
  • 執(zhí)行信息:包括“執(zhí)行時(shí)間”、“執(zhí)行結(jié)果”和“執(zhí)行日志”等,根據(jù)這些參數(shù),可以了解在“執(zhí)行器”端任務(wù)執(zhí)行的具體情況;

調(diào)度日志,針對單次調(diào)度,屬性說明如下:

  • 執(zhí)行器地址:任務(wù)執(zhí)行的機(jī)器地址;
  • JobHandler:Bean模式表示任務(wù)執(zhí)行的JobHandler名稱;
  • 任務(wù)參數(shù):任務(wù)執(zhí)行的入?yún)?#xff1b;
  • 調(diào)度時(shí)間:調(diào)度中心,發(fā)起調(diào)度的時(shí)間;
  • 調(diào)度結(jié)果:調(diào)度中心,發(fā)起調(diào)度的結(jié)果,SUCCESS或FAIL;
  • 調(diào)度備注:調(diào)度中心,發(fā)起調(diào)度的備注信息,如地址心跳檢測日志等;
  • 執(zhí)行時(shí)間:執(zhí)行器,任務(wù)執(zhí)行結(jié)束后回調(diào)的時(shí)間;
  • 執(zhí)行結(jié)果:執(zhí)行器,任務(wù)執(zhí)行的結(jié)果,SUCCESS或FAIL;
  • 執(zhí)行備注:執(zhí)行器,任務(wù)執(zhí)行的備注信息,如異常日志等;
  • 執(zhí)行日志:任務(wù)執(zhí)行過程中,業(yè)務(wù)代碼中打印的完整執(zhí)行日志,見“4.7 查看執(zhí)行日志”;

5.4.10 任務(wù)依賴

原理:XXL-JOB中每個(gè)任務(wù)都對應(yīng)有一個(gè)任務(wù)ID,同時(shí),每個(gè)任務(wù)支持設(shè)置屬性“子任務(wù)ID”,因此,通過“任務(wù)ID”可以匹配任務(wù)依賴關(guān)系。

當(dāng)父任務(wù)執(zhí)行結(jié)束并且執(zhí)行成功時(shí),將會根據(jù)“子任務(wù)ID”匹配子任務(wù)依賴,如果匹配到子任務(wù),將會主動觸發(fā)一次子任務(wù)的執(zhí)行。

在任務(wù)日志界面,點(diǎn)擊任務(wù)的“執(zhí)行備注”的“查看”按鈕,可以看到匹配子任務(wù)以及觸發(fā)子任務(wù)執(zhí)行的日志信息,如無信息則表示未觸發(fā)子任務(wù)執(zhí)行,可參考下圖。

5.4.11 全異步化 & 輕量級

  • 全異步化設(shè)計(jì):XXL-JOB系統(tǒng)中業(yè)務(wù)邏輯在遠(yuǎn)程執(zhí)行器執(zhí)行,觸發(fā)流程全異步化設(shè)計(jì)。相比直接在quartz的QuartzJobBean中執(zhí)行業(yè)務(wù)邏輯,極大的降低了調(diào)度線程占用時(shí)間;
    • 異步調(diào)度:調(diào)度中心每次任務(wù)觸發(fā)時(shí)僅發(fā)送一次調(diào)度請求,該調(diào)度請求首先推送“異步調(diào)度隊(duì)列”,然后異步推送給遠(yuǎn)程執(zhí)行器
    • 異步執(zhí)行:執(zhí)行器會將請求存入“異步執(zhí)行隊(duì)列”并且立即響應(yīng)調(diào)度中心,異步運(yùn)行。
  • 輕量級設(shè)計(jì):XXL-JOB調(diào)度中心中每個(gè)JOB邏輯非常 “輕”,在全異步化的基礎(chǔ)上,單個(gè)JOB一次運(yùn)行平均耗時(shí)基本在 "10ms" 之內(nèi)(基本為一次請求的網(wǎng)絡(luò)開銷);因此,可以保證使用有限的線程支撐大量的JOB并發(fā)運(yùn)行;

得益于上述兩點(diǎn)優(yōu)化,理論上默認(rèn)配置下的調(diào)度中心,單機(jī)能夠支撐 5000 任務(wù)并發(fā)運(yùn)行穩(wěn)定運(yùn)行;

實(shí)際場景中,由于調(diào)度中心與執(zhí)行器網(wǎng)絡(luò)ping延遲不同、DB讀寫耗時(shí)不同、任務(wù)調(diào)度密集程度不同,會導(dǎo)致任務(wù)量上限會上下波動。

如若需要支撐更多的任務(wù)量,可以通過 "調(diào)大調(diào)度線程數(shù)" 、"降低調(diào)度中心與執(zhí)行器ping延遲" 和 "提升機(jī)器配置" 幾種方式優(yōu)化。

5.5 任務(wù) "運(yùn)行模式" 剖析

5.5.1 "Bean模式" 任務(wù)

開發(fā)步驟:可參考 "章節(jié)三" ; 原理:每個(gè)Bean模式任務(wù)都是一個(gè)Spring的Bean類實(shí)例,它被維護(hù)在“執(zhí)行器”項(xiàng)目的Spring容器中。任務(wù)類需要加“@JobHandler(value="名稱")”注解,因?yàn)椤皥?zhí)行器”會根據(jù)該注解識別Spring容器中的任務(wù)。任務(wù)類需要繼承統(tǒng)一接口“IJobHandler”,任務(wù)邏輯在execute方法中開發(fā),因?yàn)椤皥?zhí)行器”在接收到調(diào)度中心的調(diào)度請求時(shí),將會調(diào)用“IJobHandler”的execute方法,執(zhí)行任務(wù)邏輯。

5.5.2 "GLUE模式(Java)" 任務(wù)

開發(fā)步驟:可參考 "章節(jié)三" ; 原理:每個(gè) "GLUE模式(Java)" 任務(wù)的代碼,實(shí)際上是“一個(gè)繼承自“IJobHandler”的實(shí)現(xiàn)類的類代碼”,“執(zhí)行器”接收到“調(diào)度中心”的調(diào)度請求時(shí),會通過Groovy類加載器加載此代碼,實(shí)例化成Java對象,同時(shí)注入此代碼中聲明的Spring服務(wù)(請確保Glue代碼中的服務(wù)和類引用在“執(zhí)行器”項(xiàng)目中存在),然后調(diào)用該對象的execute方法,執(zhí)行任務(wù)邏輯。

5.5.3 GLUE模式(Shell) + GLUE模式(Python) + GLUE模式(NodeJS)

開發(fā)步驟:可參考 "章節(jié)三" ; 原理:腳本任務(wù)的源碼托管在調(diào)度中心,腳本邏輯在執(zhí)行器運(yùn)行。當(dāng)觸發(fā)腳本任務(wù)時(shí),執(zhí)行器會加載腳本源碼在執(zhí)行器機(jī)器上生成一份腳本文件,然后通過Java代碼調(diào)用該腳本;并且實(shí)時(shí)將腳本輸出日志寫到任務(wù)日志文件中,從而在調(diào)度中心可以實(shí)時(shí)監(jiān)控腳本運(yùn)行情況;

目前支持的腳本類型如下:

- shell腳本:任務(wù)運(yùn)行模式選擇為 "GLUE模式(Shell)"時(shí)支持 "shell" 腳本任務(wù); - python腳本:任務(wù)運(yùn)行模式選擇為 "GLUE模式(Python)"時(shí)支持 "python" 腳本任務(wù); - nodejs腳本:務(wù)運(yùn)行模式選擇為 "GLUE模式(NodeJS)"時(shí)支持 "nodejs" 腳本任務(wù);

腳本任務(wù)通過 Exit Code 判斷任務(wù)執(zhí)行結(jié)果,狀態(tài)碼可參考章節(jié) "5.15 任務(wù)執(zhí)行結(jié)果說明";

5.5.4 執(zhí)行器

執(zhí)行器實(shí)際上是一個(gè)內(nèi)嵌的Jetty服務(wù)器,默認(rèn)端口9999(配置項(xiàng):xxl.job.executor.port)。

在項(xiàng)目啟動時(shí),執(zhí)行器會通過“@JobHandler”識別Spring容器中“Bean模式任務(wù)”,以注解的value屬性為key管理起來。

“執(zhí)行器”接收到“調(diào)度中心”的調(diào)度請求時(shí),如果任務(wù)類型為“Bean模式”,將會匹配Spring容器中的“Bean模式任務(wù)”,然后調(diào)用其execute方法,執(zhí)行任務(wù)邏輯。如果任務(wù)類型為“GLUE模式”,將會加載GLue代碼,實(shí)例化Java對象,注入依賴的Spring服務(wù)(注意:Glue代碼中注入的Spring服務(wù),必須存在與該“執(zhí)行器”項(xiàng)目的Spring容器中),然后調(diào)用execute方法,執(zhí)行任務(wù)邏輯。

5.5.5 任務(wù)日志

XXL-JOB會為每次調(diào)度請求生成一個(gè)單獨(dú)的日志文件,需要通過 "XxlJobLogger.log" 打印執(zhí)行日志,“調(diào)度中心”查看執(zhí)行日志時(shí)將會加載對應(yīng)的日志文件。

(歷史版本通過重寫LOG4J的Appender實(shí)現(xiàn),存在依賴限制,該方式在新版本已經(jīng)被拋棄)

日志文件存放的位置可在“執(zhí)行器”配置文件進(jìn)行自定義,默認(rèn)目錄格式為:/data/applogs/xxl-job/jobhandler/“格式化日期”/“數(shù)據(jù)庫調(diào)度日志記錄的主鍵ID.log”。

在JobHandler中開啟子線程時(shí),子線程將會將會把日志打印在父線程即JobHandler的執(zhí)行日志中,方便日志追蹤。

5.6 通訊模塊剖析

5.6.1 一次完整的任務(wù)調(diào)度通訊流程

- 1、“調(diào)度中心”向“執(zhí)行器”發(fā)送http調(diào)度請求: “執(zhí)行器”中接收請求的服務(wù),實(shí)際上是一臺內(nèi)嵌jetty服務(wù)器,默認(rèn)端口9999; - 2、“執(zhí)行器”執(zhí)行任務(wù)邏輯; - 3、“執(zhí)行器”http回調(diào)“調(diào)度中心”調(diào)度結(jié)果: “調(diào)度中心”中接收回調(diào)的服務(wù),是針對執(zhí)行器開放一套API服務(wù);

5.6.2 通訊數(shù)據(jù)加密

調(diào)度中心向執(zhí)行器發(fā)送的調(diào)度請求時(shí)使用RequestModel和ResponseModel兩個(gè)對象封裝調(diào)度請求參數(shù)和響應(yīng)數(shù)據(jù), 在進(jìn)行通訊之前底層會將上述兩個(gè)對象對象序列化,并進(jìn)行數(shù)據(jù)協(xié)議以及時(shí)間戳檢驗(yàn),從而達(dá)到數(shù)據(jù)加密的功能;

5.7 任務(wù)注冊, 任務(wù)自動發(fā)現(xiàn)

自v1.5版本之后, 任務(wù)取消了"任務(wù)執(zhí)行機(jī)器"屬性, 改為通過任務(wù)注冊和自動發(fā)現(xiàn)的方式, 動態(tài)獲取遠(yuǎn)程執(zhí)行器地址并執(zhí)行。

AppName: 每個(gè)執(zhí)行器機(jī)器集群的唯一標(biāo)示, 任務(wù)注冊以 "執(zhí)行器" 為最小粒度進(jìn)行注冊; 每個(gè)任務(wù)通過其綁定的執(zhí)行器可感知對應(yīng)的執(zhí)行器機(jī)器列表; 注冊表: 見"XXL_JOB_QRTZ_TRIGGER_REGISTRY"表, "執(zhí)行器" 在進(jìn)行任務(wù)注冊時(shí)將會周期性維護(hù)一條注冊記錄,即機(jī)器地址和AppName的綁定關(guān)系; "調(diào)度中心" 從而可以動態(tài)感知每個(gè)AppName在線的機(jī)器列表; 執(zhí)行器注冊: 任務(wù)注冊Beat周期默認(rèn)30s; 執(zhí)行器以一倍Beat進(jìn)行執(zhí)行器注冊, 調(diào)度中心以一倍Beat進(jìn)行動態(tài)任務(wù)發(fā)現(xiàn); 注冊信息的失效時(shí)間被三倍Beat; 執(zhí)行器注冊摘除:執(zhí)行器銷毀時(shí),將會主動上報(bào)調(diào)度中心并摘除對應(yīng)的執(zhí)行器機(jī)器信息,提高心跳注冊的實(shí)時(shí)性;

為保證系統(tǒng)"輕量級"并且降低學(xué)習(xí)部署成本,沒有采用Zookeeper作為注冊中心,采用DB方式進(jìn)行任務(wù)注冊發(fā)現(xiàn);

5.8 任務(wù)執(zhí)行結(jié)果

自v1.6.2之后,任務(wù)執(zhí)行結(jié)果通過 "IJobHandler" 的返回值 "ReturnT" 進(jìn)行判斷; 當(dāng)返回值符合 "ReturnT.code == ReturnT.SUCCESS_CODE" 時(shí)表示任務(wù)執(zhí)行成功,否則表示任務(wù)執(zhí)行失敗,而且可以通過 "ReturnT.msg" 回調(diào)錯(cuò)誤信息給調(diào)度中心; 從而,在任務(wù)邏輯中可以方便的控制任務(wù)執(zhí)行結(jié)果;

5.9 分片廣播 & 動態(tài)分片

執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會廣播觸發(fā)對應(yīng)集群中所有執(zhí)行器執(zhí)行一次任務(wù),同時(shí)傳遞分片參數(shù);可根據(jù)分片參數(shù)開發(fā)分片任務(wù);

"分片廣播" 以執(zhí)行器為維度進(jìn)行分片,支持動態(tài)擴(kuò)容執(zhí)行器集群從而動態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。

"分片廣播" 和普通任務(wù)開發(fā)流程一致,不同之處在于可以可以獲取分片參數(shù),獲取分片參數(shù)進(jìn)行分片業(yè)務(wù)處理。

  • Java語言任務(wù)獲取分片參數(shù)方式:BEAN、GLUE模式(Java)
// 可參考Sample示例執(zhí)行器中的示例任務(wù)"ShardingJobHandler"了解試用 ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
  • 腳本語言任務(wù)獲取分片參數(shù)方式:GLUE模式(Shell)、GLUE模式(Python)、GLUE模式(Nodejs)
// 腳本任務(wù)入?yún)⒐潭槿齻€(gè),依次為:任務(wù)傳參、分片序號、分片總數(shù)。以Shell模式任務(wù)為例,獲取分片參數(shù)代碼如下 echo "分片序號 index = $2" echo "分片總數(shù) total = $3"

分片參數(shù)屬性說明:

index:當(dāng)前分片序號(從0開始),執(zhí)行器集群列表中當(dāng)前執(zhí)行器的序號; total:總分片數(shù),執(zhí)行器集群的總機(jī)器數(shù)量;

該特性適用場景如:

  • 1、分片任務(wù)場景:10個(gè)執(zhí)行器的集群來處理10w條數(shù)據(jù),每臺機(jī)器只需要處理1w條數(shù)據(jù),耗時(shí)降低10倍;
  • 2、廣播任務(wù)場景:廣播執(zhí)行器機(jī)器運(yùn)行shell腳本、廣播集群節(jié)點(diǎn)進(jìn)行緩存更新等

5.10 訪問令牌(AccessToken)

為提升系統(tǒng)安全性,調(diào)度中心和執(zhí)行器進(jìn)行安全性校驗(yàn),雙方AccessToken匹配才允許通訊;

調(diào)度中心和執(zhí)行器,可通過配置項(xiàng) "xxl.job.accessToken" 進(jìn)行AccessToken的設(shè)置。

調(diào)度中心和執(zhí)行器,如果需要正常通訊,只有兩種設(shè)置;

  • 設(shè)置一:調(diào)度中心和執(zhí)行器,均不設(shè)置AccessToken;關(guān)閉安全性校驗(yàn);
  • 設(shè)置二:調(diào)度中心和執(zhí)行器,設(shè)置了相同的AccessToken;

5.11 調(diào)度中心API服務(wù)

調(diào)度中心提供了API服務(wù),主要分為兩種類型:

5.11.1 提供給執(zhí)行器的API服務(wù):

1、任務(wù)結(jié)果回調(diào)服務(wù); 2、執(zhí)行器注冊服務(wù); 3、執(zhí)行器注冊摘除服務(wù); 4、觸發(fā)任務(wù)單次執(zhí)行服務(wù),支持任務(wù)根據(jù)業(yè)務(wù)事件觸發(fā);

API服務(wù)位置:com.xxl.job.core.biz.AdminBiz.java
API服務(wù)請求參考代碼:com.xxl.job.adminbiz.AdminBizTest.java

5.11.2 提供給業(yè)務(wù)的API服務(wù):

1、任務(wù)列表查詢; 2、任務(wù)新增; 3、任務(wù)更新; 4、任務(wù)刪除; 5、任務(wù)暫停; 6、任務(wù)恢復(fù); 7、任務(wù)觸發(fā);

API服務(wù)位置:com.xxl.job.admin.controller.JobInfoController.java
API服務(wù)請求參考代碼:可參考任務(wù)界面操作的ajax請求。任何ajax接口均可配置成為API服務(wù),只需在待啟用的API服務(wù)上添加 “@PermessionLimit(limit = false)” 注解取消登陸態(tài)攔截即可;

5.12 執(zhí)行器API服務(wù)

執(zhí)行器提供了API服務(wù),供調(diào)度中心選擇使用,目前提供的API服務(wù)有:

1、心跳檢測 2、忙碌檢測 3、觸發(fā)任務(wù)執(zhí)行 4、獲取Rolling Log 5、終止任務(wù)

API服務(wù)位置:com.xxl.job.core.biz.ExecutorBiz
API服務(wù)請求參考代碼:com.xxl.executor.test.DemoJobHandlerTest

5.13 故障轉(zhuǎn)移 & 失敗重試

一次完整任務(wù)流程包括"調(diào)度(調(diào)度中心) + 執(zhí)行(執(zhí)行器)"兩個(gè)階段。

  • "故障轉(zhuǎn)移"發(fā)生在調(diào)度階段,在執(zhí)行器集群部署時(shí),如果某一臺執(zhí)行器發(fā)生故障,該策略支持自動進(jìn)行Failover切換到一臺正常的執(zhí)行器機(jī)器并且完成調(diào)度請求流程。
  • "失敗重試"發(fā)生在"調(diào)度 + 執(zhí)行"兩個(gè)階段,支持通過自定義任務(wù)失敗重試次數(shù),當(dāng)任務(wù)失敗時(shí)將會按照預(yù)設(shè)的失敗重試次數(shù)主動進(jìn)行重試;

5.14 執(zhí)行器灰度上線

調(diào)度中心與業(yè)務(wù)解耦,只需部署一次后常年不需要維護(hù)。但是,執(zhí)行器中托管運(yùn)行著業(yè)務(wù)作業(yè),作業(yè)上線和變更需要重啟執(zhí)行器,尤其是Bean模式任務(wù)。 執(zhí)行器重啟可能會中斷運(yùn)行中的任務(wù)。但是,XXL-JOB得益于自建執(zhí)行器與自建注冊中心,可以通過灰度上線的方式,避免因重啟導(dǎo)致的任務(wù)中斷的問題。

步驟如下:

  • 1、執(zhí)行器改為手動注冊,下線一半機(jī)器列表(A組),線上運(yùn)行另一半機(jī)器列表(B組);
  • 2、等待A組機(jī)器任務(wù)運(yùn)行結(jié)束并編譯上線;執(zhí)行器注冊地址替換為A組;
  • 3、等待B組機(jī)器任務(wù)運(yùn)行結(jié)束并編譯上線;執(zhí)行器注冊地址替換為A組+B組; 操作結(jié)束;

5.15 任務(wù)執(zhí)行結(jié)果說明

系統(tǒng)根據(jù)以下標(biāo)準(zhǔn)判斷任務(wù)執(zhí)行結(jié)果,可參考之。

--Bean/Glue(Java)Glue(Shell) 等腳本任務(wù)
成功IJobHandler.SUCCESS0
失敗IJobHandler.FAIL-1(非0狀態(tài)碼)

5.16 任務(wù)超時(shí)控制

支持設(shè)置任務(wù)超時(shí)時(shí)間,任務(wù)運(yùn)行超時(shí)的情況下,將會主動中斷任務(wù);

需要注意的是,任務(wù)超時(shí)中斷時(shí)與任務(wù)終止機(jī)制(可查看“4.8 終止運(yùn)行中的任務(wù)”)類似,也是通過 "interrupt" 中斷任務(wù),因此業(yè)務(wù)代碼需要將 "InterruptedException" 外拋,否則功能不可用。

5.17 跨平臺 & 跨語言

跨平臺、跨語言主要體現(xiàn)在以下兩個(gè)方面:

  • 1、提供Java、Python、PHP……等十來種任務(wù)模式,可參考章節(jié) “5.5 任務(wù) "運(yùn)行模式" ”;理論上可擴(kuò)展任意語言任務(wù)模式;
  • 2、提供基于HTTP的任務(wù)Handler(Bean任務(wù),JobHandler="httpJobHandler");業(yè)務(wù)方只需要提供HTTP鏈接即可,不限制語言、平臺;

5.18 任務(wù)失敗告警

默認(rèn)提供郵件失敗告警,可擴(kuò)展短信、釘釘?shù)确绞?#xff0c;擴(kuò)展代碼位置為 "JobFailMonitorHelper.failAlarm";

5.19 調(diào)度中心Docker鏡像構(gòu)建

可以通過以下命令快速構(gòu)建調(diào)度中心,并啟動運(yùn)行;

mvn clean package docker build -t xuxueli/xxl-job-admin ./xxl-job-admin docker run --name xxl-job-admin -p 8080:8080 -d xuxueli/xxl-job-admin

?

六、版本更新日志

6.1 版本 V1.1.x,新特性[2015-12-05]

【于V1.1.x版本,XXL-JOB正式應(yīng)用于我司,內(nèi)部定制別名為 “Ferrari”,新接入應(yīng)用推薦使用最新版本】

  • 1、簡單:支持通過Web頁面對任務(wù)進(jìn)行CRUD操作,操作簡單,一分鐘上手;
  • 2、動態(tài):支持動態(tài)修改任務(wù)狀態(tài),動態(tài)暫停/恢復(fù)任務(wù),即時(shí)生效;
  • 3、服務(wù)HA:任務(wù)信息持久化到mysql中,Job服務(wù)天然支持集群,保證服務(wù)HA;
  • 4、任務(wù)HA:某臺Job服務(wù)掛掉,任務(wù)會平滑分配給其他的某一臺存活服務(wù),即使所有服務(wù)掛掉,重啟時(shí)或補(bǔ)償執(zhí)行丟失任務(wù);
  • 5、一個(gè)任務(wù)只會在其中一臺服務(wù)器上執(zhí)行;
  • 6、任務(wù)串行執(zhí)行;
  • 7、支持自定義參數(shù);
  • 8、支持遠(yuǎn)程任務(wù)執(zhí)行終止;

6.2 版本 V1.2.x,新特性[2016-01-17]

  • 1、支持任務(wù)分組;

  • 2、支持“本地任務(wù)”、“遠(yuǎn)程任務(wù)”;

  • 3、底層通訊支持兩種方式,Servlet方式 + JETTY方式;

  • 4、支持“任務(wù)日志”;

  • 5、支持“串行執(zhí)行”,并行執(zhí)行;

    說明:V1.2版本將系統(tǒng)架構(gòu)按功能拆分為:

    - 調(diào)度模塊(調(diào)度中心):負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請求;- 執(zhí)行模塊(執(zhí)行器):負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)邏輯;- 通訊模塊:負(fù)責(zé)調(diào)度模塊和任務(wù)模塊之間的信息通訊;

    優(yōu)點(diǎn):

    - 解耦:任務(wù)模塊提供任務(wù)接口,調(diào)度模塊維護(hù)調(diào)度信息,業(yè)務(wù)相互獨(dú)立;- 高擴(kuò)展性;- 穩(wěn)定性;

6.3 版本 V1.3.0,新特性[2016-05-19]

  • 1、遺棄“本地任務(wù)”模式,推薦使用“遠(yuǎn)程任務(wù)”,易于系統(tǒng)解耦,任務(wù)對應(yīng)的JobHandler統(tǒng)稱為“執(zhí)行器”;

  • 2、遺棄“servlet”方式底層系統(tǒng)通訊,推薦使用JETTY方式,調(diào)度+回調(diào)雙向通訊,重構(gòu)通訊邏輯;

  • 3、UI交互優(yōu)化:左側(cè)菜單展開狀態(tài)優(yōu)化,菜單項(xiàng)選中狀態(tài)優(yōu)化,任務(wù)列表打開表格有壓縮優(yōu)化;

  • 4、【重要】“執(zhí)行器”細(xì)分為:BEAN、GLUE兩種開發(fā)模式,簡介見下文:

    “執(zhí)行器” 模式簡介: - BEAN模式執(zhí)行器:每個(gè)執(zhí)行器都是Spring的一個(gè)Bean實(shí)例,XXL-JOB通過注解@JobHandler識別和調(diào)度執(zhí)行器; -GLUE模式執(zhí)行器:每個(gè)執(zhí)行器對應(yīng)一段代碼,在線Web編輯和維護(hù),動態(tài)編譯生效,執(zhí)行器負(fù)責(zé)加載GLUE代碼和執(zhí)行;

6.4 版本 V1.3.1,新特性[2016-05-23]

  • 1、更新項(xiàng)目目錄結(jié)構(gòu):
    • /xxl-job-admin -------------------- 【調(diào)度中心】:負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請求;
    • /xxl-job-core ----------------------- 公共依賴
    • /xxl-job-executor-example ------ 【執(zhí)行器】:負(fù)責(zé)接收調(diào)度請求并執(zhí)行任務(wù)邏輯;
    • /db ---------------------------------- 建表腳本
    • /doc --------------------------------- 用戶手冊
  • 2、在新的目錄結(jié)構(gòu)上,升級了用戶手冊;
  • 3、優(yōu)化了一些交互和UI;

6.5 版本 V1.3.2,新特性[2016-05-28]

  • 1、調(diào)度邏輯進(jìn)行事務(wù)包裹;
  • 2、執(zhí)行器異步回調(diào)執(zhí)行日志;
  • 3、【重要】在 “調(diào)度中心” 支持HA的基礎(chǔ)上,擴(kuò)展執(zhí)行器的Failover支持,支持配置多執(zhí)行期地址;

6.6 版本 V1.4.0 新特性[2016-07-24]

  • 1、任務(wù)依賴: 通過事件觸發(fā)方式實(shí)現(xiàn), 任務(wù)執(zhí)行成功并回調(diào)時(shí)會主動觸發(fā)一次子任務(wù)的調(diào)度, 多個(gè)子任務(wù)用逗號分隔;
  • 2、執(zhí)行器底層實(shí)現(xiàn)代碼進(jìn)行重度重構(gòu), 優(yōu)化底層建表腳本;
  • 3、執(zhí)行器中任務(wù)線程分組邏輯優(yōu)化: 之前根據(jù)執(zhí)行器JobHandler進(jìn)行線程分組,當(dāng)多個(gè)任務(wù)復(fù)用Jobhanlder會導(dǎo)致相互阻塞。現(xiàn)改為根據(jù)調(diào)度中心任務(wù)進(jìn)行任務(wù)線程分組,任務(wù)與任務(wù)執(zhí)行相互隔離;
  • 4、執(zhí)行器調(diào)度通訊方案優(yōu)化, 通過Hex + HC實(shí)現(xiàn)建議RPC通訊協(xié)議, 優(yōu)化了通訊參數(shù)的維護(hù)和解析流程;
  • 5、調(diào)度中心, 新建/編輯任務(wù), 界面屬性調(diào)整:
    • 5.1、任務(wù)新增/編輯界面中去除 "任務(wù)名JobName"屬性 ,該屬性改為系統(tǒng)自動生成: 該字段之前主要用于在 "調(diào)度中心" 唯一標(biāo)示一個(gè)任務(wù), 現(xiàn)實(shí)意義不大, 因此計(jì)劃淡化掉該字段,改為系統(tǒng)生成UUID,從而簡化任務(wù)新建的操作;
    • 5.2、任務(wù)新增/編輯界面中去除 "GLUE模式" 復(fù)選框位置調(diào)整, 改為貼近"JobHandler"輸入框右側(cè);
    • 5.3、任務(wù)新增/編輯界面中去除 "報(bào)警閾值" 屬性;
    • 5.4、任務(wù)新增/編輯界面中去除 "子任務(wù)Key" 屬性, 每個(gè)任務(wù)全局任務(wù)Key可以從任務(wù)列表獲取, 當(dāng)本任務(wù)執(zhí)行結(jié)束且成功后, 將會根據(jù)子任務(wù)Key匹配子任務(wù)并主動觸發(fā)一次子任務(wù)執(zhí)行;
  • 6、問題修復(fù):
    • 6.1、執(zhí)行器jetty關(guān)閉優(yōu)化,解決一處可能導(dǎo)致jetty無法關(guān)閉的問題;
    • 6.2、執(zhí)行器任務(wù)終止時(shí),執(zhí)行隊(duì)列回調(diào)優(yōu)化,解決一處導(dǎo)致任務(wù)無法回調(diào)的問題;
    • 6.3、調(diào)度中心中列表分頁參數(shù)優(yōu)化,解決一處因服務(wù)器限制post長度而引起的問題;
    • 6.4、執(zhí)行器Jobhandler注解優(yōu)化,解決一處因事務(wù)代理導(dǎo)致的容器無法加載JobHandler的問題;
    • 6.5、遠(yuǎn)程調(diào)度優(yōu)化,禁用retry策略,解決一處可能導(dǎo)致重復(fù)調(diào)用的問題;

Tips: 歷史版本(V1.3.x)目前已經(jīng)Release至穩(wěn)定版本, 進(jìn)入維護(hù)階段, 地址見分支?V1.3?。新特性將會在master分支持續(xù)更新。

6.7 版本 V1.4.1 新特性[2016-09-06]

  • 1、項(xiàng)目成功推送maven中央倉庫, 中央倉庫地址以及依賴如下: <!-- http://repo1.maven.org/maven2/com/xuxueli/xxl-job-core/ --> <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId><version>${最新穩(wěn)定版}</version> </dependency>
  • 2、為適配中央倉庫規(guī)則, 項(xiàng)目groupId從com.xxl改為com.xuxueli。
  • 3、系統(tǒng)版本不在維護(hù)在項(xiàng)目跟pom中,各個(gè)子模塊單獨(dú)配置版本配置,解決子模塊無法單獨(dú)編譯的問題;
  • 4、底層RPC通訊,傳輸數(shù)據(jù)的字節(jié)長度統(tǒng)計(jì)規(guī)則優(yōu)化,可節(jié)省50%數(shù)據(jù)傳輸量;
  • 5、IJobHandler取消任務(wù)返回值,原通過返回值判斷執(zhí)行狀態(tài),邏輯改為:默認(rèn)任務(wù)執(zhí)行成功,僅在捕獲異常時(shí)認(rèn)定任務(wù)執(zhí)行失敗。
  • 6、系統(tǒng)公共彈框功能,插件化;
  • 7、底層表結(jié)構(gòu),表明統(tǒng)一大寫;
  • 8、調(diào)度中心,異常處理器JSON響應(yīng)的ContentType修改,修復(fù)瀏覽器不識別的問題;

6.8 版本 V1.4.2 新特性[2016-09-29]

  • 1、推送新版本 V1.4.2 至中央倉庫, 大版本 V1.4 進(jìn)入維護(hù)階段;
  • 2、任務(wù)新增時(shí),任務(wù)列表偏移問題修復(fù);
  • 3、修復(fù)一處因bootstrap不支持模態(tài)框重疊而導(dǎo)致的樣式錯(cuò)亂的問題, 在任務(wù)編輯時(shí)會出現(xiàn)該問題;
  • 4、調(diào)度超時(shí)和Handler匹配不到時(shí),調(diào)度狀態(tài)優(yōu)化;
  • 5、因catch異常,導(dǎo)致任務(wù)不可終止的問題,給出解決方案, 見文檔;

6.9 版本 V1.5.0 特性[2016-11-13]

  • 1、任務(wù)注冊: 執(zhí)行器會周期性自動注冊任務(wù), 調(diào)度中心將會自動發(fā)現(xiàn)注冊的任務(wù)并觸發(fā)執(zhí)行。
  • 2、"執(zhí)行器" 新增參數(shù) "AppName" : 是每個(gè)執(zhí)行器集群的唯一標(biāo)示AppName, 并周期性以AppName為對象進(jìn)行自動注冊。
  • 3、調(diào)度中心新增欄目 "執(zhí)行器管理" : 管理在線的執(zhí)行器, 通過屬性AppName自動發(fā)現(xiàn)注冊的執(zhí)行器。只有被管理的執(zhí)行器才允許被使用;
  • 4、"任務(wù)組"屬性改為"執(zhí)行器": 每個(gè)任務(wù)需要綁定指定的執(zhí)行器, 調(diào)度地址通過綁定的執(zhí)行器獲取;
  • 5、拋棄"任務(wù)機(jī)器"屬性: 通過任務(wù)綁定的執(zhí)行器, 自動發(fā)現(xiàn)注冊的遠(yuǎn)程執(zhí)行器地址并觸發(fā)調(diào)度請求。
  • 6、"公共依賴"中新增DBGlueLoader,基于原生jdbc實(shí)現(xiàn)GLUE源碼的加載器,減少第三方依賴(mybatis,spring-orm等);精簡和優(yōu)化執(zhí)行器測配置(針對GLUE任務(wù)),降低上手難度;
  • 7、表結(jié)構(gòu)調(diào)整,底層重構(gòu)優(yōu)化;
  • 8、"調(diào)度中心"自動注冊和發(fā)現(xiàn),failover: 調(diào)度中心周期性自動注冊, 任務(wù)回調(diào)時(shí)可以感知在線的所有調(diào)度中心地址, 通過failover的方式進(jìn)行任務(wù)回調(diào),避免回調(diào)單點(diǎn)風(fēng)險(xiǎn)。

6.10 版本 V1.5.1 特性[2016-11-13]

  • 1、底層代碼重構(gòu)和邏輯優(yōu)化,POM清理以及CleanCode;
  • 2、Servlet/JSP Spec設(shè)定為3.0/2.2
  • 3、Spring升級至3.2.17.RELEASE版本;
  • 4、Jetty升級版本至8.2.0.v20160908;
  • 5、已推送V1.5.0和V1.5.1至Maven中央倉庫;

6.10 版本 V1.5.2 特性[2017-02-28]

  • 1、IP工具類獲取IP邏輯優(yōu)化,IP靜態(tài)緩存;
  • 2、執(zhí)行器、調(diào)度中心,均支持自定義注冊IP地址;解決機(jī)器多網(wǎng)卡時(shí)錯(cuò)誤網(wǎng)卡注冊的情況;
  • 3、任務(wù)跨天執(zhí)行時(shí)生成多份日志文件的問題修復(fù);
  • 4、底層日志底層日志調(diào)整,非敏感日志level調(diào)整為debug;
  • 5、升級數(shù)據(jù)庫連接池c3p0版本;
  • 6、執(zhí)行器log4j配置優(yōu)化,去除無效屬性;
  • 7、底層代碼重構(gòu)和邏輯優(yōu)化以及CleanCode;
  • 8、GLUE依賴注入邏輯優(yōu)化,支持別名注入;

6.11 版本 V1.6.0 特性[2017-03-13]

  • 1、通訊方案升級,原基于HEX的通訊模型調(diào)整為基于HTTP的B-RPC的通訊模型;
  • 2、執(zhí)行器支持手動設(shè)置執(zhí)行地址列表,提供開關(guān)切換使用注冊地址還是手動設(shè)置的地址;
  • 3、執(zhí)行器路由規(guī)則:第一個(gè)、最后一個(gè)、輪詢、隨機(jī)、一致性HASH、最不經(jīng)常使用、最近最久未使用、故障轉(zhuǎn)移;
  • 4、規(guī)范線程模型統(tǒng)一,統(tǒng)一線程銷毀方案(通過listener或stop方法,容器銷毀時(shí)銷毀線程;Daemon方式有時(shí)不太理想);
  • 5、規(guī)范系統(tǒng)配置數(shù)據(jù),通過配置文件統(tǒng)一管理;
  • 6、CleanCode,清理無效的歷史參數(shù);
  • 7、底層擴(kuò)展數(shù)據(jù)結(jié)構(gòu)以及相關(guān)表結(jié)構(gòu)調(diào)整;
  • 8、新建任務(wù)默認(rèn)為非運(yùn)行狀態(tài);
  • 9、GLUE模式任務(wù)實(shí)例更新邏輯優(yōu)化,原根據(jù)超時(shí)時(shí)間更新改為根據(jù)版本號更新,源碼變動版本號加一;

6.12 版本 V1.6.1 特性[2017-03-25]

  • 1、Rolling日志;
  • 2、WebIDE交互重構(gòu);
  • 3、通訊增強(qiáng)校驗(yàn),有效過濾非正常請求;
  • 4、權(quán)限增強(qiáng)校驗(yàn),采用動態(tài)登錄TOKEN(推薦接入內(nèi)部SSO);
  • 5、數(shù)據(jù)庫配置優(yōu)化,解決亂碼問題;

6.13 版本 V1.6.2 特性[2017-04-25]

  • 1、運(yùn)行報(bào)表:支持實(shí)時(shí)查看運(yùn)行數(shù)據(jù),如任務(wù)數(shù)量、調(diào)度次數(shù)、執(zhí)行器數(shù)量等;以及調(diào)度報(bào)表,如調(diào)度日期分布圖,調(diào)度成功分布圖等;
  • 2、JobHandler支持設(shè)置任務(wù)返回值,在任務(wù)邏輯中可以方便的控制任務(wù)執(zhí)行結(jié)果;
  • 3、資源路徑包含空格或中文時(shí)資源文件無法加載時(shí),無法準(zhǔn)確查看異常信息的問題處理。
  • 4、路由策越優(yōu)化:循環(huán)和LFU路由策略計(jì)數(shù)器自增無上限問題和首次路由壓力集中在首臺機(jī)器的問題修復(fù);

6.14 版本 V1.7.0 特性[2017-05-02]

  • 1、腳本任務(wù):支持以GLUE模式開發(fā)和運(yùn)行腳本任務(wù),包括Shell、Python和Groovy等類型腳本;
  • 2、新增spring-boot類型執(zhí)行器example項(xiàng)目;
  • 3、升級jetty版本至9.2;
  • 4、任務(wù)運(yùn)行日志移除log4j組件依賴,改為底層自主實(shí)現(xiàn),從而取消了對日志組件的依賴限制;
  • 5、執(zhí)行器移除GlueLoader依賴,改為推送方式實(shí)現(xiàn),從而GLUE源碼加載不再依賴JDBC;
  • 6、登錄攔截Redirect時(shí)獲取項(xiàng)目名,解決非根據(jù)目錄發(fā)布時(shí)跳轉(zhuǎn)404問題;

6.15 版本 V1.7.1 特性[2017-05-08]

  • 1、運(yùn)行日志讀寫編碼統(tǒng)一為UTF-8,解決windows環(huán)境下日志亂碼問題;
  • 2、通訊超時(shí)時(shí)間限定為10s,避免異常情況下調(diào)度線程占用;
  • 3、執(zhí)行器,server啟動、銷毀和注冊邏輯調(diào)整;
  • 4、JettyServer關(guān)閉邏輯優(yōu)化,修復(fù)執(zhí)行器無法正常關(guān)閉導(dǎo)致端口占用和頻繁打印c3p0日志的問題;
  • 5、JobHandler中開啟子線程時(shí),支持子線程輸出執(zhí)行日志并通過Rolling查看。
  • 6、任務(wù)日志清理功能;
  • 7、彈框組件統(tǒng)一替換為layer;
  • 8、升級quartz版本至2.3.0;

6.16 版本 V1.7.2 特性[2017-05-17]

  • 1、阻塞處理策略:調(diào)度過于密集執(zhí)行器來不及處理時(shí)的處理策略,策略包括:單機(jī)串行(默認(rèn))、丟棄后續(xù)調(diào)度、覆蓋之前調(diào)度;
  • 2、失敗處理策略;調(diào)度失敗時(shí)的處理策略,策略包括:失敗告警(默認(rèn))、失敗重試;
  • 3、通訊時(shí)間戳超時(shí)時(shí)間調(diào)整為180s;
  • 4、執(zhí)行器與數(shù)據(jù)庫徹底解耦,但是執(zhí)行器需要配置調(diào)度中心集群地址。調(diào)度中心提供API供執(zhí)行器回調(diào)和心跳注冊服務(wù),取消調(diào)度中心內(nèi)部jetty,心跳周期調(diào)整為30s,心跳失效為三倍心跳;
  • 5、執(zhí)行參數(shù)編輯時(shí)丟失問題修復(fù);
  • 6、新增任務(wù)測試Demo,方便在開發(fā)時(shí)進(jìn)行任務(wù)邏輯測試;

6.17 版本 V1.8.0 特性[2017-07-17]

  • 1、任務(wù)Cron更新邏輯優(yōu)化,改為rescheduleJob,同時(shí)防止cron重復(fù)設(shè)置;
  • 2、API回調(diào)服務(wù)失敗狀態(tài)碼優(yōu)化,方便問題排查;
  • 3、XxlJobLogger的日志多參數(shù)支持;
  • 4、路由策略新增 "忙碌轉(zhuǎn)移" 模式:按照順序依次進(jìn)行空閑檢測,第一個(gè)空閑檢測成功的機(jī)器選定為目標(biāo)執(zhí)行器并發(fā)起調(diào)度;
  • 5、路由策略代碼重構(gòu);
  • 6、執(zhí)行器重復(fù)注冊問題修復(fù);
  • 7、任務(wù)線程輪空30次后自動銷毀,降低低頻任務(wù)的無效線程消耗。
  • 8、執(zhí)行器任務(wù)執(zhí)行結(jié)果批量回調(diào),降低回調(diào)頻率提升執(zhí)行器性能;
  • 9、springboot版本執(zhí)行器,取消XML配置,改為類配置方式;
  • 10、執(zhí)行日志,支持根據(jù)運(yùn)行 "狀態(tài)" 篩選日志;
  • 11、調(diào)度中心任務(wù)注冊檢測邏輯優(yōu)化;

6.18 版本 V1.8.1 特性[2017-07-30]

  • 1、分片廣播任務(wù):執(zhí)行器集群部署時(shí),任務(wù)路由策略選擇"分片廣播"情況下,一次任務(wù)調(diào)度將會廣播觸發(fā)集群中所有執(zhí)行器執(zhí)行一次任務(wù),可根據(jù)分片參數(shù)處理分片任務(wù);
  • 2、動態(tài)分片:分片廣播任務(wù)以執(zhí)行器為維度進(jìn)行分片,支持動態(tài)擴(kuò)容執(zhí)行器集群從而動態(tài)增加分片數(shù)量,協(xié)同進(jìn)行業(yè)務(wù)處理;在進(jìn)行大數(shù)據(jù)量業(yè)務(wù)操作時(shí)可顯著提升任務(wù)處理能力和速度。
  • 3、執(zhí)行器JobHandler禁止命名沖突;
  • 4、執(zhí)行器集群地址列表進(jìn)行自然排序;
  • 5、調(diào)度中心,DAO層代碼精簡優(yōu)化并且新增測試用例覆蓋;
  • 6、調(diào)度中心API服務(wù)改為自研RPC形式,統(tǒng)一底層通訊模型;
  • 7、新增調(diào)度中心API服務(wù)測試Demo,方便在調(diào)度中心API擴(kuò)展和測試;
  • 8、任務(wù)列表頁交互優(yōu)化,更換執(zhí)行器分組時(shí)自動刷新任務(wù)列表,新建任務(wù)時(shí)默認(rèn)定位在當(dāng)前執(zhí)行器位置;
  • 9、訪問令牌(accessToken):為提升系統(tǒng)安全性,調(diào)度中心和執(zhí)行器進(jìn)行安全性校驗(yàn),雙方AccessToken匹配才允許通訊;
  • 10、springboot版本執(zhí)行器,升級至1.5.6.RELEASE版本;
  • 11、統(tǒng)一maven依賴版本管理;

6.19 版本 V1.8.2 特性[2017-09-04]

  • 1、項(xiàng)目主頁搭建:提供中英文文檔:http://www.xuxueli.com/xxl-job
  • 2、JFinal執(zhí)行器Sample示例項(xiàng)目;
  • 3、事件觸發(fā):除了"Cron方式"和"任務(wù)依賴方式"觸發(fā)任務(wù)執(zhí)行之外,支持基于事件的觸發(fā)任務(wù)方式。調(diào)度中心提供觸發(fā)任務(wù)單次執(zhí)行的API服務(wù),可根據(jù)業(yè)務(wù)事件靈活觸發(fā)。
  • 4、執(zhí)行器摘除:執(zhí)行器銷毀時(shí),主動通知調(diào)度中心并摘除對應(yīng)執(zhí)行器節(jié)點(diǎn),提高執(zhí)行器狀態(tài)感知的時(shí)效性。
  • 5、執(zhí)行器手動設(shè)置IP時(shí)將會綁定Host;
  • 6、規(guī)范項(xiàng)目目錄,方便擴(kuò)展多執(zhí)行器;
  • 7、解決執(zhí)行器回調(diào)URL不支持配置HTTPS時(shí)問題;
  • 8、執(zhí)行器回調(diào)線程銷毀前, 批量回調(diào)隊(duì)列中數(shù)據(jù),防止任務(wù)結(jié)果丟失;
  • 9、調(diào)度中心任務(wù)監(jiān)控線程銷毀時(shí),批量對失敗任務(wù)告警,防止告警信息丟失;
  • 10、任務(wù)日志文件路徑時(shí)間戳格式化時(shí)SimpleDateFormat并發(fā)問題解決;

6.20 版本 V1.9.0 特性[2017-12-29]

  • 1、新增Nutz執(zhí)行器Sample示例項(xiàng)目;
  • 2、新增任務(wù)運(yùn)行模式 "GLUE模式(NodeJS) ",支持NodeJS腳本任務(wù);
  • 3、腳本任務(wù)Shell、Python和Nodejs等支持獲取分片參數(shù);
  • 4、失敗重試,完整支持:調(diào)度中心調(diào)度失敗且啟用"失敗重試"策略時(shí),將會自動重試一次;執(zhí)行器執(zhí)行失敗且回調(diào)失敗重試狀態(tài)(新增失敗重試狀態(tài)返回值)時(shí),也將會自動重試一次;
  • 5、失敗告警策略擴(kuò)展:默認(rèn)提供郵件失敗告警,可擴(kuò)展短信等,擴(kuò)展代碼位置為 "JobFailMonitorHelper.failAlarm";
  • 6、執(zhí)行器端口支持自動生成(小于等于0時(shí)),避免端口定義沖突;
  • 7、調(diào)度報(bào)表優(yōu)化,支持時(shí)間區(qū)間篩選;
  • 8、Log組件支持輸出異常棧信息,底層實(shí)現(xiàn)優(yōu)化;
  • 9、告警郵件樣式優(yōu)化,調(diào)整為表格形式,郵件組件調(diào)整為commons-email簡化郵件操作;
  • 10、項(xiàng)目依賴全量升級至較新穩(wěn)定版本,如spring、jackson等等;
  • 11、任務(wù)日志,記錄發(fā)起調(diào)度的機(jī)器信息;
  • 12、交互優(yōu)化,如登陸注銷;
  • 13、任務(wù)Cron長度擴(kuò)展支持至128位,支持負(fù)責(zé)類型Cron設(shè)置;
  • 14、執(zhí)行器地址錄入交互優(yōu)化,地址長度擴(kuò)展支持至512位,支持大規(guī)模執(zhí)行器集群配置;
  • 15、任務(wù)參數(shù)“IJobHandler.execute”入?yún)⒏臑椤癝tring params”,增強(qiáng)入?yún)⑼ㄓ眯浴?/li>
  • 16、IJobHandler提供init/destroy方法,支持在相應(yīng)任務(wù)線程初始化和銷毀時(shí)進(jìn)行附加操作;
  • 17、任務(wù)注解調(diào)整為 “@JobHandler”,與任務(wù)抽象接口統(tǒng)一;
  • 18、修復(fù)任務(wù)監(jiān)控線程被耗時(shí)任務(wù)阻塞的問題;
  • 19、修復(fù)任務(wù)監(jiān)控線程無法監(jiān)控任務(wù)觸發(fā)和執(zhí)行狀態(tài)均未0的問題;
  • 20、執(zhí)行器動態(tài)代理對象,攔截非業(yè)務(wù)方法的執(zhí)行;
  • 21、修復(fù)JobThread捕獲Error錯(cuò)誤不更新JobLog的問題;
  • 22、修復(fù)任務(wù)列表界面左側(cè)菜單合并時(shí)樣式錯(cuò)亂問題;
  • 23、調(diào)度中心項(xiàng)目日志配置改為xml文件格式;
  • 24、Log地址格式兼容,支持非"/"結(jié)尾路徑配置;
  • 25、底層系統(tǒng)日志級別規(guī)范調(diào)整,清理遺留代碼;
  • 26、建表SQL優(yōu)化,支持同步創(chuàng)建制定編碼的庫和表;
  • 27、系統(tǒng)安全性優(yōu)化,登陸Token寫Cookie時(shí)進(jìn)行MD5加密,同時(shí)Cookie啟用HttpOnly;
  • 28、新增"任務(wù)ID"屬性,移除"JobKey"屬性,前者承擔(dān)所有功能,方便后續(xù)增強(qiáng)任務(wù)依賴功能。
  • 29、任務(wù)循環(huán)依賴問題修復(fù),避免子任務(wù)與父任務(wù)重復(fù)導(dǎo)致的調(diào)度死循環(huán);
  • 30、任務(wù)列表新增篩選條件 "任務(wù)描述",快速檢索任務(wù);
  • 31、執(zhí)行器Log文件定期清理功能:執(zhí)行器新增配置項(xiàng)("xxl.job.executor.logretentiondays")日志保存天數(shù),日志文件過期自動刪除。

6.21 版本 V1.9.1 特性[2018-02-22]

  • 1、國際化:調(diào)度中心實(shí)現(xiàn)國際化,支持中文、英文兩種語言,默認(rèn)為中文。
  • 2、調(diào)度報(bào)表新增"運(yùn)行中"中狀態(tài)項(xiàng);
  • 3、調(diào)度報(bào)表優(yōu)化,報(bào)表SQL調(diào)優(yōu)并且新增LocalCache緩存(緩存時(shí)間60s),提高大數(shù)據(jù)量下報(bào)表加載速度;
  • 4、修復(fù)打包部署時(shí)資源文件亂碼問題;
  • 5、修復(fù)新版本chrome滾動到頂部失效問題;
  • 6、調(diào)度中心配置加載優(yōu)化,取消對配置文件名的強(qiáng)依賴,支持加載磁盤配置;
  • 7、修復(fù)腳本任務(wù)Log文件未正常close的問題;
  • 8、項(xiàng)目依賴全量升級至較新穩(wěn)定版本,如spring、jackson等等;

6.22 版本 V1.9.2 特性[2018-10-05]

  • 1、任務(wù)超時(shí)控制:新增任務(wù)屬性 "任務(wù)超時(shí)時(shí)間",并支持自定義,任務(wù)運(yùn)行超時(shí)將會主動中斷任務(wù);
  • 2、任務(wù)失敗重試次數(shù):新增任務(wù)屬性 "失敗重試次數(shù)",并支持自定義,當(dāng)任務(wù)失敗時(shí)將會按照預(yù)設(shè)的失敗重試次數(shù)主動進(jìn)行重試;同時(shí)收斂廢棄其他失敗重試策略,如調(diào)度失敗、執(zhí)行失敗、狀態(tài)碼失敗等;
  • 3、新增任務(wù)運(yùn)行模式 "GLUE模式(PHP) ",支持php腳本任務(wù);
  • 4、新增任務(wù)運(yùn)行模式 "GLUE模式(PowerShell) ",支持PowerShell腳本任務(wù);
  • 5、調(diào)度全異步處理:任務(wù)觸發(fā)之后,推送到調(diào)度隊(duì)列,多線程并發(fā)處理調(diào)度請求,提高任務(wù)調(diào)度速率的同時(shí),避免因網(wǎng)絡(luò)問題導(dǎo)致quartz調(diào)度線程阻塞的問題;
  • 6、執(zhí)行器任務(wù)結(jié)果落盤優(yōu)化:執(zhí)行器回調(diào)失敗時(shí)將任務(wù)結(jié)果寫磁盤,待重啟或網(wǎng)絡(luò)恢復(fù)時(shí)重試回調(diào)任務(wù)結(jié)果,防止任務(wù)執(zhí)行結(jié)果丟失;
  • 7、任務(wù)日志查詢速度大幅提升:百萬級別數(shù)據(jù)量搜索速度提升1000倍;
  • 8、調(diào)度中心提供API服務(wù),支持通過API服務(wù)對任務(wù)進(jìn)行查詢、新增、更新、啟停等操作;
  • 9、底層自研Log組件參數(shù)占位符改為"{}",并修復(fù)打印有參日志時(shí)參數(shù)不匹配導(dǎo)致報(bào)錯(cuò)的問題;
  • 10、任務(wù)回調(diào)結(jié)果優(yōu)化,支持展示在Rolling log中,方便問題排查;
  • 11、底層LocalCache組件兼容性優(yōu)化,支持jdk9、jdk10及以上版本編譯部署;
  • 12、告警郵件固定使用 UTF-8 編碼格式,修復(fù)由機(jī)器編碼導(dǎo)致的郵件亂碼問題;
  • 13、告警郵件中展示失敗告警信息;
  • 14、告警郵箱支持SSL配置;
  • 15、Window機(jī)器下File.separator不兼容問題修復(fù);
  • 16、腳本任務(wù)異常Log輸出優(yōu)化;
  • 17、任務(wù)線程停止變量修飾符優(yōu)化;
  • 18、腳本任務(wù)Log文件流關(guān)閉優(yōu)化;
  • 19、任務(wù)報(bào)表成功、失敗和進(jìn)行中統(tǒng)計(jì)問題修復(fù);
  • 20、核心依賴Core內(nèi)部國際化處理;
  • 21、默認(rèn)Quartz線程數(shù)調(diào)整為50;
  • 22、新增左側(cè)菜單"運(yùn)行報(bào)表";
  • 23、執(zhí)行器手動設(shè)置IP時(shí)取消綁定Host的操作,該IP僅供執(zhí)行器注冊使用;修復(fù)指定外網(wǎng)IP時(shí)無法綁定執(zhí)行器Host的問題;
  • 24、取消父子任務(wù)不可重復(fù)的限制,支持循環(huán)任務(wù)觸發(fā)等特殊場景;
  • 25、任務(wù)調(diào)度備注中標(biāo)注任務(wù)觸發(fā)類型,如Cron觸發(fā)、父任務(wù)觸發(fā)、API觸發(fā)等等,方便排查調(diào)度日志;
  • 26、底層日志組件SimpleDateFormat線程安全問題修復(fù);
  • 27、執(zhí)行器通訊線程優(yōu)化,corePoolSize從256降低至32;
  • 28、任務(wù)日志表狀態(tài)字段類型優(yōu)化;
  • 29、GLUE腳本文件自動清理功能,及時(shí)清理過期腳本文件;
  • 30、執(zhí)行器注冊方式切換優(yōu)化,切換自動注冊時(shí)主動同步在線機(jī)器,避免執(zhí)行器為空的問題;
  • 31、跨平臺:除了提供Java、Python、PHP等十來種任務(wù)模式之外,新增提供基于HTTP的任務(wù)模式;
  • 32、底層RPC序列化協(xié)議調(diào)整為hessian2;
  • 33、修復(fù)表字段 “t.order”與數(shù)據(jù)庫關(guān)鍵字沖突查詢失敗的問題,
  • 34、任務(wù)屬性枚舉 "任務(wù)模式、阻塞策略" 國際化優(yōu)化;
  • 35、分片任務(wù)失敗重試優(yōu)化,僅重試當(dāng)前失敗的分片;
  • 36、任務(wù)觸發(fā)時(shí)支持動態(tài)傳參,調(diào)度中心與API服務(wù)均提供提供動態(tài)參數(shù)功能;
  • 37、任務(wù)執(zhí)行日志、調(diào)度日志字段類型調(diào)整,改為text類型并取消字?jǐn)?shù)限制;
  • 38、GLUE任務(wù)腳本字段類型調(diào)整,改為mediumtext類型,提高GLUE長度上限;
  • 39、任務(wù)監(jiān)控線程Log輸出優(yōu)化,運(yùn)行中任務(wù)的監(jiān)控Log改為debug級別,減少非核心日志量;
  • 40、項(xiàng)目依賴全量升級至較新穩(wěn)定版本,如spring、Jackson、groovy等等;
  • 41、docker支持:調(diào)度中心提供 Dockerfile 方便快速構(gòu)建docker鏡像;

6.23 版本 V2.0.0 特性[迭代中]

  • 1、[迭代中]調(diào)度中心遷移到springboot;
  • 2、[迭代中]SimpleTrigger 支持;
  • 3、[迭代中]任務(wù)狀態(tài)與quartz解耦,降低quartz調(diào)度壓力,僅NORMAL狀態(tài)任務(wù)綁定quartz;
  • 4、[迭代中]新增任務(wù)默認(rèn)運(yùn)行狀態(tài),任務(wù)更新時(shí)運(yùn)行狀態(tài)保持不變;
  • 5、[迭代中]任務(wù)權(quán)限管理:執(zhí)行器為粒度分配權(quán)限,核心操作校驗(yàn)權(quán)限;
  • 6、[迭代中]Release發(fā)布時(shí),一同發(fā)布調(diào)度中心安裝包,真正實(shí)現(xiàn)開箱即用;
  • 7、[迭代中]docker鏡像,并且推送docker鏡像到中央倉庫,更進(jìn)一步實(shí)現(xiàn)產(chǎn)品開箱即用;

TODO LIST

  • 1、任務(wù)分片路由:分片采用一致性Hash算法計(jì)算出盡量穩(wěn)定的分片順序,即使注冊機(jī)器存在波動也不會引起分批分片順序大的波動;目前采用IP自然排序,可以滿足需求,待定;
  • 2、任務(wù)單機(jī)多線程:提升任務(wù)單機(jī)并行處理能力;
  • 3、任務(wù)依賴,流程圖,子任務(wù)+會簽任務(wù),各節(jié)點(diǎn)日志;
  • 4、調(diào)度任務(wù)優(yōu)先級;
  • 5、移除quartz依賴,重寫調(diào)度模塊:新增或恢復(fù)任務(wù)時(shí)將下次執(zhí)行記錄插入delayqueue,調(diào)度中心集群競爭分布式鎖,成功節(jié)點(diǎn)批量加載到期delayqueue數(shù)據(jù),批量執(zhí)行。
  • 6、多數(shù)據(jù)庫支持,在重寫并移除Quartz的基礎(chǔ)上,DAO層通過JPA實(shí)現(xiàn),不限制數(shù)據(jù)庫類型;
  • 7、執(zhí)行器Log清理功能:調(diào)度中心Log刪除時(shí)同步刪除執(zhí)行器中的Log文件;
  • 8、Bean模式任務(wù),JobHandler自動從執(zhí)行器中查詢展示為下拉框,選擇后自動填充任務(wù)名稱等屬性;
  • 9、API事件觸發(fā)類型任務(wù)(更類似MQ消息)支持"動態(tài)傳參、延時(shí)消費(fèi)";該類型任務(wù)不走Quartz,單獨(dú)建立MQ消息表,調(diào)度中心競爭觸發(fā);待定,該功能與 XXL-MQ 沖突,該場景建議用后者;
  • 10、調(diào)度線程池改為協(xié)程方式實(shí)現(xiàn),大幅降低系統(tǒng)內(nèi)存消耗;
  • 11、任務(wù)依賴增強(qiáng),新增任務(wù)類型 "流程任務(wù)",流程節(jié)點(diǎn)可掛載普通類型任務(wù),承擔(dān)任務(wù)依賴功能。現(xiàn)有子任務(wù)模型取消;需要考慮任務(wù)依賴死循環(huán)問題;
  • 12、任務(wù)告警邏輯調(diào)整:任務(wù)調(diào)度,以及任務(wù)回調(diào)失敗時(shí),均推送監(jiān)控隊(duì)列。后期考慮通過任務(wù)Log字段控制告警狀態(tài);
  • 13、提供多版本執(zhí)行器:不依賴容器版本、不內(nèi)嵌Jetty版本(通過配置executoraddress替換jetty通訊)等;
  • 14、注冊中心支持?jǐn)U展,除默認(rèn)基于DB之外,支持?jǐn)U展接入第三方注冊中心如zk、eureka等;
  • 15、流程任務(wù),支持參數(shù)傳遞;
  • 16、Cron TimeZone 自定義;
  • 17、忙碌轉(zhuǎn)移優(yōu)化,全部機(jī)器忙碌時(shí)不再直接失敗;
  • 18、流程任務(wù)等,透傳動態(tài)參數(shù);
  • 19、任務(wù)支持切換執(zhí)行器;
  • 20、任務(wù)自動注冊;待考慮,因?yàn)槿蝿?wù)自動注冊將會導(dǎo)致任務(wù)難以管理控制;

?

七、其他

7.1 項(xiàng)目貢獻(xiàn)

歡迎參與項(xiàng)目貢獻(xiàn)!比如提交PR修復(fù)一個(gè)bug,或者新建?Issue?討論新特性或者變更。

7.2 用戶接入登記

更多接入的公司,歡迎在?登記地址?登記,登記僅僅為了產(chǎn)品推廣。

7.3 開源協(xié)議和版權(quán)

產(chǎn)品開源免費(fèi),并且將持續(xù)提供免費(fèi)的社區(qū)技術(shù)支持。個(gè)人或企業(yè)內(nèi)部可自由的接入和使用。

  • Licensed under the GNU General Public License (GPL) v3.
  • Copyright (c) 2015-present, xuxueli.

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的轻量级分布式任务调度平台 XXL-JOB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国内揄拍国内精品人妻 | 久久久久久久人妻无码中文字幕爆 | 亚洲国产精品成人久久蜜臀 | 亚洲aⅴ无码成人网站国产app | 在线观看欧美一区二区三区 | 国产 浪潮av性色四虎 | 老司机亚洲精品影院 | 又大又黄又粗又爽的免费视频 | 亚洲日韩av一区二区三区中文 | 久久久婷婷五月亚洲97号色 | 欧美国产亚洲日韩在线二区 | 伊在人天堂亚洲香蕉精品区 | 亚洲欧洲日本综合aⅴ在线 | 日本精品久久久久中文字幕 | 国产真实夫妇视频 | 无码av岛国片在线播放 | 日韩成人一区二区三区在线观看 | 国精品人妻无码一区二区三区蜜柚 | 亚洲一区二区三区播放 | 撕开奶罩揉吮奶头视频 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲一区二区三区在线观看网站 | 成在人线av无码免费 | 亚洲成av人在线观看网址 | 中文字幕av伊人av无码av | 欧美国产亚洲日韩在线二区 | 免费观看的无遮挡av | 久久久中文字幕日本无吗 | 色综合久久久无码中文字幕 | 欧美freesex黑人又粗又大 | 亚洲成熟女人毛毛耸耸多 | 欧美日韩人成综合在线播放 | 欧美自拍另类欧美综合图片区 | 亚洲综合伊人久久大杳蕉 | 国产成人无码a区在线观看视频app | 国产情侣作爱视频免费观看 | 中文字幕精品av一区二区五区 | 亚洲精品一区三区三区在线观看 | 大屁股大乳丰满人妻 | 欧美日韩一区二区免费视频 | 欧美国产日韩亚洲中文 | 丰满肥臀大屁股熟妇激情视频 | 亚洲精品一区二区三区四区五区 | 亚洲 另类 在线 欧美 制服 | 一本无码人妻在中文字幕免费 | 偷窥日本少妇撒尿chinese | 久久国产自偷自偷免费一区调 | 丰满少妇高潮惨叫视频 | 无套内射视频囯产 | 大肉大捧一进一出视频出来呀 | 一区二区三区高清视频一 | 国产人妖乱国产精品人妖 | 亚洲综合在线一区二区三区 | 亚洲热妇无码av在线播放 | 国产又爽又黄又刺激的视频 | 久久国产精品精品国产色婷婷 | 国产色在线 | 国产 | 台湾无码一区二区 | 色欲综合久久中文字幕网 | 一本无码人妻在中文字幕免费 | 久久99热只有频精品8 | 国内精品人妻无码久久久影院 | 曰韩无码二三区中文字幕 | 国产无遮挡又黄又爽又色 | 亚洲国产av精品一区二区蜜芽 | 成熟妇人a片免费看网站 | 俺去俺来也在线www色官网 | 国产欧美熟妇另类久久久 | 国产在线精品一区二区三区直播 | 色综合天天综合狠狠爱 | 全黄性性激高免费视频 | 玩弄少妇高潮ⅹxxxyw | 人人澡人人妻人人爽人人蜜桃 | 国产人成高清在线视频99最全资源 | 国产又爽又黄又刺激的视频 | 色欲综合久久中文字幕网 | 中文精品久久久久人妻不卡 | 久久久久久av无码免费看大片 | 日本精品人妻无码免费大全 | 偷窥村妇洗澡毛毛多 | 精品久久8x国产免费观看 | 国产成人一区二区三区别 | 国产成人无码av在线影院 | 成人精品视频一区二区 | 中文亚洲成a人片在线观看 | 97久久国产亚洲精品超碰热 | 欧美三级a做爰在线观看 | 伊人久久大香线蕉av一区二区 | 日本xxxx色视频在线观看免费 | 久久99精品久久久久婷婷 | 88国产精品欧美一区二区三区 | 成熟女人特级毛片www免费 | 国产无遮挡又黄又爽免费视频 | 少妇久久久久久人妻无码 | 窝窝午夜理论片影院 | 国产精品久久久午夜夜伦鲁鲁 | 国产在线一区二区三区四区五区 | 国产无av码在线观看 | 国产人妻精品一区二区三区不卡 | 国产超碰人人爽人人做人人添 | 国产无套粉嫩白浆在线 | 久久天天躁狠狠躁夜夜免费观看 | 久精品国产欧美亚洲色aⅴ大片 | 国产在线一区二区三区四区五区 | 日韩av激情在线观看 | 久久人人97超碰a片精品 | 欧美一区二区三区视频在线观看 | 丝袜人妻一区二区三区 | 亚洲午夜久久久影院 | 伊人久久大香线蕉午夜 | 久久www免费人成人片 | 5858s亚洲色大成网站www | 亚洲娇小与黑人巨大交 | 国色天香社区在线视频 | 国产亚洲精品精品国产亚洲综合 | 亚洲 欧美 激情 小说 另类 | 国产成人精品无码播放 | 无码人妻黑人中文字幕 | 亚洲国产av精品一区二区蜜芽 | 国产精品爱久久久久久久 | 亚洲自偷自拍另类第1页 | 日本爽爽爽爽爽爽在线观看免 | 人妻少妇精品视频专区 | 天天燥日日燥 | 人人爽人人澡人人人妻 | 无码av免费一区二区三区试看 | 97色伦图片97综合影院 | 疯狂三人交性欧美 | 人妻少妇精品视频专区 | 国产真实乱对白精彩久久 | 欧美丰满少妇xxxx性 | 性欧美大战久久久久久久 | 精品久久久久久亚洲精品 | 国产精品18久久久久久麻辣 | 中文字幕+乱码+中文字幕一区 | 九九久久精品国产免费看小说 | 亚洲精品中文字幕 | 偷窥日本少妇撒尿chinese | 国内精品九九久久久精品 | 国产 精品 自在自线 | 亚洲一区二区三区播放 | 国产在热线精品视频 | 色爱情人网站 | 小鲜肉自慰网站xnxx | 免费男性肉肉影院 | 亚洲一区二区三区四区 | 色一情一乱一伦一区二区三欧美 | 国产精品对白交换视频 | 一本久久a久久精品亚洲 | 亚洲精品国产精品乱码不卡 | 高潮喷水的毛片 | 国产精品无码一区二区桃花视频 | 丰满少妇高潮惨叫视频 | 亚洲综合精品香蕉久久网 | 久久久久久久久蜜桃 | 日本成熟视频免费视频 | 国产精品多人p群无码 | 中文字幕乱码人妻二区三区 | 国产麻豆精品一区二区三区v视界 | 欧美人与动性行为视频 | 成人精品天堂一区二区三区 | 全球成人中文在线 | 成人免费无码大片a毛片 | 99精品久久毛片a片 | 亚洲性无码av中文字幕 | 国产欧美亚洲精品a | 国产成人久久精品流白浆 | 精品偷拍一区二区三区在线看 | 亚洲人成影院在线观看 | 伊人久久大香线焦av综合影院 | 欧美老熟妇乱xxxxx | 国产色精品久久人妻 | 色婷婷香蕉在线一区二区 | 婷婷五月综合缴情在线视频 | 又大又紧又粉嫩18p少妇 | 日韩欧美成人免费观看 | 婷婷丁香五月天综合东京热 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲色成人中文字幕网站 | www国产精品内射老师 | 撕开奶罩揉吮奶头视频 | 色婷婷久久一区二区三区麻豆 | 人人妻人人澡人人爽欧美精品 | 久久精品人妻少妇一区二区三区 | 性生交大片免费看l | 国产莉萝无码av在线播放 | 日本护士毛茸茸高潮 | 亚洲日本va午夜在线电影 | 天天躁日日躁狠狠躁免费麻豆 | 日本va欧美va欧美va精品 | 激情国产av做激情国产爱 | 亚洲自偷精品视频自拍 | 婷婷丁香五月天综合东京热 | 青青青手机频在线观看 | 特黄特色大片免费播放器图片 | 亚洲另类伦春色综合小说 | 无码成人精品区在线观看 | 欧美猛少妇色xxxxx | 久久精品中文字幕大胸 | 久久久av男人的天堂 | 18黄暴禁片在线观看 | 久久五月精品中文字幕 | 中文字幕亚洲情99在线 | 国产情侣作爱视频免费观看 | 在线观看欧美一区二区三区 | 性啪啪chinese东北女人 | 成人无码精品一区二区三区 | 精品无码一区二区三区爱欲 | 一本一道久久综合久久 | 夜夜夜高潮夜夜爽夜夜爰爰 | а√天堂www在线天堂小说 | 人人妻人人澡人人爽精品欧美 | 六十路熟妇乱子伦 | 成人女人看片免费视频放人 | 任你躁国产自任一区二区三区 | 亚洲精品一区三区三区在线观看 | 精品成在人线av无码免费看 | 色爱情人网站 | 国产成人人人97超碰超爽8 | 亚洲va中文字幕无码久久不卡 | 一个人看的视频www在线 | 国产极品美女高潮无套在线观看 | 国产av无码专区亚洲a∨毛片 | 人人妻人人藻人人爽欧美一区 | 红桃av一区二区三区在线无码av | 西西人体www44rt大胆高清 | 日本乱人伦片中文三区 | 精品人人妻人人澡人人爽人人 | 欧美35页视频在线观看 | 国产精品欧美成人 | 亚洲中文字幕在线无码一区二区 | 偷窥村妇洗澡毛毛多 | 高清不卡一区二区三区 | 欧美性猛交xxxx富婆 | 成人免费视频在线观看 | 免费人成网站视频在线观看 | 精品成人av一区二区三区 | 久久人人爽人人人人片 | 日本熟妇乱子伦xxxx | 在线天堂新版最新版在线8 | 国产做国产爱免费视频 | 夫妻免费无码v看片 | 97久久国产亚洲精品超碰热 | 亚洲一区二区三区香蕉 | 国产乱人无码伦av在线a | 欧美精品国产综合久久 | www国产精品内射老师 | 国产午夜精品一区二区三区嫩草 | 狠狠噜狠狠狠狠丁香五月 | 久久久久成人片免费观看蜜芽 | 成人无码视频免费播放 | 啦啦啦www在线观看免费视频 | 一本色道久久综合亚洲精品不卡 | 亚洲国产一区二区三区在线观看 | 精品国产av色一区二区深夜久久 | 乱人伦中文视频在线观看 | 国产精品18久久久久久麻辣 | 国产成人av免费观看 | 亚洲色大成网站www国产 | 亚洲国精产品一二二线 | 天天爽夜夜爽夜夜爽 | 中文字幕中文有码在线 | 97精品国产97久久久久久免费 | 欧美三级不卡在线观看 | 奇米影视7777久久精品人人爽 | 麻豆国产97在线 | 欧洲 | 亚洲欧美日韩国产精品一区二区 | 夜夜躁日日躁狠狠久久av | 亚洲欧美精品aaaaaa片 | 超碰97人人做人人爱少妇 | 成人精品视频一区二区三区尤物 | 中文精品无码中文字幕无码专区 | 国内精品人妻无码久久久影院 | 熟女体下毛毛黑森林 | 欧美三级a做爰在线观看 | 在线欧美精品一区二区三区 | 性色av无码免费一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 丰满少妇弄高潮了www | 四虎影视成人永久免费观看视频 | 性开放的女人aaa片 | 88国产精品欧美一区二区三区 | 人妻aⅴ无码一区二区三区 | 精品日本一区二区三区在线观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 天天爽夜夜爽夜夜爽 | 性欧美牲交xxxxx视频 | 四虎4hu永久免费 | 亚洲日韩中文字幕在线播放 | 帮老师解开蕾丝奶罩吸乳网站 | 成人综合网亚洲伊人 | 欧美性生交xxxxx久久久 | 成人精品一区二区三区中文字幕 | 夫妻免费无码v看片 | 亚洲伊人久久精品影院 | 亚洲啪av永久无码精品放毛片 | 免费人成网站视频在线观看 | 亚洲精品无码国产 | 久久久久亚洲精品中文字幕 | 国语自产偷拍精品视频偷 | 999久久久国产精品消防器材 | 欧美日韩一区二区三区自拍 | 国产精品亚洲五月天高清 | 色综合久久88色综合天天 | 老熟妇乱子伦牲交视频 | 一本色道久久综合狠狠躁 | 四虎影视成人永久免费观看视频 | 中文字幕av无码一区二区三区电影 | 久久99国产综合精品 | 自拍偷自拍亚洲精品10p | 亚洲精品国产第一综合99久久 | 国产精品无码成人午夜电影 | 色婷婷欧美在线播放内射 | 激情爆乳一区二区三区 | 少妇太爽了在线观看 | 亚洲精品一区二区三区在线观看 | 亚洲一区二区三区无码久久 | 久久久久亚洲精品男人的天堂 | 天天综合网天天综合色 | 国产特级毛片aaaaaa高潮流水 | 亚洲欧美国产精品久久 | 领导边摸边吃奶边做爽在线观看 | 国产香蕉尹人视频在线 | 亚洲中文无码av永久不收费 | 免费乱码人妻系列无码专区 | 中文字幕乱妇无码av在线 | 亚洲伊人久久精品影院 | 亚洲精品一区三区三区在线观看 | 97无码免费人妻超级碰碰夜夜 | 亚洲日韩av片在线观看 | 色婷婷欧美在线播放内射 | 亲嘴扒胸摸屁股激烈网站 | 无码国模国产在线观看 | 国产婷婷色一区二区三区在线 | 麻豆蜜桃av蜜臀av色欲av | 国产精品毛多多水多 | а天堂中文在线官网 | 99久久久无码国产aaa精品 | 中文字幕无码免费久久99 | 国产情侣作爱视频免费观看 | 天天做天天爱天天爽综合网 | 亚洲国产欧美日韩精品一区二区三区 | 51国偷自产一区二区三区 | 国产极品美女高潮无套在线观看 | 精品国产av色一区二区深夜久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲国产欧美国产综合一区 | 亚洲码国产精品高潮在线 | 欧美阿v高清资源不卡在线播放 | 少妇高潮一区二区三区99 | 久久精品女人天堂av免费观看 | 色综合久久久无码中文字幕 | 一本久道久久综合狠狠爱 | 国产情侣作爱视频免费观看 | 免费无码一区二区三区蜜桃大 | 亚洲色偷偷偷综合网 | 曰韩无码二三区中文字幕 | 久久国产精品精品国产色婷婷 | 亚洲国产精品无码一区二区三区 | 欧美大屁股xxxxhd黑色 | 国产熟妇高潮叫床视频播放 | 日本欧美一区二区三区乱码 | 300部国产真实乱 | 巨爆乳无码视频在线观看 | 国产猛烈高潮尖叫视频免费 | 性史性农村dvd毛片 | www国产亚洲精品久久网站 | 国产乱码精品一品二品 | 日本一区二区三区免费播放 | 无码午夜成人1000部免费视频 | 日本精品高清一区二区 | 亚洲国产高清在线观看视频 | 亚洲成av人片在线观看无码不卡 | 亚洲日本一区二区三区在线 | 亚洲熟悉妇女xxx妇女av | 成人一在线视频日韩国产 | 樱花草在线播放免费中文 | 国产精品久久久久久久9999 | 日本熟妇人妻xxxxx人hd | 国产精品成人av在线观看 | 久久人人97超碰a片精品 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲中文字幕无码中文字在线 | 天堂亚洲2017在线观看 | 欧美午夜特黄aaaaaa片 | 内射巨臀欧美在线视频 | 蜜臀aⅴ国产精品久久久国产老师 | 成人无码视频在线观看网站 | 国产猛烈高潮尖叫视频免费 | 又粗又大又硬毛片免费看 | 狠狠色丁香久久婷婷综合五月 | 日韩av无码一区二区三区 | 久久综合九色综合97网 | 午夜精品久久久内射近拍高清 | 久久无码中文字幕免费影院蜜桃 | 亚洲日韩av一区二区三区中文 | 久久人人爽人人爽人人片ⅴ | 国产乱码精品一品二品 | 国产精品丝袜黑色高跟鞋 | 日韩欧美群交p片內射中文 | 300部国产真实乱 | 高潮毛片无遮挡高清免费 | 97久久精品无码一区二区 | 中文字幕亚洲情99在线 | 精品国产aⅴ无码一区二区 | 国产极品美女高潮无套在线观看 | 国产色在线 | 国产 | 亚洲の无码国产の无码影院 | 久久伊人色av天堂九九小黄鸭 | 人妻aⅴ无码一区二区三区 | 鲁鲁鲁爽爽爽在线视频观看 | 国产在线aaa片一区二区99 | 色偷偷人人澡人人爽人人模 | 亚洲狠狠婷婷综合久久 | 久久亚洲国产成人精品性色 | 丁香花在线影院观看在线播放 | 免费男性肉肉影院 | 亚洲精品一区二区三区婷婷月 | 日日橹狠狠爱欧美视频 | 99久久久国产精品无码免费 | 青春草在线视频免费观看 | 亚洲精品久久久久avwww潮水 | 丰满护士巨好爽好大乳 | 清纯唯美经典一区二区 | 18禁止看的免费污网站 | 国产精品美女久久久久av爽李琼 | 色综合视频一区二区三区 | 国产乡下妇女做爰 | 天天综合网天天综合色 | 欧美丰满熟妇xxxx性ppx人交 | 蜜臀av无码人妻精品 | 国产成人无码一二三区视频 | 嫩b人妻精品一区二区三区 | 亚洲高清偷拍一区二区三区 | 成 人 免费观看网站 | 国产精品久久久久影院嫩草 | 国产精品无码一区二区桃花视频 | 日本熟妇大屁股人妻 | 牲欲强的熟妇农村老妇女 | 中文精品久久久久人妻不卡 | 久久午夜无码鲁丝片秋霞 | 偷窥日本少妇撒尿chinese | 无遮无挡爽爽免费视频 | 丁香花在线影院观看在线播放 | 欧美日本精品一区二区三区 | 377p欧洲日本亚洲大胆 | 久久亚洲精品成人无码 | 国产无遮挡又黄又爽免费视频 | 丰满少妇弄高潮了www | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 自拍偷自拍亚洲精品10p | 亚洲人成无码网www | 久久zyz资源站无码中文动漫 | 久久zyz资源站无码中文动漫 | 成 人 免费观看网站 | 久久97精品久久久久久久不卡 | 无码国产激情在线观看 | 欧美精品在线观看 | 少妇邻居内射在线 | 亚洲国产av美女网站 | 老司机亚洲精品影院无码 | 无码人妻丰满熟妇区毛片18 | 男女作爱免费网站 | 国产亚洲人成在线播放 | 中文无码伦av中文字幕 | 亚洲国产午夜精品理论片 | 色狠狠av一区二区三区 | 亚洲の无码国产の无码影院 | 成人性做爰aaa片免费看不忠 | 人妻少妇精品视频专区 | 国产色精品久久人妻 | 国产九九九九九九九a片 | 中文精品久久久久人妻不卡 | 99精品视频在线观看免费 | 国产又爽又猛又粗的视频a片 | 野外少妇愉情中文字幕 | 欧美三级a做爰在线观看 | 国产av无码专区亚洲a∨毛片 | 亚洲色欲久久久综合网东京热 | 亚洲成av人片天堂网无码】 | 久久久久亚洲精品中文字幕 | 99麻豆久久久国产精品免费 | 在线播放免费人成毛片乱码 | 东京无码熟妇人妻av在线网址 | 国内揄拍国内精品人妻 | 无码任你躁久久久久久久 | 亚洲人成网站在线播放942 | 色老头在线一区二区三区 | 亚洲国产精品久久久久久 | 日本一区二区更新不卡 | 久久久久久av无码免费看大片 | 久久国产精品精品国产色婷婷 | 久久精品国产99精品亚洲 | 西西人体www44rt大胆高清 | 成人无码视频在线观看网站 | 欧美人妻一区二区三区 | 少妇愉情理伦片bd | 人妻少妇被猛烈进入中文字幕 | www国产精品内射老师 | 精品无码一区二区三区爱欲 | 久久精品中文字幕大胸 | 精品无码一区二区三区的天堂 | 久久久久久九九精品久 | 国产片av国语在线观看 | 奇米影视7777久久精品 | 久久精品丝袜高跟鞋 | 久久精品国产精品国产精品污 | 日韩欧美中文字幕公布 | 国内精品人妻无码久久久影院蜜桃 | 人妻aⅴ无码一区二区三区 | 精品少妇爆乳无码av无码专区 | 人人爽人人澡人人人妻 | 日韩人妻少妇一区二区三区 | 亚洲人成网站免费播放 | 中文精品无码中文字幕无码专区 | 国产两女互慰高潮视频在线观看 | 国内揄拍国内精品少妇国语 | 一本精品99久久精品77 | 55夜色66夜色国产精品视频 | 青青青爽视频在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 国产激情精品一区二区三区 | 在线a亚洲视频播放在线观看 | 亚洲综合另类小说色区 | 亚洲の无码国产の无码影院 | 日产精品99久久久久久 | 中国大陆精品视频xxxx | 亚洲综合伊人久久大杳蕉 | а√天堂www在线天堂小说 | 亚洲精品国产a久久久久久 | 老司机亚洲精品影院 | 久久久久人妻一区精品色欧美 | 丝袜人妻一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 美女毛片一区二区三区四区 | 日韩 欧美 动漫 国产 制服 | 成人毛片一区二区 | 国产极品美女高潮无套在线观看 | 亚洲 a v无 码免 费 成 人 a v | 久久精品人人做人人综合 | 久久午夜无码鲁丝片午夜精品 | 国产成人无码一二三区视频 | 特黄特色大片免费播放器图片 | 久久久国产精品无码免费专区 | 性色欲网站人妻丰满中文久久不卡 | 久久综合久久自在自线精品自 | 四虎国产精品免费久久 | 国产精品高潮呻吟av久久4虎 | 樱花草在线社区www | 成人精品天堂一区二区三区 | 国产极品美女高潮无套在线观看 | 欧美猛少妇色xxxxx | 少妇厨房愉情理9仑片视频 | 丰满人妻一区二区三区免费视频 | 宝宝好涨水快流出来免费视频 | 国产另类ts人妖一区二区 | 成 人影片 免费观看 | 精品无码一区二区三区的天堂 | 国产特级毛片aaaaaaa高清 | 日韩精品a片一区二区三区妖精 | 天堂а√在线中文在线 | 精品欧洲av无码一区二区三区 | 一本精品99久久精品77 | 国产电影无码午夜在线播放 | 免费看少妇作爱视频 | 一本久久伊人热热精品中文字幕 | 人人妻人人澡人人爽人人精品浪潮 | 国产激情无码一区二区 | а√资源新版在线天堂 | 国产亚洲美女精品久久久2020 | 国产精品多人p群无码 | 国产激情一区二区三区 | 午夜精品久久久久久久 | 岛国片人妻三上悠亚 | 亚洲人成影院在线观看 | 欧美日韩一区二区综合 | 成人性做爰aaa片免费看 | 动漫av一区二区在线观看 | 亚洲色在线无码国产精品不卡 | 激情国产av做激情国产爱 | 高潮毛片无遮挡高清免费 | 在线观看欧美一区二区三区 | 黑人玩弄人妻中文在线 | 久久综合九色综合97网 | 亚洲欧美日韩综合久久久 | 亚洲男人av香蕉爽爽爽爽 | 日本一区二区三区免费高清 | 国语自产偷拍精品视频偷 | 四虎永久在线精品免费网址 | 日本精品高清一区二区 | 国产激情无码一区二区 | 色五月丁香五月综合五月 | av无码电影一区二区三区 | 国产熟妇另类久久久久 | 国产亚洲精品久久久久久大师 | 国产婷婷色一区二区三区在线 | 久久久婷婷五月亚洲97号色 | 亚洲男人av香蕉爽爽爽爽 | 亚洲成av人片在线观看无码不卡 | 麻豆国产丝袜白领秘书在线观看 | 国产精品.xx视频.xxtv | 国产情侣作爱视频免费观看 | 成人aaa片一区国产精品 | 欧美日韩精品 | 最近中文2019字幕第二页 | 啦啦啦www在线观看免费视频 | 熟女俱乐部五十路六十路av | 亚洲高清偷拍一区二区三区 | 精品国产一区二区三区四区在线看 | 国产精品人人妻人人爽 | 无码精品国产va在线观看dvd | 日产精品99久久久久久 | 国产精品高潮呻吟av久久4虎 | 国产精品自产拍在线观看 | 最新国产乱人伦偷精品免费网站 | 黄网在线观看免费网站 | 强奷人妻日本中文字幕 | 国产乱码精品一品二品 | 国产精品嫩草久久久久 | 亚洲精品美女久久久久久久 | 欧美黑人性暴力猛交喷水 | 噜噜噜亚洲色成人网站 | 色五月丁香五月综合五月 | 中文字幕无码日韩专区 | 日韩精品无码一区二区中文字幕 | 亚洲一区av无码专区在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲欧美国产精品久久 | 亚洲国产欧美国产综合一区 | 国产亚洲人成a在线v网站 | 4hu四虎永久在线观看 | 丰满人妻翻云覆雨呻吟视频 | 亚洲一区二区三区香蕉 | 亚洲精品国产精品乱码不卡 | 日韩人妻无码一区二区三区久久99 | 亚洲欧美综合区丁香五月小说 | 久久久久免费精品国产 | 国产成人无码区免费内射一片色欲 | 激情内射日本一区二区三区 | 国产无av码在线观看 | 亚洲色www成人永久网址 | 中文精品久久久久人妻不卡 | 成人毛片一区二区 | 久久亚洲精品中文字幕无男同 | 女人和拘做爰正片视频 | 久久综合网欧美色妞网 | 在线看片无码永久免费视频 | 精品人妻av区 | 久久婷婷五月综合色国产香蕉 | 久久伊人色av天堂九九小黄鸭 | 人人爽人人爽人人片av亚洲 | 风流少妇按摩来高潮 | 亚洲成色在线综合网站 | 老太婆性杂交欧美肥老太 | 丰满诱人的人妻3 | 51国偷自产一区二区三区 | 亚洲成av人综合在线观看 | 久久精品国产精品国产精品污 | 国产精品.xx视频.xxtv | 999久久久国产精品消防器材 | 四十如虎的丰满熟妇啪啪 | 国产xxx69麻豆国语对白 | 欧美老人巨大xxxx做受 | 国产特级毛片aaaaaa高潮流水 | 青青久在线视频免费观看 | 日韩欧美中文字幕在线三区 | 国产亚洲精品久久久闺蜜 | 国产激情艳情在线看视频 | 人人妻人人藻人人爽欧美一区 | 丰腴饱满的极品熟妇 | 亚洲成a人片在线观看日本 | 丰满人妻被黑人猛烈进入 | 国产高清av在线播放 | 人妻夜夜爽天天爽三区 | 性做久久久久久久免费看 | 又大又黄又粗又爽的免费视频 | 欧美喷潮久久久xxxxx | 内射爽无广熟女亚洲 | 亚无码乱人伦一区二区 | 久久久www成人免费毛片 | 女人被男人爽到呻吟的视频 | 国产av久久久久精东av | 亚洲人成无码网www | 丰满岳乱妇在线观看中字无码 | 亚洲中文字幕在线无码一区二区 | 国产精品va在线播放 | 欧美精品无码一区二区三区 | 国内少妇偷人精品视频免费 | 亚洲s色大片在线观看 | 成人免费无码大片a毛片 | 嫩b人妻精品一区二区三区 | 麻豆蜜桃av蜜臀av色欲av | 嫩b人妻精品一区二区三区 | 一二三四在线观看免费视频 | 综合人妻久久一区二区精品 | 欧美 日韩 人妻 高清 中文 | 国产成人一区二区三区在线观看 | 国语自产偷拍精品视频偷 | 久久综合狠狠综合久久综合88 | 亚洲国产高清在线观看视频 | 无人区乱码一区二区三区 | 国产精品久久久久无码av色戒 | 日韩精品久久久肉伦网站 | 久久99精品久久久久久动态图 | 欧美精品在线观看 | 高清国产亚洲精品自在久久 | 中文字幕无码乱人伦 | 亚洲精品一区三区三区在线观看 | 中文字幕无码乱人伦 | 国产精品va在线观看无码 | 波多野结衣乳巨码无在线观看 | 55夜色66夜色国产精品视频 | 亚洲日韩av一区二区三区四区 | 丰满护士巨好爽好大乳 | 色一情一乱一伦 | 日本va欧美va欧美va精品 | 亚洲精品久久久久中文第一幕 | 99久久精品无码一区二区毛片 | 国产又爽又黄又刺激的视频 | 老子影院午夜伦不卡 | 国产黄在线观看免费观看不卡 | 少妇人妻av毛片在线看 | 国产精品久久福利网站 | 无码国模国产在线观看 | 欧美35页视频在线观看 | 久久久久亚洲精品中文字幕 | 老司机亚洲精品影院无码 | 亚洲精品成人av在线 | 中文字幕亚洲情99在线 | 少妇厨房愉情理9仑片视频 | 丝袜 中出 制服 人妻 美腿 | 亚洲中文字幕久久无码 | 久久久久99精品国产片 | 精品一区二区三区无码免费视频 | 在线天堂新版最新版在线8 | 日本xxxx色视频在线观看免费 | 久久熟妇人妻午夜寂寞影院 | 欧洲熟妇色 欧美 | 老司机亚洲精品影院无码 | 东京一本一道一二三区 | 玩弄少妇高潮ⅹxxxyw | 亚洲人成影院在线无码按摩店 | 性生交大片免费看l | 亚洲理论电影在线观看 | 老子影院午夜精品无码 | 秋霞特色aa大片 | 精品aⅴ一区二区三区 | 青草视频在线播放 | 国产精品久久福利网站 | 亚洲中文无码av永久不收费 | 色五月五月丁香亚洲综合网 | 最近的中文字幕在线看视频 | 欧美freesex黑人又粗又大 | 久久99精品久久久久久动态图 | 色综合久久久久综合一本到桃花网 | 亚洲毛片av日韩av无码 | 乱码av麻豆丝袜熟女系列 | 无码人妻精品一区二区三区不卡 | 免费无码肉片在线观看 | 55夜色66夜色国产精品视频 | 久久精品国产一区二区三区肥胖 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美野外疯狂做受xxxx高潮 | 扒开双腿吃奶呻吟做受视频 | 国产午夜无码视频在线观看 | 熟妇人妻中文av无码 | 欧美精品在线观看 | 啦啦啦www在线观看免费视频 | 中文字幕中文有码在线 | 色欲久久久天天天综合网精品 | 日本丰满熟妇videos | 亚洲aⅴ无码成人网站国产app | 欧美35页视频在线观看 | 国产又粗又硬又大爽黄老大爷视 | 男女性色大片免费网站 | 欧美亚洲国产一区二区三区 | 中文字幕av伊人av无码av | 中文精品无码中文字幕无码专区 | 极品尤物被啪到呻吟喷水 | 丰满人妻翻云覆雨呻吟视频 | 色狠狠av一区二区三区 | 野外少妇愉情中文字幕 | 无套内谢的新婚少妇国语播放 | 亚洲人成网站色7799 | 久久精品中文闷骚内射 | 国产欧美亚洲精品a | 国产极品美女高潮无套在线观看 | 少妇性l交大片欧洲热妇乱xxx | 天天躁夜夜躁狠狠是什么心态 | www一区二区www免费 | 日韩人妻无码一区二区三区久久99 | 亚洲理论电影在线观看 | а√天堂www在线天堂小说 | 噜噜噜亚洲色成人网站 | 人人妻人人藻人人爽欧美一区 | 黑森林福利视频导航 | 久久伊人色av天堂九九小黄鸭 | 无码av最新清无码专区吞精 | 亚洲乱码中文字幕在线 | 荫蒂被男人添的好舒服爽免费视频 | 日韩人妻无码一区二区三区久久99 | 一本精品99久久精品77 | 亚洲一区二区三区香蕉 | 精品夜夜澡人妻无码av蜜桃 | 少女韩国电视剧在线观看完整 | 亚洲中文字幕乱码av波多ji | 欧美丰满熟妇xxxx性ppx人交 | 在线a亚洲视频播放在线观看 | 欧美阿v高清资源不卡在线播放 | 亚洲成a人一区二区三区 | 疯狂三人交性欧美 | 中文字幕 亚洲精品 第1页 | 少妇一晚三次一区二区三区 | 日韩成人一区二区三区在线观看 | 亚洲日韩中文字幕在线播放 | 一本色道久久综合狠狠躁 | 97久久精品无码一区二区 | 国产无遮挡吃胸膜奶免费看 | 亚洲 另类 在线 欧美 制服 | 丰满人妻翻云覆雨呻吟视频 | 综合网日日天干夜夜久久 | 任你躁在线精品免费 | www国产精品内射老师 | 亚洲成av人片天堂网无码】 | 日韩欧美群交p片內射中文 | 精品国产国产综合精品 | 综合网日日天干夜夜久久 | 中文字幕亚洲情99在线 | 日本精品少妇一区二区三区 | 亚洲熟妇色xxxxx欧美老妇y | 日本熟妇人妻xxxxx人hd | 国产亚洲视频中文字幕97精品 | 夜夜躁日日躁狠狠久久av | 亚洲色欲色欲欲www在线 | 亚洲成av人片天堂网无码】 | 俄罗斯老熟妇色xxxx | 久久综合激激的五月天 | 国语精品一区二区三区 | 日本一区二区三区免费播放 | 日本xxxx色视频在线观看免费 | 无码任你躁久久久久久久 | 亚洲狠狠婷婷综合久久 | 成熟女人特级毛片www免费 | 亚洲综合在线一区二区三区 | 性色欲网站人妻丰满中文久久不卡 | 人人澡人人妻人人爽人人蜜桃 | 色欲久久久天天天综合网精品 | 男人扒开女人内裤强吻桶进去 | 色综合久久网 | 国产舌乚八伦偷品w中 | 国产精品对白交换视频 | 成人精品视频一区二区三区尤物 | 女人高潮内射99精品 | 2019午夜福利不卡片在线 | 久久综合给久久狠狠97色 | 日欧一片内射va在线影院 | 东京热一精品无码av | 永久黄网站色视频免费直播 | 精品一区二区不卡无码av | 亚洲成熟女人毛毛耸耸多 | 一本大道伊人av久久综合 | 熟妇人妻激情偷爽文 | 国内精品久久毛片一区二区 | 亚洲精品中文字幕久久久久 | 麻豆果冻传媒2021精品传媒一区下载 | 正在播放东北夫妻内射 | 国产在线一区二区三区四区五区 | 激情人妻另类人妻伦 | 中文字幕无码人妻少妇免费 | 老太婆性杂交欧美肥老太 | 成人无码精品1区2区3区免费看 | av小次郎收藏 | 狠狠色丁香久久婷婷综合五月 | 夜精品a片一区二区三区无码白浆 | 九九综合va免费看 | 精品日本一区二区三区在线观看 | 婷婷丁香五月天综合东京热 | а√天堂www在线天堂小说 | 国产精品久久久久久久影院 | 国产精品久久久一区二区三区 | 无码任你躁久久久久久久 | 成人综合网亚洲伊人 | 性色欲情网站iwww九文堂 | 国产办公室秘书无码精品99 | 免费无码的av片在线观看 | 成 人 网 站国产免费观看 | 狠狠噜狠狠狠狠丁香五月 | 精品无人区无码乱码毛片国产 | 久久精品女人天堂av免费观看 | 国产成人精品无码播放 | 熟妇女人妻丰满少妇中文字幕 | 亚洲色欲色欲天天天www | 婷婷六月久久综合丁香 | 岛国片人妻三上悠亚 | 免费播放一区二区三区 | 人人爽人人澡人人高潮 | 亚洲精品成人福利网站 | 国产成人av免费观看 | 欧美日韩综合一区二区三区 | 亚洲一区二区三区国产精华液 | 精品国产一区二区三区av 性色 | 国精品人妻无码一区二区三区蜜柚 | 中文字幕av无码一区二区三区电影 | 免费观看黄网站 | 国产人妻人伦精品 | 免费播放一区二区三区 | 丰满岳乱妇在线观看中字无码 | 成人欧美一区二区三区黑人免费 | 丝袜 中出 制服 人妻 美腿 | 成 人影片 免费观看 | av香港经典三级级 在线 | 色欲久久久天天天综合网精品 | 四虎4hu永久免费 | 精品久久久无码人妻字幂 | 亚洲爆乳大丰满无码专区 | 99久久久国产精品无码免费 | 国产av久久久久精东av | 麻豆精品国产精华精华液好用吗 | 无码人妻av免费一区二区三区 | 亚洲成a人一区二区三区 | 亚洲精品综合一区二区三区在线 | 久久精品女人天堂av免费观看 | 人妻有码中文字幕在线 | 无码午夜成人1000部免费视频 | 国产精品人人爽人人做我的可爱 | 国产精品.xx视频.xxtv | 午夜肉伦伦影院 | 欧美国产亚洲日韩在线二区 | 18精品久久久无码午夜福利 | 精品无人国产偷自产在线 | 精品久久久无码人妻字幂 | 国产精品久久久久久久影院 | 东北女人啪啪对白 | 亚洲一区二区三区偷拍女厕 | 久久精品国产大片免费观看 | 精品熟女少妇av免费观看 | 国产做国产爱免费视频 | 日本免费一区二区三区最新 | 狠狠色色综合网站 | 好男人社区资源 | 欧美人与物videos另类 | 无码精品国产va在线观看dvd | 国产精品美女久久久久av爽李琼 | 大色综合色综合网站 | 狠狠cao日日穞夜夜穞av | 国内少妇偷人精品视频免费 | 国内丰满熟女出轨videos | 亚洲区欧美区综合区自拍区 | 亚洲国产av精品一区二区蜜芽 | 国产情侣作爱视频免费观看 | 一个人免费观看的www视频 | 免费看男女做好爽好硬视频 | 风流少妇按摩来高潮 | 欧美日韩一区二区三区自拍 | 人妻无码久久精品人妻 | 天天躁日日躁狠狠躁免费麻豆 | 中文字幕无码av波多野吉衣 | 无码国产乱人伦偷精品视频 | 小泽玛莉亚一区二区视频在线 | 无码av中文字幕免费放 | 四虎4hu永久免费 | 少妇久久久久久人妻无码 | 国产成人无码av片在线观看不卡 | 国产精品va在线观看无码 | 国产午夜福利亚洲第一 | 无码国产乱人伦偷精品视频 | 内射老妇bbwx0c0ck | 大色综合色综合网站 | 国产真实乱对白精彩久久 | 熟女体下毛毛黑森林 | 成人免费视频在线观看 | 精品成在人线av无码免费看 | 亚洲欧洲中文日韩av乱码 | 国产精品国产三级国产专播 | 亚洲国产欧美在线成人 | 色综合久久88色综合天天 | 国产成人av免费观看 | 亚洲精品无码国产 | 国产精品久久精品三级 | 人妻少妇被猛烈进入中文字幕 | 久久久中文字幕日本无吗 | 草草网站影院白丝内射 | 亚洲精品综合五月久久小说 | 欧美成人高清在线播放 | 鲁鲁鲁爽爽爽在线视频观看 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 在线成人www免费观看视频 | 理论片87福利理论电影 | 久久久久99精品国产片 | 久久午夜夜伦鲁鲁片无码免费 | 东京热男人av天堂 | 国产精品久久精品三级 | 天天拍夜夜添久久精品大 | 国产电影无码午夜在线播放 | yw尤物av无码国产在线观看 | 狠狠噜狠狠狠狠丁香五月 | 久激情内射婷内射蜜桃人妖 | 国产电影无码午夜在线播放 | 久久综合给久久狠狠97色 | 国产免费观看黄av片 | 欧美亚洲国产一区二区三区 | 国产成人无码av在线影院 | 美女黄网站人色视频免费国产 | 久久精品99久久香蕉国产色戒 | 国产成人一区二区三区在线观看 | 亚洲 高清 成人 动漫 | 男人扒开女人内裤强吻桶进去 | 在线精品亚洲一区二区 | 性欧美熟妇videofreesex | 男人扒开女人内裤强吻桶进去 | 国产精品久久精品三级 | 亚洲成熟女人毛毛耸耸多 | 欧美激情内射喷水高潮 | 午夜福利试看120秒体验区 | 国产又爽又猛又粗的视频a片 | 狂野欧美性猛xxxx乱大交 | 麻豆国产人妻欲求不满谁演的 | 天海翼激烈高潮到腰振不止 | 色婷婷av一区二区三区之红樱桃 | а√资源新版在线天堂 | 国产sm调教视频在线观看 | 色狠狠av一区二区三区 | 丰满护士巨好爽好大乳 | 狠狠色欧美亚洲狠狠色www | 欧美野外疯狂做受xxxx高潮 | 国产在线aaa片一区二区99 | 蜜臀aⅴ国产精品久久久国产老师 | 国产香蕉尹人综合在线观看 | 大乳丰满人妻中文字幕日本 | 成年女人永久免费看片 | 精品aⅴ一区二区三区 | 国产精品久久国产三级国 | √8天堂资源地址中文在线 | 久久久久成人精品免费播放动漫 | 精品国产国产综合精品 | 狠狠躁日日躁夜夜躁2020 | 狠狠色噜噜狠狠狠7777奇米 | 婷婷六月久久综合丁香 | 男人扒开女人内裤强吻桶进去 | 国产精品亚洲一区二区三区喷水 | 国精品人妻无码一区二区三区蜜柚 | 日本www一道久久久免费榴莲 | 亚洲中文字幕va福利 | 欧美人与禽猛交狂配 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲综合在线一区二区三区 | 美女毛片一区二区三区四区 | 精品一区二区三区无码免费视频 | 欧美老妇交乱视频在线观看 | 国产精品-区区久久久狼 | 3d动漫精品啪啪一区二区中 | 欧美freesex黑人又粗又大 | 俺去俺来也在线www色官网 | 国产成人无码一二三区视频 | 亚洲第一无码av无码专区 | 中文字幕色婷婷在线视频 | 亚洲熟妇自偷自拍另类 | 久久国产36精品色熟妇 | 强开小婷嫩苞又嫩又紧视频 | 中文字幕人妻无码一区二区三区 | 亚洲 激情 小说 另类 欧美 | av无码久久久久不卡免费网站 | a在线观看免费网站大全 | 麻豆精品国产精华精华液好用吗 | 国产深夜福利视频在线 | 久久精品一区二区三区四区 | 久久精品人妻少妇一区二区三区 | 性生交片免费无码看人 | 亚洲欧美中文字幕5发布 | 亚洲日本一区二区三区在线 | a片免费视频在线观看 | 欧美人与牲动交xxxx | 99久久人妻精品免费一区 | 国产人妻精品一区二区三区不卡 | 欧美午夜特黄aaaaaa片 | 玩弄少妇高潮ⅹxxxyw | 99精品久久毛片a片 | 日日橹狠狠爱欧美视频 | yw尤物av无码国产在线观看 | 国产又爽又猛又粗的视频a片 | 最近的中文字幕在线看视频 | 高清国产亚洲精品自在久久 | 麻豆国产人妻欲求不满 | 国产激情无码一区二区 | 欧美亚洲日韩国产人成在线播放 | 激情爆乳一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲色偷偷偷综合网 | 最近免费中文字幕中文高清百度 | 正在播放老肥熟妇露脸 | 婷婷丁香六月激情综合啪 | 久久zyz资源站无码中文动漫 | 久久综合给久久狠狠97色 | 人人妻人人藻人人爽欧美一区 | 人妻插b视频一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲欧洲日本综合aⅴ在线 | 亚洲一区二区三区香蕉 | 亚洲人成网站在线播放942 | 国产亲子乱弄免费视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产激情精品一区二区三区 | 露脸叫床粗话东北少妇 | 国产suv精品一区二区五 | 日韩欧美成人免费观看 | 玩弄少妇高潮ⅹxxxyw | 欧美zoozzooz性欧美 | 全黄性性激高免费视频 | 俺去俺来也www色官网 | 国产偷国产偷精品高清尤物 | 99精品久久毛片a片 | 中文久久乱码一区二区 | 国产精品无码永久免费888 | 欧美性黑人极品hd | 又大又硬又爽免费视频 | 欧美怡红院免费全部视频 | 无码吃奶揉捏奶头高潮视频 | 欧美日韩一区二区三区自拍 | 无码av中文字幕免费放 | 丰满人妻翻云覆雨呻吟视频 | 亚洲欧美日韩成人高清在线一区 | 国产办公室秘书无码精品99 | 亲嘴扒胸摸屁股激烈网站 | 国产精品va在线播放 | 亚洲日本va午夜在线电影 | 国产成人精品一区二区在线小狼 | 亚洲成a人片在线观看无码3d | 午夜丰满少妇性开放视频 | 鲁鲁鲁爽爽爽在线视频观看 | 大屁股大乳丰满人妻 | 丰满人妻被黑人猛烈进入 | 久久午夜无码鲁丝片秋霞 | 性色av无码免费一区二区三区 | 亚洲国产欧美国产综合一区 | 久久人人爽人人人人片 | 精品国精品国产自在久国产87 | 亚洲综合在线一区二区三区 | 亚洲呦女专区 | 国语自产偷拍精品视频偷 | 成人无码精品1区2区3区免费看 | 国产sm调教视频在线观看 | 99久久99久久免费精品蜜桃 | 给我免费的视频在线观看 | 国产人妖乱国产精品人妖 | 日本乱偷人妻中文字幕 | 亚洲精品国产第一综合99久久 | 十八禁视频网站在线观看 | 中文字幕日韩精品一区二区三区 | 中文字幕乱码人妻二区三区 | 亚洲中文字幕va福利 | 久久久久久久人妻无码中文字幕爆 | 97久久超碰中文字幕 | 99久久久国产精品无码免费 | 中文字幕人成乱码熟女app | 亚洲日韩一区二区三区 | 国产9 9在线 | 中文 | 国产乱人无码伦av在线a | 夜精品a片一区二区三区无码白浆 | 无码国产色欲xxxxx视频 | 日日摸天天摸爽爽狠狠97 | 国产真实乱对白精彩久久 | 性欧美videos高清精品 | 亚洲а∨天堂久久精品2021 | 亚洲成a人片在线观看无码 | 久久精品中文字幕大胸 | 欧美zoozzooz性欧美 | 亚洲熟熟妇xxxx | 日日天日日夜日日摸 | 久久午夜无码鲁丝片午夜精品 | 玩弄少妇高潮ⅹxxxyw | 亚洲色欲色欲天天天www | 色欲人妻aaaaaaa无码 | 国产精品.xx视频.xxtv | 日韩欧美群交p片內射中文 | 久久久精品国产sm最大网站 | 丁香花在线影院观看在线播放 | 强伦人妻一区二区三区视频18 | 久久亚洲精品中文字幕无男同 | 成在人线av无码免观看麻豆 | 亚洲中文字幕乱码av波多ji | 亚洲色无码一区二区三区 | 无码国产激情在线观看 | 成人毛片一区二区 | 久久精品国产99久久6动漫 | 亚洲中文无码av永久不收费 | 亚洲国产综合无码一区 | 老熟妇仑乱视频一区二区 | 欧美性猛交xxxx富婆 | 少妇高潮喷潮久久久影院 | 国产高清不卡无码视频 | 少妇性l交大片欧洲热妇乱xxx | 小鲜肉自慰网站xnxx | a在线亚洲男人的天堂 | 亚洲精品久久久久中文第一幕 | 无套内谢的新婚少妇国语播放 | 国产色视频一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 在线观看国产午夜福利片 | 成人一区二区免费视频 | 人人澡人人妻人人爽人人蜜桃 | 日日麻批免费40分钟无码 | 亚洲中文字幕无码中字 | 国产成人综合在线女婷五月99播放 | 婷婷五月综合缴情在线视频 | 成 人 免费观看网站 | 欧美亚洲日韩国产人成在线播放 | 国产精品久久久久久久影院 | 色妞www精品免费视频 | 精品国精品国产自在久国产87 | 亚洲精品国产第一综合99久久 | 大乳丰满人妻中文字幕日本 | 国产精品成人av在线观看 | 久久久无码中文字幕久... | 玩弄少妇高潮ⅹxxxyw | 久久97精品久久久久久久不卡 | 最新国产麻豆aⅴ精品无码 | 亚洲 日韩 欧美 成人 在线观看 | 久久无码人妻影院 | 乱人伦人妻中文字幕无码 | 99久久精品国产一区二区蜜芽 | 又大又紧又粉嫩18p少妇 | 小泽玛莉亚一区二区视频在线 | 久久人人爽人人爽人人片av高清 | 久久久婷婷五月亚洲97号色 | 国产在线aaa片一区二区99 | 人人爽人人澡人人高潮 | 亚洲熟女一区二区三区 | 丰满少妇高潮惨叫视频 | 日本www一道久久久免费榴莲 | 久久综合给合久久狠狠狠97色 | 欧美丰满老熟妇xxxxx性 | 青草视频在线播放 | 精品欧美一区二区三区久久久 | 无码吃奶揉捏奶头高潮视频 | 九九久久精品国产免费看小说 | 疯狂三人交性欧美 | 疯狂三人交性欧美 | 老司机亚洲精品影院无码 | 亚洲精品成a人在线观看 | 曰韩少妇内射免费播放 | 色欲综合久久中文字幕网 | 国产亚洲精品久久久久久久久动漫 | 欧美自拍另类欧美综合图片区 | 18精品久久久无码午夜福利 | 午夜福利一区二区三区在线观看 | 色婷婷欧美在线播放内射 | 牲欲强的熟妇农村老妇女 | 无码人妻出轨黑人中文字幕 | 熟妇人妻中文av无码 | 精品人妻av区 | 久久久国产一区二区三区 | 福利一区二区三区视频在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 人人妻人人澡人人爽人人精品 | 国产色精品久久人妻 | 欧美精品无码一区二区三区 | 久久精品中文闷骚内射 | 在线观看欧美一区二区三区 | 亚洲综合无码一区二区三区 | 国产精品人人妻人人爽 | 国产在线aaa片一区二区99 | 人人澡人人透人人爽 | 精品熟女少妇av免费观看 | 美女毛片一区二区三区四区 | 精品一二三区久久aaa片 | 免费人成在线观看网站 | 久久精品女人的天堂av | 成在人线av无码免费 | 妺妺窝人体色www婷婷 | 亚洲精品国产品国语在线观看 | 国产女主播喷水视频在线观看 | 又大又黄又粗又爽的免费视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久久久国产一区二区三区 | 无码福利日韩神码福利片 | 精品久久久中文字幕人妻 | 午夜精品一区二区三区在线观看 | 欧美人与物videos另类 | 久久人人97超碰a片精品 | 最新版天堂资源中文官网 | 老司机亚洲精品影院无码 | 在线播放免费人成毛片乱码 | 动漫av一区二区在线观看 | 中文无码精品a∨在线观看不卡 | 强辱丰满人妻hd中文字幕 | 人妻少妇精品久久 | 窝窝午夜理论片影院 | 日产精品高潮呻吟av久久 | 成人欧美一区二区三区黑人 | 亚洲精品国产品国语在线观看 | 亚洲欧美日韩综合久久久 | 熟妇人妻中文av无码 | 青春草在线视频免费观看 | 久久久久成人精品免费播放动漫 | 久久国语露脸国产精品电影 | 国产精品久久久久久久9999 | 亚洲成av人片天堂网无码】 | 亚洲 欧美 激情 小说 另类 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 巨爆乳无码视频在线观看 | 牲交欧美兽交欧美 | 国产精品igao视频网 | 狠狠综合久久久久综合网 | 性做久久久久久久久 | 国产一区二区三区精品视频 | 在线成人www免费观看视频 | 国产精品对白交换视频 | 色一情一乱一伦一视频免费看 | 欧洲vodafone精品性 | 国产成人精品三级麻豆 | 国产无遮挡又黄又爽免费视频 | 俺去俺来也在线www色官网 | 色爱情人网站 | 精品久久久久久亚洲精品 | 日日碰狠狠躁久久躁蜜桃 | 一区二区三区高清视频一 | 亚洲人成网站在线播放942 | 亚洲一区二区三区偷拍女厕 | 色综合天天综合狠狠爱 | 色欲av亚洲一区无码少妇 | 日日干夜夜干 | 久久亚洲精品中文字幕无男同 | 婷婷六月久久综合丁香 | 麻花豆传媒剧国产免费mv在线 | 亚洲精品国产品国语在线观看 | 玩弄人妻少妇500系列视频 | 亚洲国产成人a精品不卡在线 | 日韩在线不卡免费视频一区 | 99久久久无码国产aaa精品 | 欧美变态另类xxxx | 国产成人精品久久亚洲高清不卡 | 2019午夜福利不卡片在线 | 亚洲一区二区三区四区 | 亚欧洲精品在线视频免费观看 | 在线播放无码字幕亚洲 | 无码播放一区二区三区 | 国产精品自产拍在线观看 | 动漫av网站免费观看 | 久久精品一区二区三区四区 | 又大又硬又黄的免费视频 | 乱码午夜-极国产极内射 | 亚洲熟妇色xxxxx亚洲 | 性欧美牲交xxxxx视频 | 亚洲精品www久久久 | 欧洲熟妇色 欧美 | 强辱丰满人妻hd中文字幕 | 久久99精品久久久久久动态图 | 精品国产一区二区三区av 性色 | 麻豆成人精品国产免费 | 精品人妻人人做人人爽夜夜爽 | 日韩av无码一区二区三区不卡 | 成人无码影片精品久久久 | 麻豆精品国产精华精华液好用吗 | 亚洲精品美女久久久久久久 | 精品欧洲av无码一区二区三区 | 高清不卡一区二区三区 | 少妇人妻大乳在线视频 | 国产又粗又硬又大爽黄老大爷视 | 澳门永久av免费网站 | 亚洲精品成人福利网站 | 一本色道婷婷久久欧美 | ass日本丰满熟妇pics | 无码纯肉视频在线观看 | 国产内射爽爽大片视频社区在线 | 国产三级精品三级男人的天堂 | 老司机亚洲精品影院无码 | 婷婷丁香五月天综合东京热 | 无码精品人妻一区二区三区av | 久久精品女人天堂av免费观看 | 精品国产成人一区二区三区 | 日本爽爽爽爽爽爽在线观看免 | 伦伦影院午夜理论片 | 97精品人妻一区二区三区香蕉 | 久久久久免费看成人影片 | 欧美激情一区二区三区成人 | 日产精品99久久久久久 | 国产性生大片免费观看性 | 亚洲aⅴ无码成人网站国产app | 欧美日韩在线亚洲综合国产人 | 亚洲春色在线视频 | 久久亚洲日韩精品一区二区三区 | 国产农村乱对白刺激视频 | 国产情侣作爱视频免费观看 | 欧洲欧美人成视频在线 | 国产超碰人人爽人人做人人添 | 国产精品沙发午睡系列 | 久久精品国产一区二区三区肥胖 | 久久国产精品_国产精品 | 一本久道高清无码视频 | 亚洲成av人综合在线观看 | 久久成人a毛片免费观看网站 | 国产香蕉尹人视频在线 | 国产97色在线 | 免 | 精品久久综合1区2区3区激情 | 日日碰狠狠躁久久躁蜜桃 | 真人与拘做受免费视频一 | 无人区乱码一区二区三区 | 国产明星裸体无码xxxx视频 | 免费男性肉肉影院 | 中文字幕日产无线码一区 | 高清不卡一区二区三区 | 久久成人a毛片免费观看网站 | 亚洲成a人片在线观看无码3d | 欧美zoozzooz性欧美 | 亚洲精品一区二区三区在线 | 国产超级va在线观看视频 | 丁香花在线影院观看在线播放 | 国产猛烈高潮尖叫视频免费 | 自拍偷自拍亚洲精品10p | 亚洲国产欧美国产综合一区 | 亚洲成av人在线观看网址 | 国产精品无码一区二区桃花视频 | 未满小14洗澡无码视频网站 | 三级4级全黄60分钟 | 国产国语老龄妇女a片 | 日韩精品无码免费一区二区三区 | 国产精品二区一区二区aⅴ污介绍 | 国产极品美女高潮无套在线观看 | 国产精品无码一区二区三区不卡 | 狂野欧美性猛xxxx乱大交 | 亚洲一区二区三区香蕉 | 久久久久se色偷偷亚洲精品av | 亚洲中文字幕在线观看 | 久久久婷婷五月亚洲97号色 | 少妇厨房愉情理9仑片视频 | 理论片87福利理论电影 | 精品国产av色一区二区深夜久久 | 欧美午夜特黄aaaaaa片 | 露脸叫床粗话东北少妇 | 国产人妖乱国产精品人妖 | 老头边吃奶边弄进去呻吟 | 伊人色综合久久天天小片 | 岛国片人妻三上悠亚 | 国产精品鲁鲁鲁 | 国产亲子乱弄免费视频 | 婷婷丁香六月激情综合啪 | 久久精品无码一区二区三区 | 三上悠亚人妻中文字幕在线 | 免费国产黄网站在线观看 | 成人精品视频一区二区三区尤物 | 欧美日韩视频无码一区二区三 | 亚洲国产av美女网站 | √天堂资源地址中文在线 | 成人无码视频免费播放 | 51国偷自产一区二区三区 | 国产精品18久久久久久麻辣 | 亚洲人成网站在线播放942 | 撕开奶罩揉吮奶头视频 | 成人精品视频一区二区三区尤物 | 水蜜桃av无码 | 夜精品a片一区二区三区无码白浆 | 国产精品久久久一区二区三区 | 国产激情无码一区二区 | 亚洲一区二区观看播放 | 女人色极品影院 | 福利一区二区三区视频在线观看 | 熟妇人妻中文av无码 | 国产无av码在线观看 | 青青草原综合久久大伊人精品 | 国产精品igao视频网 | 日韩av无码一区二区三区不卡 | 久久成人a毛片免费观看网站 | 女人被爽到呻吟gif动态图视看 | 人人妻人人澡人人爽欧美一区 | aⅴ在线视频男人的天堂 | 亚洲日本一区二区三区在线 | 亚洲精品一区二区三区在线 | 一个人看的www免费视频在线观看 | 综合激情五月综合激情五月激情1 | 亚洲精品中文字幕 | 99久久无码一区人妻 | 国产农村乱对白刺激视频 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲精品一区二区三区四区五区 | 国产精品亚洲lv粉色 | 国色天香社区在线视频 | 又大又黄又粗又爽的免费视频 | 久久天天躁狠狠躁夜夜免费观看 | 7777奇米四色成人眼影 | 亚洲精品成a人在线观看 | 色综合久久88色综合天天 | 扒开双腿吃奶呻吟做受视频 | 国产人妻人伦精品1国产丝袜 | 亚洲日韩av一区二区三区中文 | 亚洲日本在线电影 | 国内揄拍国内精品少妇国语 | 国产黑色丝袜在线播放 | 狠狠躁日日躁夜夜躁2020 | 久久天天躁狠狠躁夜夜免费观看 | 欧洲熟妇精品视频 | 欧美丰满熟妇xxxx | 国产无遮挡又黄又爽免费视频 | 性欧美疯狂xxxxbbbb | yw尤物av无码国产在线观看 | 久久 国产 尿 小便 嘘嘘 | 国产av一区二区精品久久凹凸 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品一区国产 | 99在线 | 亚洲 | 国产精品久久久久9999小说 | 国内精品九九久久久精品 | 中文无码伦av中文字幕 | 夜先锋av资源网站 | 欧美野外疯狂做受xxxx高潮 | 天堂亚洲2017在线观看 | 久久亚洲国产成人精品性色 | 亚洲高清偷拍一区二区三区 | 亚洲精品中文字幕乱码 | 日韩人妻少妇一区二区三区 | 国产人妻精品一区二区三区不卡 | 欧美乱妇无乱码大黄a片 | 亚洲精品美女久久久久久久 | 欧美日韩人成综合在线播放 | 日产精品高潮呻吟av久久 | 又大又紧又粉嫩18p少妇 | 久久精品女人的天堂av | 国产精品沙发午睡系列 | 国产精品高潮呻吟av久久 | 少妇愉情理伦片bd | 中文字幕无码免费久久9一区9 | 亚洲va中文字幕无码久久不卡 | 久久精品一区二区三区四区 | 在线视频网站www色 | 久久久久人妻一区精品色欧美 | 成人亚洲精品久久久久 | 九九久久精品国产免费看小说 | 亚洲欧美精品伊人久久 | www国产精品内射老师 | 亚洲国产精品久久久久久 | 亚洲精品久久久久中文第一幕 | 欧美性猛交内射兽交老熟妇 | 美女极度色诱视频国产 | 成人一在线视频日韩国产 | 日韩人妻无码中文字幕视频 | 夜精品a片一区二区三区无码白浆 | 亚洲日韩精品欧美一区二区 | 一区二区三区乱码在线 | 欧洲 | 丰满肥臀大屁股熟妇激情视频 | 亚洲一区av无码专区在线观看 | 大胆欧美熟妇xx | 无码av免费一区二区三区试看 | 红桃av一区二区三区在线无码av | 国产sm调教视频在线观看 | 影音先锋中文字幕无码 | 久久熟妇人妻午夜寂寞影院 | 欧美激情一区二区三区成人 | 精品无人国产偷自产在线 | 免费观看的无遮挡av | 色一情一乱一伦一视频免费看 | 在线精品亚洲一区二区 | 18无码粉嫩小泬无套在线观看 | 色欲久久久天天天综合网精品 | 中文字幕av伊人av无码av | 国产无遮挡吃胸膜奶免费看 | 欧美第一黄网免费网站 | 丰满护士巨好爽好大乳 | 亚洲精品综合五月久久小说 | 无码精品人妻一区二区三区av | 2019nv天堂香蕉在线观看 | 中文字幕人成乱码熟女app | 色五月五月丁香亚洲综合网 | 亚洲第一网站男人都懂 | 国产69精品久久久久app下载 | 欧洲熟妇精品视频 | 精品久久综合1区2区3区激情 | 亚洲第一无码av无码专区 | 红桃av一区二区三区在线无码av | 免费网站看v片在线18禁无码 | 在线a亚洲视频播放在线观看 | 九九综合va免费看 | 久久人人爽人人爽人人片av高清 | 久久久久久九九精品久 | 亚洲一区二区三区播放 | 欧美高清在线精品一区 | 精品成人av一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 国产精品人人爽人人做我的可爱 | 国产电影无码午夜在线播放 | 国产区女主播在线观看 | 色窝窝无码一区二区三区色欲 | 国产精品久久久久久亚洲影视内衣 | 国产特级毛片aaaaaaa高清 | 久久精品女人的天堂av | 精品国产一区二区三区四区 | 久久精品国产一区二区三区 | 亚洲va欧美va天堂v国产综合 | 捆绑白丝粉色jk震动捧喷白浆 | 久久精品丝袜高跟鞋 | 国产成人精品视频ⅴa片软件竹菊 | 曰本女人与公拘交酡免费视频 | 国产精品香蕉在线观看 | 国产成人精品一区二区在线小狼 | 少妇性荡欲午夜性开放视频剧场 | 高潮毛片无遮挡高清免费视频 | 理论片87福利理论电影 | 欧美怡红院免费全部视频 | 青青草原综合久久大伊人精品 | 国产av无码专区亚洲a∨毛片 | 久久国产自偷自偷免费一区调 | 激情综合激情五月俺也去 | 色综合久久久无码中文字幕 | 欧美日韩亚洲国产精品 | 亚洲一区二区三区四区 | 成人欧美一区二区三区 | 欧洲极品少妇 | 熟妇激情内射com | 精品久久久无码人妻字幂 | 娇妻被黑人粗大高潮白浆 | 香港三级日本三级妇三级 | 日产精品高潮呻吟av久久 | 少妇太爽了在线观看 | 中文字幕无码视频专区 | 精品无人国产偷自产在线 | 亚洲中文字幕无码一久久区 | 激情国产av做激情国产爱 | 国内老熟妇对白xxxxhd | 国产麻豆精品精东影业av网站 | 天天躁夜夜躁狠狠是什么心态 | 婷婷综合久久中文字幕蜜桃三电影 | 四虎影视成人永久免费观看视频 | 色偷偷人人澡人人爽人人模 | 亚洲自偷自偷在线制服 | 国产无套粉嫩白浆在线 | 四虎4hu永久免费 | 日日碰狠狠丁香久燥 | 精品乱子伦一区二区三区 | 少妇性l交大片 | 久久zyz资源站无码中文动漫 | 亚洲中文字幕va福利 | 欧美老妇与禽交 | 国产成人精品必看 | 亚洲精品美女久久久久久久 | 福利一区二区三区视频在线观看 | 国产精品高潮呻吟av久久4虎 | 熟妇人妻中文av无码 | 国产成人精品必看 | 久久亚洲精品中文字幕无男同 | 亚洲人亚洲人成电影网站色 | 国产特级毛片aaaaaa高潮流水 | 日韩无套无码精品 | 无码一区二区三区在线 | 午夜熟女插插xx免费视频 | 国产精品多人p群无码 | 樱花草在线社区www | 国产 浪潮av性色四虎 | 性史性农村dvd毛片 | 黑人巨大精品欧美黑寡妇 | 欧美精品免费观看二区 | 无遮挡国产高潮视频免费观看 | 啦啦啦www在线观看免费视频 | 少妇被粗大的猛进出69影院 | 综合人妻久久一区二区精品 | аⅴ资源天堂资源库在线 | 色五月五月丁香亚洲综合网 | 在线播放免费人成毛片乱码 | 成年美女黄网站色大免费全看 | 欧美亚洲国产一区二区三区 | 国产乱码精品一品二品 | 国产超级va在线观看视频 | 18禁黄网站男男禁片免费观看 | 欧美老妇交乱视频在线观看 | 丰满少妇弄高潮了www | 精品乱码久久久久久久 | 强辱丰满人妻hd中文字幕 | 一区二区三区高清视频一 | 女高中生第一次破苞av | 国产又爽又猛又粗的视频a片 | 中文字幕av无码一区二区三区电影 | 丰满妇女强制高潮18xxxx | 少妇久久久久久人妻无码 | 精品国偷自产在线视频 | 久久精品国产日本波多野结衣 | 久久99久久99精品中文字幕 | 天堂亚洲免费视频 | 国产精品免费大片 |