亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

徹底搞懂Cron表達(dá)式:字段規(guī)則、特殊字符與定時(shí)任務(wù)實(shí)戰(zhàn)指南

徹底搞懂Cron表達(dá)式:字段規(guī)則、特殊字符與定時(shí)任務(wù)實(shí)戰(zhàn)指南 1. 從理解到上手先把Cron表達(dá)式的底摸清定時(shí)任務(wù)大概是后臺(tái)開(kāi)發(fā)里最“日?!眳s又最容易被忽視的東西。你可能見(jiàn)過(guò)這樣的場(chǎng)景運(yùn)維同學(xué)半夜收到告警郵件上去一看是某個(gè)統(tǒng)計(jì)腳本沒(méi)跑開(kāi)發(fā)同學(xué)說(shuō)“我明明配了每天零點(diǎn)執(zhí)行”結(jié)果任務(wù)完全沒(méi)觸發(fā)還有更常見(jiàn)的——表達(dá)式寫(xiě)錯(cuò)導(dǎo)致任務(wù)在凌晨三點(diǎn)重復(fù)執(zhí)行數(shù)據(jù)庫(kù)被瞬時(shí)壓力打滿(mǎn)。這些事我基本都踩過(guò)一遍追到根上多數(shù)時(shí)候就是Cron表達(dá)式寫(xiě)得不嚴(yán)謹(jǐn)。Cron表達(dá)式本質(zhì)上就是一套用來(lái)描述“周期性時(shí)間點(diǎn)”的規(guī)則語(yǔ)言。很多人在初次接觸時(shí)只背了個(gè)七位格式覺(jué)得無(wú)非是“秒 分 時(shí) 日 月 周”真到了要寫(xiě)一個(gè)“每個(gè)工作日的上午9點(diǎn)半跑一次”的表達(dá)式時(shí)卻卡在了“?”和“*”的區(qū)別上。這篇內(nèi)容不搞教科書(shū)式的羅列而是從“為什么這樣設(shè)計(jì)”出發(fā)把字段規(guī)則、特殊字符、實(shí)際案例和踩坑經(jīng)驗(yàn)一并講透希望能幫你徹底掌握這一小塊卻極其關(guān)鍵的技能點(diǎn)。這套規(guī)則適用于哪些場(chǎng)景最典型的就是定時(shí)任務(wù)調(diào)度Java的Quartz框架、Spring的Scheduled注解、Linux系統(tǒng)的crontab命令、大數(shù)據(jù)平臺(tái)里的調(diào)度系統(tǒng)以及各類(lèi)數(shù)據(jù)同步、日志清理、報(bào)表生成任務(wù)。適合哪些人看如果你正在維護(hù)帶定時(shí)任務(wù)的系統(tǒng)、平時(shí)要寫(xiě)計(jì)劃任務(wù)腳本或者單純想弄明白“0 0 3 * * ?”到底怎么讀這篇文章都能給你實(shí)在的參考。2. 核心設(shè)計(jì)拆解Cron表達(dá)式為什么長(zhǎng)這樣2.1 煩瑣背后的邏輯為什么需要7個(gè)字段很多人剛接觸Cron時(shí)最不適應(yīng)的地方是它比常見(jiàn)的“5字段”格式多出了“秒”字段。某些系統(tǒng)里寫(xiě)“0 0 12 * * ?”是六位而在帶秒的場(chǎng)景下要寫(xiě)“0 0 12 * * ?”是六位而在Quartz里必須寫(xiě)成“0 0 12 * * ?”。傳統(tǒng)Linux crontab只有五位數(shù)分 時(shí) 日 月 周它不支持秒級(jí)精度。但Quartz這類(lèi)框架在設(shè)計(jì)時(shí)發(fā)現(xiàn)很多業(yè)務(wù)場(chǎng)景需要秒級(jí)別的觸發(fā)比如“每10秒刷新一次緩存”。于是它把字段擴(kuò)成了“秒 分 時(shí) 日 月 周 年可省略”。這也解釋了為什么網(wǎng)上經(jīng)常出現(xiàn)六位和七位混用的情況——大家用的SDK不同底層結(jié)構(gòu)就不一樣。自己寫(xiě)調(diào)度代碼時(shí)第一件事永遠(yuǎn)是確認(rèn)當(dāng)前用的是什么庫(kù)然后再談表達(dá)式怎么寫(xiě)。2.2 六位和七位少一個(gè)字段意味著什么有些框架比如Spring早期版本支持六位格式秒 分 時(shí) 日 月 周。七位格式則是在末尾加了“年”字段變成秒 分 時(shí) 日 月 周 年。年在絕大多數(shù)系統(tǒng)里用不到通常寫(xiě)成“*”或直接省略。如果某個(gè)調(diào)度器不支持年份字段你卻硬寫(xiě)了七位大概率會(huì)直接拋異常。你可以這樣理解六位和七位的關(guān)系就像“日期時(shí)間”和“日期時(shí)間年份”的關(guān)系。如果你只需要“每年6月1日?qǐng)?zhí)行”這種任務(wù)年份字段才有存在價(jià)值但實(shí)際業(yè)務(wù)里這類(lèi)需求很少更多是“每天”“每周幾”“每月幾號(hào)”這類(lèi)循環(huán)模式。所以我的經(jīng)驗(yàn)是優(yōu)先用六位別給自己找麻煩。2.3 每一位的取值邊界先搞懂才能談優(yōu)化Cron表達(dá)式拆開(kāi)后每一位的取值范圍和含義如下字段是否必填取值范圍允許的特殊字符秒是0-59, - * /分是0-59, - * /時(shí)是0-23, - * /日是1-31, - * ? / L W月是1-12 或 JAN-DEC, - * /周是1-7 或 SUN-SAT, - * ? / L #年可選否1970-2099, - * /這里必須強(qiáng)調(diào)一個(gè)高頻錯(cuò)誤日和周兩個(gè)字段是互斥的。如果你在“日”里寫(xiě)了具體的天數(shù)比如“15”那“周”就必須用“?”占位反過(guò)來(lái)也一樣。因?yàn)橄到y(tǒng)沒(méi)法同時(shí)判斷“每月15號(hào)”和“每周一”——這兩個(gè)條件同時(shí)生效時(shí)任務(wù)會(huì)在哪個(gè)點(diǎn)跑完全無(wú)法預(yù)測(cè)。這就是為什么“?”這個(gè)特殊字符在Cron表達(dá)式里有不可替代的地位。3. 特殊字符全解析從星號(hào)到問(wèn)號(hào)逐個(gè)擊破3.1 * 與 ?一對(duì)最容易混的兄弟“”在Cron里表示“任意值”相當(dāng)于通配符。舉個(gè)例子在“分”字段寫(xiě)“”意味著每分鐘都觸發(fā)在“時(shí)”字段寫(xiě)“*”意味著每小時(shí)都觸發(fā)?!?”的語(yǔ)義則完全不同它只用于“日”和“周”兩個(gè)字段表示“不指定值”。為什么需要這種語(yǔ)義正因?yàn)槿蘸椭芑コ猱?dāng)你設(shè)置了“日”字段時(shí)“周”就必須明確告訴系統(tǒng)“我不關(guān)心周幾”而這個(gè)“我不關(guān)心”就得用“?”來(lái)表達(dá)。我遇到過(guò)不少這樣的失誤在Spring的Scheduled注解里寫(xiě)“0 0 12 15 *”結(jié)果任務(wù)沒(méi)觸發(fā)日志里也沒(méi)有任何報(bào)錯(cuò)。原因就是“日”里寫(xiě)了15“周”里卻寫(xiě)了“”系統(tǒng)解析時(shí)把兩個(gè)條件同時(shí)生效了15號(hào)可能不是周一而周一可能不是15號(hào)條件疊加最終導(dǎo)致不匹配。正確寫(xiě)法是“0 0 12 15 * ?”。3.2 - 與 /范圍與步長(zhǎng)的聯(lián)合作戰(zhàn)“-”表示一個(gè)連續(xù)范圍。比如“小時(shí)”字段寫(xiě)“9-18”代表從上午9點(diǎn)到下午6點(diǎn)之間每個(gè)整點(diǎn)都觸發(fā)配合“分”字段的“0”就是“每天9點(diǎn)到18點(diǎn)的每分鐘或每小時(shí)整點(diǎn)執(zhí)行”。“/”表示步長(zhǎng)?!?/5”表示每隔5個(gè)單位執(zhí)行一次“0/15”表示從0開(kāi)始每隔15個(gè)單位執(zhí)行一次。這兩個(gè)字符合起來(lái)能完成很多常見(jiàn)配置。比如“每工作日的上午9點(diǎn)到下午6點(diǎn)之間每隔30分鐘執(zhí)行一次”可以寫(xiě)成“0 0/30 9-18 * * MON-FRI”。拆開(kāi)看秒位“0”表示整秒觸發(fā)分位“0/30”是從0分開(kāi)始每30分鐘一次時(shí)位“9-18”限制了小時(shí)范圍周位“MON-FRI”限制了工作日。這套組合在數(shù)據(jù)統(tǒng)計(jì)類(lèi)的定時(shí)任務(wù)里非常常見(jiàn)。3.3 L、W、#復(fù)雜日期需求的三件兵器“L”代表“最后一天”在不同字段里有不同含義在“日”字段表示月份的最后一天比如1月31日、4月30日在“周”字段單獨(dú)使用表示“星期六”即每周的最后一天跟在數(shù)字后面則代表“該月最后一個(gè)星期幾”比如“5L”表示該月最后一個(gè)星期五?!癢”代表“最近的工作日”只能用在“日”字段。比如“15W”表示“離15號(hào)最近的那個(gè)工作日”。如果15號(hào)是周六則觸發(fā)在周五14號(hào)如果15號(hào)是周日則觸發(fā)在周一16號(hào)。這個(gè)設(shè)計(jì)對(duì)“每月中旬的工作日?qǐng)?zhí)行賬務(wù)處理”這類(lèi)的業(yè)務(wù)非常有用?!?”則是“第幾個(gè)星期幾”只能用在“周”字段“6#3”表示“該月第三個(gè)星期五”按國(guó)外習(xí)慣周日是第一天6對(duì)應(yīng)周五。這三件兵器解決的都是“自然語(yǔ)言里的模糊時(shí)間描述”問(wèn)題。但如果系統(tǒng)本身沒(méi)有實(shí)現(xiàn)這些標(biāo)準(zhǔn)部分自研調(diào)度框架只支持基礎(chǔ)的五位格式你用了L、W、#反而會(huì)直接報(bào)錯(cuò)。所以用之前務(wù)必確認(rèn)框架的文檔。3.4 星期與月份的英文縮寫(xiě)寫(xiě)錯(cuò)一個(gè)字母排查半天Cron允許在月和周的字段使用英文縮寫(xiě)JAN-DEC對(duì)應(yīng)1-12月SUN-SAT對(duì)應(yīng)周日到周六。這里有一個(gè)容易混淆的點(diǎn)在Linux的crontab里周的數(shù)字“0”和“7”都表示周日有的系統(tǒng)把“7”也當(dāng)作周日但在Quartz里周的數(shù)字范圍是“1-7”其中“1”代表周日“7”代表周六。這兩種體系的語(yǔ)義正好錯(cuò)位如果從網(wǎng)上抄一個(gè)表達(dá)式時(shí)沒(méi)注意來(lái)源很容易翻車(chē)。我習(xí)慣的做法是無(wú)論是自己寫(xiě)還是審查別人的表達(dá)式一律使用英文縮寫(xiě)來(lái)標(biāo)記星期比如“MON-FRI”而不是“1-5”。這樣不僅可讀性強(qiáng)還能避免Quartz與Linux體系數(shù)字語(yǔ)義不一致的暗坑。4. 實(shí)操環(huán)節(jié)那些直接抄作業(yè)就能用的表達(dá)式4.1 每天定點(diǎn)執(zhí)行與每N分鐘執(zhí)行最基礎(chǔ)的場(chǎng)景每天凌晨2點(diǎn)執(zhí)行數(shù)據(jù)備份在Spring里這樣寫(xiě)六位格式0 0 2 * * ?含義是秒為0、分為0、時(shí)為2、每天、每月、不指定周幾。如果用的是Linux crontab則去掉秒字段寫(xiě)成0 2 * * *。每5分鐘執(zhí)行一次健康檢查Quartz里寫(xiě)0 */5 * * * ?表示“每隔5分鐘的第0秒觸發(fā)”。如果要求“每5分鐘的第30秒觸發(fā)”就只能用30 */5 * * * ?因?yàn)槊胱侄慰刂频氖恰霸谶@一分鐘的第幾秒觸發(fā)”而不是“每5分鐘執(zhí)行一次”里的起始偏移。很多人在這一步栽跟頭以為“*/5”里的“5”從執(zhí)行那一刻開(kāi)始計(jì)時(shí)其實(shí)Cron表達(dá)式天然是“對(duì)齊自然時(shí)間單位”的它不具備“相對(duì)啟動(dòng)時(shí)間”的偏移能力。4.2 工作日定時(shí)與周末排除處理“每周一到周五的上午9點(diǎn)執(zhí)行”時(shí)可以用0 0 9 ? * MON-FRI。這里的“?”用在“日”字段周字段明確寫(xiě)了“MON-FRI”。如果把表達(dá)式寫(xiě)成0 0 9 * * MON-FRI在Quartz里會(huì)解析失敗因?yàn)椤叭铡弊侄尾荒芡瑫r(shí)寫(xiě)“*”和指定周幾。在Linux crontab里則沒(méi)有這個(gè)問(wèn)題因?yàn)樗挥形鍌€(gè)字段日和周天然沖突時(shí)才需要特殊處理Linux的做法是“兩個(gè)條件同時(shí)成立才會(huì)執(zhí)行”而不是“有一個(gè)成立就行”。周末排除的另一個(gè)思路是在“周”字段明確寫(xiě)“SAT,SUN”并在任務(wù)入口做判斷但這屬于應(yīng)用層邏輯和表達(dá)式本身無(wú)關(guān)。能用表達(dá)式表達(dá)的盡量不要帶到代碼里判斷因?yàn)榉植际江h(huán)境下多實(shí)例部署時(shí)每個(gè)實(shí)例的時(shí)間零點(diǎn)不一定完全同步表達(dá)式層面統(tǒng)一控制更可靠。4.3 每月、每季度的邊界場(chǎng)景“每月1號(hào)0點(diǎn)執(zhí)行”寫(xiě)0 0 0 1 * ?很直接?!懊考径鹊谝粋€(gè)月的1號(hào)執(zhí)行”則可以寫(xiě)成0 0 0 1 1,4,7,10 *把月份枚舉出來(lái)。如果你所在業(yè)務(wù)用的是財(cái)務(wù)季度不以自然月為邊界就需要額外計(jì)算但Cron本身不支持“第幾周的周三”這種結(jié)合月份重復(fù)的模式只能用“周”字段的“#”或“L”來(lái)盡可能逼近。這里分享一個(gè)經(jīng)驗(yàn)與其費(fèi)勁寫(xiě)一條極復(fù)雜的表達(dá)式不如拆成多條簡(jiǎn)單規(guī)則例如“每月1號(hào)和16號(hào)各跑一次”邏輯清晰、后續(xù)維護(hù)也方便。我踩過(guò)一個(gè)很隱蔽的坑某個(gè)報(bào)表任務(wù)寫(xiě)的是0 0 6 1 * ?想表示“每月1號(hào)早上6點(diǎn)跑”但某月1號(hào)正好是周六任務(wù)沒(méi)跑。排查半天才發(fā)現(xiàn)表達(dá)式在“日”里寫(xiě)了“1”在“周”里寫(xiě)了“?”這意味著“每個(gè)月1號(hào)不關(guān)心周幾”??此茮](méi)問(wèn)題但那套自研調(diào)度框架對(duì)“周”字段的“?”支持不完整把它當(dāng)成了普通值“1”即周日處理。所以一定要先在目標(biāo)系統(tǒng)里做驗(yàn)證而不是想當(dāng)然地套標(biāo)準(zhǔn)。4.4 夏令時(shí)相關(guān)很少人提、卻很重要在Quartz和Linux cron里如果服務(wù)器配置了夏令時(shí)那“每天2點(diǎn)執(zhí)行”這條規(guī)則在春季切夏令時(shí)的那一天可能直接跳過(guò)2點(diǎn)不存在在秋季切回時(shí)則可能執(zhí)行兩次。這個(gè)問(wèn)題的惡心之處在于它一年只會(huì)出現(xiàn)一兩次很多團(tuán)隊(duì)測(cè)不出來(lái)一旦上線就在特定日期出故障。我的建議是對(duì)時(shí)間精準(zhǔn)度要求高的任務(wù)盡量使用UTC時(shí)區(qū)調(diào)度如果業(yè)務(wù)強(qiáng)依賴(lài)本地時(shí)間至少要做“冪等處理”并在任務(wù)日志里打印足夠的上下文。5. 常見(jiàn)問(wèn)題與排查技巧從實(shí)測(cè)中積累的經(jīng)驗(yàn)5.1 表達(dá)式看似沒(méi)問(wèn)題任務(wù)為什么不觸發(fā)這是被問(wèn)得最多的一個(gè)問(wèn)題。第一步先確認(rèn)當(dāng)前Cron表達(dá)式框架是“六位”還是“五位”。以前我在項(xiàng)目里看到過(guò)0 2 * * *這種寫(xiě)法在Linux crontab里是合法的每天2點(diǎn)整但如果放在Quartz里第一個(gè)“0”會(huì)被當(dāng)成秒第二個(gè)“2”會(huì)被當(dāng)成分第三個(gè)“*”會(huì)被當(dāng)成時(shí)這樣解析出來(lái)的含義完全變了變成“每秒執(zhí)行一次但分固定為2、時(shí)任意”——任務(wù)瘋狂觸發(fā)日志里刷出一堆請(qǐng)求。如果在Quartz里寫(xiě)“0 2 * * *”真實(shí)的執(zhí)行頻率是每分鐘的第2秒遠(yuǎn)不是“每天2點(diǎn)”。第二步檢查時(shí)區(qū)配置。Quartz和Spring的Scheduled默認(rèn)使用服務(wù)器的本地時(shí)區(qū)而Linux crontab同樣基于系統(tǒng)時(shí)區(qū)。一旦服務(wù)器切換時(shí)區(qū)比如從Asia/Shanghai改到UTC所有定時(shí)任務(wù)都會(huì)整體偏移8小時(shí)。這種問(wèn)題很難通過(guò)看表達(dá)式發(fā)現(xiàn)所以排查到“時(shí)間對(duì)不上”的時(shí)候先看一眼環(huán)境變量。第三步看“日”和“周”是否互斥。寫(xiě)任務(wù)時(shí)如果兩個(gè)字段都有實(shí)際值一個(gè)不為?一個(gè)不為*Quartz會(huì)強(qiáng)行要求互斥否則拋異常但某些國(guó)產(chǎn)調(diào)度平臺(tái)或者基于MySQL的自研任務(wù)表可能既不校驗(yàn)也不提示而是采用“與”邏輯把兩個(gè)條件拼在一起最終結(jié)果就是“既滿(mǎn)足日期又滿(mǎn)足周幾”的全部天數(shù)里去執(zhí)行。這種情況尤其需要對(duì)表達(dá)式語(yǔ)義有完整的認(rèn)識(shí)。5.2 用在線工具校驗(yàn)對(duì)了一半另一半必須自己驗(yàn)證網(wǎng)上有很多Cron表達(dá)式在線解析器粘貼表達(dá)式就能告訴你“下一次執(zhí)行時(shí)間”。這類(lèi)工具我平時(shí)也用但只把它們當(dāng)作第一道檢查絕不當(dāng)作最終結(jié)論。原因很簡(jiǎn)單不同的在線工具實(shí)現(xiàn)標(biāo)準(zhǔn)也不統(tǒng)一有的完全仿Quartz有的只支持Linux crontab有的甚至把“?”當(dāng)“*”處理。我見(jiàn)過(guò)一個(gè)在線工具輸入0 0 12 * * ?后直接報(bào)錯(cuò)“field value must be a number”因?yàn)樗緵](méi)有實(shí)現(xiàn)“?”邏輯。真到了生產(chǎn)環(huán)境它報(bào)錯(cuò)不報(bào)錯(cuò)都說(shuō)不準(zhǔn)所以務(wù)必以你實(shí)際使用的庫(kù)源碼為準(zhǔn)。更可靠的方式是寫(xiě)一個(gè)簡(jiǎn)單的Java或者Python測(cè)試用例調(diào)用本地庫(kù)的解析器算未來(lái)5次觸發(fā)時(shí)間比對(duì)是否符合預(yù)期。以Spring為例本地寫(xiě)個(gè)main方法package com.example.demo; import org.springframework.scheduling.support.CronExpression; import java.time.LocalDateTime; public class CronCheck { public static void main(String[] args) { String expr 0 0 9 ? * MON-FRI; CronExpression cron CronExpression.parse(expr); LocalDateTime now LocalDateTime.now(); for (int i 0; i 5; i) { now cron.next(now); System.out.println(下次執(zhí)行時(shí)間: now); } } }Python環(huán)境里也有類(lèi)似的庫(kù)比如基于croniterfrom croniter import croniter from datetime import datetime base datetime.now() cron croniter(0 0 9 * * 1-5, base) for i in range(5): print(cron.get_next(datetime))這兩種方式都比在線工具靠譜因?yàn)樗鼈冇玫慕馕鲆媾c生產(chǎn)環(huán)境一致結(jié)果不會(huì)有環(huán)境差異。唯一要注意的是Quartz與Spring的Cron實(shí)現(xiàn)細(xì)節(jié)略有差異Spring實(shí)現(xiàn)不支持“年”字段所以生產(chǎn)用什么測(cè)試就用什么。5.3 凌晨不執(zhí)行延遲到上午才跑怎么回事這類(lèi)問(wèn)題大多出在“任務(wù)排程線程池被占滿(mǎn)”。定時(shí)任務(wù)到了觸發(fā)點(diǎn)調(diào)度線程把任務(wù)丟進(jìn)執(zhí)行業(yè)務(wù)線程池但線程池里的線程全都被卡住了比如數(shù)據(jù)庫(kù)連接池被打滿(mǎn)、外部HTTP調(diào)用超時(shí)任務(wù)自然延后。檢查手段主要有三步看線程池的活躍線程數(shù)、看任務(wù)隊(duì)列積壓數(shù)量、看慢調(diào)用日志。優(yōu)先排查是不是有某個(gè)任務(wù)的SQL長(zhǎng)時(shí)間鎖表把其他定時(shí)任務(wù)全堵住了。這類(lèi)問(wèn)題不是表達(dá)式錯(cuò)誤但會(huì)讓表達(dá)式“看起來(lái)像沒(méi)生效”。解決方式通常是把不同重要程度的任務(wù)拆分線程池或者給執(zhí)行時(shí)間長(zhǎng)的任務(wù)單獨(dú)隔離資源。5.4 參數(shù)化星期、月份的邊界2月29日和31日Cron表達(dá)式用“日”字段寫(xiě)“29”或“30”時(shí)在月份沒(méi)有對(duì)應(yīng)日期的自然不會(huì)觸發(fā)。比如0 0 8 31 * ?只有31天的大月才跑2月直接跳過(guò)。這符合預(yù)期但如果業(yè)務(wù)要求“每個(gè)月最后一天執(zhí)行”就不該寫(xiě)死“31”而是用“L”。寫(xiě)“L”時(shí)還要注意Quartz里的“L”作用于日字段時(shí)表示“自然月的最后一天”但如果你同時(shí)指定了周的偏移比如“5L”它的語(yǔ)義會(huì)變成“該月最后一個(gè)星期五”這兩種含義差異極大。關(guān)于2月29日Cron本身沒(méi)有“閏年判斷”能力它只按照月份天數(shù)來(lái)匹配。想表達(dá)“每年2月29日?qǐng)?zhí)行一次”直接寫(xiě)日期在第3年的2月29日才會(huì)觸發(fā)閏年這是符合語(yǔ)法但業(yè)務(wù)上通常不期望的情況。遇到這種需求我的處理方式是不要試圖用Cron描述改成“每年3月1日?qǐng)?zhí)行一次補(bǔ)償上一年閏年邏輯”或者“每年2月最后一天執(zhí)行”在業(yè)務(wù)代碼里判斷是否閏年。5.5 手動(dòng)觸發(fā)沒(méi)事、自動(dòng)執(zhí)行就報(bào)錯(cuò)常見(jiàn)的兩類(lèi)根因第一類(lèi)是表達(dá)式觸發(fā)的時(shí)刻正好是系統(tǒng)負(fù)載高峰比如所有任務(wù)都堆在“0 0 0 * * ?”這一瞬間數(shù)據(jù)庫(kù)連接瞬間被打滿(mǎn)。解決辦法是錯(cuò)峰配置把任務(wù)散到0點(diǎn)5分、0點(diǎn)10分、0點(diǎn)15分等。這也是為什么很多調(diào)度規(guī)范里明確要求“整點(diǎn)任務(wù)必須加隨機(jī)偏移”。第二類(lèi)是任務(wù)執(zhí)行時(shí)依賴(lài)外部接口而外部接口只在工作時(shí)間開(kāi)放定時(shí)任務(wù)在凌晨執(zhí)行時(shí)權(quán)限不足或接口不通。這類(lèi)問(wèn)題要靠日志定位表達(dá)式本身沒(méi)有坑坑在業(yè)務(wù)邏輯里。排查這類(lèi)問(wèn)題時(shí)要對(duì)執(zhí)行上下文比如用戶(hù)會(huì)話(huà)、token仔細(xì)檢查別讓任務(wù)跑在了一個(gè)默認(rèn)身份下。6. 設(shè)計(jì)與維護(hù)建議Cron表達(dá)式容易忽略的四個(gè)細(xì)節(jié)6.1 不要在一個(gè)表達(dá)式里堆太多語(yǔ)義一個(gè)復(fù)雜的表達(dá)式雖然能完成多個(gè)條件的組合但可讀性和可維護(hù)性都會(huì)下降。舉個(gè)例子0 5 4 1,15 * ?表示“每月1號(hào)和15號(hào)的凌晨4點(diǎn)5分執(zhí)行”這個(gè)能看懂。但如果把多個(gè)業(yè)務(wù)模塊的執(zhí)行時(shí)間全揉進(jìn)一個(gè)表達(dá)式比如“每月第一個(gè)工作日、每周三、每月最后一天”后續(xù)維護(hù)的人看到這行要么改了A業(yè)務(wù)影響B(tài)業(yè)務(wù)要么完全不敢動(dòng)。我的習(xí)慣是一個(gè)任務(wù)只描述一個(gè)明確的時(shí)間點(diǎn)或周期不合并多個(gè)業(yè)務(wù)意圖。6.2 表達(dá)式的可觀測(cè)性日志里要能看到原始配置線上排查定時(shí)任務(wù)問(wèn)題時(shí)最怕的就是配置文件里的表達(dá)式和實(shí)際運(yùn)行時(shí)的表達(dá)式不一致。比如配置中心修改了某個(gè)任務(wù)的執(zhí)行頻率但應(yīng)用沒(méi)有及時(shí)刷新。因此在任務(wù)啟動(dòng)或配置刷新時(shí)把當(dāng)前生效的表達(dá)式打印到日志里甚至把計(jì)算出的未來(lái)幾次執(zhí)行時(shí)間一并打印這樣下次再有人問(wèn)“任務(wù)怎么沒(méi)跑”直接看日志就夠了。這套小機(jī)制看起來(lái)不起眼實(shí)際能省去非常多溝通成本。6.3 任務(wù)執(zhí)行時(shí)間預(yù)估給自己留出緩沖表達(dá)式只能描述“什么時(shí)候開(kāi)始執(zhí)行”但它描述不了執(zhí)行時(shí)長(zhǎng)。這帶來(lái)兩個(gè)問(wèn)題一是重疊執(zhí)行——任務(wù)還沒(méi)跑完下一個(gè)觸發(fā)點(diǎn)已經(jīng)到了二是對(duì)后續(xù)任務(wù)的影響——比如報(bào)表任務(wù)A依賴(lài)任務(wù)B但B因?yàn)槟撤N原因延遲了A可能在“錯(cuò)誤的時(shí)間窗口”讀取了“不完整的數(shù)據(jù)”。解決手段通常有兩個(gè)方向一是加分布式鎖保證同一任務(wù)不會(huì)并發(fā)執(zhí)行二是在任務(wù)內(nèi)部做“執(zhí)行前置條件校驗(yàn)”比如判斷上游數(shù)據(jù)是否已就緒。這些雖然不屬于表達(dá)式本身但真正常出故障的往往是“表達(dá)式觸發(fā)后的一系列連鎖問(wèn)題”。6.4 配置管理與版本控制別把表達(dá)式散落各處大型項(xiàng)目里定時(shí)任務(wù)表達(dá)式往往散落在配置文件、數(shù)據(jù)庫(kù)、環(huán)境變量之中。想統(tǒng)計(jì)“當(dāng)前系統(tǒng)一共有多少個(gè)定時(shí)任務(wù)”“有沒(méi)有重復(fù)的觸發(fā)時(shí)間”都變得異常困難。比較好的實(shí)踐是把所有任務(wù)的名稱(chēng)、表達(dá)式、描述、負(fù)責(zé)人維護(hù)在同一張配置表里以某種“任務(wù)注冊(cè)”機(jī)制統(tǒng)一管理。表達(dá)式本身要做變更時(shí)走配置中心的發(fā)布流程并保留變更歷史。這并不復(fù)雜但對(duì)長(zhǎng)期維護(hù)有決定性的影響。6.5 生日提醒這類(lèi)“時(shí)點(diǎn)型”需求Cron天生不適合Cron的核心能力是“周期性規(guī)律觸發(fā)”它不具備“根據(jù)某條記錄的時(shí)間字段動(dòng)態(tài)計(jì)算下一次觸發(fā)時(shí)間”的能力。如果你要做一個(gè)“用戶(hù)生日當(dāng)天上午10點(diǎn)發(fā)送提醒”的功能用Cron是沒(méi)法直接注冊(cè)的——因?yàn)槊總€(gè)用戶(hù)的生日不同不能為每個(gè)用戶(hù)都建一個(gè)表達(dá)式即便可以數(shù)量一多也hold不住。這種場(chǎng)景更合理的設(shè)計(jì)是每天早上用一條Cron任務(wù)跑一次掃描篩出當(dāng)天過(guò)生日的用戶(hù)再逐條發(fā)送消息。理解這一點(diǎn)能幫你在規(guī)劃架構(gòu)時(shí)少走彎路Cron做“節(jié)奏”不負(fù)責(zé)“精準(zhǔn)到每個(gè)個(gè)體”。最后分享一點(diǎn)個(gè)人體會(huì)做調(diào)度系統(tǒng)這幾年我對(duì)Cron表達(dá)式的最大感受是它的門(mén)檻不高門(mén)檻在于“你以為自己會(huì)了”。很多初學(xué)時(shí)踩的坑回頭去看都是因?yàn)闆](méi)把字段之間的約束關(guān)系當(dāng)成一回事。線上環(huán)境里表達(dá)式的錯(cuò)誤往往不會(huì)以“拋出異?!钡男问匠尸F(xiàn)而是以“讓人摸不著頭腦的不執(zhí)行”方式出現(xiàn)這種問(wèn)題排查起來(lái)特別費(fèi)力。所以我現(xiàn)在給自己定的規(guī)矩是三條新寫(xiě)的表達(dá)式一定先用庫(kù)解析器算三步未來(lái)時(shí)間涉及“日”和“周”的表達(dá)式一定要刻意提醒自己檢查互斥關(guān)系任務(wù)的執(zhí)行和配置一定有日志留痕。這套習(xí)慣說(shuō)不上多高深但確實(shí)把我從不少凌晨三點(diǎn)的告警郵件里撈了出來(lái)。希望這篇關(guān)于Cron的梳理也能幫你避開(kāi)我當(dāng)年踩過(guò)的那些坑。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲欧美电影| 91AV天美在线视频| 欧美三级中文字幕hd| 久久久久白虎| 熟妇女伦乱视频视频| 内射中出日韩在线观看视频| 91狠狠综合久久久久久| 亚洲无吗在线视频| 日韩精品在线放| 高潮9999外国| 亚洲好色人妻| 亚洲高清男人天堂| 亚洲无限观看| 97超碰色屌| 91黑丝露脚| 国产超碰人人操| 中文字幕乱在线伦视频中文字幕乱码在线 | 超碰碰碰碰| 在线岛| 97视频网站| 欧美成人贴图| 91少妇| 中文字幕乱码在线观看| 国产精品久久久亚洲第一牛牛_在线观看 | 深夜激情| 欧美女同在线| nuu12国产麻豆精品| 高跟伊人julia ann| 天天操av懂色| 男人的天堂色偷偷青青草视频婷婷网| 久久久久久久久久久久久久久性生活视频| 女人高潮大叫一级毛片| 日本女厕偷拍| 91亚洲不卡一区| 天天日天天舔天天喷天天射| 婷婷精品视频| 99日韩| 精品一区二区三区蜜桃臀赵总 | 一区二区娱乐网站| 俺去俺来也在线www| 亚洲国产一区二区入口| 国产精品无码在线| 欧洲熟妇xxXx欧美老妇裸体| 日韩欧美成人大香蕉| 欧美男人一区| 一区二区三区男女操逼黄色小电影| 91九九九馒头| 亚洲情色 自拍| 亚洲天堂另类| 91综合色噜噜| 手机在线中文字幕国产| 欧美综合区| 国产精品亚洲免费| 性爱久久| 青青草白白色| 久久精品六区| 97免费在线观看| 国产极品粉嫩馒头一线天av| 一类无码操逼视频| 日本人妻A片成人免费看片| 99热精品在线在线| 欧美久久毛片基地| 亚洲黄色电影| 亚洲国产精品有声| 一区二区三区无卡视频在线观看| 久久妇| 97超碰欧美精品| 久久精品福利影院| 久久综合五月天| 无码一区二区三区四区五区六区七区八区九区十区视频 | 日本午夜操逼| 91在线页| 亚洲综合草草| 欧美亚洲尤物久久| 精品.99999| 加勒比伊人综合| 精品日日人妻| 操逼www.| 久久久久久久78| 91狠狠狠| 日本免费专区| 狠狠躁天天躁日日躁97| 久久精品一区二区三区四区五区| 人人插人人搞人人操| 久草精品热视| 人妻娇喘 激情视频| 色吧5亚洲| h无码动漫在线观看| 狠狠干,狠狠操| 玖玖综合色| 日产精品久久久一区二区| 中文字幕美女91| 久久五月视频| 亚洲人久久久网| 日本二三四区| 69精品久久久久中文字幕| 中文字幕乱碼在线| 国产一区二区三三视频| 亚洲射综合网| 国产强奸乱伦第1页| 久久久久久精品免费看A级| 欧美日韩人人精品| 亚洲资源站| 亚洲 国产 精品一区| 精品人妻一区二区三区-国产| 懂色av中文字幕| 91影库| 亚洲欧美激情另类色图| 99re视频这里只有精品| 免费综合亚洲中文| 国产天天噜一噜久久久| 嫩草影院在线观看精品| 99热精品在线观看| 国产欧美一区激情交| 吉川爱美亚洲二区在线| 中国操逼无码| 久操操| 成人五级久久| 天天干天天日天天射黄色片| 亚洲自拍天堂| 欧美青青视频| 色婷婷六月| 黑丝制服中文字幕| 婷婷性爱| 人妻夜夜爽天天爽三区麻豆AV网站| 乱色视频中文字幕| 欧美色图 色综合图| 91日本在线观看| nuu12国产麻豆精品| 五月丁香综合啪啪| 久草新在线| 亚洲激情av| 啪啪啪男女亚洲中文字幕99| 青青草在线成人视频| 欧美97爱| 国产欧美日韩臀| 操逼天美3区| 亚洲成人色情五月天丁香花| 乱伦图av| 免费视频一二三区| 97色色色综合网站| 91色综| 肉动漫无遮挡h在线观看| 99999精品成人| 日本αv| 欧美伦乱爱| 手机在线A片| 97超碰欧美手机在线| 天天日天天爽| 日本三级一区二区 在线| 怡红院亚洲怡春院av| 婷婷五月av| 久久国产在线一区二区| 91综合天天看| 国产精品制服丝袜中文字幕日韩一区二区三区 | 一个人免费HD91视频| 91天天爽| 在线观看A啊啊啊| 免费一级视频特黄色大片| 97欧美日韩综合| 国产美女精品| 色5月婷婷| a亚洲欧美色欲| 69丨亚洲丨精品丨入口免费播放| 日本不卡三级网在线播放| 欧美aaaaaaa| 亚洲av资源| 国产小炒后入式| 国产无马av| 男女做爰猛烈动高潮A片免费应用| 欧美性综合| 殴美牲| 国语国产操逼伊人AV网| 黄色无码高清黄色无码网站| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 国产精品交换一区二区| 日韩欧美tv一区二区在线观看| 欧美日综合| 福利一级版子| 欧美国产成人在线| 超碰97资源中文字幕| ?亚洲伊人伊成久久人综合网| 黑人免费福利视频| 国产精品一区二区密臀| 操老熟女AV| 九X超碰| 亚洲无套久久嗯嗯| a一区二区三区乱码在线| 国产91美女视频| 96国产精品| 午夜性| 精品人妻美妇91job| 欧美Aⅴ| 蜜臀99久久国产| 欲香欲色天天天综合和网| 调教熟妇 久久久久久| 青青操综合网| 老熟女乱子伦中文字幕一区二区| 欧美黄色大片在线观看| 肏逼视频日本| 91视频精品| 国产熟妇 码视频户外直播| 久久春色| 国产呦精品系列在线观看| 性色A∨91| 91久久久久| 国产99999久久精品| 91电影色诱| 老熟女区| 日韩精品操少妇| 97视频7| 99久在线精品99re8a| 熟妇亚洲一区二区三区| 大香蕉青青9| 亚洲Av噜噜一区二区三区妖精| 性老妇一区二区三区| 人妻爽爽啪视频| 大乔未久88一区| 91精品国久久久久久无码| 国产青青美女玩逼视频| 麻豆区久久久久亚| av影片在线观看不卡| av黄图片在线观看| 日本熟女中文字幕一区| 天天射影院| 亚洲熟妇乱女区二区三区| 久久久久久中文字幕中文字幕最新| 国产按摩一区二区三区| 亚洲自拍欧美国产首页网曝| 超碰欧美COM| 熟女熟妇一区二区三四区| 久久久久夜夜夜夜| 久久无码一区二区二三区性色| 天天色天天干天天射| 99热在线观看| 91粉芽高清在线一区二区| 国产伦精品一区二区三区视频女| 天天综合网91入口| 亚洲综合另类色图| 秋霞色色影院| 欧美性爱视频免费一区一A | 欧美999999| 啊啊啊啊,啊啊好多水| 亚洲情色 欧美| 欧美影院一区二区三区| 色人久久| 绑缚麻绳人妻寝取完整版| 性爱AV天堂| 情色大香蕉| 人人搞人人插人人操| 99久国产精品午夜性色福利| www.yw尤物| 亚洲日韩欧美一区二区| 日韩视频精品在线观看| 另类天堂| 五月天亚洲网| 亚洲精品人妻在线| 丰满人妻一区二区三区在线| 欧美线天码中字| 日韩免费中文字幕视频| 五月丁香啪啪网| 久草在| 麻豆视频一区二区| 免费av大片| 韩日男人的天堂| 国内精品99999| 亚洲男人久久综合天堂| 中文字幕视频2区| 美女高潮国产高清| 5278欧美一区二区三区| 四虎免费视频| 亚洲成人无码影院| 97欧美久久久久久久| 欧美国产精品久久九九| 99啪啪| 亚洲色图第四色| 中文字幕AV乱伦| 综合网,亚洲,欧美| 欧美懂色综合网| 四色永久成人网站| 麻豆一区二区三区在线看| 亚洲天堂AV在线播放| 日本 免费 一区二区三区 久久香蕉| 精品欧美乱码久| 高清无码国产亚洲| 欧美精品亚洲精品日韩传电影| 女同女同恋久久级三级| 国产丰满少妇久久久精品影院| 白丝AV| 91色综| 男人天堂欧美| 国产日本熟女顶级一区二区三区视频 | 欧美日韩不卡传媒| 成视频在线观看免费看| 舔人妻中文免费视频| 韩日性爱av| 中文字幕久久精品一区| 亚洲 一区二区 自拍| 美女网站黄页| 97精品国产97久久久| 青青久久艹| 丁香五月成人| 凹凸视频在线一区二区| 精品久久久久瑟瑟| 日韩性爱免费观看视频| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | www.狠狠干.coom| 激情欧美97| 天堂九九九九九九九九九| 91老熟女视频| 久久欧洲| 激情深爱五月天| 天天肏天天干| 99最新日韩偷拍视频| 色婷婷香蕉| 亚洲日韩电影| 欧美日韩国产电影| 一区二区三区精品视频| 先锋女优在线观看视频| 亚洲综合性感在线| 草草网站影院白丝内射| 91欧美经典| 欧美日本久久精品一区 | 九九久久精品| 精品人妻一区二区三区四区石在线| 欧美丝袜激情| 曰韩成人免费视频| 日韩欧美性吧婷婷乱伦大香蕉| 亚洲综合113页| 日韩欧美亚洲一区二区三区影院| 国产精品久久久久久久久久久久久久吹 | 熟妇xxxxx性春色| 天天影视网色欲色香| 亚洲精品视频在线| 久久精品 六十路 熟女 欧美| 人妻 制服 日韩 中文 在线| 1024人妻| 日韩精品人妻一| 九九九九AV| 欧美色图 人妻| 亚洲性综合9| 99性爱在线观看| 99热这里只有精品18| 亚洲综合性网址| 婷婷五月在线视频| 插穴性爱视频在线观看| 家庭乱伦麻豆| 色原狠狠天天天| 蜜桃不卡一区二区| 免费看毛片操穴| 成人乱码一区二区三少妇| 九九九九9999| 91老妇女| 蜜臀av中文字幕| 青青草视频久久久久| 99自拍视频在线观看| 女同女同恋久久级三级| 小日子操bb在线看| 性饥渴少妇av无码毛片| 99亚洲精品| 欧美精品97| 一本色道人妻久久| 97欧美色| 久久久9 9 9精品| 亚洲色香| 日本超碰97日韩精品人妻| 99re这里只有精品中心播放 | 黄色成年| 青青青青青手机视频| 天天综合网AV91| 久久久久久久78| 精品少妇后入一区二区三区四区人妻巨乳| 韩国一级婬片A片AAAAA| 国产亚洲精品自在线亚洲情侣| 国产一区二区精品久久99| 乱伦熟女论坛| 国产内射爽爽大片| 亚洲欧美一区二区网址| 久久国产AⅤ| 91亚洲色图| 诱惑网综合| 78超碰| 美女91| 日本精品五区| 色色色日本| 欧美性爱第一页久久| 秋霞网无码| 久久伊人最新网址视频| 亚洲激情在线观看一区| 精品中文字幕一区二区| 国产美女高潮叫床视频| 99操| 高清不卡视频| 男人把坤坤插入女人的下体| 国偷自 一区二区| 色欲久久99精品久久| 97爱爱官网| 亚洲色图A| 青草综合| 国产亚州精品美女久久久免费| 日本韩欧美在线播放a| 五月丁香激情综合| 日韩女优中文字幕| 欧美精品三区| 欧美色97| 午夜福利国产欧美日韩夜夜| 亚洲欧综合另类无码一区| 国产成人bd在线观看| 国产精选三级在线观看| 精品少妇后入一区二区三区四区人妻巨乳 | 99爱久久视频频| 亚州 综合 色图| 人人操人人精品影片| 久热最新在线杭州| 久久精品久久九九精品| www.狠狠| 欧美白嫩在线放| 黑人精品欧美一区二区蜜桃| 麻豆国产精品午夜视频| 国产精品秘 福利姬在线观看| 蜜臀av一区二区三区免费观看| 欧色综合| 97色欧洲| 亚洲一区二区久久久久| 伊人影院中文字幕| 日本免费二区三区| 亚洲,日韩,欧美,成人播放| 爱做久久久久久| 宗合情欲网| 日本道人妻久久久在线不卡色视频| 97国产人人| 午夜爽爽爽在线观看永久入口姬片| 色综合九九| 自拍欧美| 亚欧无码线免费观看视频| 久久一级无码精品毛片6| 99热97| 亚州高清AV| 亚洲免费成人在线高清无码视频| 熟妇熟女视频一区二区三区| 天天操天天日青青草超碰av| 搡老女人老妇女AAA一VU麻豆| 国产久久一区二区午夜| 久久超碰天天| 欧美人妻久久精品二区三区| 欧美在线啊啊啊 | 91精品国产综合久久久蜜臀| 天天久久久久久| www.久久最新地址| 樱花草社区www中国| 日韩小电影| 久/久精品99看9| AV色五月| 亚洲av影音先锋| 神马久久久久久久久久| 成人精品无码| 啊啊啊啊啊操我视频| 国产精品播放| 丰满人妻一区二区三区| 东京热毛片调教| 成人性爱电影一区二区| 青青草中出视频| 99精品久久久久久久婷婷| 亚洲人妖网| 国内精品久久人妻性色av| 十八禁网站在线| av三级电影在线播放| 欧美 亚洲 制服 精品| 密臀成人视频久久久| 亚洲精品一区二区三区在线播放| 日本黄页视频在线观看| 久久久久九九九| 色婷婷一区二区三区久久午夜| 欧美aa一级片| 日韩电影中文字幕| 蜜臀久久久久久999| 啊啊啊啊啊啊在线| 97一区二区蜜臀| A 天堂| 色情亚洲日本成人| 免费观看国产小粉嫩喷水精品午| 9999九九九久久久| 色婷久久| 色图综合网| 99www.bibizy香蕉资源国产一区二区三区高清 | 日韩av影片在线观看| 超碰偷拍| 国模限制级电影| 狠狠色伊人亚洲综合网站色| 新97国产超碰| 国产激情在线观看| 综合伊人网12色| julia中文字幕在线观看| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲区限制级 99| 男人的天堂不卡一区二区| 亚洲影院成人| 久湿久久| 精品四五区| 操日韩第| 亚洲欧美黄| 青青草男人天堂| 国产欧美一区激情交| 亚洲激情视频| 成人一级二级| 欧美激情亚洲色图| 欧美日韩岛国大片在线观看| 91在线欧美| 伊人伊人LD| 人妻久久久久久| 日本高清免费一本视频在线观看| 日本五区不卡| 蜜桃色院一区久久| 久操综合在线| 久草国产在线视频| 亚洲无码 国产无码| 九九九九97| 日韩在线女优天天干| 日韩欧美俄罗斯A片| 久久精品国产亚洲AV先锋| 欲女人妻性色av| 国产九九久久久精品| 手机看av网站在线看| 免费中文综合精品| 美女91| 2003天天干夜夜操| 中文字幕久久精品一区| 97干在线看| 亚洲激情AV| 乱伦AVxx| 波多野结衣先锋影音| 中文字幕精品探花视频| 日韩无码人妻中字久久三区四区| 亚热日本熟女| 久久视网78| 久久久久无码| 你操综合| 三级三级三级日本99| 探花激情视频| 留下AⅤ黄色片| 国内偷自视频区视频综合| 亚洲超碰97| 易易A毛视频| 一二三四区电影| 美女让帅哥通她小鸡鸡| 国产精品久久久久久久久久久久久久久久 | 激情五月天丁香| 国产树林里野战在线看| 国产精品久久久久亚洲av | 日本五十路在线| 日韩 欧美 校园一区| 黄色二级片网站| 欧美日韩国产中文超碰| 欧洲综合视频| 大香蕉十区| 亚洲官网在线| 夜夜嗷嗷一区二区| 男人的天堂2000| 精品久久九| 天天日美女的B| 欧美色图人妻| 久久久成人免费av电影| 一本久久久精品| 中文字幕视频二区| 亚洲另类天堂| 久操操AV电影| 温婉少妇玩3p| 婷婷在线视频| 亚洲男人的天堂V| 97色诱| 精吧天堂| 久久精品无码一区二区三区| 蜜臀久久99精品久久久| 98人妻精品一区二区色欲| 操人人| 亚洲少妇综合在线播放| 久久婷综合| 97人肏| 97超视频在线观看| 亚洲在线A| 久久久久久久九九九九| 美女操逼A A| 国产白嫩漂亮KTV在线| 四虎影院成年人片| 天天淫人人妻日日色| 97视频7| 热久久无毒不卡| 亚洲图片欧美| 亚洲AV性爱电影| 97色色色| 欧美久久久| 91欧美色| 国产h片在线观看视频| 亚洲丁香花色| 久久久熟妇熟女国产| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 天天视频黄网站| 思思热在线| 91天射| 久久春色| 激情视屏国产乱伦强奸| 久久久久性熟视频| 一区二区播放| 国产强奸乱伦xd| 激情六月天| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 久久久久密臀视频| 大色综合| 色99视频| 啊啊啊不要嗯嗯在线观看| 欧美性第一页| 久热9| 欧美 综合 亚洲| 日韩国产精品人妻无码久久久| 亚洲欧美国产其他二区| 久久久中文版| 亚洲国产精品久久AV| 国产成人久久久精品免费AV| 99操碰| 97超碰人人操人人操| a网站免费观看| 操逼网站地址| 清清草影| 中文字幕欧美日韩三级| 天天色综亚洲91污| 四虎免费看黄| 探花视频免费观看国产专区| 婷婷色在线| 欧美洲精品一级| 日本三级A片网站com| 精品四五区| 久久久久久综合久久伊人蜜月| 欧美日韩 强奸乱伦| 麻豆福利视频导航| 屁股久久久久久| 成人看片网站| 亚洲区 欧美区| 久久伊人五月天| 91男人综合| 性做久久久久久免费观看软件| 青草影院内射高潮| 久久直播国产| 熟妇激情| 99久久综合网| suv精产一二三区| 大香蕉人妻| 天天92av| 男人的天堂激情| 无码人妻一区二区三区色欲aⅴ| 性感女人网页在线观看视频| 国产成人亚洲精品无| 日韩乱码av| 尤物网站91| 看黑丝美女操逼青青网站| a片在线播放| 欧美丝袜激情| 国产av波波国产精品| 精品久久九| 99精品成人免费看| 日韩大香蕉AV影片| 综合久草| 亚洲国产精品9999在线观看| 东京热大香焦| 色吧综合网| 中文字幕蜜乳av| 欧美日韩人人早| 国产精品一级特黄aaa大片在线观看| 97干综合网| 成片免费播放| 国产91福利小视频在线观看| 欧洲与亚洲欧美精品中文字幕| 久久激情亚洲精品无码?V| 亚洲极品| 国产视频三区四区| 亚洲无码?第一页| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 人妻啊啊人妻啊| 亚洲无无码αⅴ每日更新| 不卡一区视频| 亚洲 欧美 91| 脫衣舞一区二区三区| 91n处女在线观看| 97网址www| 黄片aaaaa一区| 上特色A在线| 学生妹天天看| 欧美在线官网| 嫩草影院永久在线制服丝袜| 香蕉99秘 一区精品蜜桃臀| 午夜人妻精品综合在线| 内射老妇BBWX0C0CK| 香蕉大久久久| 91neishe| 亚洲蜜桃V妇女| 天天上日日上日韩精品| 麻豆黄站| 欧美一二在线| 91 刺激在线| 国产一区二区a毛片| 超碰97 线线 在现| 物业黑人 AV一区| 欧美熟妇乱码在线一区| 自拍偷拍2025在线观看| 男女猛烈无遮掩视频免费软件| 一区超碰一区| 日本99一区二区| 女人的久久久| 国产 三级自拍| 亚洲精品性爱片| 91色色网站| 久久熟女嫩草成人片免费| 超碰在线人妻不卡| 欧州色图区| 免费人成?大片在线播放| 亚洲 小说 欧美 激情 另类| 超碰在线免费一区二区三区| 日本孕妇孕交| 五十路熟女工口| 久久发布国产伦子伦精品| 狼人久草| 精品亚洲国产成人AV制服丝袜| 中文字幕一二区二三区人妻专区| 亚洲图片激情小说| 日韩三级av片| 99热在线只有精品| 我想要啊 啊 啊| 日日日大屁股骚女人精品| 97超碰天天爱天天爱| 在线观看AV不卡| 五月综合视频| 一区二区日韩欧美久久| 97在线精品| 日本久久精品| 中文字幕在线日亚州9| 操比国产| 国产三级日产三级韩国三级| 国产熟女免费观看久久| 视频黄色国产一级| 少妇3P性爱自拍| 天天干人人干天天日97| 亚洲国产精品无码AV在线| 伊人精品久久网站| 6080YYY午夜理论片在线观看| 成人26uuu| 伊人精品久久网站| 乱伦AVxx| 操99| 性吧在线视频| 91丝袜美腿网站| 岛国人妻少妇av在线观看| 一区二区三区 丝袜高跟| 超碰天天操| 在线五区| 超碰97男女| 欧美色网| 成人a级高清视频在线观看| 天堂а√在线最新版在线| 乱伦av麻豆| 欧洲熟妇xxXx欧美老妇裸体| 日韩三级一区 | 激情欧美97| 美女91网站| 7777奇米影视久久| 欧美日韩国内不卡| 大香交伊人网| 亚洲日韩青青草色月| 久久伦理视频久久大香蕉视频| 亚洲色综网| 午夜精品久久99蜜桃的功能章节| 人妻9117c| 男女激情黄色网址| 亚洲熟妇自偷自拍另欧美| 青青草吊丝| 搡老熟女国产1000部| 天天干18禁| 亚洲图片色图欧美另类| 欧美顶级黄片AAAAA在线免费看| 精品一区二区三区蜜桃臀赵总| 18岁禁 茉莉成人久久| chaopen97久久| 国产91影院| 五月天玖玖资源站| 国产四虎在线| 97操综合| 亚欧毛片基地国产毛片基地| 十八禁啪啦拍视频无遮挡| 色五月69夫妻| 日日躁夜夜躁狠狠躁超爽| 一级性爱啪啪视频| 人妻天堂综合网| 久久久久国产| 色哟哟 日韩精品| 蜜乳av首页| 9999亚洲电影| 思思热一热婷婷热一热| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 97精品一区二区三区免费| 一本色道久久综合亚洲二区三区| 另类图片天天影视| 亚洲啪啪视频一区二区| 丰满人妻一区二区三区四 | 欧美激情在线观看视频| 亚洲国产ⅴ高清在线观看| 亚洲日韩一区电影| 春色综合免费| 中文字幕亚洲永久精品| 日本三级人妻a人妻一在线| 亚洲图片视频小说| 操逼无码一区| 草久久久| 国产高清午夜成人在线观看| 婷婷色导航| 伊人午夜福利视频| 亚洲国产av中文字幕久久 | 激情一区二区| 色色婷| 日韩成人人妻网站| 中文字幕一区二区在线日韩精品| 久久不卡一区二区| 亚洲图片欧美| 水澄无码AV| 国产成人五月天丁香花| 1769精品一区二区三区| 亚洲系列欧美| 美國A片| 久久少妇人妻| 99国产在线 精品 视频| 天天干天天日天天射黄色片| 日韩欧美大片免费高清啪啪| 99热97| 中文字幕蜜乳av| 天天日日舔舔| 毛片久久| 欧美视频第二页| 老司机深夜18禁污污网站| 亚洲中文人妻色| 亚洲成人黄色在线观看| 91嫩草欧美| 91香蕉视频在线观看免费| 啊啊啊97视频| 无码最新| 久草成人影片| AV大香蕉| 秋霞怕怕片| 久久神马影院| 无码人妻丰满热妇又大又粗| 九九九只有精品| 五月婷婷六月丁香| 亚洲久久久久| 大香蕉在线视频重口味毛片在线| 一起草欧美| 十八禁电影伊人网| 激情综合五| 蜜臀久久99精品久久久电影| 熟女中出视频| 熟女色综合久久| 欧美性色欧美| 精品免费一区二区三区在线亚洲人成| 亚洲av综合伊人久久| 精品人妻一区二区三区夜夜| 多乙久久久久久| 亚洲人妻五月丁香婷婷| 亚洲s在线观看| 精品人妻av在线播放| 日韩欧美麻豆| 丝袜狠狠草尤物人妻av91| 在线色导航| 东北女人性交| 性色高清在线| 69精品久久久久中文字幕| 日韩欧美中文字幕搭讪巨乳美人妻视频| 伊人AAA| av一区二区三区四区| 99热这里只有精品1| 老女人爆菊| 91三级理论片播放器| 亚洲三级。日韩三级| av亚洲天堂资源网站| 乱伦系列一区二区| 91福利网在线观看| 密臀国产在线| 麻豆AV短剧| 日产狠狠干| 操逼操逼逼操操逼91| av中亚| 99热18这里只有精品| 国产精品老熟女一区二区| 亚洲国产婷婷在线播放| 97狠狠| 免费草草草草草视频| 青娱乐 成人娱乐在线| 亚洲av影院在线观看| 精品一区二区三区国产| 青青操日韩| AV在线资源| 日韩三四五区| 中文字幕av乱伦| 黄片国产精品一区二区| 欧成人精品H无码| 欧美综合自拍亚洲综合图| 亚洲 图片 欧美 色图| 九九激情网| 大伊香蕉在线视频免费| 日韩99精品视频综合区| 干超碰碰熟女| 日韩人妻无码不卡网站| 九九九九九九九九九九九蜜桃| 日本午夜福利视频| 欧美日不卡| 超碰99热| 成人性爱电影一区二区| 手机在线视频国内精品| 欧美日韩插逼视频| 日本一级真人黄色性爱视频| 日韩99999| www.久久超碰| 婷婷激情五月综合| 国产成人精品一区| 欧美亚州色的图| 嫩草影院永久在线制服丝袜| 天天做天天爱天天爽AV| 中文字幕视频在线观看一区二区| 亚洲丁香花色| 99自拍视频在线观看| 伊人黄色视频免费观看| 日韩精品1区2区中文字幕| 中国一级操逼视频| 免费观看国产小粉嫩喷水精品午| 美女天天干| 思思久热在线精品66| 亚洲成人激情小说视频| 亚洲国产另类在线中文| 天天看天天日| 日韩免费福利在线观看| 9国产超碰| 在线有码中文字幕| 日韩中文字幕视频| 黄片国产精品一区二区| 一类无码操逼视频| 亚洲国产精品无码AV在线| 色噜噜精品一区二区三| 熟女色综合久久| 亚洲AV无码国产精品久久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 无码日韩人妻av一| 国产成人精品亚洲日本| 亚洲人妻av| 欧美性猛交美女自慰91| 中文字幕视频2区| 午夜精品久久久久久久99热影院| 丝袜av一区二区三区| 久久一区二区加油站| 亚洲另类色综合网站| 丰满人妻一区二区三区四区| 亚洲国产综合视频| 91久久免费视频互動交流| 熟女五十路一区二区三| 国产AV超爽| 中文字暮97| 麻豆一区在线| 欧美精品亚洲精品日韩传电影| 欧美日韩欧美| 日韩在线欧美精品一区二区| xxx0国产在线播放| 九九综合久久| 欧美激情欧美精品| 国模91| 精品视频久久| 日本成人A片网站| 久久性视频| 亚洲综合码| 欧美精品,四区。五区| 伊人网高清| av在线观看不卡网站| 99啪啪视频| 啊啊啊啊啊在线视频| 狠狠97| 岛国免费视频在线| 黄网色一区二区三区四区精品| 天天影视网综合少妇| 伊人网在线视频| 97天天| 乱伦图一区| 91色碰| 曰本特级特黄特色黄色A级网站高清在线免费看 | 3PAV乱伦视频| 99久久精品无码一区二区| 六月丁香五月婷婷| 亚洲一二三| 97爱爱爱| 手机看片1025| 国厂麻豆77q4| 91精品91久久久久77777俄罗斯老妇姓x| 国产精品成人无码a v毛片| 天天综合精品| 日韩久草| 成人免费毛片| 色色色色色色色色色色色色色色综合| 天堂资源站| 91精品无码久久久久久久| 综合色啪| 色五月激情AV在线| 丰满美女一级毛片在线播放| 99操| 91在线一起| 亚洲欧美自拍偷拍| AV天堂电影网| 大奶的诱惑| 国产精品一区二区黄片| 色综合99999| 欧美18老人禁| 极品五月天噜噜| 天堂亚洲欧美| www.色婷婷色综合| 激情五月天校园春色网| 看免费一级在线播放毛片| 欧美少妇熟女| 丰满人妻-区二区三区免费看| 欧美劲爆视频一区二区| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 岛国1区2区3区在线观看| 日韩97超碰中文字幕| 狠狠入| 91狠狠色丁香婷婷综合久久精品| 日韩电影免费网站麻豆视频| 强奸乱伦大香蕉| 超碰97最新人妻| 伦激情人妻另类人妻| 中美日韩毛片| 天天视频黄| 97超碰无码网| 三级日韩一区二区三区| 美腿色图| 一级AV性爱| 久久久久久91香蕉国产| 91看黄片| 超碰碰激情97+久| 日韩亚洲精品一区二区| 久久久久大香青草精品综合| 少妇人妻好深太紧了vr91| 日日夜夜草草草| 国产熟女完整版中字| 精品中文一区二区| 操逼视频免费日韩无码| 日本不卡免费二区| 国产激情久久久| 麻豆成人影音在线| 精品久久久av| 欧美日韩黄片精品在线| 91精品国久久久久久无码| 国产区91柔拿会所技师| 天天干1区2区在线| 婷婷色色网| 亚洲欧美电影| 操日韩第| 久久久99999久网站| 亚洲国产av中文字幕久久| 熟女天天干| 精品高清一区二区三区三州| 色网综合网| 九九黄色视频在线观看| 久久老熟女| 超碰97精品在线| 国产精品午夜福利亚洲综合网| 超硑97精品| 久久久无码av精| 人妻91少妇| 亚洲射综合网| 无码操逼网| 97碰碰色| 天天享受天天看| 亚洲操逼视频网站| 91内射| 色男人色天堂东京热| 日韩精品一区二区三区色欲| 男人的午夜天堂| 素颜老阿姨乱情色| 激情色色| 一本色道久久天天射天天干| 亚洲综人| 欧美最婬乱婬爆婬性视频 | 熟妇人妻精品一区二区| 欧洲中文字幕| 91强热人妻| 亚洲九九九| 亚洲女人毛茸茸91| 91啪9色| 亚洲精品精品一区二区| 色吧5亚洲| 久久婷婷苹果| 亚洲自拍一区夜夜操| www.超碰| 色嗨嗨在线| WWW.操逼.COM| 成人日本片久久久蜜桃| 内射黑人| 婷婷五月丁香五月| 亚洲导航深夜福利| 人妻性爱一区二区| 深喉吞精| 欧美综合网1| 亚洲综合网图| 婷婷五月天av| 亚洲五码一区二区三区| 欧美Ⅴ性爱| 高清视频一区| 久久中久文96| 欧美日韩婷婷中文| 老鸭窝亚洲毛片| 日韩成人电影AV| 顶级丝袜熟女一区二区三区| 亚洲婷婷丁香在线| 日曰骚久久精品| 日本久久999| 艳尻美人妻| 男人的天堂.com| Julia在线播放亚洲久久| 成人免费福利在线观看| 精品亚洲一区在线观看| 啊啊啊啊啊啊好多水| 青青草在线视频美女| 欧美一级专区免费大片 | 国产对白刺激视频| 亚洲福利影院一区久久| 91熟女丨91老女人| 欧美日综合| 中文字幕av一区二区三区人妻少妇| 精品176精品2| 超碰1024久久| 亚洲精品欧美专业| 操我啊啊啊啊啊| 日韩在线视频1234| 麻豆精品久久久久久久| 亚洲国产第一页综合视频| 色婷婷色99国产综合精品| 久久性爱免费送| 91黑人无码激情在线| 人妻乱仑一区二区三区| 囯产精品久久久久久久久久梁医生 | 思思热免费视频观看| 亚洲日韩美国人妻| 无码最新| 国产h片在线观看视频| 日韩人妻一二三区视频| 欧美国产精品| 蜜乳AV一区| 玖玖爱免费观看视频| 国产精品蜜乳AV| 国产精品久久久鸭无码的功能| 亚州操逼网| 久久五月天婷婷| 床上啊啊啊一区二区三区| 亚洲综合网电影91| 成人精品电影| 91成人国产综合久久精品蜜月| 91色伦综合| 久久精品一区一起草| 超碰97男女| 亚洲一区二区三区在线激情| 国产精品99精品视频网站|