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

簡化后端服務的 A/B/n 測試

開發 后端
了解如何使用 Iter8 SDK 在 Kubernetes 中輕松運行 A/B/n 實驗。Iter8 使為您的應用程序/ML 模型收集業務指標變得簡單。
了解如何使用 Iter8 SDK 在 Kubernetes 中輕松運行 A/B/n 實驗。Iter8 使為您的應用程序/ML 模型收集業務指標變得簡單。

A/B/n 測試,或拆分測試,是一種測試過程,用戶流量通過該過程隨機分布在應用程序(或應用程序組件)的兩個或多個版本之間。評估業務指標以確定獲勝版本——產生更大利潤或業務價值的版本。例如,購物應用程序可能使用收入和用戶參與度作為業務指標。

我們專注于部署在 Kubernetes 中的后端服務的 A/B/n 測試。例如,在下圖中,前端可能是一個基于Node.js的在線商店。它依靠后端推薦服務向用戶提供產品建議。我們有興趣對推薦服務的多個版本進行 A/B/n 測試。在圖中,我們有兩個版本,v1當前默認版本)和v2 候選版本)。

計算業務指標

A/B/n 測試依賴于對業務指標的評估。這些指標衡量應用程序特定版本的好處或價值。例如,在在線商店應用程序中,相關指標可能是銷售收入或用戶參與度。業務指標是特定于應用程序的;它們不能由基礎設施計算,而必須由應用程序本身計算。當銷售收入等指標由應用程序組件(如上面的前端在線商店)計算時,間接包括了后端推薦引擎的貢獻。但是,前端組件無法將度量值與特定版本的后端相關聯,因為它通常不知道使用了哪個版本的后端服務。

Iter8 SDK

為了正確地將指標歸因于后端版本,前端有必要知道每個用戶會話正在使用哪個后端版本。為了協助前端服務,可以使用 Iter8 SDK。Iter8是一個開源的Kubernetes發布優化器,可以幫助您在幾秒鐘內開始測試 Kubernetes 應用程序。使用 Iter8,您可以執行各種實驗,例如 SLO 驗證、金絲雀測試、混沌注入測試,以及現在的 A/B/n 測試。Iter8 SDK 提供了兩個接口:

  1. Lookup(component, user_session),它標識一個組件的版本,調用者應該使用該版本向給定的用戶會話發送請求。
  2. WriteMetric(metric_value, component, user_session),它將度量與組件的推薦版本相關聯。

下面的序列圖顯示了我們的購物應用程序對這些接口的使用:

為響應用戶請求,前端組件調用Lookup()以確定要使用哪個版本的后端組件。Lookup()返回固定數量的用戶定義曲目標簽之一。Lookup()保證為相同的用戶會話推薦相同的曲目標簽,確保后續對后端的調用將發送到相同的版本。然后,前端服務將其請求發送到推薦的后端,使用軌道作為路由的關鍵。當前端稍后為用戶會話計算業務指標時,它可以安全地與推薦的后端版本相關聯。WriteMetric()可用于執行此操作,從而無需前端跟蹤到后端版本的映射。

由于Lookup()返回一組固定的軌道標簽中的一個,前端服務必須配置為將流量路由到一組固定的服務——每個軌道一個。要跟蹤的版本的映射隨時間變化,并且作為候選版本部署的一部分使用已部署的 Kubernetes 對象上的標簽完成。

顯然,SDK 的引入對應用程序前端組件的開發人員提出了要求。此外,該方法依賴于前端應用程序可以根據一組軌道標識符路由后端請求的假設。這意味著對應用程序配置的要求。我們通過示例演示使用 Iter8 SDK 是多么容易。

Iter8 SDK 使用 gRPC 實現。該協議緩沖區文檔中描述了這些接口。可以從中為各種語言生成特定于語言的代碼。接口本身由 A/B/n 服務實現。

A/B/n 測試的應用程序開發

