精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美日韩一区二区三| 亚洲九九九在线观看| 一区二区三区精品国产| 国产色在线视频| 合欧美一区二区三区| 欧美日韩看看2015永久免费| 国产美女精品在线| 久久久人成影片一区二区三区观看 | 国产三级视频在线| 精品一区二区三区视频在线观看 | 都市激情亚洲综合| 综合电影一区二区三区 | 国产精品国产三级国产专区53| 91视频免费网址| 国产高清一区| 国产亚洲aⅴaaaaaa毛片| 午夜免费一级片| 三上悠亚国产精品一区二区三区| 亚洲精品欧美二区三区中文字幕| 精品无码久久久久久久动漫| 91成人在线免费| 老牛国产精品一区的观看方式| 麻豆成人在线看| 色一情一交一乱一区二区三区| 欧美日韩中出| 欧美日韩国产高清一区二区三区 | 欧美巨大黑人极品精男| 一色道久久88加勒比一| 国产精品45p| 欧美日韩成人综合| 欧美视频第三页| 久久不射影院| 一区二区三区四区亚洲| 亚洲精品日韩精品| 酒色婷婷桃色成人免费av网| www.成人在线| 国产成人av一区二区三区| 艳妇乳肉豪妇荡乳av无码福利| 亚洲美女一区| 久久久久中文字幕| 精品无码一区二区三区电影桃花| 国产精品成人a在线观看| 国产午夜精品视频| 国内精品卡一卡二卡三| 亚洲色图丝袜| 国产视频久久网| a视频免费观看| 精品福利一区| 亚洲国产欧美一区二区丝袜黑人 | 中文字幕一区不卡| 亚洲一区二区在线看| 高清在线观看av| 国产日产亚洲精品系列| 婷婷精品国产一区二区三区日韩| 免费一级在线观看播放网址| 久久久噜噜噜久久人人看| 美日韩免费视频| 免费人成在线观看网站| 日本一区二区视频在线观看| 午夜欧美性电影| 日本中文字幕在线视频| 国产精品久久久久一区| 日韩视频在线免费播放| 成人在线免费看片| 一区二区免费视频| 人妻夜夜添夜夜无码av| 天堂av在线| 色悠久久久久综合欧美99| 北条麻妃视频在线| 欧美一区=区三区| 91精品国产综合久久国产大片 | 日韩欧美久久| 精品国产sm最大网站| 三级电影在线看| 欧美日韩在线网站| 超在线视频97| 欧美日韩精品区| 日本午夜一区二区| 亚洲自拍小视频免费观看| 丰满熟妇乱又伦| 久久久五月婷婷| 先锋影音男人资源| 丰乳肥臀在线| 在线免费观看日本欧美| 国产高清999| 牛牛影视一区二区三区免费看| 亚洲欧美日本另类| 日本高清不卡免费| 亚洲欧美日韩一区在线观看| 97免费中文视频在线观看| www.日韩一区| 国产精品18久久久久| 欧美大香线蕉线伊人久久国产精品| 成人免费黄色网页| 一级日本不卡的影视| 虎白女粉嫩尤物福利视频| 99国内精品久久久久| 亚洲激情电影中文字幕| 少妇愉情理伦三级| 亚洲第一网站| 成人久久一区二区| 手机看片1024国产| 中文字幕在线观看一区二区| 男人日女人逼逼| **欧美日韩在线| 欧美xxxxxxxx| 一级二级黄色片| 午夜宅男久久久| 成人情视频高清免费观看电影| 男男电影完整版在线观看| 国产美女在线观看| 972aa.com艺术欧美| 在线成人av电影| 综合毛片免费视频| 精品国产乱码91久久久久久网站| 色欲AV无码精品一区二区久久 | 91精品国产免费久久久久久| 亚洲系列第一页| 91视视频在线直接观看在线看网页在线看 | 国产视频在线免费观看| 国产亚洲成av人在线观看导航| 日本在线视频www色| 国产经典一区| 亚洲区中文字幕| 国产情侣在线视频| 高清免费成人av| 裸体裸乳免费看| 岛国精品在线| 国产亚洲精品激情久久| 成年免费在线观看| 成人黄色在线网站| 国产青草视频在线观看| 高清在线一区二区| 中文字幕av日韩| 久久亚洲精品石原莉奈| 91尤物视频在线观看| 欧美又粗又长又爽做受| 精品国产三区在线| 啊v视频在线一区二区三区| 波多野结衣黄色| 国产亚洲精品久| 99久久国产宗和精品1上映| 精品素人av| 96精品视频在线| 天堂影院在线| 欧美日韩中文字幕在线视频| 中文字幕 亚洲一区| 一区二区动漫| 美女视频久久| 成人午夜精品| 国产亚洲精品久久久| 做爰视频毛片视频| 中文字幕一区二区三区精华液| 999久久久精品视频| 91av精品| 国产v亚洲v天堂无码| 韩国精品一区| 亚洲欧美日韩中文在线制服| 波多野结衣视频在线看| 国产精品美女久久久久av爽李琼| 亚洲欧洲日本精品| 香蕉视频国产精品| 成人在线看片| 中文一区一区三区高中清不卡免费| 亚洲男人的天堂网站| 国产在线观看黄色| 久久精品亚洲乱码伦伦中文 | 一本色道久久88综合亚洲精品ⅰ| 亚洲中文无码av在线| 中日韩av电影| 超级砰砰砰97免费观看最新一期 | 亚洲美女偷拍久久| 无码人妻少妇色欲av一区二区| 狠狠爱成人网| 久久人人九九| 日韩国产91| 久久久久久久亚洲精品| 亚洲欧美日韩精品永久在线| 欧洲激情一区二区| 亚洲国产精品免费在线观看| 高清不卡在线观看| 国产无套粉嫩白浆内谢的出处| 国产精品久久久久久麻豆一区软件 | 成人黄色激情视频| 亚洲精品亚洲人成人网在线播放| 日本五十肥熟交尾| 美女一区二区视频| 性高湖久久久久久久久aaaaa| 亚洲免费观看高清完整版在线观| 成人在线播放av| 麻豆免费在线| 日韩视频欧美视频| 午夜视频免费在线| 欧美片网站yy| 美女又爽又黄免费视频| 亚洲日本电影在线| 性高潮久久久久久久| 国产乱码精品一区二区三区av | 日韩欧乱色一区二区三区在线| 久久久久九九九九| 超碰免费97在线观看| 欧美成va人片在线观看| 这里只有精品999| 亚洲va欧美va国产va天堂影院| 久久成人小视频| 久久夜色精品一区| 中文字幕第六页| 欧美aa在线视频| 欧美在线观看成人| 一区二区蜜桃| 亚洲国产欧美日韩| 希岛爱理av免费一区二区| 亚洲最大av网| 欧美亚洲二区| 欧美最猛性xxxx| 7777kkk亚洲综合欧美网站| 日韩最新中文字幕电影免费看| 日本黄在线观看| 精品成a人在线观看| 国产精品一区二区人人爽| 日韩欧美一区二区在线| 精品无码人妻一区二区三| 亚洲色图另类专区| 日韩一级片在线免费观看| 91视频观看视频| 中文在线观看免费视频| 国产精品69毛片高清亚洲| 亚洲娇小娇小娇小| 日韩在线a电影| wwwxxx黄色片| 午夜亚洲影视| 噜噜噜久久亚洲精品国产品麻豆| 狠色狠色综合久久| 欧美日韩dvd| 欧美一区二区三区久久精品| 正在播放91九色| 日本电影一区二区| 亚洲国产成人不卡| 欧美丝袜一区| 亚洲欧洲在线一区| 成人在线免费视频观看| 天堂一区二区三区| jizzjizz欧美69巨大| 日韩动漫在线观看| 欧美色图一区| 亚洲mv在线看| 婷婷亚洲五月| 三年中国中文在线观看免费播放| 亚州av乱码久久精品蜜桃| 亚洲一区二区在线免费观看| 久久人人99| 美女在线免费视频| 中文字幕日韩一区二区不卡| 特级黄色录像片| 欧美日韩精选| 免费观看美女裸体网站| 日韩午夜av在线| aaa毛片在线观看| 免费看欧美美女黄的网站| 伊人影院综合在线| 国产精品资源网| 日本一区二区在线免费观看| 91亚洲国产成人精品一区二三| 久久精品国产亚洲av麻豆| 国产日韩欧美精品在线| www.黄色com| 亚洲综合在线免费观看| 精品成人av一区二区在线播放| 色婷婷久久综合| 一二三区在线播放| 欧美大片一区二区三区| 少妇高潮久久久| 伊人久久久久久久久久| 91亚洲天堂| 456亚洲影院| 国产精品伊人| 国产传媒一区| 精品国产乱码久久久| 国产高清免费在线| 亚洲在线成人| 午夜激情av在线| av在线播放一区二区三区| 亚洲AV无码成人精品区明星换面| 1024精品合集| 一级免费在线观看| 欧美日韩的一区二区| 日本激情视频网站| 永久免费精品影视网站| 日本无删减在线| 国产成人免费av电影| 国产精品一区二区美女视频免费看 | 久久亚洲精品小早川怜子| 在线xxxxx| 日本一区二区三区四区在线视频| 久久久久人妻一区精品色欧美| 91黄色免费观看| 亚洲成人77777| 中文字幕成人精品久久不卡 | 一区二区三区高清在线| 国产精品黄色大片| 制服丝袜亚洲播放| 亚洲日本在线播放| 欧美大片va欧美在线播放| 丝袜美腿一区| 国产一区在线免费观看| 色乱码一区二区三区网站| 免费看国产一级片| 国产在线看一区| 久久亚洲AV无码专区成人国产| 亚洲永久精品国产| 一级黄色短视频| 亚洲社区在线观看| а_天堂中文在线| 91九色国产在线| 国精一区二区| 日本中文字幕网址| 国产91精品一区二区麻豆亚洲| 欧美老女人性生活视频| 日韩欧美在线免费观看| 国产1区在线观看| 米奇精品一区二区三区在线观看| 韩国成人在线| 欧美精品二区三区四区免费看视频| 国产伊人精品| 黑人性生活视频| 亚洲精品视频在线| av官网在线观看| 久久国产精品免费视频| 99视频有精品高清视频| 视频一区视频二区视频三区高| 国产女优一区| 日本黄色片在线播放| 午夜久久电影网| 婷婷开心激情网| 91精品国产成人www| 久久婷婷国产| 91成人在线观看喷潮教学| 成人蜜臀av电影| 精品人妻在线播放| 日韩欧美黄色影院| 日本h片在线观看| 91久久爱成人| 精品成人在线| 日本黄色动态图| 欧美性猛xxx| 国产精品视频一区二区久久| 国产91在线高潮白浆在线观看| 久久99国内| 亚洲天堂av线| 国产精品乱人伦| 国产精品欧美亚洲| 欧美www在线| 999久久久精品一区二区| 久久在线中文字幕| 337p粉嫩大胆色噜噜噜噜亚洲| 国产黄色免费观看| 亚洲人成在线免费观看| 日本一区二区电影| 中文字幕不卡每日更新1区2区| 久久91精品久久久久久秒播| 色欲人妻综合网| 亚洲成人av片| 久久r热视频| 亚洲国产精品一区二区第四页av| 国产在线精品不卡| 欧美交换国产一区内射| 亚洲第一精品夜夜躁人人爽| 中文字幕人成乱码在线观看| 日韩久久精品一区二区三区| 极品尤物av久久免费看| 九九视频免费看| 亚洲欧美成人网| 四虎国产精品免费久久5151| 免费看日本黄色| 久久伊人蜜桃av一区二区| 亚洲午夜无码久久久久| 欧美多人爱爱视频网站| 亚洲精品推荐| 欧美精品 - 色网| 午夜不卡av免费| 欧美性videos| 精品国产二区在线| 免费的成人av| 日韩女同强女同hd| 中文字幕日本欧美| 97品白浆高清久久久久久| 国产精品99久久免费黑人人妻| 国产精品久久久久久久久晋中| 后进极品白嫩翘臀在线视频| 国产精品黄色av| 亚洲先锋成人| 一本在线免费视频| 亚洲国产欧美一区二区三区久久| 成人一区视频| 国产一区二区网| 国产精品成人网| 欧美挠脚心网站| 91九色在线观看| 美美哒免费高清在线观看视频一区二区| 久久久99精品|