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

微服務的灰度發布就該這樣設計

開發 架構
微服務中全鏈路灰度發布方案其實很簡單,重要的就是灰度打標,整體流程如下:網關中通過全局過濾器實現灰度打標,將灰度標記放入請求頭中傳遞給下游服務。網關通過自定義的負載均衡策略,從注冊中心獲取灰度服務,進行轉發。

實際生產中如有需求變更,并不會直接更新線上服務,最通常的做法便是:切出線上的小部分流量進行體驗測試,經過測試后無問題則全面的上線。

這樣做的好處也是非常明顯,一旦出現了BUG,能夠保證大部分的客戶端正常使用。

要實現這種平滑過渡的方式就需要用到本篇文章介紹到的全鏈路灰度發布。

圖片

什么是灰度發布?

灰度發布(又名金絲雀發布)是指在黑與白之間,能夠平滑過渡的一種發布方式。在其上可以進行A/B testing,即讓一部分用戶繼續用產品特性A,一部分用戶開始用產品特性B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面來。灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。

為什么是全鏈路灰度發布?

在陳某前面一篇文章有介紹到網關的灰度發布實現,僅僅是實現了網關路由轉發的灰度發布,如下圖:

圖片

如上圖,網關灰度發布實現的是網關通過灰度標記路由到文章服務B(灰度服務),至于從文章服務B到評論服務是通過openFeign內部調用的,默認無法實現灰度標記grayTag的透傳,因此文章服務B最終調用的是評論服務A,并不是評論服務B。

全鏈路灰度發布需要實現的是:

  • 網關通過灰度標記將部分流量轉發給文章服務B
  • 文章服務B能夠實現灰度標記grayTag的透傳,最終調用評論服務B

經過以上分析,全鏈路灰度發布需要實現兩個點:

  • 網關路由轉發實現灰度發布
  • 服務內部通過openFeign調用實現灰度發布(透傳灰度標記grayTag)。

網關層的灰度路由轉發

本篇文章將使用Ribbon+Spring Cloud Gateway 進行改造負載均衡策略實現灰度發布。

實現思路如下:

  • 在網關的全局過濾器中根據業務規則給流量打上灰度標記
  • 將灰度標記放入請求頭中,傳遞給下游服務
  • 改造Ribbon負載均衡策略,根據流量標記從注冊中心獲取灰度服務
  • 請求路由轉發

第一個問題:根據什么條件打上灰度標記?

這個需要根據實際的業務需要,比如根據用戶所在的地區、使用客戶端類型、隨機截取流量.....

這里我將直接使用一個標記grayTag,只要客戶端請求頭中攜帶了這個參數,并且設置為true,則走灰度發布邏輯。

請求頭中攜帶:grayTag=true

第二個問題:為什么要在請求頭中添加灰度標記傳遞給下游服務?

這一步非常關鍵,實現灰度標記透傳給下游服務的關鍵,將灰度標記放在請求頭中,下游服務只需要從請求頭中獲取灰度標記便知道是否是灰度發布,這個和令牌中繼一個原理。

第三個問題:灰度標記如何請求隔離?

Spring MVC中的每個請求都是開啟一個線程進行處理,因此可以將灰度標記放置在ThreadLocal中進行線程隔離。

第四個問題:如何知道注冊中心的服務哪個是灰度服務?

Nacos支持在服務中配置一些元數據,可以將灰度標記配置在元數據中,這樣就能區分哪些是灰度服務,哪些是正常服務。

第五個問題:如何針對特定的服務進行灰度發布?

比如我的《Spring Cloud Alibaba實戰》中涉及的一條調用鏈路如下圖:

圖片

需求:現在只對文章服務、評論服務進行灰度發布,其他服務依然使用線上正在運行的服務

此時的調用關系就變成了下圖:

圖片

我們知道網關路由中配置的服務很多,如何只針對文章服務進行灰度發布呢?

很簡單:只需要將自定義的Ribbon灰度發布規則只對文章服務生效。

這里涉及到Ribbon中的一個注解:@RibbonClients ,只需要在其中的value屬性指定需要生效的服務名稱,那么此時網關中的配置如下:

@RibbonClients(value ={
//只對文章服務進行灰度發布
@RibbonClient(value = "article-server",configuration = GrayRuleConfig.class)
} )
@SpringBootApplication
public class GatewayApplication {

}