我們將考慮一個簡單的兩層應用程序。用 Node.js 編寫的前端代表一個在線商店。 用Go編寫的后端表示由前端調用的推薦引擎,用于向用戶展示替代產品。可以在此處找到此應用程序的完整源代碼。

前端組件支持兩個接口:

  1. /getRecommendation要求產品推薦。
  2. /buy完成購買。

作為購買(請求)的副作用,/buy計算用戶會話的業務指標。接口的實現/getRecommendation依賴于后端推薦服務。我們想在此后端推薦服務上運行 A/B/n 測試。

Iter8 SDK 使用 gRPC 實現。這些接口在協議緩沖區文檔中進行了描述??梢詮闹袨楦鞣N語言生成特定于語言的代碼。我們生成的代碼在示例應用程序中,可以直接復制以用于您自己的應用程序。

要使用 Iter8 SDK,需要 gRPC 和生成的庫:

var grpc = require('@grpc/grpc-js');var messages = require('./abn_pb.js');var services = require('./abn_grpc_pb.js');

并實例化一個客戶端:

var client = new services.ABNClient(abnEndpoint, gprc.credentials.createInsecure());

此客戶端用于兩種用例:調用后端服務之前和寫入指標值時。

調用后端服務

在調用后端推薦服務之前,需要Lookup()先調用該方法。返回的軌道標識符應該用作索引來選擇發送請求的路線。在我們的示例前端中,這可以按如下方式實現:

// map of track to route to backend serviceconst trackToRoute = { "default": "http://backend:8091", "candidate": "http://backend-candidate:8091",}...// identify default routeroute = trackToRoute['default'];...var application = new messages.Application();application.setName('default/backend');application.setUser(req.header('X-User'));client.lookup(application, function(err, session) { if (!err) { // use route determined by recommended track route = trackToRoute[session.getTrack()]; } // call backend service using session.getTrack() as index to list of endpoints http.get(route + '/recommend', ... )}

在此實現中,用戶會話是從請求標頭中提取的X-User。請注意,如果與 Iter8 SDK 交互出現任何問題,將選擇默認路由??梢栽诖颂幷业酵暾氖纠a。

編寫指標

當/buy調用接口時,表示銷售完成,計算業務指標。在我們的示例應用程序中,一個隨機值被分配給指標sample_metric:

// export metricvar mv = new messages.MetricValue();mv.setName('sample_metric');mv.setValue(random({min: 0, max: 100, integer: true}).toString());mv.setApplication('default/backend');mv.setUser(user);client.writeMetric(mv, function(err, session) {});

而已!不需要進一步的更改,無論運行了多少 A/B/n 測試——或者沒有。

可以在此處 (Node.js)找到完整的示例前端代碼。Python和Go中提供了替代實現。與節點示例一樣,生成的代碼可以直接復制到您自己的應用程序中。

為 A/B/n 測試部署應用程序

在部署將要進行 A/B/n 測試的應用程序組件時,唯一的要求是添加 Iter8 A/B/n 服務用于標識組件版本的標簽。在我們的例子中,我們計劃只測試后端推薦組件。

Iter8 SDK要求每個版本部署的資源實例中至少有一個包含以下標簽:

  • app.kubernetes.io/name:應用程序(組件)名稱。
  • app.kubernetes.io/version: 版本名稱。
  • iter8-tools/track:要用于此版本的曲目標簽。
  • iter8-tools/abn: 指示版本是否準備好接收流量的標志。

作為說明,可以使用以下命令手動部署示例應用程序。首先,部署前端在線商店組件:

kubectl create deployment frontend --image=iter8/abn-sample-frontend-node:latestkubectl expose deployment frontend --name=frontend --port=8090

接下來,部署示例后端推薦組件的當前或默認版本。我們將所需的標簽添加到部署對象中,因為我們希望在此組件上運行 A/B/n 測試。

kubectl create deployment backend --image=iter8/abn-sample-backend:latestkubectl expose deployment backend --name=backend --port=8091kubectl label deployment backend app.kubernetes.io/name=backendkubectl label deployment backend app.kubernetes.io/versinotallow=v1kubectl label deployment backend iter8.tools/track=defaultkubectl label deployment backend iter8.tools/abn=true

