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

貼吧低代碼高性能規則引擎設計

開發 前端
通過規則引擎,可以靈活配置運營活動中的抽獎規則、用戶身份權益配置、商品價格等包含復雜業務邏輯判斷的部分,將規則抽象出來,解放研發同學的人力,同時規則在平臺上可以方便查找和定位,方便后續的維護。?

一、背景

百度貼吧是一個擁有10多年歷史的UGC產品,在業務迭代中難免會有很多業務邏輯的代碼,其中一部分業務邏輯用if-else等硬編碼的形式開發,一部分引入了配置文件,通過配置文件的規則去執行不同的業務邏輯。在某些運營活動或權益規則中,需要頻繁增加或者更改一些規則,這部分規則經常變動的部分就需要規則引擎來統一管理。

規則引擎是一種專注于業務規則的服務,它可以將業務規則從代碼中剝離出來,使用預先定義好的語義規范來實現這些剝離出來的業務規則。規則引擎通過接受輸入的數據,進行業務規則的評估,并做出業務決策。

因為規則引擎將復雜的業務邏輯從業務代碼中剝離出來,所以可以顯著降低業務邏輯實現難度;同時,剝離的業務規則使用規則引擎實現,這樣可以使多變的業務規則變的可維護,配合規則引擎提供的良好的業務規則設計器,不用編碼就可以快速實現復雜的業務規則,同樣,即使是完全不懂編程的運營或者產品人員,也可以使用圖形化的界面來自定義規則,實現代碼一樣的效果。

下面對一些需要使用規則引擎的場景進行舉例:

1.單規則迭代

用戶標簽->包含A關鍵詞->權益A

用戶標簽->包含A關鍵詞->權益A

               ->包含B關鍵詞->權益B

用戶標簽->身份豁免策略/機器賬號->包含A關鍵詞->權益A

               ->包含B關鍵詞->權益B

用戶標簽->A模型結果大于1 ->豁C類用戶->包含A關鍵詞->權益C

可見隨著業務的發展,需要不斷的調整權益規則,這部分如果硬編碼寫死在代碼中,需要頻繁上線,增加了工作量,并且隨著業務邏輯的增多,后期維護成本增高。

2、持續接入新的能力

除了目前的字符串比較能力,一般的規則引擎還會接入各種各樣的模型能力,一般通過RPC的形式請求不同的服務,隨著接入的服務越來越多,可以組合的規則也是成倍的增長;

比如新接入圖片模型識別后,所有圖片識別的結果會過其他相關的模型,相關的模型調用邏輯就增加了一倍;

又如接入了某些模型,要根據模型的分數做相應的處理調整,需要頻繁的改動分值對應的處置手段,同時為了應對突發的場景,也需要頻繁的更改規則。

這些操作如果沒有一個自動化的規則引擎,就需要把大量的規則邏輯寫在代碼里,經過長時間的迭代,規則變得非常臃腫,無論對后續的開發還是定位問題的效率都會帶來問題。

二、貼吧規則引擎組成部分

貼吧規則引擎要做到規則靈活可配,無需研發介入,就需要盡可能的把包含判斷邏輯的部分全部下放到平臺,通過平臺的勾選對規則進行實現。

圖片

上圖為規則引擎整體的模塊劃分,主要分為四部分:

組件服務:組件服務是對第三方服務的封裝,比如調用圖片模型服務、調用帖子屬性等內容服務,一般是RPC調用;組件需要RD開發代碼,但是貼吧規則引擎的組件調用不摻雜業 務邏輯,僅僅是定義一個函數function,通過函數的入參調用第三方服務返回結果;

變量平臺:變量又稱算子,是配置規則的參數;變量分為業務調用時傳的入參、使用組件返回的結果等。貼吧規則引擎通過專用平臺管理變量,RD和PM均可以在平臺上配置變量;

