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

Kafka 如何基于 KRaft 實現(xiàn)集群最終一致性協(xié)調(diào)

開發(fā) 架構
我們可以看出 KRaft 替換 ZK,并不是元數(shù)據(jù)存儲重新造輪子,而核心是集群協(xié)調(diào)機制的演進。整個通信協(xié)調(diào)機制本質(zhì)上是事件驅(qū)動模型,也就是 Metadata as an Event Log,Leader 通過 KRaft 生產(chǎn)權威的事件,F(xiàn)ollower 和 Broker 通過監(jiān)聽 KRaft 來獲得這些事件,并且順序處理事件,達到集群狀態(tài)和期望的最終一致。

一、架構概覽   

Zookeeper 提供了配置服務、分布式同步、命名服務、Leader 選舉和集群管理等功能,在大數(shù)據(jù)時代的開始很多開源產(chǎn)品都依賴 Zookeeper 來構建,Apache Kafka 也不例外。但是隨著 Kafka 功能的演進和應用的場景越來越多:

  • 基于 Zookeeper 的協(xié)作模式,使得 Kafka 的集群一致性維護越來越復雜;
  • 受到 Zookeeper 性能的限制,使得 Kafka 無法支撐更大的集群規(guī)模;
  • 并且 Zookeeper 自身帶來的運維復雜性和產(chǎn)品穩(wěn)定性,也同樣將復雜度和風險負擔傳遞到 Kafka 運維人員;

因此作為 Zookeeper 的替代,Kafka 3.3.1 提供了 KRaft 元數(shù)據(jù)管理組件。

下圖來自于 KIP-500 [1]提案,左右分別是 Zookeeper 模式和 KRaft 模式的部署架構圖。

圖片圖片

在 Zookeeper (后面簡稱為 ZK)模式下:

  • 運維部署:3 個 ZK 節(jié)點;2..N 個 Broker 節(jié)點,其中一個 Broker 承擔 Controller 的角色。除了拉起一套最小生產(chǎn)的 Kafka 集群需要至少 3 + N 的資源外,Kafka 的運維人員要同時掌握 ZK 和 Kafka Broker 兩套完全不同的系統(tǒng)的運維方式。
  • 通信協(xié)調(diào):ZK 節(jié)點之間通過 ZAB 協(xié)議進行一致性協(xié)調(diào);Broker 會通過 ZK 來選出一個 Controller 負責全局的協(xié)調(diào),同時也會直接修改 ZK 里的數(shù)據(jù);Controller 也會監(jiān)聽和修改 ZK 里的數(shù)據(jù),并調(diào)用 Broker 來完成集群的協(xié)調(diào)。雖然 ZK 之間的一致性由 ZAB 來保障了,但是 ZK 與 Controller 之間和 Controller 與 Broker 之間的一致性是相對比較脆弱的。

在 KRaft 模式下:

  • 運維部署:3 個 Controller 節(jié)點;0..N 個 Broker 節(jié)點。Kafka 節(jié)點可以同時承擔 Controller 和 Broker 兩個角色,因此一套最小生產(chǎn)集群只需要 3 個節(jié)點。在測試環(huán)境更可以只以 1 節(jié)點模式就可以輕量地拉起一個 Kafka 集群。
  • 通信協(xié)調(diào):Controller 節(jié)點底層通過 Raft 協(xié)議達成一致,Controller 的內(nèi)存狀態(tài)通過 #replay Raft Log 來構建,因此 Controller 之間的內(nèi)存狀態(tài)都是一致的;Broker 訂閱 KRaft Log 維護和 Controller 一致的內(nèi)存狀態(tài),并且通過事件驅(qū)動的方式執(zhí)行 Partition Reassignment 之類的操作來實現(xiàn)集群最終一致性協(xié)調(diào)。整個集群的狀態(tài)維護和一致性協(xié)調(diào)都是基于 KRaft 中的事件。

Raft 的原理和實現(xiàn)已經(jīng)有很多優(yōu)秀的文章介紹過了,就不在此贅述了。下面著重介紹一下 Kafka 如何基于 KRaft 實現(xiàn)集群的最終一致性協(xié)調(diào)。

二、最終一致性協(xié)調(diào)

最終一致性協(xié)調(diào)分為兩部分:Controller 內(nèi)存數(shù)據(jù)與 KRaft 的一致性;Broker (分區(qū) / 配置 / ...)狀態(tài)與期望的一致性。

2.1 Controller