最后,部署 Iter8 服務(如果尚未部署):

helm install --repo https://iter8-tools.github.io/hub iter8-abn iter8-abn \--set "resources={deployments,services}" \--set "namespaces={default}"

運行 A/B/n 測試

我們現在準備運行 A/B 測試,比較后端推薦組件的當前部署的默認版本和新的候選版本。運行測試有兩個步驟。第一步是部署組件的一個或多個候選版本。使用我們的示例應用程序,我們展示了部署后端推薦引擎的候選版本所需的步驟。待候選版本完全部署后,Iter8 Service會開始將分配給它的track label發送給前端服務。作為響應,前端商店將開始向新版本的推薦引擎發送請求。第二步是啟動 Iter8 實驗來評估收集到的指標。我們展示了一個多循環實驗——一個定期執行直到被刪除的實驗。在每次執行時,

部署候選版本

可以以任何方式部署候選版本——手動(如我們所示)或使用 CI 工作流。如上所述,必須將所需標簽添加到至少一個 Kubernetes 資源對象。

在我們的示例應用程序中部署后端推薦服務的候選版本:

kubectl create deployment backend-candidate --image=iter8/abn-sample-backend:latestkubectl expose deployment backend-candidate --name=backend-candidate --port=8091kubectl label deployment backend-candidate app.kubernetes.io/name=backendkubectl label deployment backend-candidate app.kubernetes.io/versinotallow=v2kubectl label deployment backend-candidate iter8.tools/track=candidate

在部署候選版本時,必須注意確保候選版本在前端向其發送任何請求之前已完全初始化。這可以通過僅在候選版本完全初始化后設置 iter8-tools/abn 標簽來確保。一旦初始化,Iter8 A/B/n 服務將開始提供響應Lookup()請求的版本。

kubectl label deployment backend-candidate iter8.tools/abn=true

這些步驟如下圖所示。最初,僅部署默認版本 v1 并接收來自前端的所有流量。

當部署候選版本 v2 時,前端繼續將所有請求發送到默認版本。

一旦候選版本準備好接收流量,例如,當 pod 為 時Ready,設置標簽iter8.tools/abn。這會觸發 Iter8 服務開始向前端推薦它,而前端又開始向兩個版本發送請求。在我們的示例應用程序中:kubectl label deployment backend-candidate iter8.tools/abn=true

實際上,測試取決于應用到前端服務的用戶負載。在本教程中,我們使用將請求發送到存儲端點的腳本來應用負載,/getRecommendation并/buy.使用將本地請求轉發到集群:kubectl port-forward svc/frontend 8090:8090

并為不同的用戶生成負載;例如,對于用戶foofoobar

curl -s https://raw.githubusercontent.com/iter8-tools/docs/main/samples/abn-sample/generate_load.sh | sh -s -- -u foo
curl -s https://raw.githubusercontent.com/iter8-tools/docs/main/samples/abn-sample/generate_load.sh | sh -s -- -u foobar

啟動 Iter8 實驗

啟動 Iter8 實驗以定期讀取通過 編寫的業務指標WriteMetric()。可以使用預定義的 abnmetrics 任務:

iter8 k launch \--set "tasks={abnmetrics}" \--set abnmetrics.applicatinotallow=default/backend \--set runner=cronjob \--set crnotallow="*/1 * * * *"

此命令啟動 Iter8 實驗,該實驗運行預定義的 abnmetrics 任務以讀取在默認命名空間中運行的后端應用程序組件的記錄指標。使用 cronjob runner 表示實驗將根據 cronjobSchedule 定期運行(在本例中為每分鐘一次)。實驗結果將隨時間更新。

檢查實驗結果并決定是否推廣候選版本。第一份報告將在實驗任務第一次運行后(大約一分鐘)可用。示例報告如下:

iter8 k report Experiment summary: ******************* Experiment completed: false No task failures: true Total number of tasks: 1 Number of completed tasks: 18 Latest observed values for metrics: *********************************** Metric | candidate | default ------- | ----- | ----- abn/sample_metric/count | 765.00 | 733.00 abn/sample_metric/max | 100.00 | 100.00 abn/sample_metric/mean | 50.11 | 49.64 abn/sample_metric/min | 0.00 | 0.00 abn/sample_metric/stddev | 28.63 | 29.25

提升贏家

在推廣候選版本時,必須注意確保沒有用戶流量意外發送到正在升級或刪除的版本。任何可用于執行促銷的方法都應包括以下步驟。還顯示了示例應用程序的手動步驟。

最初,默認版本和候選版本都從前端接收請求。

首先,iter8.tools/abn從與默認版本關聯的資源中取消設置標簽。這會在轉換期間禁用到默認版本的流量——Iter8 SDK 接口Lookup()將從其推薦后端列表中刪除默認軌道:

kubectl label deployment backend iter8.tools/abn-

接下來,使用新版本重新部署與默認軌道關聯的對象。

更新的對象準備就緒后,添加iter8.tools/abn指示它已準備好接收流量的標簽。

kubectl label deployment backend iter8.tools/abn=true

此時,默認和候選軌道標簽都與相同的后端版本相關聯?,F在可以刪除候選版本。為此,取消設置iter8.tools/abn標簽以終止到候選資源的流量:

kubectl label deployment backend-candidate iter8.tools/abn-

最后,刪除候選資源。

kubectl delete deployment backend-candidatekubectl delete service backend-candidate

最后的想法

我們探討了進行 A/B/n 測試的一些挑戰,尤其是應用程序的后端服務。關鍵挑戰涉及前端組件計算業務指標無法正確地將它們與有助于其計算的后端版本相關聯。Iter8 SDK 使前端能夠正確地建立這種關聯。它通過提供一個查找接口來實現這一點,該接口允許前端服務識別后端服務的版本以在處理用戶請求時使用。這樣,它可以可靠地將業務指標分配給后端版本。我們展示了使用 Iter8 SDK 修改前端服務和運行 A/B/n 測試是多么容易。

只需要幾行額外的代碼就可以對前端進行一次性更改。啟用候選版本進行測試只需要添加一些標簽。

試用本教程后,使用您自己的應用程序進行試用。


責任編輯:華軒 來源: 今日頭條
相關推薦

2019-08-29 08:00:00

微服務架構服務網格

2025-01-15 00:01:00

開發應用界面

2023-07-28 10:27:48

Java單元測試

2020-12-10 08:00:00

開發.NET工具

2012-08-21 06:53:00

測試軟件測試

2017-01-20 09:32:19

AB測試

2022-09-06 10:46:34

服務網格可觀測性微服務

2021-07-23 18:11:00

數字化

2014-08-08 16:50:21

AB 測試安卓推送

2009-03-17 09:56:00

802.11n測試無線網絡

2022-07-12 15:24:22

物聯網制造業

2022-07-06 08:25:17

服務網格Kubernetes

2016-09-14 14:24:18

云服務數據

2021-09-23 17:43:40

戴爾

2015-11-26 13:50:09

2009-06-04 09:15:45

JavaME手機程序認Java手機

2013-07-04 10:43:14

云應用

2009-07-10 09:41:08

WCF服務配置.NET 4.0

2023-06-13 18:27:29

數量Java定期測試

2025-05-26 10:10:00

Go開發testing
點贊
收藏

51CTO技術棧公眾號

