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

16 圖 | Nacos 架構原理①:一條注冊請求會經歷什么?

開發 前端
本文通過發起一條注冊請求,講解了 Nacos 客戶端如何隨機選擇節點、Nacos Server 如何將請求進行路由轉發、Nacos Server 如何存儲注冊實例。

這次我們來聊下 Nacos 的注冊服務的底層原理。

Nacos 作為注冊中心,用來接收客戶端(服務實例)發起的注冊請求,并將注冊信息存放到注冊中心進行管理。

那么一條注冊請求到底會經歷哪些步驟呢?

知識點預告

先上一張整體的流程圖:

  • 集群環境:如果是 Nacos 集群環境,那么拓撲結構是什么樣的。
  • 組裝請求:客戶端組裝注冊請求,下一步對 Nacos 服務發起遠程調用。
  • 隨機節點:客戶端隨機選擇集群中的一個 Nacos 節點發起注冊,實現負載均衡。
  • 路由轉發:Nacos 節點收到注冊請求后,看下是不是屬于自己的,不是的話,就進行路由轉發。
  • 處理請求:轉發給指定的節點后,該節點就會將注冊請求中的實例信息解析出來,存到自定義的內存結構中。
  • 最終一致性:通過 Nacos 自研的 Distro 協議執行延遲異步任務,將注冊信息同步給集群中的其他節點,保證了數據的最終一致性。
  • 異步重試:如果注冊失敗,客戶端將會切換 Nacos 節點,再次發起注冊請求,保證高可用性。

這些知識點里面還有很多細節,我會通過畫圖 + 源碼剖析的方式給大家解答。如果遇到源碼看不太懂的地方,可以多看下我畫的圖,然后翻下源碼,對照著一起看。

小 Tip:本文使用的 Nacos 版本:2.0.4。

一、源頭:發起注冊

1.1 閱讀源碼的小技巧

上篇我們講到加上一個注解 @EnableDiscoveryClient 就可以使服務自動注冊到 Nacos。

那么這個發起注冊的地方到底在哪呢?注冊信息又是長什么樣的呢?

告訴大家一個看源碼的小技巧,拿到源碼后,不是直接各個文件都看一篇,而是先看源碼中帶的 example 文件夾。如下圖所示,找到 example 的 App 類,里面就有發起注冊的實例代碼。如下圖所示:

當然,我們也可以通過官網給的 curl 命令發起 HTTP 請求:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.11&port=8080'

留個問題:我們都是加一個 Nacos 注解 @EnableDiscoveryClient,就會自動把服務實例注冊到 Nacos,這個是怎么做到的?

1.2 發起注冊的流程圖

先來看一下代碼的流程圖:

跟著這個流程圖,我們 debug 來看下。

1.3 組裝注冊的實例信息

入口的核心代碼如下圖所示,它會組裝注冊的實例信息,放到一個 instance 變量里面:

通過代碼調試,我們可以看到里面的實例信息長這樣:

1.4 組裝注冊請求 request

發起注冊的核心方法是 doRegisterService(),組裝的 request 如下圖所示,里面有之前組裝的實例信息 instance,還有指定的 namespace(Nacos 的命名空間)、serviceName(服務名),groupName(Nacos 的分組)。

發起注冊的源碼

1.5 發起遠程調用

requestToServer() 方法里面會調用 RpcClient 的 request() 方法:

response = this.currentConnection.request(request, timeoutMills);

就是向 Nacos 發起遠程調用,如果是 Nacos 集群,則是向集群中的某個 Nacos 節點發起遠程調用。

接下來我們看下客戶端是如何選擇一個 Nacos 節點進行注冊的。

二、集群環境:分布式的前提

如果是 Nacos 集群環境,客戶端會隨機選擇一個 Nacos 節點發起注冊。

2.1 搭建好一套Nacos 集群環境

為了講解客戶端是如何注冊到 Nacos 集群環境的底層原理,我在本地搭建了一個 Nacos 集群環境,有 3 個 Nacos 服務,它們的 IP 相同,端口號不同。

192.168.10.197:8848
192.168.10.197:8858
192.168.10.197:8868


集群環境

然后服務 A 和服務 B 都是配置了 Nacos 集群的 IP 和 端口號的,配置如下所示:

spring.cloud.nacos.discovery.server-addr
=192.168.10.197:8848,192.168.10.197:8858,192.168.10.197:8868

整體的結構如下圖所示,服務 A 和 服務 B 都往 Nacos 集群進行注冊。

服務 A 和 B 注冊到集群

但是里面有一個問題:服務 A 注冊時,是向所有 Nacos 節點發起注冊呢?還是只向其中一個節點發起注冊?如果只向一個節點注冊,要向哪個節點注冊呢?

答案:在 Client 發起注冊之前,會有一個后臺線程隨機拿到 Nacos 集群服務列表中的一個地址。

Nacos 為什么會這樣設計?

這其實就是一個負載均衡的思想在里面,每個節點都均勻的分攤請求。

保證高可用,當某個節點宕機后,重新拿到其他的 Nacos 節點來建立連接。

接下來我們看下服務 A 是怎么隨機拿到一個 Nacos 節點的。

三、隨機節點:平等的世界

我們來看下客戶端是如何隨機選擇一個節點的,流程圖如下:

那么如何找到這些代碼邏輯呢?思路是怎么樣的?

我們之前講過,RpcClient 會發起 request 請求,用的是和 Nacos 建立 currentConnection 連接來發起調用,代碼如下:

// 發起調用
response = this.currentConnection.request(request, timeoutMills);

這個 currentConnection 是客戶端和 Nacos 集群中的某個節點建立的連接,我們找下它在哪里賦值的。代碼如下:

// 拿到 Nacos 節點信息
serverInfo = recommendServer.get() == null ? nextRpcServer() : recommendServer.get();
// 連接 Nacos 節點
connectToServer = connectToServer(serverInfo);
// 賦值 currentConnection
this.currentConnection = connectToServer;

而連接的信息是通過參數 serverInfo 傳進去的,所以我們再看下 serverInfo 在哪里賦值的。

這個 nextRpcServer() 方法里面會拿到一個隨機的 Nacos 地址:

// 一個 int 隨機數,范圍 [0 ~ Nacos 個數)
currentIndex.set(new Random().nextInt(serverList.size()));
// index 自增 1
int index = currentIndex.incrementAndGet() % getServerList().size();
// 返回 Nacos 地址
return getServerList().get(index);

小結:客戶端生成一個隨機數,然后通過這個隨機數從 Nacos 服務列表中拿到一個 Nacos 服務地址返回給客戶端,然后客戶端通過這個地址和 Nacos 服務建立連接。Nacos 服務列表中的節點都是平等的,隨機拿到的任何一個節點都是可以用來發起調用的。

四、路由轉發:不是我的菜

4.1 發起和轉發請求的流程

為了演示發起注冊的流程,我在這里模擬了一個注冊請求。

用的是 curl 命令,對 Nacos 節點(127.0.0.1:8848)發起注冊請求:

curl -X POST 'http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.11&port=8080'

請求 URL:/nacos/v1/ns/instance

請求參數:

  • serviceName=nacos.naming.serviceName
  • ip=20.18.7.11
  • port=8080'

之前我們講到,Nacos 的有多個節點可以分別處理請求,當節點發現這個請求不是屬于自己的,就會進行轉發。

如下圖所示:

服務 A 隨機選擇一個 Nacos 節點(圖中為 Nacos1)發起注冊請求,請求參數中包含了實例信息,Nacos 1 根據實例信息 hash + 取模拿到正確的節點,如果不屬于自己,則將請求轉發給其他節點(圖中為 Nacos2)。

那么路由轉發的細節是怎么樣的?這個就涉及到 Distro 協議了,我們接著往下看。

4.1 路由轉發的邏輯

其實 Nacos 節點的路由轉發邏輯比較簡單,先來看下流程圖:

步驟如下:

  • ① Nacos 節點從客戶端發起的 request 中拿到客戶端的實例信息生成 distroTag,如 IP + port 或 service name。
  • ② Nacos 根據 distroTag 生成 hash 值。
  • ③ 用 hash 值對 Nacos 節點數進行取余,拿到余數,比如 0、1、2、3。
  • ④ 根據余數從 Nacos 節點列表中拿到指定的節點地址。

我沒看懂的點:我這里啟動了三個 Nacos 節點,如下圖所示的 三個 Running 節點。但是為什么 Nacos 的 ServersList 會多了一個 192.168.10.197:8848的節點?