@RibbonClient可以指定多個,這個注解有如下兩個屬性:

  • value:指定服務的名稱,在注冊中心配置的服務名稱
  • configuration:自定義的負載均衡策略,這里是灰度發布的策略

@RibbonClients其中有一個屬性defaultConfiguration,一旦使用這個屬性,那么灰度發布的策略對網關路由中配置的所有服務都將生效。

第六個問題:說了這么多,具體如何實現?

網關中首先需要定義一個全局過濾器,偽代碼如下:

public class GlobalGrayFilter implements GlobalFilter{
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain){
//① 解析請求頭,查看是否存在灰度發布的請求頭信息,如果存在則將其放置在ThreadLocal中
HttpHeaders headers = exchange.getRequest().getHeaders();
if (headers.containsKey(GrayConstant.GRAY_HEADER)){
String gray = headers.getFirst(GrayConstant.GRAY_HEADER);
if (StrUtil.equals(gray,GrayConstant.GRAY_VALUE)){
//②設置灰度標記
GrayRequestContextHolder.setGrayTag(true);
}
}
//③ 將灰度標記放入請求頭中
ServerHttpRequest tokenRequest = exchange.getRequest().mutate()
//將灰度標記傳遞過去
.header(GrayConstant.GRAY_HEADER,GrayRequestContextHolder.getGrayTag().toString())
.build();
ServerWebExchange build = exchange.mutate().request(tokenRequest).build();
return chain.filter(build);
}
}

①處的代碼:從請求頭中獲取客戶端傳遞過來的灰度標記(這里根據自己業務需要自行更改),判斷是否是灰度發布

②處的代碼:GrayRequestContextHolder則是自定義的ThreadLocal實現的線程隔離工具,用來存放灰度標記

③處的代碼:將灰度標記放置在請求頭中,傳遞給下游微服務,這里是和令牌一個邏輯。

注意:這個全局過濾器一定要放在OAuth2.0鑒權過濾器之前,優先級要調高

全局過濾器中已經將灰度標記打上了,放置在GrayRequestContextHolder中,下面只需要改造Ribbon的負載均衡的策略去注冊中心選擇灰度服務。

創建GrayRule,代碼如下:

/**
* 灰度發布的規則
*/
public class GrayRule extends ZoneAvoidanceRule {

@Override
public void initWithNiwsConfig(IClientConfig clientConfig){
}

@Override
public Server choose(Object key){
try {
//從ThreadLocal中獲取灰度標記
boolean grayTag = GrayRequestContextHolder.getGrayTag().get();
//獲取所有可用服務
List<Server> serverList = this.getLoadBalancer().getReachableServers();
//灰度發布的服務
List<Server> grayServerList = new ArrayList<>();
//正常的服務
List<Server> normalServerList = new ArrayList<>();
for(Server server : serverList) {
NacosServer nacosServer = (NacosServer) server;
//從nacos中獲取元素劇進行匹配
if(nacosServer.getMetadata().containsKey(GrayConstant.GRAY_HEADER)
&& nacosServer.getMetadata().get(GrayConstant.GRAY_HEADER).equals(GrayConstant.GRAY_VALUE)) {
grayServerList.add(server);
} else {
normalServerList.add(server);
}
}
//如果被標記為灰度發布,則調用灰度發布的服務
if(grayTag) {
return originChoose(grayServerList,key);
} else {
return originChoose(normalServerList,key);
}
} finally {
//清除灰度標記
GrayRequestContextHolder.remove();
}
}

private Server originChoose(List<Server> noMetaServerList, Object key){
Optional<Server> server = getPredicate().chooseRoundRobinAfterFiltering(noMetaServerList, key);
if (server.isPresent()) {
return server.get();
} else {
return null;
}
}
}

邏輯很簡單,如下:

  • 獲取灰度標記
  • 從Nacos注冊中心獲取灰度服務和正常服務
  • 根據灰度標記去判斷,如果灰度發布則選擇特定的灰度服務進行轉發

定義一個配置類,注入改造的灰度策略GrayRule,如下:

/**
* 灰度部署的負載規則配置類
* 注意:這個類一定不要被Spring Boot 掃描進入IOC容器中,一旦掃描進入則對全部的服務都將生效
*/
public class GrayRuleConfig {
@Bean
public GrayRule grayRule(){
return new GrayRule();
}
}

注意:這個GrayRuleConfig不能被掃描進入IOC容器,一旦掃描進入則全局生效