規則引擎:規則引擎平臺涉及到了具體每一條規則,通過圖形化的界面生成規則,該平臺不需要RD介入,通過平臺化的操作生成具體的規則。

處置方法:該處置為RD定制化開發,針對帖子、用戶或其他場景的召回處置處理。一般定義一個rpc請求回調相關業務,處置方法因為是場景定制化的,所以這部分需要研發介入開發,但是處置方法更新的頻率非常低,一般都是復用已有的能力。

2.1 組件服務

規則引擎所有配置的數據不可能都是上游參數傳遞,很多是通過調用第三方服務獲取;比如通過帖子id獲取的帖子詳情數據,通過用戶uid獲取用戶的擴展屬性,這里都需要調用第三方服務;

組件的開發非常簡單,只需要聲明一個函數,并實現其靜態方法。為了后續的性能考慮,函數聲明時可以指定sync(串行)、async(異步)、parallel(并行)三種執行方式,貼吧規則引擎會在調度的時候按照類型,使用更高效的方式執行對應的方法。

圖片

圖中給出了一個demo組件,可以看出組件是不關注業務的,可以自定義入參和返回值,具體調用函數的入口及參數也不需要額外關注,更符合lib庫或者util方法的實現方式,這種組件的好處是開發簡單,解耦業務邏輯,增加組件的復用性,同時也降低了研發同學的工作量。

另外對于mode的工作模式,分為以下三類,具體的實現都是框架實現,組件的開發方不需要關注:

sync:同步調用,使用的時候串行執行,函數間是阻塞的;

async:異步調用,定義function的時候分為before、after兩組方法。Before階段為發起rpc請求,等待第三方服務回調后執行after方法,可以應對好耗時的服務接入。

parallel:并行模式,屬于同一層級的parallel 函數并行執行,類似于多線程或者golang的goroutine模式,目前貼吧的規則引擎采用php開發,不具備多線程的相關能力,所以這里并行是在before組裝rpc參數,通過curl_multi統一發起并行請求,在after函數取到結果。

以上能力在規則引擎框架上已經封裝,組件的研發RD只需要關注PRC的實現即可,根據函數的定義框架實現并行或者異步的調用。

2.2 變量平臺

變量或者算子就是規則引擎中做規則判斷使用的參數,比如用戶名、帖子id、用戶等級、帖子內容、模型識別的結果等,這部分的內容越多,規則引擎可以創建規則的『素材』越多;

變量的來源分為三個部分:

(1)平臺預定義的變量:比如一些常量數字或者特定字符串,這部分內容比較固定,變動較少。

(2)業務入參:業務在請求規則引擎的時候可以把盡可能多的參數變量傳遞過來,除了帖子、用戶、吧相關的數據,還可以把用戶ip、ua等各種數據一并傳遞,這些數據在變量的平臺化界面上可以做簡單的篩選或者摘取,生成新的變量。

圖片

如圖舉例:input是一個完成的業務請求的變量,取input中的title生成testTitle變量,這樣就可以單獨使用testTitle做一些規則上的判斷。

(3)組件調用:在組件的部分已經定義了具體的方法,該方法類似于lib庫或者util,具體的請求的入口在變量平臺實現,入參就是其他變量。

圖片

如圖舉例:testRPC是定義的組件,其中入參是testTitle變量,返回的大結果作為一個testRPC變量。

后面可以對testRPC變量做具體的拆分,比如testRPC中的data.score作為一個單獨的變量,用score這個變量做后面的規則定義。

整體來說,input是上游傳過來的基礎變量。對入參變量的整理和過濾可以生成額外的基礎變量;使用基礎參數(比如帖子id),通過rpc調用,可以生成擴展的結果;對結果的提取可以生成額外的第二級變量;進一步對二級變量繼續調用服務,可以生成更多的變量:比如通過圖片模型結果過一些文本模型,但是隨著層級的變深,整體服務呈現多級依賴關系,這也增加了整體的系統耗時。

圖片