IDEA 啟動了三個 nacos 節點

nacos 控制臺有四個節點

4.2 路由轉發源碼分析

入口文件是 DistroFilter.java:

naming/src/main/java/com/alibaba/nacos/naming/web/DistroFilter.java

請求會先到 DistroFilter 類的 doFilter() 方法,拿到正確的節點地址后,將請求轉發出去。

獲取需要轉發節點地址的代碼如下:

// 找到 Nacos 集群中的目標節點
final String targetServer = distroMapper.mapSrv(distroTag);

// mapSrv 方法會先 hash,然后再取模,responsibleTag的值類似這樣:"20.18.7.11:8080"
int index = distroHash(responsibleTag) % servers.size();

// distroHash 方法里面會對 客戶端的 ip+port 字符串或者服務名字符串 進行 hash
Math.abs(responsibleTag.hashCode() % Integer.MAX_VALUE);

不論是自己處理注冊請求還是轉發給其他節點來處理,都會把實例信息存儲起來,那么是如何進行存儲的?

五、處理請求:快到碗里來

Nacos 目前有兩個版本,v1 和 v2,如果是 v1,則是 instanceController 來處理注冊請求,否則用 instanceControllerV2。本篇我們只講解 v1 版本是怎么處理請求的。

先上流程圖:

添加實例信息的流程

測試用的發起注冊的命令:

curl -X POST 'http://127.0.0.1:8858/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.11&port=8080'

核心代碼就是這個:

服務端注冊實例的方法

首先有一個 synchronized 鎖,然后執行 put 操作將臨時的實例信息存放起來,所以重點看下 這個 consistencyService.put() 方法做了什么事情。

先看下源碼:

onPut(key, value);
// 開啟 1s 的延遲任務,將數據同步給其他 Nacos 節點
distroProtocol.sync(new DistroKey(key,KeyBuilder.INSTANCE_LIST_KEY_PREFIX),DataOperation.CHANGE,
DistroConfig.getInstance().getSyncDelayMillis());

這里面做了三件事情:

  • ① 將實例信息存放到內存緩存 ConcurrentHashMap 里面。
  • ② 添加一個任務到 BlockingQueue 隊列里面,這個任務就是將最新的實例列表通過 UDP 的方式推送給所有客戶端(服務實例),這樣客戶端就拿到了最新的服務實例列表。沒想到吧,計算機網絡的知識終于用上了~
  • ③ 開啟 1s 的延遲任務,將數據通過給其他 Nacos 節點。

注意:針對第二點和第三點,屬于 Distro 一致性協議的一部分,里面的內容還比較多,我們放到下一講專門來講。

下一講知識點預告:

  • 這里的存儲實例和同步的方式和 Eureka 有什么區別?Eureka 用的三層緩存架構,Nacos 用的 CopyOnWrite 技術。
  • 如何推送給所有客戶端的?UDP 方式。
  • 如何同步給 Nacos 其他節點的?Distro 一致性協議。

六、總結

本文通過發起一條注冊請求,講解了 Nacos 客戶端如何隨機選擇節點、Nacos Server 如何將請求進行路由轉發、Nacos Server 如何存儲注冊實例。

另外本文用到了集群環境,關于如何搭建和 debug 集群環境,感興趣的可以留言,后續補上這部分的講解。

一條注冊請求的核心流程:

責任編輯:武曉燕 來源: 悟空聊架構
相關推薦

2021-06-15 10:46:51

HTTPS網絡協議TCP

2023-01-16 18:32:15

架構APNacos

2025-05-29 08:35:00

Nacos服務注冊開發

2023-10-06 15:29:07

MySQL數據庫更新

2025-03-11 00:22:00

DeepSeekAI圖片

2024-01-02 22:47:47

Nacos注冊中心節點

2010-08-25 15:08:22

經歷

2024-08-29 12:37:11

2022-05-31 13:58:09

MySQL查詢語句

2019-11-06 15:16:12

16GB8GB內存

2010-04-13 16:57:01

2025-10-09 07:25:00

2019-03-28 10:09:49

內存CPU硬盤

2011-03-21 17:19:12

LAMPUbuntu

2025-05-20 00:00:00

