日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

輕量級(jí)規(guī)則引擎ruflo實(shí)戰(zhàn):從設(shè)計(jì)到集成的完整指南

輕量級(jí)規(guī)則引擎ruflo實(shí)戰(zhàn):從設(shè)計(jì)到集成的完整指南 “ruflo”這個(gè)名字第一次出現(xiàn)在我項(xiàng)目文檔里的時(shí)候其實(shí)挺隨意的。當(dāng)時(shí)我正被一堆復(fù)雜的規(guī)則配置搞得頭疼就想做一個(gè)足夠輕、足夠快、能直接嵌進(jìn)現(xiàn)有業(yè)務(wù)系統(tǒng)里的規(guī)則引擎。折騰了大半年代碼寫了刪刪了寫最后沉淀下來一套自認(rèn)為還算趁手的工具名字就叫 ruflo。這篇文章不聊虛的架構(gòu)也不堆概念就實(shí)打?qū)嵉匕裷uflo從設(shè)計(jì)思路到落地部署的關(guān)鍵細(xì)節(jié)拆開講講包括我踩過的坑和一些你可能也會(huì)遇見的頭疼問題。1. 為什么是ruflo從一個(gè)“被規(guī)則逼瘋”的項(xiàng)目說起1.1 核心需求與定位先說清楚ruflo解決什么問題。在很多后臺(tái)系統(tǒng)里業(yè)務(wù)邏輯并不是鐵板一塊它經(jīng)常變。比如促銷活動(dòng)的滿減規(guī)則、風(fēng)控系統(tǒng)的攔截策略、審批流程的節(jié)點(diǎn)判斷今天還是“滿300減50”明天就可能變成“會(huì)員專享滿200減30再疊加優(yōu)惠券”。如果這些邏輯全都硬編碼在Java或者Go代碼里每次改需求都要走一遍發(fā)布流程光等發(fā)版可能就要半天。ruflo的定位非常明確一個(gè)輕量級(jí)的、可直接嵌入業(yè)務(wù)代碼的規(guī)則流程引擎。它讓你把“可變的那部分決策邏輯”從代碼里抽出來用一套簡(jiǎn)單的描述文件去表達(dá)然后ruflo負(fù)責(zé)解析、加載、執(zhí)行并把結(jié)果返回給你的業(yè)務(wù)系統(tǒng)。本質(zhì)上它干的活就是把“規(guī)則”和“業(yè)務(wù)”解耦。1.2 為什么不用Drools等重型框架很多人一聽到規(guī)則引擎第一反應(yīng)就是Drools。確實(shí)Drools功能非常強(qiáng)大有完整的BRMS生態(tài)有GUI工作臺(tái)有復(fù)雜的推理能力。但用下來你會(huì)發(fā)現(xiàn)在小團(tuán)隊(duì)、輕業(yè)務(wù)的場(chǎng)景里它有些“殺雞用牛刀”。我記得第一次給一個(gè)中等復(fù)雜度的營(yíng)銷系統(tǒng)接Drools的時(shí)候光把規(guī)則包打出來就費(fèi)了半天勁然后又是一堆KIE Base的配置團(tuán)隊(duì)里的新同學(xué)光理解Session和Fact的概念就花了一個(gè)星期。提示Drools適合那種規(guī)則極度復(fù)雜、需要規(guī)則專家參與建模、甚至需要?jiǎng)討B(tài)熱更新規(guī)則的超大型系統(tǒng)。如果你的項(xiàng)目只有十幾條、幾十條規(guī)則團(tuán)隊(duì)也不養(yǎng)專門的規(guī)則工程師那引入它大概率是給自己找麻煩。ruflo的設(shè)計(jì)理念恰恰是反過來的“夠用就好別端著”。它沒有復(fù)雜的推理機(jī)也不需要你理解一堆抽象概念。你只需要知道三個(gè)東西Flow流程、Node節(jié)點(diǎn)、Action動(dòng)作。一個(gè)Flow就是一條或一組規(guī)則的集合Node是流程中的一個(gè)判斷點(diǎn)Action是判斷通過后要執(zhí)行的邏輯。就這么簡(jiǎn)單。1.3 適合誰來用如果你符合下面這些描述ruflo可能會(huì)幫上大忙后端開發(fā)為主不想為了幾條規(guī)則額外部署一個(gè)獨(dú)立的規(guī)則服務(wù)。產(chǎn)品經(jīng)理經(jīng)常改活動(dòng)規(guī)則你想把改規(guī)則的工作“移交”給運(yùn)營(yíng)或產(chǎn)品自己操作前提是你做了簡(jiǎn)單的頁(yè)面或配置文件下發(fā)。系統(tǒng)里有一部分多分支的判斷邏輯用if else寫起來實(shí)在太丑維護(hù)成本高想換成聲明式的配置。你需要一個(gè)輕量級(jí)的框架內(nèi)核支持二次開發(fā)又不是特別依賴社區(qū)生態(tài)。2. ruflo的整體設(shè)計(jì)思路與核心機(jī)制2.1 設(shè)計(jì)的首要原則把“變化”和“穩(wěn)定”分開這是個(gè)老生常談但真正執(zhí)行起來很難的原則。在ruflo里穩(wěn)定的是執(zhí)行引擎也就是加載規(guī)則、遍歷節(jié)點(diǎn)、判斷條件、執(zhí)行動(dòng)作那一套流程變化的是具體的規(guī)則內(nèi)容比如條件參數(shù)、閾值、動(dòng)作類型。這個(gè)劃分直接決定了ruflo的架構(gòu)。它的核心引擎大概分成三個(gè)模塊解析器Parser、調(diào)度器Scheduler、執(zhí)行器Executor。解析器負(fù)責(zé)把規(guī)則描述文件轉(zhuǎn)換成內(nèi)存中的節(jié)點(diǎn)樹數(shù)據(jù)調(diào)度器負(fù)責(zé)決定下一步該走到哪個(gè)節(jié)點(diǎn)執(zhí)行器負(fù)責(zé)真正跑Action邏輯比如調(diào)用一個(gè)HTTP接口、讀寫一次數(shù)據(jù)庫(kù)、或者更新一個(gè)變量值。2.2 規(guī)則描述文件怎么設(shè)計(jì)第一版ruflo我用的是JSON格式來描述規(guī)則。JSON的好處是通用生態(tài)好很多語言都有現(xiàn)成的庫(kù)。但實(shí)際跑了一陣子之后發(fā)現(xiàn)對(duì)于稍微復(fù)雜一點(diǎn)的條件表達(dá)式JSON寫起來非常難受。比如你要表達(dá)一個(gè)“用戶是VIP并且訂單金額大于500或者用戶是體驗(yàn)官”這樣的邏輯用JSON表示會(huì)產(chǎn)生層層嵌套的樹狀結(jié)構(gòu)可讀性很差。后來我改成了一種自創(chuàng)的輕量表達(dá)式語法核心邏輯就是“節(jié)點(diǎn)條件動(dòng)作”三段式。一個(gè)最簡(jiǎn)單的Flow長(zhǎng)這樣flow: id: vip_rule start: check_vip nodes: - id: check_vip type: condition expression: ${user.level VIP order.amount 500} true_next: grant_discount false_next: reject - id: grant_discount type: action action: apply_discount params: rate: 0.8 - id: reject type: action action: reject_order params: reason: not_vip用YAML格式描述靠縮進(jìn)和短橫線來表達(dá)層級(jí)關(guān)系人眼掃一遍就能看懂。更重要的是運(yùn)營(yíng)或者產(chǎn)品同學(xué)稍微培訓(xùn)一下也能照著文檔改規(guī)則而不像JSON樹那樣容易把括號(hào)配錯(cuò)。2.3 核心執(zhí)行機(jī)制節(jié)點(diǎn)驅(qū)動(dòng)ruflo的執(zhí)行機(jī)制是“節(jié)點(diǎn)驅(qū)動(dòng)”而不是“組件驅(qū)動(dòng)”。什么意思傳統(tǒng)的業(yè)務(wù)流程引擎比如Activiti強(qiáng)調(diào)的是流程狀態(tài)流轉(zhuǎn)它得管理流程實(shí)例的當(dāng)前狀態(tài)、歷史記錄、待辦任務(wù)運(yùn)維上面向的是“一條流程的生命周期”。ruflo沒那么重它更看重的是“一條數(shù)據(jù)進(jìn)來經(jīng)過哪些節(jié)點(diǎn)判斷最終得到什么結(jié)果”。所以它的執(zhí)行邏輯非常直接從start節(jié)點(diǎn)進(jìn)入遇到condition節(jié)點(diǎn)就算表達(dá)式根據(jù)true/false找對(duì)應(yīng)的下一跳走到action節(jié)點(diǎn)就干活直到遇到end節(jié)點(diǎn)。用個(gè)不太恰當(dāng)?shù)念惐认衤嬂锏臒嵫鹘顷J關(guān)每個(gè)房間可能是個(gè)岔路口也可能是個(gè)BOSS戰(zhàn)最后到了終點(diǎn)就通關(guān)。這個(gè)設(shè)計(jì)有一個(gè)好處性能可控。因?yàn)椴簧婕傲鞒虒?shí)例的持久化和狀態(tài)恢復(fù)ruflo執(zhí)行一條規(guī)則鏈的時(shí)間主要消耗在表達(dá)式求值上。實(shí)測(cè)下來在純內(nèi)存環(huán)境下單條簡(jiǎn)單規(guī)則鏈的執(zhí)行耗時(shí)在微秒級(jí)就算加上數(shù)據(jù)庫(kù)訪問動(dòng)作也就多幾個(gè)毫秒對(duì)于絕大多數(shù)業(yè)務(wù)場(chǎng)景完全夠用。3. 實(shí)操把ruflo集成到真實(shí)項(xiàng)目的完整步驟3.1 環(huán)境準(zhǔn)備與依賴引入我自己的主力語言是Javaruflo最早的版本也是用Java寫的所以這篇文章以Java生態(tài)為例。不要被嚇到核心思路是一樣的。在pom.xml里引入依賴dependency groupIdcom.ruflo/groupId artifactIdruflo-core/artifactId version1.2.0/version /dependency如果你是Gradle項(xiàng)目對(duì)應(yīng)的寫法是implementation com.ruflo:ruflo-core:1.2.0引入依賴之后用一行代碼就可以初始化引擎RuleEngine engine new RuleEngineBuilder() .withResource(classpath:rules.yml) .build();這里有個(gè)小細(xì)節(jié)必須提醒一下withResource支持 classpath、本地文件系統(tǒng)和遠(yuǎn)程URL三種方式。如果是遠(yuǎn)程URLruflo默認(rèn)會(huì)緩存遠(yuǎn)程配置的hash值定期輪詢變更這樣你改完遠(yuǎn)程配置客戶端最多延遲一個(gè)輪詢周期默認(rèn)60秒自動(dòng)加載新規(guī)則不需要重啟應(yīng)用。這個(gè)特性在后續(xù)“動(dòng)態(tài)更新”環(huán)節(jié)簡(jiǎn)直救命。3.2 定義你的第一條規(guī)則鏈我們用一個(gè)非常貼近實(shí)戰(zhàn)的場(chǎng)景來演示電商訂單的優(yōu)惠計(jì)算。假設(shè)業(yè)務(wù)需求是這樣的用戶等級(jí)是VIP且訂單金額滿500元享受85折優(yōu)惠。用戶等級(jí)是普通會(huì)員但有優(yōu)惠券碼享受95折優(yōu)惠。其他情況不優(yōu)惠但訂單金額超過1000元時(shí)會(huì)送一張平臺(tái)優(yōu)惠券。用ruflo來表達(dá)就是這樣的一個(gè)Flowflow: id: discount_calc start: check_vip nodes: - id: check_vip type: condition expression: ${user.level VIP} true_next: check_amount_vip false_next: check_coupon - id: check_amount_vip type: condition expression: ${order.amount 500} true_next: apply_vip_discount false_next: no_discount - id: check_coupon type: condition expression: ${order.couponCode ! null order.couponCode ! } true_next: apply_coupon_discount false_next: check_big_order - id: apply_vip_discount type: action action: applyDiscount params: rate: 0.85 - id: apply_coupon_discount type: action action: applyDiscount params: rate: 0.95 - id: check_big_order type: condition expression: ${order.amount 1000} true_next: send_gift_coupon false_next: no_discount - id: send_gift_coupon type: action action: sendCoupon params: type: platform_gift - id: no_discount type: action action: noop注意看這里處理了一個(gè)邏輯細(xì)節(jié)VIP用戶如果金額不夠會(huì)直接走到no_discount不會(huì)再判斷是否用優(yōu)惠券。這符合常規(guī)的業(yè)務(wù)理解——優(yōu)惠策略互斥只取最高優(yōu)先級(jí)。如果你的業(yè)務(wù)規(guī)則是“優(yōu)惠可疊加”那這個(gè)流程圖就要調(diào)整把check_coupon放到兩個(gè)分支的后面。這個(gè)經(jīng)驗(yàn)很重要規(guī)則引擎不只是把條件翻譯成機(jī)器語言它也是業(yè)務(wù)語義梳理的過程。3.3 在業(yè)務(wù)代碼里執(zhí)行規(guī)則規(guī)則文件有了引擎也有了最激動(dòng)人心的時(shí)刻來了——在代碼里跑起來。執(zhí)行邏輯很簡(jiǎn)單把上下文對(duì)象傳給引擎引擎返回結(jié)果// 構(gòu)建上下文 MapString, Object context new HashMap(); context.put(user, userInfo); // 用戶信息對(duì)象 context.put(order, orderInfo); // 訂單信息對(duì)象 // 執(zhí)行業(yè)務(wù)規(guī)則 RuleResult result engine.execute(discount_calc, context); // 從結(jié)果中提取修改后的數(shù)據(jù) DiscountInfo discountInfo result.getOutput(applyDiscount, DiscountInfo.class); if (discountInfo ! null discountInfo.isApplied()) { // 更新訂單金額 order.setDiscountedAmount(order.getAmount() * discountInfo.getRate()); } // 如果是大單還有贈(zèng)券 if (result.isNodeExecuted(send_gift_coupon)) { couponService.issueGiftCoupon(userInfo, platform_gift); }這里我特別想分享一下RuleResult的設(shè)計(jì)取舍。execute返回的結(jié)果里既有最終的輸出數(shù)據(jù)也有“哪些節(jié)點(diǎn)被實(shí)際執(zhí)行過”的標(biāo)記。為什么要留這個(gè)標(biāo)記因?yàn)樵趯?shí)際業(yè)務(wù)里你不僅關(guān)心規(guī)則跑完的結(jié)果還經(jīng)常需要知道“這條規(guī)則鏈到底走了哪個(gè)分支”這直接影響后續(xù)的業(yè)務(wù)補(bǔ)償邏輯。比如訂單需要記錄優(yōu)惠原因就需要知道是VIP折扣還是優(yōu)惠券折扣。傳統(tǒng)做法是在Action里回寫一個(gè)標(biāo)志位到contextruflo直接把節(jié)點(diǎn)執(zhí)行記錄暴露成API省去了這個(gè)額外的維護(hù)。3.4 接入動(dòng)態(tài)配置中心這才是ruflo作為“靈活工具”的最閃光之處。我們把規(guī)則文件從jar包內(nèi)移到Nacos或Apollo等配置中心然后通過“加載器”讓規(guī)則內(nèi)容動(dòng)起來。ruflo提供的動(dòng)態(tài)加載邏輯其實(shí)不復(fù)雜核心是三個(gè)元素一個(gè)遠(yuǎn)端存儲(chǔ)保存規(guī)則內(nèi)容。一個(gè)輪詢線程定時(shí)拉取遠(yuǎn)端內(nèi)容和本地內(nèi)存中的版本做對(duì)比。一個(gè)原子替換有新版本時(shí)把運(yùn)行中的節(jié)點(diǎn)樹整體原子替換不影響正在執(zhí)行的請(qǐng)求。我實(shí)現(xiàn)了一個(gè)Nacos加載器代碼結(jié)構(gòu)大概是public class NacosRuleLoader implements RuleLoader { private final ConfigService configService; private final String dataId; private final String group; Override public RuleSource load() { String content configService.getConfig(dataId, group, 5000); return new RuleSource(content, VersionUtil.md5(content)); } Override public boolean watch(RuleEngine engine) { configService.addListener(dataId, group, new Listener() { Override public void receiveConfigInfo(String configInfo) { engine.refreshFlow(RuleSource.from(configInfo)); } }); return true; } }接入動(dòng)態(tài)加載之后每次規(guī)則調(diào)整只需要在配置中心的界面里改一段YAML保存幾十秒內(nèi)所有實(shí)例都會(huì)自己熱更新。我試過在生產(chǎn)環(huán)境跑這種模式一次規(guī)則發(fā)布從“提工單改代碼、測(cè)試、走發(fā)布單”變成“配置中心點(diǎn)一下保存鍵”整個(gè)鏈路從小時(shí)級(jí)縮短到秒級(jí)。這個(gè)體驗(yàn)的提升用的時(shí)候才能真切感受到。4. 常見問題與排查技巧實(shí)錄4.1 變量為空導(dǎo)致的表達(dá)式空指針這是所有用規(guī)則引擎的人遇到的第一個(gè)坎。比如上面的表達(dá)式${user.level VIP}如果上下文里壓根沒傳user對(duì)象或者傳了user對(duì)象但level字段是null表達(dá)式直接拋空指針整個(gè)流程啪一聲掛了接口返回500措手不及。我踩了好幾次坑之后才養(yǎng)成一個(gè)強(qiáng)制習(xí)慣所有規(guī)則里的變量在入口處做一次完整校驗(yàn)。ruflo也提供了一個(gè)便捷解法在表達(dá)式引擎里對(duì)空值做短路處理——取屬性時(shí)如果對(duì)象為null返回null而不拋異常然后null做等值判斷就正常走false分支。這樣至少保證流程不崩。不過還是強(qiáng)烈建議在業(yè)務(wù)層把必填參數(shù)校驗(yàn)做在前面。規(guī)則引擎是業(yè)務(wù)判斷的最后一環(huán)不是數(shù)據(jù)校驗(yàn)的第一道防線。4.2 規(guī)則生效了但結(jié)果和預(yù)期不一致比規(guī)則不生效更讓人崩潰的是規(guī)則看起來生效了但結(jié)果跟預(yù)期不一樣。檢查半天發(fā)現(xiàn)原來是緩存問題多個(gè)Flow之間的ID重復(fù)了后加載的把先加載的覆蓋了。排查這個(gè)問題的步驟如下先看是不是規(guī)則內(nèi)容加載錯(cuò)誤。在配置中心或本地文件里搜FlowId確認(rèn)唯一性。再看是不是網(wǎng)關(guān)或緩存層攔截服務(wù)端返回了舊數(shù)據(jù)。最后看引擎日志里輸出的執(zhí)行軌跡把每個(gè)節(jié)點(diǎn)是否命中、變量快照打出來。ruflo提供了一種Debug模式開啟后會(huì)在日志里打印完整的執(zhí)行追蹤信息engine.setDebugMode(true);輸出長(zhǎng)這樣[ruflo] flowdiscount_calc, nodecheck_vip, expruser.level VIP, resulttrue [ruflo] flowdiscount_calc, nodecheck_amount_vip, exprorder.amount 500, resulttrue [ruflo] flowdiscount_calc, nodeapply_vip_discount, actionapplyDiscount, params{rate0.85}看到這個(gè)執(zhí)行軌跡基本一眼就能定位是條件寫錯(cuò)了還是參數(shù)傳錯(cuò)了。這也是ruflo讓我比較得意的地方不像某些黑盒框架出錯(cuò)之后你完全不知道它內(nèi)部發(fā)生了什么。4.3 性能瓶頸在哪里有朋友問過我ruflo扛得住高并發(fā)嗎我的回答是純執(zhí)行部分完全沒問題瓶頸一般出現(xiàn)在“加載規(guī)則”這一步。如果你的規(guī)則存儲(chǔ)在數(shù)據(jù)庫(kù)或配置中心每次業(yè)務(wù)請(qǐng)求都動(dòng)態(tài)加載規(guī)則再執(zhí)行那不僅性能差還很容易把配置中心拖垮。正確姿勢(shì)是啟動(dòng)或更新時(shí)把規(guī)則內(nèi)容加載到內(nèi)存運(yùn)行時(shí)只做讀操作。ruflo的核心引擎完全基于內(nèi)存數(shù)據(jù)結(jié)構(gòu)執(zhí)行不涉及IO所以它的擴(kuò)展能力真正取決于下游動(dòng)作。比如Action里調(diào)用了一個(gè)很慢的HTTP接口那無論規(guī)則引擎多快都白搭。4.4 一個(gè)容易被忽視的文本編碼坑最后分享一個(gè)非常隱蔽、絕對(duì)值得記下來的小問題。有一段時(shí)間產(chǎn)品的某個(gè)活動(dòng)規(guī)則在YAML文件里用了中文條件值比如“用戶偏好: 國(guó)潮風(fēng)”本地測(cè)試一切正常測(cè)試環(huán)境也正常一到生產(chǎn)環(huán)境就死活匹配不上。排查了一下午最后發(fā)現(xiàn)是生產(chǎn)環(huán)境的服務(wù)器默認(rèn)字符集不是UTF-8Java在讀取外部配置文件時(shí)用了平臺(tái)默認(rèn)編碼導(dǎo)致中文變成了亂碼。這個(gè)問題的解決倒是不復(fù)雜在啟動(dòng)參數(shù)里加上-Dfile.encodingUTF-8或者更保險(xiǎn)的做法在加載規(guī)則文件的時(shí)候顯式指定編碼new InputStreamReader(inputStream, StandardCharsets.UTF_8)5. 從使用ruflo到二次開發(fā)定制一個(gè)自己的集成方案5.1 預(yù)留的擴(kuò)展點(diǎn)設(shè)計(jì)ruflo不是一個(gè)封閉的黑盒它在設(shè)計(jì)之初就預(yù)留了兩個(gè)明確的擴(kuò)展點(diǎn)表達(dá)式函數(shù)和自定義Action。表達(dá)式函數(shù)擴(kuò)展可以讓你在規(guī)則里用自定義的判斷邏輯。比如你可以注冊(cè)一個(gè)函數(shù)isWeekend(date)來判斷日期是否是周末然后在規(guī)則表達(dá)式里直接寫${isWeekend(order.orderDate)}。這比硬寫一串日期計(jì)算邏輯要簡(jiǎn)潔得多。自定義Action更直接你只需要實(shí)現(xiàn)Action接口注冊(cè)到引擎里就能在流程文件中通過action字段引用它。public class RiskCheckAction implements Action { Override public ActionResult execute(ActionContext context) { // 你的風(fēng)控邏輯 return ActionResult.success(risk_pass); } }然后在規(guī)則文件的node里這樣引用- id: risk_check type: action action: riskCheck params: strategy: strict5.2 集成到Spring Boot的兩點(diǎn)心得很多人把規(guī)則引擎集成到Spring Boot項(xiàng)目里時(shí)只想到把引擎初始化成Bean卻忽略了兩件更重要的事情。第一件Action里可能需要調(diào)用Spring托管的Service。所以自定義Action的實(shí)例化不能簡(jiǎn)單地new而是要放到Spring容器里比如用Component注解然后在注冊(cè)到引擎時(shí)從容器里取。這樣Action才能正常用Autowired注入業(yè)務(wù)Service。第二件規(guī)則內(nèi)容最好做成可外部化的配置。不要讓規(guī)則文件跟代碼一起打包在jar里而是放到配置中心或獨(dú)立的配置目錄。這樣每次修改規(guī)則時(shí)不必發(fā)版這個(gè)我在前面3.4小節(jié)已經(jīng)詳細(xì)說過了。兩件事配合起來才真正發(fā)揮出規(guī)則引擎的靈活優(yōu)勢(shì)。5.3 二次開發(fā)的路線參考如果你想把ruflo改造成一個(gè)真正屬于自己團(tuán)隊(duì)的工具我建議按下面幾步來演進(jìn)第一版直接使用ruflo-core提供的API規(guī)則文件用git管理改動(dòng)走merge request。這個(gè)階段適合驗(yàn)證規(guī)則引擎在你團(tuán)隊(duì)的業(yè)務(wù)里是否水土不服。第二版接入配置中心規(guī)則可視化編輯配合一個(gè)簡(jiǎn)單的操作后臺(tái)讓運(yùn)營(yíng)同學(xué)直接提交規(guī)則變更。第三版擴(kuò)展表達(dá)式函數(shù)庫(kù)沉淀團(tuán)隊(duì)內(nèi)部常用的業(yè)務(wù)函數(shù)比如“判斷用戶是否在灰度名單”、“計(jì)算商品運(yùn)費(fèi)模板的最終價(jià)格”。第四版把規(guī)則執(zhí)行日志保存下來做規(guī)則命中的后臺(tái)分析和報(bào)表讓每個(gè)業(yè)務(wù)方直觀看到自己的規(guī)則被觸發(fā)了多少次。我個(gè)人在實(shí)際操作中的體會(huì)是階段之間的間隔不要太短。把第一版跑透確認(rèn)它的確能穩(wěn)定扛住線上流量再談可視化后臺(tái)和報(bào)表步子太大反而容易讓團(tuán)隊(duì)失去信心。6. 聊聊“規(guī)則”與“代碼”的邊界用了這么久規(guī)則引擎我越來越覺得它不只是一個(gè)技術(shù)工具更是一個(gè)團(tuán)隊(duì)協(xié)作的邊界梳理器。凡是經(jīng)常變化、需要業(yè)務(wù)人員參與決策的那部分邏輯比如優(yōu)惠計(jì)算、活動(dòng)配置、風(fēng)控閾值都適合剝離出來交給規(guī)則引擎而最終要保證穩(wěn)固的核心業(yè)務(wù)閉環(huán)比如訂單生成、支付流水還是要用嚴(yán)格的代碼來守護(hù)。這不是說代碼比規(guī)則更高級(jí)而是他們各自擅長(zhǎng)不同。代碼擅長(zhǎng)處理穩(wěn)定的、可測(cè)試的、需要強(qiáng)約束的邏輯規(guī)則擅長(zhǎng)處理靈活的、高頻調(diào)整的、允許一定業(yè)務(wù)試錯(cuò)成本的邏輯。把兩者配好比例系統(tǒng)才能又穩(wěn)又靈活。最后再分享一個(gè)小技巧如果你打算在團(tuán)隊(duì)里把規(guī)則引擎用起來不妨從一個(gè)很小的場(chǎng)景切入比如先試試訂單備注里的自動(dòng)分單邏輯三兩天的功夫就能做出一個(gè)Demo。讓團(tuán)隊(duì)成員親眼看到“改配置不用發(fā)版”的酸爽后推廣起來阻力就小多了。我敢說你只要試一次就會(huì)重新審視項(xiàng)目里那些寫得亂七八糟的if else大雜燴。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
yy少妇精品久久| 色五月亚洲| 中出欧美| 欧美亚洲厕所精品偷拍91 | 97在线观看| 欧美日韩大陆黑人少妇99| 天天干夜夜操一区二区| 女人天堂av在线播放| 91欧美美女日韩国产婷婷| 影音先锋视频在线| 久久后入制服| 女人综合网| 久久精品 六十路 熟女 欧美| 麻豆久久久久久久久丝袜| 懂色综合久久久| 欧美小说区视频区| 久久久久久久极品香蕉视频| 亚洲国产欧美中日韩成人综合视频| 91精品无码久久久久久久| 精品二区三四区五电影 | 91丨国产丨白浆秘 洗澡动漫| 亚洲啪啪视频一区二区| 四虎视频在线观看| 丰满人妻一区二区三区色-百度| 欧美激情综合| 天天操天天干一区二区 | 久久久性爱视频| 中文字幕精品探花视频| 97中文字幕一区| 精品成人无码| 欧美在线视频播放| 久久露脸国产老熟女| 日韩78m视频| 超碰在线1234区| 亚洲五月婷| 97视频免费在线| 亚洲无码 国产无码| 青青伊人久久| 久久国模av| 天天添天天干电影| 殴美牲| 欧美夜夜狠| 白嫩国模丰满一二三区| 久久精品中文字幕无码l| 嗯嗯嗯好爽| 麻豆传媒一区二区在线观看| 五月天色图影视| 亚洲图片欧美偷拍| 五月婷在线| 熟妇一区二区三区| 日韩精品作爱导航| 欧美熟妇成人一区二区| 日韩欧美亚欧在线视频| 亚洲 国产 精品一区| 国产麻豆一级精品视频| 91在线综合网| 最新9久久久9免费视频| 中文字幕精品乱码| 亚洲AV永久无码精品成人调教| 亚洲色棕合| 色色九区| 日逼国产| 欧美乱妇狂野欧美在线视频| 欧美日韩系列| 飘花国产午夜精品不卡| 天天干天天插| 久久久久极品| 91人妻精华帖| 老女人老91妇女老热女| 亚洲一级特黄大片在线播放91| 成人精品一区二区91毛片不卡| 欧美亚洲尤物久久| 成 人 影视 一区 二区 三区 四区| 日韩欧美经典在线观看| 美女黄码视频午夜| 日本人妻中文字幕精品| 亚洲av强奸乱伦| 殴美,日韩国产伦精品| 免费啊啊啊| 青青草一区二区高清无码视频 | 小情侣高清国产在线视频| 青青操狠狠撩| 亚州色站 日韩电影| 欧美性五月| 国产精品麻豆成人av| 国产区性爱在线视频秋霞豆| 三级片大波波| 一级乱伦网站| 97干在线看| 婷婷性网| 99热在线播放| 久久岛国| 性色一线| 最近2018中文字幕在线高清第一页| 黄色激情电影在线观看| 欧美综合第一| 超碰九区| 自拍盗摄一区| 人人摸人人添人人操 | 国产精品扒开腿做爽爽爽视频| 91xingse| 秋霞曰韩R级| 好吊色在线观看| 欧美亚洲丝袜人妻制服中文99| 亚洲精品第一| 久久内射| 97精品国产精品免费观看| 欧美精品庄| 骚逼高潮久久精品| 日本αv| 欧美色天堂网在线视频| 日韩成人性爱AV| 嫩草91| 日韩成人免费电影| 久久久精品中文字幕爱豆| 久久 亚洲 日韩 人妻| 国产隔壁老王影院在线| 骚货操死你| 国产在线76页| 桃花色综合影院| 亚洲在线A| 人人射人人操人人摸| 91白嫩| 超碰 另类 欧美| 国产小视频91| 中文字幕高清精品一区| 国色综合天| 成人久久久精品| 色五月婷婷麻豆在| 天堂中文资源在线bt| 国产精品一区二区三区免费视频| 操淫穴亚洲五月丁香| 日韩啪啪啪啪啪| 欧美成人四级在线播放| 少妇无码999| 中文字日本乱码| 九九九九精品在线| 精品9区| 奸色色 男人天堂 天天射| 欧美黄片欧美黄片xxx| 在线免费观看高清无码视频| 久久加勒比| 91AV国产精品| 91n处女在线观看| 啊啊啊好爽快点啊啊啊嗯嗯| A久久| 亚洲全色网| 国产三级中文字幕粉嫩| 骚熟女AV网| 欧美线天码中字| 美女91av| 国产免费内射视频| 国产精品扒开腿做爽爽爽视频| 日韩干B| 色一区二区三区综合| 佐山爱中文字幕| 天操老女人| 天堂涩涩| 97在线看| 再深点灬舒服灬太大了添视频| 超碰免费人妻人人| 欧美,日韩综合久久| 婷婷视频在线免费观看| 亚州免费啪啪视频| 一区二区三区激情在线观看| 98一区二区精品| 五月天丁香欧洲日韩| 粉嫩少妇自慰在线| 人人妻人人爽一区二区三区| 一牛影视成人片免费| 青青11操操操操操操操操| 丁香六月啪啪| 夜夜操中文字幕| 97国产精品一区| 黄色大片免费在线| www.久久久久| 熟女AV一区| 99re视频在线播放青草| 免费超碰97在线观看| 91色久| 夜草欧美| 性爱视频免费网址| 伊人天堂在线| 亚洲日韩精品一区二区| 亚洲无码一区二区三区三州| 日本色色网| 91路www| 一级性爱网| 99性爱| 大吊色| 操一操摸一摸| 97久久久久久久精| 91操熟女视频| 国产超碰| 九九热精品| 久热91| 亚洲色性| 日韩性色b| 天堂综合网| 激情综合久久| 97草草| 婷婷AV一区二区三区| 校园春色中文字幕AV| 26uuu国产亚洲综合| 91久久18禁| 欧美性爱中文字幕无线码| 少妇精品久久| 亚洲天堂另类美腿| 偷窥自拍亚洲| juliaann精品熟女一区| 国产精品直播在线观看直播| 亚州综合AⅤ| 白丝被操91| 97久精品| 性久久| 欧美小说区视频区| 久都青青视频 | 无码抄逼网| 亚洲成人在线乱码色午夜| 素人播放一区| se01国产在线视频| 欧美一品道| 国产亚洲在线观看| 国产一区自拍欧美日韩| 综合五月天| 91neishe| 亚洲精品一区二区三区在线播放 | 天天草AV| 中文一区二区婷婷视频| 小情侣高清国产在线视频| 亚洲图片91| 五月婷婷六月激情| 国产精品丝袜在线| 啊啊啊啊啊啊啊在线| 99热色精品| 黄色网址在线免费观看| 操逼网站网站| 久久少妇| 神马麻豆福利院| 另类 综合 日韩 欧美 亚洲| 91女网站| 色黄污美女啪啪啪免费网站| 无套内射人妻在线播放| 亚洲熟女一区二区| 亚洲怡春院| 久久亚洲不卡一区二区三区 | 国内偷自视频区视频综合| 91bbbbbb| 久啪视频| 国产第11页| 草蕉影视亚洲无码| 中文在线久久字幕| 美性中文综合网| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲AV色图| 91精品国产乱码| 日韩不卡码| 啊啊啊不要好爽日韩无码一区| 亚洲情色一区三区| 久久国产99精品72福利| 一区 欧美 日韩 麻豆| 伊人久久青青草| 欧美五区| 久久九操在线观看| 久久久久国产精品久久久| 成人日本片久久久蜜桃| 婷婷美人网| 久久九九热| 夜夜爽夜夜爽| 国产AV久久野战精品| 国产女人高潮嗷嗷嗷叫小说 | 高清有码一区二区| 91免费看一区二区三区| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 97视频在线观看播放与子乱对白在线……| 丁香婷婷色五月| 国产精品对白内射| 高跟丝袜AV专区国产| 99精品网| 欧美性高潮| 日本黄色精品专区网站| 美女自卫慰黄网站免费| 精品一久久久| 狠狠久久手机视频精品| 色综合尤物| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 国产99精品一区二区三区免费| 性在久久久久久| 高清无码网址| 干B| 91操熟女视频 | 97在线国产精品| 91无摭挡| 午夜视频好爽啊| 亚洲精品亚洲人成在线麻豆| 天美一二三在线观看Av| 人妻精品一区二区| 国产精品久久久久无码A√| 91久久婷婷| 韩国免费播放一级毛片| 亚欧精品久久久久久久久久久| 欧美性猛交美女自慰91| 欧美综合网| 99熟女| 亚洲欧美洲综合| 97超碰天天爱天天爱| 国产SV一线| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 五月丁香| 欧美成人免费在线观看| 97人妻碰碰中文无码久热丝袜| 骚女高跟AV在线| 日本Xx性爱| 色第一页| 久久久com| 精品人妻一区二区三区在线视频不卡| 国产伦精品一区二区三区视频女| 小说区 图片区色 综合区| 欧美日韩中文亚洲v在线综合| 69精品在线| 亚洲精品xxx| 加勒比色综合| 最近的最新的中文字幕视频| 亚洲天堂资源网| 欧美在线啊啊啊| 黄片无码在线制服| AV一起草在线| 怡红院成人视频| 国产精品无套内谢| 中文字幕免费在线观看| 精品久久久久瑟瑟| 大香蕉久| 狠狠操狠狠操操| 91精品操美女| 综合视频91| 欧美成人色| 蜜臀无码视频在线观看| 草b在线| 国产做?爰片久久毛片?片美国| 五月婷丁香| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 又大又长又粗又爽又黄| 欧美在线啊啊| 日本一二三免费久久| 青青草成人视频在线观看二区| www.五月天| 精品人人插人人操| 亚洲啪啪视频一区二区| 妇女性内射冈站HDWWWCOM| 蜜臀久久99精品| 国产亚洲一黄| 91爱综合| AV天堂男人的天堂| 青青草吊丝| 欧美色图中文字幕| 青青草黑寡妇男人天堂| 后入 亚洲 美女 射| 久久久久久久亚洲Av无码| 欧美加勒比| 国模限制级电影| 大香蕉丝袜一级片| 碰碰在线视频| 久久人人爽爽爽人久久久| AV天堂电影网| 亚洲丝袜天堂| 歐美一級亂黃99在綫精品| 天天躁日日躁xxxxx| 欧美日韩性感| 夜色五月天| 天天综合欧美综合| 成人开心网在线视频| 久9爱精品| 无码78| 亚洲无线观看久久| 午夜操操操| 五月丁香大香蕉| www老逼91| 少妇高潮喷水无套久久久久久| 亚州Av天美传媒| 亚洲少妇免费视频\| 精品久久97观看在线视频| 91人妻人人澡人人爽人人精品| 亚洲一区操| 国产在线激情| 蜜乳AV一区| 超碰三级秋霞| 有码专区最新中文字幕有码| 久久久久久亚洲Av无码精| 天天谢天天干| 欧美美女在线高潮999| 无码久| 欧州91高潮| 一起草精品人妻| 91久久午夜无码鲁丝片久久人妻| 色原狠狠天天天| 中文字幕精品一区二区精| 亚洲男人的天堂网| 天天插天天射| 亚洲av成人精品一区| 久久一二三四五六七八九区区区| 99国产在线 精品 视频| 精品人妻一区二区蜜桃视频| 伊色综合天堂色97| 国产精品久久久久久久黄无码| 天天综合91入口| 五月丁香激情综合| 国产精品分类在线观看| Julia Annxxxxx| 亚洲精品无码久久AV| 男人亚洲91首页在线| 日本一区视频在线观看| 欧美在线视频观看一二三四区高清| 久久香蕉超碰97国产精品| 欧美在线|亚洲| 五月丁香黄色网| 五月天久久久| 激情四射熟女丝袜| 日韩性爱1级片视频| www老逼91| 中文字幕人妻色偷偷久久皮| 欧美天天干| 人人干人人操人人..com| 91精产一区二区三区| 澳门黄片一香蕉视频| 狠狠干综合| 75大香蕉| 久久超碰国产一区二区三区| 校园春色亚洲欧洲| 97欧美色资源| 色综合av男人天堂| 亚洲骚男同com| 亚洲砖码砖专无区2023| 啊啊啊久久久视频| 人人做天天爱| 麻豆一区在线| 日韩成人性爱电影在线播放| 黑人精品欧美一区二区蜜桃| 黄色片大香蕉| www.男人的天堂| 激情五月婷| 性一级黄色录像片网站导航 | 91肉片| 激情五月天色播| 在线视频97| 97一区二区三区视频| 99久久婷婷丁香| 97视频一区| 国产13区| 97日本超碰综合| 国产成人久久久精品免费AV| 国产亚洲精品av一区| 超碰社区97| 国产亚洲在线| 精品一区二区三区蜜桃| 大香蕉在线86| 高潮毛片无遮挡高清免费| 国产美女91视频| 国模不卡| 操一操摸一摸| 国产一二三在线视频五十路| 免费国产| 校园春色欧美| 大香交| 亚洲最大的黄色电影网站。| 97色碰| 久久青青草原免费视频| 久久国产免费激情视频| 干B| 很黄很污的免费网站| 手机在线看片免费人成视频| 91影库| 婷婷av在线中文字幕| 夜夜爽爽夜夜精品视频| 国产熟妇一区二区| 欧美系列在线一区二区| 91 丝袜在线播放| 国产熟女精品一区二区| 国产无码精品久久久久久| aV中文麻| 91在线欧美| 丝袜加勒比| 精品国产AV一区天美传媒| 国产精品午夜福利| 好屌色综合| 人人操av| 欧美亚综合色图| 精品人人| 天天日天天舔东京热| 26uuu国产日韩综合在线观看| 啊啊啊啊啊啊好多水| 99re免费视频精品全部| 韩日无码在线观看| 欧美精品成人在线播放| 国内精品久久人妻性色av| 久久 国产 无码| 国产一级黄色片在线观看| 入口操逼网站| 超碰综合色| 黑人天8A∨高清网站| 婷婷另类小说| 99热99re6国产在线播放| 亚洲 日本 不卡| 亚洲A曰本VA欧美VA视频| 中国一级特黄大片护士| 97操| 亚欧性爱ab| 色色色色色色色色色色色色色色综合| 欧美日韩高潮喷水91| 97天天弄| 人人爱人人乐人人操| 日韩精品黄片免费观看| 精品无码一区二区| 蜜臀th| 激情国产乱伦Av| 久久超碰爱| 亚洲脚交| 欧美东京热精品A∨| 国产农村妇女精品一| 走光一区92下载| 强奸熟女一区二区三区| 亚洲三区视频| 天天影视之亚洲综合网| 中文人妻av高清一区| 五月天激情四射| 亚洲色9| 久久国产成人精品国产成人亚洲| 色综合婷婷| 一二区在线观看视频| 色播五月丁香| 大香蕉综合网| 久久久久久久久久久久久久久性生活视频 | 狠狠躁AV| 91操熟女视频| 99丝袜福利在线播放| 精品午夜福利| 亚洲s在线观看| 亚洲风情在线观看| 国产偷仑| 免费啪啪啪网站18岁| 青青五月天| 丰满人妻一区二区三区在线| 91久久免费视频互動交流 | 熟女中出视频| 亚洲AV成人无码久久精品播放| 亚洲天堂电影网99999| 97人人操人人摸人人爱| 97亚洲色图| 伊人97色天使| 亚洲天堂无码| 超碰97亚洲| www.激情| 日本日逼高清| 91色香| 中文字幕一区二区三四五区日日骚| 在线v中文字幕一区二区三区 | 蜜臀少妇一区二区| 九九九久久久| av天堂加勒比| 国产乱弄免费在线视频。 | 97精品一区二区视频| 青青草国产一区二区三区| 91美女丝袜诱惑视频| www.久久最新地址| 美女视频尤物网在线看| 久久精品国产亚洲av水密被窝| 人人综合| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 中文字幕精品三级久久久| 亚欧精品久久久久久久久久久| 在线播放免费av福利片| 久久中文字幕一区不卡| 日日摸天天爽夜夜欢| 综合天天。| 亚洲欧洲精品成人| 天天综合色电影| www.夜夜| 92午夜免费福利视频| 国产精品激情久久久久久久| 国产精品点击进入在线影院| 国产成人综合在线播放| 国产精品毛片?v一区二区三区 | 亚洲91射| 久久精品一区二区| 久草加勒比一区在线| 一区二区三区国产在线播放| 天堂俺去俺来也www久久婷婷| 国产AV久久野战精品| 日韩视频啪啪| 亚洲成人综合在线| 麻豆天美传媒在线视频天堂| 精品少妇一区二区| 神马麻豆福利院| 少妇人妻精品| 人人操欧美风骚| 日本裸体久久色噜噜| 欧美日韩性爱视屏免费看了| 国产大片精久久久久久| 好淫网一二三视区| 丝袜美女诱惑 91 视频| 欧美日韩中文视频播放| 99re热有精品视频国产| 日韩性爱网址| 国产白领连续中出在线观看| 久久尹人大香焦视| 日韩亚洲Av人人夜夜澡人人爽| 久久久久密| 舔人妻中文免费视频| 亚洲欧美综合网| 东京热天堂网| 人人操,操人人| 五月综合视频| 97欧美日韩精品| 福利社区午夜一区二区| 9久久9综合| 欧美懂色综合网| 人妻精品一区二区在线| 97色欧州| 最新国内自拍av免费| 神马久久久久久久久久久久| 午夜爽爽爽| 十八禁视频网站| 人妻少妇无码| 天美麻花大全视频| 欧美日本久久精品一区 | www.人人cao| 97欧美色综合| 国产午夜激片Av毛片不卡| 五月天久久婷婷亚洲| 日韩有码专区| 嗯嗯嗯不要不要免费视频| 99久久久久久亚洲精品不卡| 久久精品91| 热99这里有精品综合久久| 五月久久HDAV| 狠狠色狠狠色狠狠五月| 男人综合网| 国产精品老熟女一区二区| 亚洲成a人v欧美综合天堂下载| AV色五月天| 五月丁香啪啪网| 国产精品久久久 | 黄片无码在线制服| 91亚洲电影| 熟妇人妻一区二区| 美女久久久久久久久久久| 99久久9| 大香久久| 91欧洲入口| 久久蜜桃综合网| 精品国产www久久| 超碰97人妻| 欧美综合1性辶| 精品国产乱码久久久兰草影视| 日本熟妇人妻中出视频| 亚洲不卡三级手机播放| 中国91AV| 91激情国产| 怡红院怡春院| wwwxxx日本爽| 久久久999国产| 久久 久久国内精品亚洲| 91久久久久久久久久久| 大香蕉久久| 国产精品色色| av大香蕉| 秋霞无码av鲁丝片一区| AV一起草在线| 天天弄天天操| 操逼视频亚洲| 中文字幕一区二区三区高清| 十八禁视频一区二区| 久久久久久综合久久伊人蜜月| 亚洲图片视频小说| 日本久久网| 99久久九九| 五月大香蕉| 中文字幕制服欧美久久一区| 国产亚洲 中文欧美久久| 激情五月天网站| 欧美日日网| 91天射| 九9热伊人| 日本精品加勒比海一区| 蜜臀久久99精品久久久久久无删减 | 天堂精品| 午夜啊啊| 免费久久一级毛片大黄| 芊芊操逼视频无码| 99久久精品无码一区二区| 把腿张开老子CAO烂你| 深夜激情无码| 免费一级特黄特色大片在线观看看| 97视频免费在线观看| 蜜乳中文字幕a在线| 亚洲国产91精品一区二区久久| 午夜精品视频777| 欧美另类色图片| 香蕉久久精品| 欧美超碰在线| 99久在线精品99re8热| 蜜臀精品1区2区| 国产自偷| 操逼操网| 欧美日韩国产色五月综合在线| 久草电影网| 亚洲国产精品久久久久久久久久| 91蜜桃婷婷狠狠久久综合9色| 大香蕉青青9| 97日韩超碰超碰中文字幕| 福利社区午夜一区二区| 中文字幕在线观看网页| 亚洲欧美色图| 四虎午夜影院| 蜜桃成人1区2区3区| 秋霞一区二区三区四区五区六区七区| 蜜臀中文字幕| 另类图片五月天| 67914在线兔费成人视频| 另类小色呦| 二三四区精品| 色视频蜜乳| 亚洲一欧洲中文字幕在线| av麻豆啪啪| 一区AV| 青青草吊丝| 强奸抽插av| 欧美后入视频| 欧美一级国产一级| 丰满少妇精品一区二区| 亚洲精品国产精品乱码不99| 手机av亚洲丝袜美腿日韩第一页二页| 亚洲欧美另类小说| 蜜臀精品1区2区| 26uuu最新| 亚洲中文字幕乱码无码一区二区| 97亚洲色图| 97视频在线观看播放与子乱对白在线……| 91老司机视频| 蜜桃久久综合视频| 亚洲黄色视频在线观看视频| 青青草国产亚洲精品久久| 夜夜草天天| 综合情欲网| 少妇超碰在线| 精品区国产区一区二区三区| 欧美亚洲国产91在线| 极品久久久久久久久久久久久久| 中文字幕狠狠玩| 久热一区二区| 四虎免费在线播放| 四季AV综合网址| www.色婷婷色综合| 午夜精品探花| 日语五十路和六十路亚洲国产精品| 涩爱AV在线| 大香蕉手机在线视频| 亚洲啪啪性视频| 99老司机精品视频在线观看| 九九九色| 大二网站亚洲| 日韩成人性日韩成人性爱视频在线免费观看 | 亚洲A色| 欧美大码在线视频| 青青国产精品在线| 人人干人人搞人人摸| 色屁屁影院www国产| 美女高潮国产高清| 青青草无码视频| 久久中文色图| 激情综合婷婷| 大香蕉亚洲中文| 婬女免费一二三区A片| 福利在线观看一区二区| 熟女人妻一区二区三区| 性爱网站一区二区| 黄色成年| 亚洲人天堂| 91福利网在线观看| 日日骚av| 美女黄站| 老熟女搡BBBB搡BBBB视频| 午夜视频黄| 亚洲综合五月天婷婷丁香| 欧美日韩性爱无码| 亚洲图片欧美日韩| 人人超碰在线观看黄| 啊啊啊啊好疼视频| 无码精品久久久久久亚洲| 亚欧高清| 秋霞曰韩R级| 久久久久久久亚洲Av无码| 日本欧美中文字幕| 伊人久久大香线蕉无码| 99自拍视频在线观看| 91女神在线视频| 久久9免费视频| 日韩熟女乱伦中出| 深田咏美亚洲精品福利社| 一二三四免费视频| 51一区二区三区| 九九热九九| 久久五月天婷婷丁香中文字幕| 欧美一区二区亚洲天堂| 91老司机在线视频免费观看| 在线黄色污污网站| 不卡在线观看视频| 超碰97伊人| 夜夜天天噜狠狠爱2021| 北京美女一区二区| 性夜影院爽黄A爽免费动漫| 激情综合五月婷婷| 日韩精品9区| 福利操逼| 中文字幕一区二区三四五区日日骚| 国产精品农村妇女精品| 久久精品国产亚洲AV无码做| 97精品网| 国产精品嫩草久久久久| 91视频观看网站| 亚洲另类天堂| 特级大荫道BBwBBwBBW| 老熟妇91| 91综合色噜噜| 操学生天天| 中国操逼无码| 久久99国产综合精品女同| 欧美三级偷拍| 日韩亚洲中文字幕在线| 97超碰久| 偷窥自拍A片| 97久久超碰日韩精品| 五月婷婷综合网| 清纯唯美亚洲综合| 黑操B| 国产最新小视频在线播放下载 | 青青草色AV| 一区二区三区黄色片a| 校园春色美腿丝袜 | AA特级绝黄| 人人爽夜夜操| 国产精品探花在线| 97免费视频在线| 极品白嫩福利在线| 无码WWW免费视频网站| 大香蕉综合网| 男人天堂久久日韩| www网站黄| 人人操,人人液| 死我十八禁| 色色婷婷丁香| 国产精品久久久久久无码红治院| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 91人妻少妇| 亚州五月| 淫骚熟女一区二区三区| 玖玖婷婷五月天| 国产精品日日摸夜夜添骚逼| 亚洲的天堂网| 超碰1997| 熟妇一区,二区,三区。| 中国黄色特级精品一区二区三区片| 伊人久久艹| 中文字幕在线日亚州9| a片久久久久久久久久久久 | 欧美性天天影视| 97久久久| 精品超碰中文在线| 秋霞一级视频在线观看免费| 亚洲成aⅴ人片不卡无码| 另类天堂| 999久久芭蕾| 伊人大香蕉在线| 久久9 9 9精品| 人妻碰碰碰碰碰碰| 久九干| 人妻黑丝袜电影| 高跟伊人julia ann| 亚洲AV高潮| 午夜精品久久999热蜜桃介男人用| 日韩熟女精品无码专区一区二区| www激情| 久久免费中文字幕在线观看| 久热伊人99re| 福利天堂| 久久精品国产亚洲5555| 日本不卡中文| 精品国产AV一区天美传媒| 操逼视频国产无套| 亚川综合视频| 国产亚洲禁久一区二区| 深夜激情无码| www.夜夜| 91啪9色| 日本新免费二区三区| 久久久久幕乱码| 国产后入清纯| 亚洲男人天堂AV| 八戒无码国产午夜福利| 中国探花熟女| 久久丁香五月婷婷| 中文字幕日韩精品一区二区三区| 97玖玖人妻| 国产999精品久久久| 国产呦精品系列在线观看| 国产自产自拍| 久久精9| 在线97视频| 久久女婷| 日韩欧美中文字| 国产精品福利视频| 影音先锋中文字幕日本好一区二区| 久久人妻精品| 97情超碰色| 欧美十八禁网站| 日韩少妇丰满亚洲| 国产精品夜夜| 91色艳| 日本一区二区中文字幕久久| 99视频内射三四| 久久免费精品96| 超碰无码加勒比| 久久啊啊啊视频| 97亚洲综合在线| 免费av大片| 中文有码9| 欧美亚洲国内自拍| 搡老女人911熟妇老熟女| 亚洲欧洲国产综合av| 啊嗯嗯啊好大好爽| 五月天久久久| 96超碰网| 婷婷香蕉欧美在线一区二区三区| 国产视频小说| 超碰成人国产| 国产丝袜美女在线一区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 男女日B国产| 精品伊人久久久大香线蕉小说| 欧美精品1区2区3区| 久久久久久国产精品免费网站| 亚洲欧洲精品成人| 美女9118禁| 综合久| 在线欧美亚洲| 久草免费在线视频| 久久伊人大香蕉| 亚洲人天堂| 色色色色综合网| 五十路一区无码| 久久深夜无码| 97超碰人操| 色噜噜人妻av 中文字幕| 最新亚洲人成网站在线影院| 91一区二区| 天天操天天射天天日| 一区二区三区麻豆| 狠狠色色| 黄aaaaaaaaaaaaaaaaaa色网站| 久久久久女教师免费一区| 国产成人99久久亚洲综合| 97少妇人妻中文字幕久久| 麻豆 欧美 日韩| 欧美99999| 欧美成人色| 九九色综合| 国产精品老师| 厕所偷拍在线| 天天摸夜夜添无码小视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 色色激情| 超碰97人人cao| 2017天天插| 欧美日韩亚洲国产中文永久天天看| 综合少妇网| 大香蕉强奸乱伦| 变态乱伦伪娘灌肠一区二区| 草草草视频在线免费看| 欧美美逼| 嫩草影院永久在线制服丝袜| 热天堂一区二区| 国产午夜精品一区二区三区牛牛| 五月丁香综合啪啪| 少妇高潮流水av免费| 午夜视频好爽啊| 欧亚性爱啪啪| 五月天色五月| 亚洲五区熟女| 天天干1区2区在线| 每日更新AV| 久久本道| 国产丝袜欧美在线视频| 在线播放成人网站| 性在久久久久久| 亚洲成人在线播放| 日本一区二区电影网站| 亚洲精品 欧美精品| 一级免费精品| 亚洲av热热色| 深夜激情| 东京太热久久久| 97精品视频免费| 中文字幕无码不卡啪啪| 日产精品久久久一区二区| 天天色欧美| 五月天久久综合网| 操逼视频免费日韩无码| 920日本午夜免费| 久久久精品国产亚洲伊人| 人人扣人人操| 欧美有码激情视频一区二区三区| 欧美亚洲美少妇一区二区| 殴美色网| 97这里只有精品| 欧美顶级黄色大片免费| 强免费黄色网址| 欧美日韩国产电影| 天堂亚洲精品| 一区二区三区亚洲| 一级A啪啪啪啪| 91女优在线观看 | 狠狠躁天天躁日日躁97| 俞拍久久国应视频| 舔足天天操天天射| 亚洲AV成人无码一二三久久| 高清在线偷拍自拍视频| 久久久噜噜噜久久久| 偷拍导航视频网站| 婷婷综合伊人一区| 97香蕉碰碰人妻国产欧美| 色五月婷婷中文字幕| 日韩熟女精品无码专区一区二区| 九九九九亚洲| 免费一级性爱久久| 日韩成人色图| 丰满人妻一区二区三区四区| 国产亚洲综合欧美一区| 国产熟女二区| 91搞逼视频| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 天堂中文日本在线观看| 久久一二三四五六七八九区区| 69视频入口| 亚洲淫乱骚妇AV| 天天操天天干一区二区| 无码在线亚洲| 91插B网站| 韩国轻伦国内自拍一区| 国产成久久综合片| 99re6国产精品99re| 91视频综合网| 狠狠色狠狠色狠狠五月| 欧美久久草熟女| 亚洲婷婷丁香在线| 蜜桃色色网站视频三区| 97爱综合| 天天肏夜夜肏| 国产精品一区二区麻豆| 97自拍视频在线| 性猛交| 国产欧美伊人| 校园春色美腿丝袜 | 伊人久久综合精品欧美| 久久夜夜夜| 探花激情视频| 国产白丝在线| 91亚洲网站| 67914亚洲精品| www.亚洲黄色| 1二区9| 不卡中文字幕aⅴ在线| 亚洲黄网在哪免费看| 女上位精品在线| 综合熟女| 色九久| 欧插网站| 无码一区二区精品视频久久久春药 | 91影视亚洲| 欧美的性爱网站免费| 欧美日韩大陆黑人少妇99| 精品偷拍13p欧美dodk视频| 狠久久| 欧美色图私拍91| 欧美91精品国产自产| 麻豆精品A片免费观看| 92人人操人人| 偷拍99| 蜜臀精品1区2区| 萌白酱自拍视频| 一区二区三| 久久最新视频免费观看| 国产剧情在线| 国产又猛又粗又爽又黄| 无码天天操| 九九九九九九免费视频| 美女毛片999| 五月天综合网| 素颜老阿姨乱情色| 成年男人的天堂| 九X超碰| 一区二区国产视频在线观看| juliaann丝袜大战黑鬼| 欧美色图成人网一区二区 | 噜噜噜在线视频| 91日韩网站| 大香蕉97久久| 亚欧无码线免费观看视频| 久久成人午夜狠狠| 中文字幕视频2区| 图片区小说区| 色在线亚洲视频www| 天美麻豆一区二区三区| 日韩在线视频1234| 伊人久久大香大香线蕉中文| 国产精品午夜AV完会免费| 97在线资源| 免费农村成人少妇人妻Aa一区二区视频| 在线观看av区| 色就色综合| 亚洲天堂久| 97看操| 第四色色综合91| 无码99| 易易A毛视频| 大屁股国产在线视频| 韩国轻伦国内自拍一区| 床上啊啊啊一区二区三区| 欧美日本一区二区a人| 无码久久国产| 亭亭在线资源| 中国黑人三级片网站上区| 久久天天摸| 九九热精品在线| 91操人| a级成人毛片免费视频高清| 国产一区二区在线电影| 亚洲AV不卡在线观看尤物| 日韩中文9| 一本大道青青| 国产激情片在线观看| 久久亚洲熟妇在线视频| 女性91网站| 特级丰满少妇一级AAAA爱毛片| 日韩黄色一区二区三区| 天天操人人操骚逼网站| 久久久麻豆精品| 超碰97人妻在线| 欧美亚州综合网图片| 日日爽熟女| 天干天干天干天天做| daxiangjiao你懂的| 欧洲精品久久| 久久视频,这里只有精品| 天堂射| 九久久九精品视频| 中文字幕少妇色| 日本欧美成人片AAAA| 亚洲人人操| 99r九九| 快点操死我| 欧美色图成人网一区二区 |