對于入參或者RPC請求結果的處理,全部可以在變量平臺上進行操作,變量平臺定義了規則引擎可以使用的變量及具體的實現方式。因為變量平臺支持編輯代碼,所以一般的變量都可以直接在變量平臺編輯完成,而對相對復雜的模型調用,則可以封裝通用的util方法,之后在變量平臺直接使用這些方法。

2.3 規則引擎平臺

組件是一個個簡單的util靜態方法,通過入參及調用組件生成擴展的變量;自此進行規則判斷的『素材』準備好了,接下來需要使用這些變量配置規則,而核心的規則引擎平臺就是使用這些變量,生成規則。

規則引擎目前支持的運算規則:

規則運算符:目前支持變量值與常量的比較,包含基本的>,<,>=,<=,==,!=多種比較方式;另外不僅可以直接使用變量,對于數組類型的變量,還可以直接使用了變量的計數count,對于string類型,可以使用變量的長度len做參數直接進行判斷。

詞表比較:判斷某個詞是否在詞表中是一個比較常用的規則;規則引擎平臺支持本地詞表與遠程詞表;遠程詞表為了解決詞表量級太大的問題。字符與詞表的比較包括精確匹配,包含、不包含、前綴匹配及后綴匹配幾種方式,基本覆蓋了常見的使用方式。

粒度控制判斷:為了判斷某個調整在一段時間內的出現次數,平臺支持配置變量的出現次數統計。對于某些使用頻次較少的運算規則,平臺不在功能上進行統一支持,但是可以通過修改變量來支持。比如想判斷變量A的sin值大于Z,可以在變量平臺新配置一個變量B,它的定位為sin(A),然后在規則引擎上使用B這個變量做判斷,就解決了某些特殊的計算方式。對于判斷邏輯,目前支持if條件判斷,switch多分支判斷,確定召回,確定豁免四種方式,基本囊括了常用的判斷邏輯。

圖片

△簡單的策略配置demo

2.4 處置方法

處置方法是針對不同的業務場景召回的個性化處置邏輯,這部分需要RD開發代碼,做個性化的處理;比如命中召回后返回true or false或者命中的規則號或者回調特殊標記。

處置方法添加的頻率不會很高,基本固定對帖子、用戶或者各個場景有1-2個處置方法即可,后續的多個規則直接復用處置方法。

三、規則引擎實現原理

規則引擎最終生成是一個包含所有規則邏輯的代碼塊,代碼塊在規則引擎框架中運行;生成的代碼塊類似研發開發的代碼:代碼的邏輯依舊是定義變量、使用變量做條件判斷(規則)、命中召回的處置。

1.  變量

這部分比較容易理解,就是2.2部分;將所有定義的變量取出來,當然因為變量之間是遞歸依賴的,所以當變量中需要其他變量時,會遞歸獲取內容,直到獲取常量或沒有依賴為止,最后倒序輸出為代碼片段。

2.  規則文件生成

每一條規則在存儲上都是一個json串,存儲形式為一個nodeTree。其中一個node節點存儲了類型:判斷節點、召回節點、豁免節點以及多組(switch)判斷節點。其中召回節點和豁免節點是程序判斷的終止位置,當執行到召回節點時會加載規則引擎對應的處置方法。判斷節點是整個規則引擎的核心,包含對應的變量與比較方式。其中比較方式有數字比較、字符串比較及詞表比較。比如內容中是否包含關鍵詞“AB”,則在判斷節點上選取內容變量,比較方式為詞表包含,詞表內容為“AB”。

在規則文件的設計上,采用nodeTree的方式,既能方便后續擴展node的屬性和類型,又通過父子節點樹的方式多層級的表示復雜的if、switch邏輯,層級可以無限深。

在新的規則上線時,將nodeTree文件從數據庫中全部導出,生成全部的規則文件。規則文件依賴的變量已經在變量文件中全部定義好,剩下的工作就是將變量與規則進行組裝,生成最終的可執行代碼。