Controller 在生產(chǎn)環(huán)境中通常由 3 個節(jié)點組成 Quorum,底層使用 KRaft 來進行一致性協(xié)調(diào),KRaft 的 Leader 即是 Controller Leader。

只有 Leader 會進行請求處理,F(xiàn)ollower 只會跟隨 Replay KRaft 中的數(shù)據(jù),請求處理流程簡要如下:

  1. 當 Leader 網(wǎng)絡層接收到 Broker 發(fā)來的請求后,會將請求首先放入到事件隊列中,由后臺的單線程來處理事件隊列中的請求。通過單線程處理機制簡化了并發(fā)編程的復雜度,并且確保所有請求可以順序處理;
  2. 單線程處理器運行請求對應的 Manager 邏輯。Manager 根據(jù)當前內(nèi)存中維護的狀態(tài),生成響應和變更的 Records;
  3. 最后再把變更的 Records 提交到 KRaft 中,等多數(shù)派確認后就可以將響應返回,并 #replay(Records) 修改 Manager 維護的內(nèi)存狀態(tài);
  4. 同時 Follower 也會將 KRaft 中的 Records #replay到內(nèi)存中,內(nèi)存數(shù)據(jù)持續(xù)的保持同步;

以 CAS(expectValue, newValue) 舉例說明上述的流程,假設內(nèi)存中的初始狀態(tài)為 1,Broker Client 提交了請求 CAS(1, 2) 到 Controller:

  1. 首先 Leader 會將請求放到事件隊列中;
  2. 然后 Manager 以單線程模式處理請求,判斷內(nèi)存中的值是 1,等于請求的 expectValue,因此生成成功響應和 Record{value = 2};
  3. 最后再把變更的 Records 提交到 KRaft 中,KRaft 確認后返回給請求方響應,并將 Record{value = 2} replay 到 Manager,Manager 內(nèi)存狀態(tài)更新為 2;

簡而言之,Controller 簡版的處理時序如下:

開始處理請求 A -> Manager 生成響應和 Records -> Records 在 KRaft 多數(shù)派確認 -> Manager#replay(Records) -> 返回響應 -> 處理下一條請求...

通過上述的處理時序,Controller 就可以做到“內(nèi)存狀態(tài)與 KRaft ”和“多節(jié)點之間的內(nèi)存狀態(tài)”的一致性:

  • 內(nèi)存狀態(tài)與 KRaft :Controller 的內(nèi)存狀態(tài)都是基于 KRaft 確認的 Records 變更 #replay出來的,因此內(nèi)存狀態(tài)和 KRaft 保持一致;
  • 多節(jié)點之間的內(nèi)存狀態(tài):KRaft 底層保證了多節(jié)點的 KRaft Log 是一致的,然后基于 “內(nèi)存狀態(tài)與 KRaft” 的一致性,通過傳遞性原則,因此多節(jié)點之間的內(nèi)存狀態(tài)也是一致的;

Controller 簡版的處理時序在正確性上沒什么問題,但在性能上有所瓶頸。假設每次 KRaft 多數(shù)派確認需要 2ms,意味著 Controller 處理請求的最大吞吐為 500 req/s。因此 Kafka 的實際處理模型中將最耗時的 KRaft 確認這步從處理時序中移除了。具體流程如下圖所示:

圖片圖片

相比簡版的處理時序:

  • Leader 的 Manager 產(chǎn)生出 Records 后立刻 #replay 更新內(nèi)存狀態(tài),并異步提交 Records 到 KRaft,這時候就可以繼續(xù)處理下一個請求了;
  • 響應仍舊是 KRaft 多數(shù)派確認后再返回;
  • Follower 的內(nèi)存狀態(tài)仍舊是從 KRaft Log 的 Records #replay 更新;

Controller 處理請求的最大吞吐為:Min(1s / Manager 代碼執(zhí)行 CPU 耗時, KRaft 寫入吞吐)。

然而先 #replay 到內(nèi)存再讓 KRaft 確認可能會造成內(nèi)存里面有臟數(shù)據(jù),仍舊以 CAS(1, 2) 舉例,考慮如下場景:

  1. Controller Leader 的 Manager 通過 #replay 將內(nèi)存值從 1 更新成 2;
  2. Leader 提交 Record{value=2}到 KRaft;
  3. 假設這時候由于心跳超時抖動等原因,導致該節(jié)點不再是 KRaft Leader 了,這時候會提交失敗,返回客戶端失敗;
  4. 這時 Controllers 節(jié)點內(nèi)存中的狀態(tài)分別為 2、1、1,KRaft 中的狀態(tài)為 1,集群狀態(tài)不一致;