因為不僅僅網關需要用到這個灰度發布策略,凡是涉及到OpenFeign調用的微服務如果需要配置灰度發布都需要用到,因此這里陳某定義了一個公用的gray-starter。

經過上述步驟網關的灰度發布則已經配置完成,此時只需要通過@RibbonClients指定對應哪個服務灰度發布。

openFeign透傳灰度標記

上面在介紹網關的灰度發布配置時,是將灰度標記(grayTag=true)放在了請求頭中,因此在下游服務中需要做的就只是從請求頭中將灰度標記取出來,然后將其存入GrayRequestContextHolder上下文中。

這樣一來下游服務中的GrayRule則能從GrayRequestContextHolder獲取到灰度標記,從注冊中心獲取灰度服務進行調用了。

問題來了:如何從請求頭中取出灰度標記?

在介紹OAuth2.0相關知識時,曾經出過一篇文章:實戰!openFeign如何實現全鏈路JWT令牌信息不丟失?

其中介紹了令牌中繼的解決方案,使用的是openFeign的請求攔截器去配置請求頭信息。

圖片

如上圖:openFeign在調用時并不是用的原先的Request,而是內部新建了一個Request,其中復制了請求的URL、請求參數一些信息,但是請求頭并沒有復制過去,因此openFeign調用會丟失請求頭中的信息。

但是可以通過實現RequestInterceptor將原先的請求頭給復制過去,代碼如下:

@Component
@Slf4j
public class FeignRequestInterceptor implements RequestInterceptor {
@Override
public void apply(RequestTemplate template){
HttpServletRequest httpServletRequest = RequestContextUtils.getRequest();
Map<String, String> headers = getHeaders(httpServletRequest);
for (Map.Entry<String, String> entry : headers.entrySet()) {
//② 設置請求頭到新的Request中
template.header(entry.getKey(), entry.getValue());
}
}

/**
* 獲取原請求頭
*/
private Map<String, String> getHeaders(HttpServletRequest request){
Map<String, String> map = new LinkedHashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
if (enumeration != null) {
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
String value = request.getHeader(key);
//將灰度標記的請求頭透傳給下個服務
if (StrUtil.equals(GrayConstant.GRAY_HEADER,key)&&Boolean.TRUE.toString().equals(value)){
//① 保存灰度發布的標記
GrayRequestContextHolder.setGrayTag(true);
map.put(key, value);
}
}
}
return map;
}
}

①處的代碼:從請求頭中獲取灰度發布的標記,設置到GrayRequestContextHolder上下文中

②處的代碼:將這個請求頭設置到新的Request中,繼續向下游服務傳遞。

其實配置一下RequestInterceptor就已經完成了,關于灰度發布策略只需要復用網關的GrayRule

注意:也需要使用@RibbonClients注解去標注文章服務調用的哪些服務需要灰度發布。

代碼如下:

@RibbonClients(value = {
//指定對comments這個服務開啟灰度部署
@RibbonClient(value = "comments",configuration = GrayRuleConfig.class)
})
public class ArticleApplication {}

Nacos中服務如何做灰度標記

其實很簡單,分為兩種:

1、在配置文件中指定,如下:

spring:
cloud:
nacos:
discovery:
metadata:
## 灰度標記
grayTag: true

2、在Nacos中動態的指定灰度標記

圖片

配置完成之后,在客戶端請求的時候只需要攜帶grayTag=true這個請求頭即可調用灰度服務。

總結

微服務中全鏈路灰度發布方案其實很簡單,重要的就是灰度打標,整體流程如下:

網關中通過全局過濾器實現灰度打標,將灰度標記放入請求頭中傳遞給下游服務。

網關通過自定義的負載均衡策略,從注冊中心獲取灰度服務,進行轉發。

在openFeign調用時需要從請求頭中獲取灰度標記,放入上下文中。

openFeign調用同樣是根據自定義的負載均衡策略從注冊中心獲取灰度服務,進行調用。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2023-06-27 08:58:03

2022-12-14 09:06:58

接口Spring解密

2024-05-17 16:18:45

微服務灰度發布金絲雀發布

2022-09-15 08:41:16

數據異構分庫分表

2024-03-06 15:38:06

Spring微服務架構擴展組件

2025-08-26 02:45:00

活動效果評估體系

2021-06-09 09:42:50

SpringCloud微服務灰度發布

2023-11-21 09:35:49

全量部署微服務

2023-07-05 13:58:10

權限模型設計模式