另外對于某些特殊的需求,需要對白名單中的uid或者類型進行全部策略豁免。對于此類需求可以修改所有的規則,增加前置判斷邏輯,但是此操作需要對現有的全部規則及增量規則都修改,且在規則執行中會增加額外的判斷邏輯,增加整體規則引擎的執行耗時,所以除了普通的規則外,貼吧規則引擎增加了全局規則區。全局規則區相當于所有規則的前置條件,具體配置的規則為普通的node判斷節點,當全局的所有規則判斷均為true時才會依次執行具體的普通規則,這樣對于想全局豁免的需求,只需要簡單配置全局規則即可,不需要修改具體的詳細規則。

3.  生成可執行規則文件

規則引擎的前期編譯工作需要生成可以執行的代碼,這部分就是將圖形化配置的規則與變量進行組合,優化整體的代碼執行邏輯,生成可執行的代碼,將文件下發到所有的線上機器。

其中變量文件是可以執行的php語法,規則為導出的json文件,需要將不同類型的文件進行組合,這里需要將不同文件源轉為同一種結構化數據。

對于原本是php語法的文件,貼吧規則引擎采用ply和yacc進行詞法和語法的解析,對php語法中array、函數、賦值、條件判斷、運算符等進行提取,轉為結構化的數據。

對于規則文件,因為是預先定義好的json nodeTree,包含的格式是有限可枚舉的,只要將每種類型與規則映射為結構化的字段,就可以將規則文件轉位目標結構化數據。

之后就是可執行文件的生成過程,具體需要以下步驟:

圖片

語法樹展開:通過遞歸調用,將函數嵌套展開。比如res = funA(funB($params))展開為 tmp1 = funB($params);res = funA(tmp1);展開后將高階函數展開成普通函數,方便后續的優化處理。

接下來就是語句優化部分:

將不同變量重名的部分自動增加_n后綴,避免變量的相互覆蓋;遍歷整體規則中使用的變量,如果存在變量從未使用過,從整體代碼中去除;對于定義了多遍重復的函數調用,整體去重只保留一份;對并行或者異步方法的函數組拆分成真正可執行的靜態方法。經過以上步驟,對將要生成的最終規則文件進行了初步的整理及優化。

在組件服務中提到了異步函數async;對于某些耗時非常高的模型服務,異步函數的作用是觸發調用后結束,等待第三方服務回調。

對于使用異步函數的情況,至少拆分成兩步,第一步發起觸發,第二步收到模型回調,取到該步驟的結果作為變量,所有依賴該變量的規則只能放到第二步執行。如果有函數依賴第二步的結果,則步驟會繼續增加,該函數取某變量的異步結果,發起服務請求,第三步回調收到結果;異步函數展開的作用是將所有無依賴的異步函數請求方法統一放在一起,并行請求,通過回調觸發執行第二步的規則邏輯。這樣貼吧規則引擎可以很方便的接入高耗時的模型服務。

除了異步函數,還存在一種parallel并行調用的方式。由于規則引擎采用php的語言選型,沒有其他語言方便的多線程或者協程調用方式,對于無依賴的函數不能支持并行調用,所以在規則引擎的設計上通過curl_multil并行rpc調用服務的形式來減少耗時。

目前比較耗時的函數一般是請求數據庫服務或者第三方服務,這里將數據庫及第三方的調用全部封裝為http協議的形式,在策略文件調用上通過before方法整理入參,通過類似curl_multil的方法并行調用服務,取到結果后執行各自函數的after方法,整理函數對應的變量,這樣就將無依賴關系的調用進行了并行處理,整體降低了耗時。并行函數合并就是框架層面做的自動化合并,規則引擎的研發同學只需要簡單定義before和after方法,編譯階段就會自動將所有無依賴的函數before方法執行,組裝rpc請求。如果某些函數在before階段依賴其他服務的結果,那么這批函數將在第二次發起請求,即無任何依賴的函數先發起并行請求,依賴第一批結果的函數再發起第二次并行請求,以此類推,最大限度的使用并行調用的方式。