為了解決這個問題,Kafka 設計了一系列支持 MVCC 的 Timeline 數(shù)據(jù)結構:TimelineHashMap、TimelineHashSet、TimelineInteger、TimelineLong 和底層的 SnapshotRegistry。Controller 的內(nèi)存狀態(tài)都通過 Timeline 數(shù)據(jù)結構來維護,當出現(xiàn) Leader 切換時,舊的 Leader 會將 Timeline 數(shù)據(jù)結構的數(shù)據(jù)回滾到上一個已經(jīng)被 KRaft 多數(shù)派確認的狀態(tài),來保證舊 Leader 內(nèi)存中不會有臟數(shù)據(jù)。

可能細心的小伙伴會發(fā)現(xiàn),解決了寫入的臟數(shù)據(jù)問題,那是不是可能讀到還未被 KRaft 確認的數(shù)據(jù)呢?Timeline 數(shù)據(jù)結構也考慮到了這點,例如 TimelineLong 提供了 #get(epoch) 接口,其中 epoch 通常傳入的是 KRaft CommitedOffset,以此來保障讀到的數(shù)據(jù)都是 KRaft 確認過的數(shù)據(jù)。

對 Timeline 數(shù)據(jù)結構有興趣的小伙伴,可以自行研究一下 server-common 模塊下 org.apache.kafka.timeline 這個包的實現(xiàn)。

2.2 Broker

在上一章節(jié)我們提到,Controller Follower 會 #replay KRaft 中的數(shù)據(jù)來構建自己的內(nèi)存狀態(tài)。Broker 同理也一樣會訂閱 KRaft 中的 Records 來構建自己的內(nèi)存元數(shù)據(jù),并且根據(jù)這些 Records 來執(zhí)行特定的變更。

以分區(qū)管理為例,假設集群有 B1 和 B2 兩個節(jié)點,用戶將分區(qū) P1 從 B1 移動到 B2(簡化 ISR 變更的過程):

  1. Controller 處理分區(qū)移動請求,并生成 PartitionChangeRecord{P1=B2}提交到 KRaft;
  2. B1 #replay到對應的變更記錄,更新內(nèi)存元數(shù)據(jù)記錄 P1 在 B2 上,并開始關閉 P1;
  3. B2#replay到對應的變更記錄,更新內(nèi)存元數(shù)據(jù)記錄 P1 在 B2 上,并開始打開 P1;

這時候 B1 和 B2 都可以通過內(nèi)存元數(shù)據(jù)提供一致的的 Topic Metadata 查詢服務,并且完成了分區(qū) P1 的移動。

通過這種方式,很多變更 Controller 無需再主動調(diào)用 Broker 的 RPC 來嘗試將集群推進到某個狀態(tài),也無需處理 RPC 調(diào)用中的順序和冪等重試等問題。轉(zhuǎn)換思路,Controller 通過 KRaft 來下發(fā)期望的狀態(tài),然后 Broker 去達成狀態(tài),這和 K8s 推薦的聲明式管理有異曲同工之妙。

三、總結   

我們可以看出 KRaft 替換 ZK,并不是元數(shù)據(jù)存儲重新造輪子,而核心是集群協(xié)調(diào)機制的演進。整個通信協(xié)調(diào)機制本質(zhì)上是事件驅(qū)動模型,也就是 Metadata as an Event Log,Leader 通過 KRaft 生產(chǎn)權威的事件,F(xiàn)ollower 和 Broker 通過監(jiān)聽 KRaft 來獲得這些事件,并且順序處理事件,達到集群狀態(tài)和期望的最終一致。

參考資料

[1] KIP-500 Replace Zookeeper with a Self-Managed Metadata Quorum:https://cwiki.apache.org/confluence/display/KAFKA/KIP-500%3A+Replace+ZooKeeper+with+a+Self-Managed+Metadata+Quorum

[2] Timeline:https://github.com/apache/kafka/tree/trunk/server-common/src/main/java/org/apache/kafka/timeline

責任編輯:武曉燕 來源: AutoMQ
相關推薦

2021-07-26 06:33:42

CRDT數(shù)據(jù)CAP

2022-07-21 06:54:28

微服務系統(tǒng)RocketMQ

2019-10-12 09:04:59

微服務架構CAP

2025-02-10 03:00:00

2017-07-25 14:38:56