2025-04-15 02:25:00

2022-07-18 08:39:18

ACL訪問控制機制

2025-02-26 08:46:31

2018-11-28 09:38:34

微服務架構API

2022-08-14 07:04:44

微服務架構設計模式

2024-08-23 11:51:39

2022-07-26 09:48:55

微服務服務AKF

2022-12-02 16:28:47

2022-08-07 22:11:25

微服務架構

2019-10-21 16:54:48

數據庫設計SQL

2022-08-08 13:55:47

通信設計模式微服務
點贊
收藏

51CTO技術棧公眾號

久久综合一区二区三区| 国产69久久精品成人| 亚洲av无一区二区三区久久| 欧美人动性xxxxz0oz| 99re在线精品| 国产又爽又黄的激情精品视频 | 欧美国产亚洲视频| 老牛影视av老牛影视av| 韩国一区二区三区视频| 精品久久久久久久久久久久| 一区高清视频| 艳母动漫在线看| 韩国一区二区视频| 青青久久av北条麻妃黑人| 亚洲人与黑人屁股眼交| 欧美成人基地| 欧美一级国产精品| 国产又猛又黄的视频| www.51av欧美视频| 亚洲黄网站在线观看| 日韩精品一区二区三区四区五区| 狠狠人妻久久久久久综合麻豆| 日本女优在线视频一区二区| 97久久精品视频| 欧洲第一无人区观看| 精品美女久久久| 亚洲精品自拍偷拍| av在线天堂网| 91精品一区| 欧美亚洲自拍偷拍| 无码aⅴ精品一区二区三区浪潮| 国产毛片视频网站| 精品无码人妻一区二区三区品| 成人激情视频| 亚洲精品一区久久久久久| 乳色吐息在线观看| 亚洲伦理网站| 欧美日韩国产精品自在自线| 国产成人久久777777| 九色porny丨国产首页在线| 一区二区三区国产| 天天操天天干天天玩| 欧美成年黄网站色视频| 国产婷婷色一区二区三区| 久久资源亚洲| 日韩电影在线观看完整版| 成人一级片网址| 国产精品日韩久久久久| 欧洲第一无人区观看| 天天影视欧美综合在线观看| 久久精品中文字幕电影| 国产破处视频在线观看| 日韩激情图片| 久久亚洲国产精品成人av秋霞| 成年人视频软件| 欧美黄色录像片| 日韩一区二区三区国产| 国产精品国产三级国产传播| 久久久久亚洲| 欧美裸体男粗大视频在线观看| 五月天婷婷色综合| 欧美极品一区二区三区| 欧美激情视频给我| 精品国产乱码一区二区| 久久精品女人| 国产精品久久久久7777婷婷| 96日本xxxxxⅹxxx17| 国产一区999| 国产精品日韩欧美一区二区| 天天干天天插天天操| 久久亚洲精品小早川怜子| 日本视频精品一区| 老司机在线看片网av| 亚洲精品视频自拍| 99精品在线免费视频| 爱情电影社保片一区| 欧美午夜影院一区| 中文字幕第66页| 久久九九热re6这里有精品| 日韩国产欧美精品一区二区三区| 久久精品—区二区三区舞蹈| 国产精品二区不卡| 欧美国产日韩精品| 精品人妻无码一区二区性色| 免费在线观看一区二区三区| 97人摸人人澡人人人超一碰| 欧洲一区av| 亚洲男人天堂av| 亚洲 高清 成人 动漫| 国产综合色在线观看| 日韩欧美国产综合| 久久久亚洲av波多野结衣| 久久理论电影| 97碰在线观看| 国产又爽又黄免费软件| av中文字幕亚洲| 亚洲五月六月| 三妻四妾的电影电视剧在线观看| 欧美日韩精品欧美日韩精品| 亚洲精品激情视频| 99精品美女| 欧美激情综合色综合啪啪五月| 天天爱天天做天天爽| 国产成人免费视| 日韩不卡av| 2021天堂中文幕一二区在线观| 欧美在线你懂的| av在线播放网址| 亚洲一区二区日韩| 日本欧美爱爱爱| 成人av无码一区二区三区| 国产目拍亚洲精品99久久精品| 成人在线视频一区二区三区| 国产乱子精品一区二区在线观看| 亚洲精品国产免费| 久久免费视频精品| 精品一区二区av| 日韩激情视频| 色一区二区三区| 日韩欧美卡一卡二| 污污的视频在线免费观看| 久久久久一区| 精品国产一区二区三区免费| 在线看三级电影| 欧美日韩一级大片网址| www.久久av| 在线综合欧美| 国产精品久久久久久久久久久久午夜片 | 国产在线一区二区视频| 欧美亚洲国产一卡| 91中文字幕永久在线| 一本久道久久综合狠狠爱| 91色p视频在线| 欧美日韩欧美| 欧美日韩一区精品| 中文字幕免费视频| 男女精品网站| 欧美精品国产精品久久久 | 国产噜噜噜噜久久久久久久久| 欧美18xxxxx| 欧美视频中文字幕在线| 国产精品一级黄片| 99在线|亚洲一区二区| 国产精品手机在线| 国产理论在线| 亚洲精品久久久久久久久久久| 五月婷婷激情网| 99国产精品一区| 国产一区二区三区精彩视频| 久操精品在线| 国产精品久久久久久久久久久新郎 | 成人国产一区二区三区精品麻豆| 国产一区二区三区视频| 波多野结衣在线观看视频| 国产欧美视频一区二区| 亚洲xxx在线观看| 91精品国产福利在线观看麻豆| 92国产精品视频| 午夜av在线免费观看| 亚洲成人a级网| 日韩一级片在线观看| 天堂www中文在线资源| 99香蕉国产精品偷在线观看| 欧美12av| 欧美黄页免费| 欧美大胆在线视频| 高h震动喷水双性1v1| 色综合网站在线| 粉嫩精品久久99综合一区| 久久av资源站| 奇米777四色影视在线看| 玖玖玖视频精品| 97久久精品人搡人人玩| 番号集在线观看| 91精品国产综合久久婷婷香蕉| 欧美被狂躁喷白浆精品| 91色九色蝌蚪| www亚洲成人| 欧美三级午夜理伦三级中文幕| 国产一区二区三区四区hd| 欧美电影免费看| 久久精品国产清自在天天线| 黄色美女一级片| 欧美亚洲动漫另类| 免费网站看av| 久久免费视频色| 亚洲制服中文字幕| 99国产精品视频免费观看一公开| 日韩精品久久久| 成人午夜网址| 国产精品久久久久久久av大片| 久草免费在线色站| 在线播放亚洲激情| 黑人精品一区二区三区| 欧美视频一区二区三区在线观看 | 亚洲aaaaaaa| 欧美日本在线观看| 婷婷激情五月网| 亚洲人成亚洲人成在线观看图片| avtt香蕉久久| 国产一区二区三区日韩| 国产免费视频传媒| 影院欧美亚洲| 亚洲五月六月| 国产99精品| 国产日韩在线一区二区三区| 成人噜噜噜噜| 国产成人精品最新| 97人人在线视频| 久久在线免费视频| melody高清在线观看| 日韩高清不卡av| 亚洲av少妇一区二区在线观看 | 国产在线观看91一区二区三区 | 亚洲精品写真福利| 99国产精品免费| 91视视频在线观看入口直接观看www| 99久久99精品| 久久激情五月婷婷| 亚洲 中文字幕 日韩 无码| 亚洲精品女人| 男女裸体影院高潮| 亚洲精品小说| 亚洲一区二区三区加勒比| 亚洲男人都懂第一日本| 国产主播一区二区三区四区| 亚洲天堂中文字幕在线观看| 91理论片午午论夜理片久久| 国产精品原创视频| 国产精品日韩在线一区| 欧美人体一区二区三区| 5278欧美一区二区三区| 九色porny丨入口在线| 久久久久久国产精品三级玉女聊斋| а天堂中文在线官网| 日韩最新在线视频| 麻豆传媒在线免费| 日韩一中文字幕| 免费av在线网址| 久久亚洲国产精品成人av秋霞| 日本美女在线中文版| 色偷偷偷综合中文字幕;dd| 国内精品在线视频| 一区二区亚洲精品国产| 香蕉视频在线播放| 日韩有码视频在线| 成人福利片网站| 欧美肥婆姓交大片| 18video性欧美19sex高清| 国产+人+亚洲| 擼擼色在线看观看免费| 欧美专区在线播放| 巨胸喷奶水www久久久免费动漫| 国产精品入口尤物| 成人51免费| 岛国视频一区免费观看| 久久精品福利| 欧美下载看逼逼| 日本电影一区二区| 亚洲精品偷拍视频| 欧美日韩综合| 日本不卡在线观看视频| 日本欧美在线观看| 亚洲第一成肉网| 国产99一区视频免费| 第四色在线视频| 国产亚洲短视频| 国产精品免费人成网站酒店| 亚洲图片欧美综合| 欧美日韩综合一区二区三区| 欧美日韩在线直播| 国产高清免费av| 亚洲精品videossex少妇| 久久久久久青草| 久久手机精品视频| 免费看男女www网站入口在线| 国产精品偷伦免费视频观看的| 高清精品久久| 久久久久久国产精品mv| 久久综合国产| 日本国产在线播放| 蜜臀va亚洲va欧美va天堂| 妖精视频在线观看| 国产日韩av一区二区| 欧美日韩在线视频免费| 色婷婷综合久久久中文字幕| 国产视频一区二区三| 日韩精品在线观看一区| 国产在线一区二区视频| 欧美做受高潮电影o| 亚洲三级在线| 精品在线一区| 欧美在线观看天堂一区二区三区| 18禁男女爽爽爽午夜网站免费| 国产一区二区视频在线播放| 中文精品在线观看| 亚洲黄一区二区三区| 国产精品午夜一区二区| 亚洲第一视频在线观看| 免费网站看v片在线a| 欧洲精品久久久| 亚洲综合网狠久久| 一区二区精品在线| 国产精品久久久久9999高清| 佐山爱在线视频| 国产精品视频在线看| 国产原创视频在线| 日韩精品在线一区| 调教视频免费在线观看| 日本精品久久中文字幕佐佐木| 中文字幕日韩在线| 一区二区不卡在线观看| 久久久久91| 少妇光屁股影院| 五月激情综合色| 亚洲国产欧美另类| 久久国产精品久久久久久久久久| 欧美日韩尤物久久| 欧美日韩在线精品一区二区三区| 在线看片一区| 在线观看你懂的视频| 18成人在线观看| 影音先锋国产资源| 国产亚洲视频在线观看| 成人av三级| 免费看国产精品一二区视频| 日韩图片一区| 国产69视频在线观看| 亚洲动漫第一页| 后入内射欧美99二区视频| 欧美理论电影在线播放| 玖玖精品一区| 国产亚洲精品久久久久久久| 国产一区二区三区香蕉 | 国产精品久久久久久久久妇女| 91人人澡人人爽人人精品| 久久精品夜色噜噜亚洲a∨| 69成人免费视频| 亚洲色图激情小说| 欧美www.| 亚洲欧美综合一区| 久久91精品国产91久久小草| 91麻豆精品久久毛片一级| 欧美日韩亚洲高清一区二区| 8888四色奇米在线观看| 国产精品视频在线播放| 成人综合久久| 国产性生活一级片| 一区二区三区四区中文字幕| 亚洲精品福利网站| 97国产精品人人爽人人做| 女同一区二区三区| 日韩视频第二页| 国产精品人成在线观看免费| 国产精品久久久久久久久久久久久久久久 | julia一区二区中文久久94| 黄色综合网站| 久久久久久久无码| 色素色在线综合| 在线观看a视频| 亚洲专区在线视频| 在线欧美亚洲| 中文字幕一二三四区| 欧美视频日韩视频在线观看| 欧美人xxx| 国产伦精品一区二区三区视频黑人| 亚洲精品系列| 永久免费av无码网站性色av| 91精品国产综合久久香蕉麻豆| 超碰97免费在线| 欧美一区二区综合| 国产一区二区三区四区五区入口 | 欧美色老头old∨ideo| a黄色片在线观看| 精品国产综合久久| 秋霞电影网一区二区| 妺妺窝人体色www婷婷| 日韩av在线网址| 色999韩欧美国产综合俺来也| 国产精品日韩三级| 国产三区在线成人av| 国产免费av观看| 欧美最顶级丰满的aⅴ艳星| 亚洲91视频| 四虎永久免费在线观看| 91精品国产一区二区三区蜜臀 | 成a人v在线播放| 肥熟一91porny丨九色丨| 日韩国产欧美在线视频| 激情五月少妇a| 亚洲三级免费看| 日韩欧美中文字幕一区二区三区| 那种视频在线观看| 一区二区三区在线看| 国产女人在线观看| 国产伦精品一区二区三区视频黑人| 蜜臀久久99精品久久久画质超高清| 日韩免费av片| 久久久久www| 欧美日韩国产高清电影|