2022-04-02 15:55:21

中國互聯網互聯網公司發展史

2025-10-16 07:05:00

SparkSQLSpark 內核

2011-05-12 14:43:57

MYSQL

2025-06-04 08:20:30

2011-12-29 20:58:46

Windows Pho
點贊
收藏

51CTO技術棧公眾號

gai在线观看免费高清| 日韩中文一区二区三区| 国产成人自拍视频在线| 国产99久久精品一区二区300| 欧美吞精做爰啪啪高潮| 三级在线免费观看| 飘雪影视在线观看免费观看| 麻豆91小视频| 91精品国产成人| 免费看91的网站| 综合激情网...| 在线亚洲欧美专区二区| 99在线观看视频免费| youjizz在线播放| www.日韩大片| 亚洲综合中文字幕在线观看| 波多野结衣啪啪| 亚洲成人在线| 久久国产精品久久久久久| 91成人破解版| 国产精品99久久免费观看| 欧美日韩一区三区四区| 日本黄色三级大片| 女囚岛在线观看| 亚洲欧洲精品天堂一级| 清纯唯美一区二区三区| 天天综合网在线| 国产中文一区二区三区| 国产福利视频一区二区| 久久午夜免费视频| 狠狠入ady亚洲精品经典电影| 在线中文字幕日韩| 最新中文字幕视频| 免费福利视频一区| 精品久久人人做人人爰| 日本高清免费观看| 国产一区二区av在线| 欧美日韩免费一区二区三区 | 亚洲欧洲美洲一区二区三区| 一区二区国产精品视频| 国产成人无码精品久久二区三| 红杏一区二区三区| jzzjzzjzz亚洲成熟少妇| 日韩av一二三| 国产精品igao视频| 无码人妻精品一区二区| 午夜影院日韩| 欧美自拍视频在线| 成人午夜淫片100集| 国产一区二区三区的电影 | 紧缚奴在线一区二区三区| 国产成人在线视频| 波多野结衣影片| 老司机午夜精品视频在线观看| 欧美一级片在线播放| 国产区在线观看视频| 国产精品日本欧美一区二区三区| 91国语精品自产拍在线观看性色| 男人天堂中文字幕| 亚洲一区成人| 国产精品v片在线观看不卡| 四虎影院在线免费播放| 日韩国产欧美在线播放| 国产精品男人的天堂| 一本一道精品欧美中文字幕| 久久精品国产99国产| 成人黄色免费在线观看| 国产日韩在线观看一区| 国产二区国产一区在线观看| 粉嫩高清一区二区三区精品视频| 亚洲美女性生活| av中文字幕亚洲| 欧美大香线蕉线伊人久久| 日本不卡视频一区二区| 国产欧美一区二区精品秋霞影院 | 超碰男人的天堂| 自拍偷拍欧美一区| 日韩天堂在线视频| 国产黄色片在线免费观看| 亚洲高清网站| 国产精品高潮在线| 国内老熟妇对白hdxxxx| av午夜一区麻豆| 神马影院一区二区| 青春草免费在线视频| 日韩欧美在线看| av亚洲天堂网| 久久综合五月婷婷| 在线观看欧美成人| 国产精品第九页| 日韩精品久久久久久| 91视频九色网站| 免费一级在线观看| 亚洲精品国产成人久久av盗摄| 国产视频一视频二| 99精品在线免费观看| 精品久久99ma| 女人黄色一级片| 黄色工厂这里只有精品| 国产不卡av在线| av免费观看在线| 国产欧美日韩在线| 国产一二三在线视频| 日日狠狠久久| 亚洲欧美国产日韩天堂区| 麻豆视频在线免费看| 久久天天综合| 成人激情av| 91精品国产91久久久久游泳池 | 久久天天躁狠狠躁夜夜爽蜜月| 午夜偷拍福利视频| 精品一区二区在线看| 久久久久高清| 久久亚洲导航| 777午夜精品免费视频| av小说在线观看| 在线精品一区| 亚洲最大的av网站| 91美女视频在线| 色狠狠桃花综合| 免费成人蒂法网站| 午夜国产欧美理论在线播放| 国产精品第二页| 日韩一区av| 五月婷婷激情综合| 精品人妻人人做人人爽夜夜爽| 日韩国产专区| 日韩av男人的天堂| 手机亚洲第一页| 亚洲成人高清在线| 少妇欧美激情一区二区三区| 婷婷久久一区| 国产日本欧美在线观看| 国产51人人成人人人人爽色哟哟| 精品日韩美女的视频高清| 亚洲熟妇一区二区| 欧美另类视频| 亚洲自拍另类欧美丝袜| 国产精品刘玥久久一区| 欧美一区二区三区公司| 国产精品国产三级国产传播| 欧美96一区二区免费视频| 日本电影一区二区三区| 精品国产免费人成网站| 日韩经典中文字幕在线观看| 日韩久久久久久久久| bt欧美亚洲午夜电影天堂| 国内精品视频一区二区三区| 91亚洲精品视频在线观看| 九色精品免费永久在线| www国产在线| 亚洲国产婷婷综合在线精品| 日本少妇一级片| 影音先锋久久资源网| 国产精品有限公司| 一区二区精品伦理... | 中文字幕免费在线看线人动作大片| 性高湖久久久久久久久| 欧美日韩一区在线观看视频| 欧美最新精品| 久久激情视频久久| www.我爱av| 色综合天天综合色综合av| 国产成人福利在线| 久久国产成人午夜av影院| 亚洲第一页在线视频| 视频一区在线| 欧美亚洲成人网| 成人在线免费看| 欧美精品久久99久久在免费线 | 一区视频在线看| 欧美久久久久久| 色8久久久久| 国内精品久久久久| 大片免费播放在线视频| 欧美一区二区视频在线观看2020 | 免费高清在线观看电视| 国产999精品久久| 精品一卡二卡三卡| 久久精品亚洲人成影院| 粉嫩高清一区二区三区精品视频| 久久爱91午夜羞羞| 成年人精品视频| 日韩av高清在线| 欧美精品一二三| 国产精品美女毛片真酒店| 国产亚洲自拍一区| 色黄视频免费看| 老鸭窝亚洲一区二区三区| 亚洲一区二区三区四区中文| 北条麻妃一区二区三区在线| 国产99久久久欧美黑人| 成人在线播放| 亚洲欧美综合区自拍另类| 国产女18毛片多18精品| 偷拍与自拍一区| 免费成人深夜蜜桃视频| 暴力调教一区二区三区| 日本肉体xxxx裸体xxx免费| 在线成人黄色| 黄色一级视频播放| 精品国产一区二区三区久久久蜜臀| 97伦理在线四区| 国产乱子精品一区二区在线观看| 久久久久久久久久久人体| 狠狠狠综合7777久夜色撩人| 日韩免费高清视频| 在线视频 中文字幕| 欧美日韩国产中字| 妺妺窝人体色www聚色窝仙踪| 国产欧美日韩在线看| 性色av蜜臀av色欲av| 国产久卡久卡久卡久卡视频精品| 任你操这里只有精品| 亚洲国产日本| avav在线播放| 91精品久久久久久久蜜月 | 在线观看美女网站大全免费| 日韩激情在线视频| 欧美 日韩 人妻 高清 中文| 91精品在线观看入口| 一区二区三区麻豆| 一道本成人在线| 日韩黄色精品视频| 亚洲一区成人在线| 欧美日韩免费做爰视频| 亚洲天堂2014| 97精品在线播放| 中文字幕欧美日韩一区| 99久久久无码国产精品性| 波多野结衣一区二区三区 | 国产免费人做人爱午夜视频| 国产精品多人| 菠萝蜜视频在线观看入口| 一区二区三区四区日韩| 自拍视频一区二区三区| 国产精品精品| 国产又黄又爽免费视频| 国产大片一区| 天天干天天操天天干天天操| 欧美成人直播| 国产免费一区二区三区四在线播放| 日本欧美肥老太交大片| 亚洲成人a**址| 日韩亚洲一区在线| 亚洲在线播放电影| 日韩高清欧美| 在线视频一区观看| 久久久久av| 欧美做暖暖视频| 黄色另类av| 91九色在线观看视频| 久久亚洲视频| 欧美激情第3页| 国产呦精品一区二区三区网站| 激情久久综合网| 国产精品99久久久久久有的能看 | 国产精品99久久免费黑人人妻| 亚洲一区中文| 四季av一区二区| 国产尤物一区二区在线| 中文字幕在线国产| 久久亚洲影视婷婷| 国产馆在线观看| 亚洲黄色免费电影| 国产精品第9页| 在线观看日产精品| 国产熟女一区二区三区五月婷| 欧美xxxxxxxxx| 嫩草研究院在线观看| 自拍偷拍亚洲欧美| 欧美videossex| 欧亚精品中文字幕| aa亚洲一区一区三区| 国产精品露出视频| 国产亚洲一卡2卡3卡4卡新区 | 18加网站在线| 91av在线播放| 欧美激情啪啪| 国内成+人亚洲| 欧美综合视频| 国产一线二线三线女| 蜜桃久久av| 又黄又爽又色的视频| 337p粉嫩大胆色噜噜噜噜亚洲| 日本美女bbw| 亚洲高清免费观看| 亚洲怡红院av| 国产视频在线一区二区| 麻豆av在线导航| 亲子乱一区二区三区电影| 精品欧美视频| 日韩电影天堂视频一区二区| 欧美日本中文| 91制片厂毛片| 91色在线porny| 免费无遮挡无码永久在线观看视频| 色婷婷亚洲综合| 亚洲av永久无码国产精品久久| 亚洲女人被黑人巨大进入| 污污视频在线看| 国产女人18毛片水18精品| 青草久久视频| 日本黄xxxxxxxxx100| 日韩av在线发布| 亚洲中文字幕一区| 玉足女爽爽91| 亚洲一级特黄毛片| 亚洲欧美成人一区二区在线电影| 污污在线观看| 91九色精品视频| 日韩欧美高清| 精品久久久噜噜噜噜久久图片 | 乱色588欧美| 欧美日韩伊人| 亚洲在线观看网站| 国产精品美日韩| 亚洲精品国产无码| 日韩精品久久久久| 福利小视频在线| 999热视频在线观看| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 欧美二区视频| 亚洲天堂av一区二区| 国产精品午夜在线观看| 久久久久久久久久一级| 国产丝袜精品视频| 中文字幕色婷婷在线视频| 国产一区二区三区免费不卡| 欧美日韩国产在线一区| 黑人性生活视频| 一区二区在线观看视频| 草逼视频免费看| 欧美极品少妇xxxxⅹ免费视频| 精品国产一区二区三区2021| 亚洲图片小说在线| 免费成人av在线| 亚洲成人在线观看视频| 黄色一级片中国| 欧美精品在线观看一区二区| 一级日本在线| 国产日韩欧美中文| 欧美aaaa视频| 做a视频在线观看| 亚洲猫色日本管| www.国产欧美| 久久人人爽人人爽人人片av高请| 在线视频亚洲欧美中文| 久久久久久久久久伊人| 国产精品亚洲第一| 国产一级久久久| 亚洲精品电影久久久| 老牛影视精品| 日本一区免费在线观看| 日韩 欧美一区二区三区| 日本成人免费在线观看| 宅男在线国产精品| 日本中文字幕中出在线| 激情小说综合区| 天堂蜜桃一区二区三区| 日本美女bbw| 日韩美女在线视频| 亚洲美女尤物影院| 亚洲一区尤物| 国产成人精品亚洲777人妖| 久久高清免费视频| 亚洲偷熟乱区亚洲香蕉av| 涩涩涩久久久成人精品| 久久久久久久9| 国产欧美日韩久久| 国产xxxxxx| 欧美主播福利视频| 色一区二区三区四区| 欧美一级片在线免费观看| 欧美日韩免费看| 天堂地址在线www| 国产精品露出视频| 青娱乐精品视频| 日本一本高清视频| 一个色综合导航| 91成人在线精品视频| 国产精彩免费视频| 亚洲精品日韩一| 黄色在线视频观看网站| 亚洲free嫩bbb| 日精品一区二区三区| 69av.com| 一区二区在线免费视频| 亚洲一区电影| 九热视频在线观看| 五月婷婷激情综合| yellow91字幕网在线| 欧美日韩在线精品一区二区三区| 国产在线精品一区二区夜色| 美日韩一二三区| 欧美成人合集magnet| 经典一区二区| 精品熟女一区二区三区| 91麻豆精品国产91久久久久久久久| 黑森林国产精品av|