圖片

最終生成的可執行的文件,基本的最小單元為name、func、param、cond四組字段組成。如果cond判斷條件為真,則name通過函數和入參數執行對應方法,產出值;該值又是其他單元的條件變量或者函數入參,這樣由上到下依次執行,完成了所有規則的執行。

仍然以上述demo策略為例:

圖片

最終生成了四組單元,基本格式如下:

圖片

如圖所示,基于上述的規則,只需要四組基本單元,每一組通過函數計算結果,下一組的條件依賴結果的值,如果走到“召回”邏輯,則進行表示規則命中,返回對應的規則號及其處置方法,框架中根據處置方法執行對應的邏輯。

每一個規則都是上述基本單元組成,最終將nodeTree中的全部規則生成基本單元,文件下發到所有運行的機器上,至此完成了規則文件的產出與規則上線。

四、總結

貼吧規則引擎搭配圖形化的界面,非常方便非技術同學配置業務規則,將冗余的業務邏輯全部托管在規則引擎平臺上,無需代碼開發,即可上線或者修改規則。

另外框架層面將異步、并行等復雜邏輯進行了封裝,研發同學調用新的模型只需要按照模版修改簡單的參數整理及返回數據整理,即可完成并行或者異步的操作,減少規則引擎的執行耗時。對于變量結果的轉換,也可以通過變量管理平臺,在平臺上簡單的修改即可完成一些基本的整理邏輯,大大減少代碼的開發量。

通過規則引擎,可以靈活配置運營活動中的抽獎規則、用戶身份權益配置、商品價格等包含復雜業務邏輯判斷的部分,將規則抽象出來,解放研發同學的人力,同時規則在平臺上可以方便查找和定位,方便后續的維護。

責任編輯:武曉燕 來源: 百度Geek說
相關推薦

2010-03-12 08:33:55

Greenplum數據引擎數據倉庫

2024-03-15 10:15:30

高性能系統SSD

2020-07-16 08:06:53

網關高性能

2022-02-24 09:00:38

React代碼模式

2009-08-04 11:16:30

高性能計算HPC植物

2015-07-13 11:39:25

SphinxSQL

2022-03-23 15:19:00

低代碼開源阿里巴巴

2024-09-02 18:10:20

2024-10-28 10:55:50

Jedis組件客戶端

2023-02-27 08:53:54

JedislettuceRedis

2012-12-17 13:51:22

Web前端JavaScriptJS

2009-04-22 10:16:37

網站架構Web數據冗余

2017-09-22 16:37:31

互聯網

2009-06-24 15:00:39

Javascript代

2024-03-20 08:00:00

軟件開發Java編程語言

2011-08-29 16:05:07

高性能SQL語句SQL Server

2014-04-25 09:02:17

LuaLua優化Lua代碼

2011-04-25 14:06:23

java

2011-04-07 09:25:25

內存Java

2021-10-18 08:28:03

Kafka架構主從架構
點贊
收藏

51CTO技術棧公眾號