數(shù)據(jù)庫一致性非鎖定讀一致性鎖定讀

2020-11-24 09:03:41

一致性MySQLMVCC

2020-02-25 23:39:11

架構運維技術

2025-05-13 08:44:26

2022-10-19 12:22:53

并發(fā)扣款一致性

2022-12-14 08:23:30

2024-07-04 12:36:50

2016-12-21 14:06:55

日志實現(xiàn)數(shù)據(jù)實時抽取

2022-11-10 07:49:09

hash算法代碼

2016-12-19 18:41:09

哈希算法Java數(shù)據(jù)

2021-06-16 08:33:02

分布式事務ACID

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2021-05-19 21:50:46

Hash算法測試

2023-07-25 09:52:00

本地事務宕機

2019-09-20 21:50:47

數(shù)據(jù)庫緩存
點贊
收藏

51CTO技術棧公眾號

国产精品丝袜91| 亚洲高清在线| 88在线观看91蜜桃国自产| 一区二区三区日韩视频| www.四虎在线观看| 一本久久综合| 日韩在线观看免费全集电视剧网站| 九九九在线观看视频| 国内精品久久久久国产| 99视频精品全部免费在线| 国产精品久久久久久婷婷天堂| 小泽玛利亚一区| 偷窥自拍亚洲色图精选| 欧美军同video69gay| 欧美在线一区视频| 色综合久久影院| 成人精品gif动图一区| 国产精品爽爽爽爽爽爽在线观看| 久久久久久久久久久久久久久久久| 亚洲69av| 欧美mv和日韩mv国产网站| 免费国产成人av| 少妇视频在线| 国产精品欧美久久久久无广告 | 91欧美极品| 欧美在线观看视频一区二区三区 | 亚洲男人影院| 欧美老女人在线视频| 波多野在线播放| 久久中文字幕导航| 欧美一二区视频| www.天天射.com| 涩涩视频网站在线观看| 一区二区三区免费| 中文字幕在线亚洲三区| 欧美色18zzzzxxxxx| 福利一区二区在线| 91久热免费在线视频| 国产亚洲欧美日韩高清| 99热这里只有精品8| 欧美第一黄网免费网站| 成年人二级毛片| 欧美韩国日本在线观看| 亚洲天堂成人在线| 欧美色图亚洲激情| 激情视频极品美女日韩| 欧美成人一区二区三区在线观看| 天堂视频免费看| av成人亚洲| 欧美自拍丝袜亚洲| 精品久久久久久无码国产| 热色播在线视频| 亚洲大片免费看| 国产精品久久久久9999爆乳| 日本动漫理论片在线观看网站 | 成人精品国产福利| 国产高清自拍一区| 国产自产一区二区| 成人福利视频在线| 国产一区免费在线| 天堂国产一区二区三区| av午夜精品一区二区三区| 国产精品一区二区三区免费观看 | 在线中文字幕日韩| 精品无码人妻一区二区免费蜜桃| 国产毛片一区二区三区| 亚洲区免费影片| 影音先锋制服丝袜| 日韩美女一区二区三区在线观看| 日日骚av一区| 国产精品成人69xxx免费视频| 91成人免费| 欧美第一淫aaasss性| 日韩av黄色片| 午夜在线视频一区二区区别| 日本精品久久久久久久| 亚洲中文一区二区| 久久99久久99精品免视看婷婷| 国产综合视频在线观看| av网站在线观看免费| 成人免费高清视频在线观看| 精品国产一区二区三区日日嗨| 日本一级在线观看| 国产精品美女视频| 亚洲天堂第一区| 日韩脚交footjobhd| 色偷偷久久人人79超碰人人澡| 免费看黄色一级大片| 四虎国产精品免费久久5151| 精品日韩成人av| 在线 丝袜 欧美 日韩 制服| 欧美顶级大胆免费视频| 欧美激情一区二区三区高清视频| 国产www在线| 美女看a上一区| 成人在线视频网址| 久久手机免费观看| 伊人性伊人情综合网| aa在线免费观看| 亚洲国产综合在线观看| 亚洲国产高清高潮精品美女| 天天干天天舔天天操| 国产精品hd| 国产精品9999| 亚洲爆乳无码一区二区三区| 国产亚洲1区2区3区| 丁香色欲久久久久久综合网| 亚洲成a人片| 日韩欧美一区二区视频| 国产综合精品在线| 欧美日韩免费| 国产精品午夜视频| 色呦呦免费观看| 亚洲图片欧美激情| 日本黄网站免费| 国产福利一区二区精品秒拍| 国产午夜精品视频免费不卡69堂| 麻豆一区二区三区精品视频| 久久国产精品区| 欧美激情导航| 17videosex性欧美| 欧美一级夜夜爽| 国产传媒视频在线 | 亚洲欧美自拍另类日韩| 欧美日韩一本| 欧美精品videosex极品1| 一级做a爱片久久毛片| 久久一区二区三区四区| 人妻夜夜添夜夜无码av| 日本成人精品| 久久九九国产精品怡红院 | 色综合桃花网| 亚洲国产天堂久久国产91| 永久免费看mv网站入口| 日韩精品成人一区二区在线| 久久久久久a亚洲欧洲aⅴ| 欧美大片黄色| 日韩欧美亚洲国产精品字幕久久久| 精品一区二区三孕妇视频| 亚洲在线观看| 久久大片网站| 自拍一区在线观看| 亚洲韩国日本中文字幕| 久久精品亚洲无码| 丁香亚洲综合激情啪啪综合| 99热一区二区三区| 伊人久久精品| 久久视频在线直播| 国产精品久久欧美久久一区| 国产精品视频在线看| 国产视频一区二区三区在线播放 | 成人午夜免费av| 成人毛片100部免费看| 日本在线一区二区三区| 欧美理论电影在线播放| 亚洲精品视频91| 亚洲综合色噜噜狠狠| 乱码一区二区三区| 黄色在线成人| 国产专区一区二区| 欧美激情护士| 亚洲欧美日韩区| www.亚洲激情| 国产精品欧美一区喷水| 中文字幕色网站| 欧美理论在线| 久久精品一二三区| 美女网站视频一区| 主播福利视频一区| www.国产欧美| 婷婷国产在线综合| 中文字幕在线1| 麻豆成人av在线| 国产精品久久久影院| 九九热hot精品视频在线播放 | 天天射天天干天天| 中文字幕欧美日韩一区| 91日韩精品视频| 黄色成人在线网址| 欧美色欧美亚洲另类七区| 福利一区二区| 欧美黑人巨大xxx极品| 亚洲日本国产精品| 欧美三级蜜桃2在线观看| 波多野结衣不卡视频| 91小视频免费看| 黄色片视频在线| 欧美日韩一区二区高清| 看高清中日韩色视频| jizz亚洲女人高潮大叫| 欧美夫妻性生活xx| 激情在线视频| 日韩一卡二卡三卡| 久久久久99精品成人片三人毛片| 国产精品乱码人人做人人爱 | 欧美激情中文字幕在线| 视频二区在线| 欧美一二三在线| 亚洲婷婷久久综合| 亚洲国产精品欧美一二99| 在线观看免费黄色网址| 波多野结衣在线aⅴ中文字幕不卡| 日本成人中文字幕在线| 欧美午夜视频| 在线播放豆国产99亚洲| 欧美男人操女人视频| 国产在线98福利播放视频| 国产高潮在线| 精品国产欧美成人夜夜嗨| 天天操天天干天天操| 欧美精品少妇一区二区三区| 欧美一区二区三区四| 亚洲女与黑人做爰| 中文字幕第24页| 不卡视频在线看| 99999精品| 免费av成人在线| 97在线播放视频| 激情综合中文娱乐网| 中文字幕欧美日韩一区二区| 久久不见久久见国语| eeuss一区二区三区| 日韩av黄色| 国产精品91在线| 成人av免费电影网站| 欧美激情视频网| 黄色网在线免费看| 中文字幕欧美精品日韩中文字幕| 天天操天天干天天干| 日韩女同互慰一区二区| 国产精品九九九九| 欧美日韩在线播放三区四区| 免费污污视频在线观看| 午夜影院久久久| 麻豆视频在线观看| 欧美精品色图| 国产欧美日韩在线播放| 91精品在线免费视频| 国产精品一区二区性色av| 日韩美女在线看免费观看| 7777免费精品视频| 3344国产永久在线观看视频| 九九热精品在线| 超碰免费公开在线| 久久久国产一区二区| 快射av在线播放一区| 久久婷婷国产麻豆91天堂| 好了av在线| 久久综合伊人77777尤物| 二区三区在线观看| 欧美成人剧情片在线观看| 国产激情小视频在线| 久热99视频在线观看| 中文字幕在线播放网址| 九九热这里只有在线精品视| 青青草原国产在线| 国外成人免费在线播放| 在线女人免费视频| 日本视频久久久| 黄色成人在线视频| 国产精品一区专区欧美日韩| 91精品国产一区二区在线观看 | 亚洲国产网址| 欧美激情视频一区二区三区| 国产欧美日韩| 亚洲视频精品一区| 91精品推荐| 日韩精品在线中文字幕| 六月天综合网| 91制片厂毛片| 国产一区二区美女| 99热超碰在线| 久久免费偷拍视频| 亚洲女同二女同志奶水| 亚洲黄色尤物视频| 伊人久久综合视频| 在线观看一区日韩| 国产女人18毛片水真多| 欧美精品一区二区三| 黄色大片在线看| 久久手机精品视频| 国产高清中文字幕在线| 国产精品久久久久久久久影视| www.成人在线.com| 精品国产一区二区三区麻豆免费观看完整版| 亚洲aa在线| 黄色一级视频播放| 性久久久久久| 樱花草www在线| 99久久精品免费看| 国产传媒视频在线| 亚洲成人自拍一区| 在线免费观看一区二区| 精品欧美黑人一区二区三区| 清纯唯美亚洲色图| 久久久精品在线观看| 亚洲黄色网址| 91九色在线免费视频| 色狼人综合干| 日本一区二区三区四区五区六区| 性一交一乱一区二区洋洋av| 亚洲热在线视频| 国产日韩欧美麻豆| 日韩 国产 在线| 欧美一级爆毛片| 成人18在线| 91av视频在线免费观看| 亚州精品国产| 欧美一区二区综合| 影音先锋一区| 999久久久精品视频| 国产丝袜美腿一区二区三区| 国产无遮挡裸体免费视频| 欧美日韩夫妻久久| 免费在线毛片| 亚州精品天堂中文字幕| a一区二区三区亚洲| 色涩成人影视在线播放| 国产精品久久777777毛茸茸| 制服下的诱惑暮生| 国产精品萝li| 中文字幕人妻丝袜乱一区三区 | 日本在线看片免费人成视1000| 91精品国产91久久| 欧美一级大片在线视频| 亚洲韩国在线| 日韩极品在线观看| 性久久久久久久久久| 亚洲成人综合视频| 亚洲精品久久久蜜桃动漫| 久久成人亚洲精品| 精品久久在线| 水蜜桃一区二区三区| 天堂在线亚洲视频| 中国美女乱淫免费看视频| 午夜亚洲国产au精品一区二区| 亚洲国产精品久久久久爰性色| 久热爱精品视频线路一| 97久久中文字幕| 一区二区三视频| 久久精品国产色蜜蜜麻豆| 精品无码人妻一区二区免费蜜桃| 日韩欧美a级成人黄色| 欧美熟妇另类久久久久久不卡| 欧美激情影音先锋| 国产厕拍一区| 欧美在线观看www| 91网站在线播放| 青青青国产在线| 亚洲欧美另类人妖| 唐人社导航福利精品| 欧美伦理一区二区| 日韩专区在线视频| 欧美成人另类视频| 欧美日韩国产另类一区| 国产原创精品视频| 成人欧美一区二区三区视频xxx| 亚洲网站啪啪| 国产白嫩美女无套久久| 色呦呦国产精品| 成人性爱视频在线观看| 国产精品网站大全| 久久久久久久久久久9不雅视频 | 欧美日韩激情四射| 国产91精品一区二区麻豆网站| 欧美精品99久久久| 亚洲国产成人久久| 日本免费久久| 色呦呦网站入口| 北岛玲一区二区三区四区| 四虎影院在线免费播放| 少妇av一区二区三区| 美女日韩一区| 国产h视频在线播放| 欧美激情自拍偷拍| 99在线观看免费| 97香蕉超级碰碰久久免费软件| 久久不见久久见国语| 色91精品久久久久久久久| 亚洲一卡二卡三卡四卡无卡久久| 五月天丁香视频| 国产精品免费一区豆花| 欧美日韩国产一区精品一区| 少妇精品一区二区三区| 欧美日韩国产小视频| 超级碰碰不卡在线视频| 欧美一区二区在线视频观看| 国产乱码字幕精品高清av| 国产成人精品一区二三区| 色吧影院999| 久久草在线视频| 91网址在线播放| 亚洲一区二区影院| 国产高清视频在线播放| 99久久精品久久久久久ai换脸| 日韩成人一级大片| 久久久91视频| 97免费在线视频| 日韩精品午夜| 中文成人无字幕乱码精品区|