亚洲免费在线观看视频| 日韩欧美123区| 手机在线看片1024| 成人黄色图片网站| av在线一区二区三区| 伦xxxx在线| 美女网站视频一区| 成人高清免费观看| 久久夜色精品国产欧美乱| 激情小说网站亚洲综合网| 国产老头老太做爰视频| 成功精品影院| 伊人夜夜躁av伊人久久| 国产伊人精品在线| 五月天综合视频| 欧美男人天堂| 北岛玲一区二区三区四区| 国产成人精品综合久久久| 一级黄色片大全| 日本三级一区| 中文字幕一区二区三区不卡在线| 国产成人91久久精品| 高h视频免费观看| 欧美经典一区| 一区二区三区在线免费播放| 鲁鲁视频www一区二区| 日本中文字幕免费| 欧美日韩破处| 色悠悠久久综合| 蜜桃视频成人| 亚洲国产综合网| 国产一区亚洲| 欧美精品一区二区高清在线观看| 伊人再见免费在线观看高清版| 精品久久久中文字幕人妻| 狠狠爱综合网| 麻豆一区二区在线观看| 欧美人与性囗牲恔配| 国产成人77亚洲精品www| 国产精品久久久久久一区二区三区| 国产美女精品视频| 最新一区二区三区| 成人看的视频| 欧美一区二区精美| 久久综合久久网| 色欲av永久无码精品无码蜜桃| 亚洲二区免费| 亚洲色图25p| xx欧美撒尿嘘撒尿xx| 国产剧情在线| 99视频精品全部免费在线| 91gao视频| 日本三级欧美三级| 欧美激情第10页| 亚洲国产精品一区二区久| 18岁视频在线观看| 麻豆传媒在线免费看| 国产欧美1区2区3区| 99视频精品全部免费在线| 69久久夜色精品国产69蝌蚪网| 一区二区三视频| 国产自产一区二区| 视频一区二区国产| 久久天天躁狠狠躁夜夜躁2014| 在线观看亚洲大片短视频| 日本一区二区三区播放| 精品久久久中文| 性欧美videosex高清少妇| www精品国产| 国产精品99精品久久免费| 97超碰蝌蚪网人人做人人爽| 女人十八毛片嫩草av| 国产精品密蕾丝视频下载| 7777精品伊人久久久大香线蕉最新版| 亚洲福利精品视频| 8x8ⅹ拨牐拨牐拨牐在线观看| 国产日韩欧美电影| 国产精品一区二区三区免费| 中文字幕在线观看1| 尤物网精品视频| 5252色成人免费视频| 日本一二三区在线观看| 亚洲欧美在线专区| 亚洲情综合五月天| 天堂资源在线视频| 性欧美lx╳lx╳| 欧美一区二区二区| 国产女主播在线播放| 农村妇女一区二区| 欧美性xxxx| 日韩精品综合在线| 欧美激情网站| 欧美日韩精品欧美日韩精品| 1024av视频| 欧美wwww| 亚洲另类在线视频| 国产精品久久中文字幕| 中文在线手机av| 中文字幕一区二区三区不卡| wwwwww欧美| dy888亚洲精品一区二区三区| 国产女主播视频一区二区| 自拍偷拍一区二区三区| 2020av在线| 欧美日韩亚洲综合| 在线免费视频一区| 超碰97久久国产精品牛牛| 亚洲欧美制服综合另类| 国产97免费视频| 久久久久久久久久久妇女| 最近2019中文字幕大全第二页| 久久精品老司机| 色天下一区二区三区| 俺去啦;欧美日韩| 一级黄色片日本| 五月婷婷亚洲| 欧美大奶子在线| 日本青青草视频| 久久久久久婷| 国产精品免费一区| 免费在线不卡av| 奇米一区二区三区av| 国产精品香蕉av| 天堂在线资源8| 亚洲精品综合在线| 色婷婷成人在线| 亚洲永久精品唐人导航网址| 亚洲精品小视频| a天堂中文字幕| 国内自拍一区| 91久久久在线| 亚洲成人777777| 国产精品传媒在线| 韩国日本美国免费毛片| 国产亚洲精彩久久| 亚洲欧美日韩在线一区| 超碰97av在线| 久久伊人亚洲| 久久精品国产综合精品 | 在线播放精品| 91久久精品国产91久久| 亚洲乱亚洲乱妇| 日韩美女久久久| 黄色三级中文字幕| 精品视频一区二区三区| 精品国产视频在线| 中文字幕+乱码+中文| 国产亚洲欧洲一区高清在线观看| 超碰在线观看免费版| 99精品久久免费看蜜臀剧情介绍| 国产有码在线一区二区视频| 欧美日韩影视| 国产精品女同互慰在线看| 免费在线观看毛片网站| 亚洲免费成人av在线| 欧美中文在线观看| 这里只有精品6| 国产精品一区二区三区四区 | 国产九色porny| 中文无码日韩欧| 亚洲免费成人av电影| 黄网在线观看视频| 美女网站在线免费欧美精品| 91免费观看| 午夜成年人在线免费视频| 高潮白浆女日韩av免费看| 亚洲欧美视频二区| 欧美freesextv| 538国产精品视频一区二区| 亚洲 精品 综合 精品 自拍| 中文字幕一区二区三区四区| 五月天激情播播| 欧美理伦片在线播放| 2021国产精品视频| 精品视频三区| 一区二区三区高清在线| 超碰在线公开97| 天天揉久久久久亚洲精品| 亚洲综合中文字幕68页| 国产三级电影在线| 偷拍一区二区三区四区| 中文字幕 亚洲一区| 一区二区三区四区日韩| 99在线观看| 麻豆tv免费在线观看| 日韩免费看网站| 91狠狠综合久久久| 成熟亚洲日本毛茸茸凸凹| 一区二区精品国产| 三级成人在线| 精品国内产的精品视频在线观看| 成人免费看片98欧美| 国产校园另类小说区| 日本一二三四区视频| 成人在线免费观看91| 91在线视频精品| 中文不卡1区2区3区| 亚洲成人精品久久久| 欧美精品色哟哟| 国产最新精品精品你懂的| 国产精品青青草| 欧美成人精品一区二区男人小说| 亚洲福利视频久久| 国产精品国产精品国产| 亚洲一二三四久久| 日本黄色www| 中文字幕免费精品| 精品一区久久久| 玖玖精品一区| 国产精品高精视频免费| 国产精品影院在线| 日韩欧美亚洲一区二区| 特级西西444www大胆免费看| 亚洲第一在线综合网站| 毛茸茸free性熟hd| 亚洲国产综合在线看不卡| 国产精品高清一区二区三区| 中文字幕一区久| 亚洲男人天堂古典| 亚洲国产精品一| 51久久夜色精品国产麻豆| 国产午夜视频在线播放| 亚洲另类在线一区| 懂色av粉嫩av蜜臀av一区二区三区| 免费人成在线不卡| 成年人午夜视频在线观看| 欧美1区免费| 中文字幕一区二区三区乱码| 精品日韩一区| 91精品国产自产在线观看永久| 国产高清中文字幕在线| 亚洲欧洲一区二区三区在线观看 | 久久国产综合精品| 9999在线观看| 免费观看性欧美大片无片| 国产精品免费看久久久香蕉| 日韩av中字| 欧美一区三区三区高中清蜜桃| av色在线观看| 色综合久久久888| 亚洲 欧美 精品| 精品福利在线导航| 亚洲欧美国产高清va在线播放| 7799精品视频| 国产伦精品一区二区三区免.费| 一区二区三区不卡视频 | 人妻精品一区一区三区蜜桃91| 午夜av区久久| 欧美激情视频二区| 国产人久久人人人人爽| 午夜时刻免费入口| 国产无人区一区二区三区| 9.1成人看片免费版| 99视频精品免费视频| 国产美女精品久久| 久久精品视频一区二区三区| 激情文学亚洲色图| 日韩午夜免费| 国产又爽又黄ai换脸| 91九色精品国产一区二区| 午夜啪啪福利视频| 亚洲另类春色校园小说| 欧美一区免费视频| 日韩中文字幕视频网| 国产精品久久久一区二区三区| caoporn成人免费视频在线| 国产精品一区二区免费| 天海翼精品一区二区三区| 日本一区二区精品| 久久精品高清| 日本福利视频在线观看| 欧美日韩一区二区综合| 亚洲欧美综合一区| 色天天色综合| 先锋影音一区二区三区| 国产精品成人a在线观看| 欧美在线观看黄| 一区二区国产精品| 国产区二区三区| 国产suv精品一区二区883| 孩娇小videos精品| 国产酒店精品激情| 亚洲av片不卡无码久久| 国产盗摄精品一区二区三区在线| 不许穿内裤随时挨c调教h苏绵 | 亚洲欧美日韩成人在线| 国产一区二区精品丝袜| av综合在线观看| 欧美日韩一级片在线观看| av中文在线观看| 亚洲精品日韩丝袜精品| 麻豆传媒在线完整视频| 91精品国产高清久久久久久久久| 日本精品在线一区| 福利视频一区二区三区| 国产亚洲观看| 91免费国产视频| 天美av一区二区三区久久| 在线码字幕一区| 亚洲国产片色| 亚欧激情乱码久久久久久久久| 国产成人av一区二区三区在线观看| 国产精品揄拍100视频| 中文字幕一区二区三区四区不卡| 欧美亚韩一区二区三区| 午夜激情久久久| 91欧美日韩麻豆精品| 色婷婷综合在线| 亚洲第一天堂网| 日韩中文字幕在线视频| 欧美aa在线观看| 国产91免费视频| 91综合在线| 免费在线观看的毛片| 成人激情免费网站| 91香蕉一区二区三区在线观看| 欧美日韩亚洲一区二| а√天堂资源在线| 日韩小视频在线| 在线一区视频观看| 久久艳妇乳肉豪妇荡乳av| 你懂的网址国产 欧美| 99re精彩视频| 久久久蜜桃精品| 99精品视频99| 精品人在线二区三区| 少妇高潮一区二区三区69| 久久久精品视频在线观看| **在线精品| 久久久婷婷一区二区三区不卡| 精品电影一区| 色哟哟在线观看视频| 国产精品久久久久毛片软件| 日韩黄色片网站| 56国语精品自产拍在线观看| 1769在线观看| 欧美精品久久一区二区 | 亚洲国产wwwccc36天堂| 国产99久久九九精品无码免费| 中文字幕亚洲色图| 在线黄色网页| 91沈先生作品| 偷拍欧美精品| 亚洲热在线视频| 91小视频在线免费看| 国产第一页精品| 欧美专区日韩专区| 精品国自产在线观看| 久久精品国产亚洲精品| 亚洲男女网站| 久久综合一区二区三区| 亚洲视频二区| www.久久久久久久久久久| 国产精品三级视频| 在线观看av大片| 色琪琪综合男人的天堂aⅴ视频| 久草综合在线| 先锋影音男人资源| 国产精品18久久久久久vr| 久久99久久久| 亚洲精品电影网在线观看| 国内精彩免费自拍视频在线观看网址| 成人免费在线一区二区三区| 亚洲国产清纯| 久久美女免费视频| 欧美美女一区二区在线观看| 午夜国产在线观看| 庆余年2免费日韩剧观看大牛| 国产伦一区二区三区| 天天综合网久久| 一区二区久久久久| 亚洲人妻一区二区三区| 国产精品第一页在线| 亚洲精品a级片| 精品少妇人妻av一区二区三区| 欧美午夜片欧美片在线观看| 98在线视频| 成人av免费看| 另类图片国产| 尤物在线免费视频| 亚洲精品国偷自产在线99热| 日韩一区精品| 日韩极品视频在线观看| 国产香蕉久久精品综合网| 国产乱色精品成人免费视频| 欧美亚洲在线观看| 999久久久精品国产| 蜜臀av粉嫩av懂色av| 欧美少妇一区二区| 丁香花在线观看完整版电影| 91精品国产99久久久久久红楼 | 亚洲欧美黄色片| 国产97在线|亚洲| 丝袜美腿一区二区三区动态图| 欧美一级裸体视频| 国产午夜精品一区二区| 99热这里精品| 国产精品激情av电影在线观看| 欧美日本三区| 久久久久久久久久久影视|