日韩激情啪啪| 免费av在线播放| 国产精品色网| 亚洲视频第一页| 蜜臀一区二区三区精品免费视频| 一区二区三区视频在线观看视频| 久久国产视频网| 久久99精品久久久久久青青91| 少妇搡bbbb搡bbb搡打电话| 色老头在线一区二区三区| 中文字幕乱码久久午夜不卡| 91在线中文字幕| 中文字幕在线字幕中文| 日韩av二区| 亚洲精品一线二线三线| 少妇激情一区二区三区| 日本理论片午伦夜理片在线观看| 久久久五月婷婷| 亚洲伊人久久综合| 一级黄色av片| 亚洲精品韩国| 久久精品亚洲国产| 中文字幕 自拍| 91综合久久爱com| 7777精品伊人久久久大香线蕉完整版| 久久精品国产sm调教网站演员| www.亚洲视频| 91香蕉视频污| 99国产超薄丝袜足j在线观看| 真实新婚偷拍xxxxx| 亚洲精品免费观看| 蜜臀久久99精品久久久无需会员| 久久婷婷五月综合| 久久99国产精品久久99大师| 337p亚洲精品色噜噜噜| 精品99在线视频| 牛牛精品在线视频| 亚洲色图制服诱惑| 亚洲v国产v| 十九岁完整版在线观看好看云免费| 国产乱码精品一区二区三| 国产精品精品视频| 男人天堂2024| 国产深夜精品| 国产69精品久久久久99| 欧美黄色免费观看| 亚洲自拍偷拍网| 最新的欧美黄色| 亚洲性猛交xxxx乱大交| 免费成人网www| 精品一区二区三区四区| 国产精品成人无码专区| 白嫩白嫩国产精品| 精品国产乱码久久久久久影片| 五月天丁香花婷婷| 亚洲毛片在线免费| 欧美猛男男办公室激情| www.久久91| 伊人久久大香伊蕉在人线观看热v| 欧美性三三影院| 浓精h攵女乱爱av| 日本精品裸体写真集在线观看| 日韩欧美在线免费| 亚洲中文字幕无码中文字| 小草在线视频免费播放| 色综合色狠狠综合色| 日韩精品一区二区三区不卡| 国产免费不卡| 日本黄色一区二区| 九热视频在线观看| 亚洲综合资源| 欧美变态凌虐bdsm| 精品视频站长推荐| 久久99国内| 最近2019中文字幕一页二页| 久久精品亚洲a| 欧美特黄a级高清免费大片a级| 欧美高清第一页| 国产微拍精品一区| 日本美女一区二区| 亚洲free性xxxx护士hd| 蜜桃视频久久一区免费观看入口 | 欧美精品久久久久a| 日本熟妇色xxxxx日本免费看| 国产欧美一区二区色老头| 国产精品福利网| 国产免费久久久| 丁香五精品蜜臀久久久久99网站| 国产综合第一页| eeuss影院www在线观看| 亚洲码国产岛国毛片在线| 国产欧美日韩网站| 韩国精品主播一区二区在线观看 | 99视频在线视频| 99精品视频在线免费播放 | 中文字幕人妻无码系列第三区| 成人另类视频| 亚洲视频免费一区| 日韩一区二区不卡视频| 99视频在线精品国自产拍免费观看| 国产精品久久久久久久久久久新郎| 国产免费高清av| 久久先锋影音av| 天天爱天天做天天操| 国产传媒在线观看| 7777精品伊人久久久大香线蕉的 | 天天影视网天天综合色在线播放 | 日韩免费观看一区二区| 欧美aaaaaa午夜精品| 99中文视频在线| 国产福利免费在线观看| 亚洲国产cao| 激情图片中文字幕| 免费欧美一区| 久久久久久久久久久国产| 在线免费观看日韩视频| 99久久综合狠狠综合久久| 伊人久久99| 电影亚洲精品噜噜在线观看| 精品日韩欧美一区二区| 久久人妻无码aⅴ毛片a片app| 日韩一级大片| 亚洲综合小说区| 在线观看h片| 欧美性xxxx极品hd满灌| 亚洲图片欧美另类| 亚洲色图网站| 成人黄色片在线| 成人综合影院| 日韩欧美国产网站| 任你躁av一区二区三区| 欧美一区二区| 91免费国产视频| 一级毛片视频在线观看| 欧美在线综合视频| 亚洲天堂成人av| 亚洲激情二区| 91黄在线观看| 含羞草www国产在线视频| 欧美女孩性生活视频| 好吊视频在线观看| 裸体一区二区| 区一区二区三区中文字幕| 色在线中文字幕| 日韩国产中文字幕| 黄色在线视频网址| 久久久久国产一区二区三区四区 | 亚洲激情在线观看| 日产电影一区二区三区| 成人小视频在线| 国产精品入口芒果| 国产精品zjzjzj在线观看| 欧美国产精品va在线观看| 亚洲国产www| 亚洲综合一区二区| 国产一级黄色录像| 久久精品无码一区二区三区毛片| 午夜免费欧美电影| 欧美肥臀大乳一区二区免费视频| 国产免费一区二区三区最新不卡| 最好看的中文字幕久久| 亚洲第一区第二区第三区| 欧美hentaied在线观看| 成人黄色片在线| 婷婷色在线播放| 日韩一区二区免费视频| 欧美天天影院| 欧美精品电影在线播放| 国产jizz18女人高潮| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲欧洲精品一区二区| 国产亚洲观看| 久久久久久久久久久成人| 色噜噜一区二区三区| 色综合天天综合网国产成人综合天 | 99理论电影网| 精精国产xxxx视频在线播放| 亚洲日本中文字幕| 91久久精品国产91性色69 | 五月天综合婷婷| 麻豆精品国产| 1769国产精品| 色开心亚洲综合| 欧美v亚洲v综合ⅴ国产v| 天天综合网久久综合网| 国产精品国产三级国产有无不卡 | 麻豆一区一区三区四区| 国产精品久久久久久久久久三级| 天堂中文8资源在线8| 日韩欧美一级精品久久| 日本中文在线播放| 国产精品色呦呦| 国产a级黄色片| 免费成人在线观看| 人人干视频在线| 成人在线免费视频观看| 成人综合av网| 久久精品黄色| 97超级碰碰碰| 成人看片免费| 亚洲三级av在线| www.日本在线观看| 日本精品一区二区三区高清| 欧美老熟妇一区二区三区| 91影院在线观看| 一级 黄 色 片一| 日韩综合小视频| 青草网在线观看| 欧美日中文字幕| 国产一区福利视频| 成人免费91| 青草成人免费视频| 色婷婷视频在线观看| 一区二区福利视频| 天天射天天色天天干| 欧美福利一区二区| 亚洲av无码不卡| 亚洲妇女屁股眼交7| 国产性生活大片| 国产精品无人区| 亚洲av无码一区二区二三区| 国产99久久久久| 久热精品在线观看视频| 久久精品亚洲| 欧美视频在线观看网站| 欧美精品导航| 中文字幕久久综合| 欧美色图在线播放| 秋霞久久久久久一区二区| 欧美调教在线| 国产精品一区二| 日韩精品视频中文字幕| 成人综合网网址| yy6080久久伦理一区二区| 国产高清在线不卡| 韩国美女久久| 4p变态网欧美系列| 123区在线| 欧美激情亚洲精品| 伊人影院蕉久影院在线播放| 久久偷看各类女兵18女厕嘘嘘| 在线观看美女网站大全免费| 在线视频中文亚洲| av二区在线| 一区二区三区日韩在线| av播放在线| 伊人av综合网| 137大胆人体在线观看| 中文字幕日韩欧美在线 | 久久久久久久久久久网站| 在线观看操人| 欧美成人全部免费| 深夜国产在线播放| 78m国产成人精品视频| 少妇视频在线观看| 日本在线观看天堂男亚洲| 成人啊v在线| 成人妇女免费播放久久久| 国产精品亚洲综合在线观看| 97超碰资源| 国产一区二区三区不卡av| 精品国产综合久久| 九九久久电影| 亚洲成人a**址| 久久久久美女| 成年人午夜免费视频| 久久黄色影院| 久热精品在线观看视频| 国产高清亚洲一区| 精品人妻一区二区三区日产| 91蝌蚪porny九色| 亚洲最大成人综合网| 中文字幕字幕中文在线中不卡视频| 免费在线观看a级片| 亚洲一二三四区| av大全在线观看| 欧美日韩久久久久久| www.久久色| 精品亚洲aⅴ在线观看| 成人不用播放器| 久久国产精品电影| av成人 com a| 国产精品一区二区三区毛片淫片| 日本免费一区二区视频| 欧美lavv| 亚洲精彩视频| 亚洲熟妇av一区二区三区| 国内精品免费**视频| 国产精品探花一区二区在线观看| 国产精品亲子伦对白| 久久久久久久极品内射| 色婷婷亚洲综合| www.日本在线观看| 一区二区三区视频观看| 欧美videossex| 国产精品xxx视频| 97久久综合区小说区图片区| 日韩精品一区二区三区色偷偷| 影音先锋日韩精品| 99精品视频播放| 国产精品影视天天线| 毛片网站免费观看| 亚洲综合色成人| 在线视频播放大全| 日韩电影免费在线观看中文字幕 | 久久99蜜桃| 天堂8在线天堂资源bt| 蜜臀av国产精品久久久久| 你懂的在线观看网站| **性色生活片久久毛片| 无码一区二区三区| 亚洲高清av在线| 二区三区四区高清视频在线观看| 日本精品视频在线| 成人爽a毛片| 手机看片日韩国产| 青青草成人在线观看| 国产熟女高潮一区二区三区| 亚洲免费视频成人| 中文字幕日本视频| 亚洲精品网址在线观看| 日本乱理伦在线| 亚洲一区二区久久久久久| 精品一区电影| 精品免费国产一区二区| 久久综合视频网| 成人午夜视频精品一区| 日韩精品一区二区三区蜜臀 | 午夜免费日韩视频| 久久在线观看| 在线丝袜欧美日韩制服| 日本成人在线视频网站| 三上悠亚影音先锋| 狠狠色狠狠色综合日日小说| 日韩在线观看视频一区二区三区 | 欧美成欧美va| 91精品国产综合久久精品性色 | 亚洲免费观看高清完整版在线观| 国产又粗又猛又爽又黄的网站| 国产精品综合一区二区| 日韩欧美国产成人精品免费| 在线成人av网站| 老司机午夜在线视频| 91精品久久久久久久久久| 欧美日韩国产传媒| 日韩av片网站| 国产精品久久久久久久久果冻传媒 | 亚洲日本黄色| 国产婷婷在线观看| 婷婷综合另类小说色区| 亚洲区小说区图片区| 77777少妇光屁股久久一区| 台湾色综合娱乐中文网| 成人一级片网站| 国产亚洲一二三区| 国产乱码在线观看| 久久国产精品久久久久久| 精品视频一区二区三区在线观看| 香蕉视频免费版| 国产成人av电影免费在线观看| 国产一级视频在线播放| 亚洲电影免费观看高清完整版在线| av中文字幕在线观看第一页| 久久久久高清| 日韩黄色小视频| 国产白丝一区二区三区| 91精品欧美久久久久久动漫| 91精品久久久| 好看的日韩精品视频在线| 先锋影音久久久| 舐め犯し波多野结衣在线观看| 欧美精品色综合| 日本小视频在线免费观看| 久久涩涩网站| 久久精品99久久久| 欧美成人片在线观看| 日韩成人中文电影| 黄色成人在线观看网站| 九一免费在线观看| 91亚洲精品乱码久久久久久蜜桃| 国产免费a视频| 成年无码av片在线| 日韩高清三区| 婷婷激情5月天| 精品成人av一区| 日本激情在线观看| 国产精品日韩一区二区免费视频| 鲁大师成人一区二区三区 | 影音先锋日韩精品| 91网站免费视频| 日韩一区二区三| 欧美电影免费观看| 久久久久久久久网| 久久久久久久久久美女| 国产成人三级一区二区在线观看一| 8x海外华人永久免费日韩内陆视频 | 国产一区在线观看视频| 成人精品免费在线观看| 久久精品一本久久99精品| 蜜桃一区二区三区|