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

這可能是我看過最通俗也是最深刻的CAP理論

系統(tǒng)
本文的原作者是 Martin Kleppmann, 著有《Designing Data-Intensive Applications》一書,無論是這本書還是這篇文章,都能站在一個獨特的視角去闡釋那些可能被大多數(shù)人誤解的理念,讓讀者醍醐灌頂。

 本文的原作者是 Martin Kleppmann, 著有《Designing Data-Intensive Applications》一書,無論是這本書還是這篇文章,都能站在一個獨特的視角去闡釋那些可能被大多數(shù)人誤解的理念,讓讀者醍醐灌頂。

在此之前我就隱約對文中提到的一些 CAP 誤解嗤之以鼻,這篇文章讓我更加確信了之前零碎的認知,不夸張地講,這應該是我看過的最通俗也是最深刻的 CAP 科普文。

在 Jeff Hodges 精彩的博客文章給年輕人關于分布式系統(tǒng)的筆記中,他建議我們用 CAP 定理來評論系統(tǒng)。

很多人都聽取了這個建議,描述他們的系統(tǒng)為"CP" (有一致性但在網絡分區(qū)的時候不可用),“AP”(可用但是在網絡分區(qū)的時候不一致) 或者有時候 "CA" (說明"我還沒有讀過 Coda 的五年前的文章")。

我同意 Jeff 的所有觀點,唯獨他關于 CAP 定理的觀點,我必須表示不同意。

CAP 定理本身太簡單化而且被廣泛的誤解,以至于在描述系統(tǒng)上沒有太多用處。

因此我請求我們不要再引用 CAP 定理,不要再討論 CAP 定理。取而代之,我們應該用更精確的術語來理解我們系統(tǒng)的權衡。

PS:沒錯,我意識到很諷刺的是我不希望別人再討論這個話題,但我卻正在分享一篇關于這個話題的博客文章。

但是至少這樣以后別人問我為什么不喜歡討論 CAP 定理的時候,我可以把這篇文章的鏈接給他。還有,抱歉這篇文章有些吐槽,但是至少這個吐槽有文獻引用。

CAP 用的是非常精確的定義

如果你想引用 CAP 作為一個定理(而不是一個模糊的,用來做數(shù)據(jù)庫市場營銷的概念),你需要用非常精確的定義。

數(shù)學要求精確,只有當你的用詞和定理的證明中的定義是一樣的時候,這個證明才有意義。

 

CAP 的證明用的是非常具體的定義:

  • 一致性(Consistency):在 CAP 中是可線性化的意思(linearizability)。而這個是非常特殊(而且非常強)的一致性。

尤其是雖然 ACID 中的 C 也是一致性(Consistency),但是和這里的一致性沒有任何關系。我會在后面解釋可線性化是什么意思。

  • 可用性(Availability):在 CAP 中是定義為"每一個請求(request)如果被一個工作中的[數(shù)據(jù)庫]節(jié)點收到,那一定要返回[非錯誤]的結果"。

注意到,這里一部分節(jié)點可以處理這個請求是不充分的。任意一個工作中的節(jié)點都要可以處理這個請求。所以很多自稱"高度可用"的系統(tǒng)通常并沒有滿足這里的可用性的定義。

  • 分區(qū)容錯(Partition Tolerance):基本上就是說通信是在異步的網絡中。信息是可能延遲送達或者被丟失的。互聯(lián)網還有我們所有的數(shù)據(jù)中心都有這個屬性。所以我們在這件事上并沒有選擇。

還有就是注意到 CAP 并沒有描述任意一個老的系統(tǒng),而是一個非常特殊的系統(tǒng):

  • CAP 系統(tǒng)的模型是一個只能讀寫單個數(shù)據(jù)的寄存器。這就是全部。CAP 沒有提到任何關于關系到多個事物(Object)的事務(Transaction)。

他們根本就不在這個定理的范圍之內,除非你可以把這些問題約化到一個單個寄存器的問題。

  • CAP 定理只考慮了網絡分區(qū)這一種故障情況(比如節(jié)點們還在運行,但是他們之間的網絡已經不工作了)。這種故障絕對會發(fā)生,但是這不是唯一會出故障的地方。

節(jié)點可以整個崩潰(Crash)或者重啟,你可能沒有足夠的磁盤空間,你可能會遇到一個軟件故障(Bug),等等。

在建分布式系統(tǒng)的時候,你需要考慮到更多得多的問題。如果太關注 CAP 就容易導致忽略了其他重要的問題。

  • 還有 CAP 根本沒有提到延遲(Latency)。而常常人們其實對關心延遲比可用性更多。

事實上,滿足 CAP 可用性的系統(tǒng)可以花任意長的時間來回復一個請求,而且同時保持可用性這個屬性。

我來冒險說一句,我猜如果你的系統(tǒng)要花兩分鐘來加載一個頁面,你的用戶是不會稱它是“可用的”。

如果你的用詞是符合 CAP 證明中的精確定義的,那么它對你來說是適用的。但是如果你的一致性還有可用性是有其他意思的,那么你不能期待 CAP 對你還是適用的。

當然,這并不意味著你通過重新定義一些詞匯就可以做到一些不可能的事情!這只是說你不能靠 CAP 來給你提供指導方向,而且你不能通過 CAP 來為你的觀點來辯解。

如果 CAP 定理不適用,那么這就意味著你必須自己來考慮取舍。你必須根據(jù)你自己對一致性還有可用性的定義來思考這些屬性,而且你能證明自己的定理就更好了。但是請不要稱它為 CAP 定理,因為這個名字已經被用了。

可線性化

如果你對可線性化不是很熟悉(也就是 CAP 中的一致性),那么讓我來簡短地解釋一下。

正式的定義不是特別直觀,但是關鍵的思想用非正式的描述就是:

如果 B 操作在成功完成 A 操作之后,那么整個系統(tǒng)對 B 操作來說必須表現(xiàn)為 A 操作已經完成了或者更新的狀態(tài)。

為了可以解釋的更清楚一些,讓我們來看一個例子。在這個例子中的系統(tǒng)并不是可線性化的。

看下面這個圖:

 

這張圖展示了 Alice 還有 Bob, 他們在同一個房間,都在用他們的手機查詢 2014 年世界杯的決賽結果。

就在最終結果剛發(fā)布之后,Alice 刷新了頁面,看到了宣布冠軍的消息,而且很興奮地告訴了 Bob。

Bob 馬上也重新加載了他手機上的頁面,但是他的請求被送到了一個數(shù)據(jù)庫的拷貝,還沒有拿到***的數(shù)據(jù),結果他的手機上顯示決賽還正在進行。

如果 Alice 和 Bob 同時刷新,拿到了不一樣的結果,并不會太讓人意外。因為他們不知道具體服務器到底是先處理了他們中哪一個請求。

但是 Bob 知道他刷新頁面是在 Alice 告訴了他最終結果之后的。所以他預期他查詢的結果一定比 Alice 的更新。事實是,他卻拿到了舊的結果。這就違反了可線性化。

只有 Bob 通過另外一個溝通渠道從 Alice 那里知道了結果, Bob 才能知道他的請求一定在 Alice 之后。

如果 Bob 沒有從 Alice 那里聽到比賽已經結束了,他就不會知道他看到的結果是舊的。

如果你在建一個數(shù)據(jù)庫,你不知道用戶們會有什么另外的溝通渠道。所以,如果你想提供可線性化(CAP 的一致性),你就需要讓你的數(shù)據(jù)庫看起來就好像只有一個拷貝,雖然實際上可能有多個備份在多個地方。

這是一個非常昂貴的屬性,因為它要求你做很多協(xié)調工作。甚至你電腦上的 CPU 都不提供本地內存的可線性化訪問!

在現(xiàn)代的 CPU 上,你需要用 Memory Barrier 指令來達到可線性化訪問。甚至測試一個系統(tǒng)是不是可線性化的也是很困難的。

CAP 可用性

讓我們來簡短的討論一下為什么在網絡分區(qū)的情況下,我們要放棄可用性和一致性中的一個。

舉個例子,你的數(shù)據(jù)庫有兩個拷貝在兩個不同的數(shù)據(jù)中心。具體怎么做備份并不重要,可以是 Single-Master,或者多個 Leader,或者基于 Quorum 的備份(Dynamo 使用的方式)。

要求是當數(shù)據(jù)被寫到一個數(shù)據(jù)中心的時候,他也一定要被寫到另一個數(shù)據(jù)中心。

假設 Client 只連接到其中一個數(shù)據(jù)中心,而且連接兩個數(shù)據(jù)中心的網絡故障了。

那么現(xiàn)在假設網絡中斷了,這就是我們所說的網絡分區(qū)的意思。接下來怎么樣呢?

 

顯然你有兩個選擇:

  • 你的應用還是被允許寫到數(shù)據(jù)庫,所以兩邊的數(shù)據(jù)庫還是完全可用的。但是一旦兩個數(shù)據(jù)庫之間的網絡中斷了,任何一個數(shù)據(jù)中心的寫操作就不會在另一個數(shù)據(jù)中心出現(xiàn)。

這就違反了可線性化(用之前的例子,Alice 可能鏈接到了一號數(shù)據(jù)中心,而 Bob 連接到了二號數(shù)據(jù)中心)。

  • 如果你不想失去可線性化,你就必須保證你的讀寫操作都在同一個數(shù)據(jù)中心,你可能叫它 Leader。

另一個數(shù)據(jù)中心,因為網絡故障不能被更新,就必須停止接收讀寫操作,直到網絡恢復,兩邊數(shù)據(jù)庫又同步了之后。

所以雖然非 Leader 的數(shù)據(jù)庫在正常運行著,但是他卻不能處理請求,這就違反了 CAP 的可用性定義。

而這個,其實就是 CAP 定理的證明。這就是全部了。這里的例子用到了兩個數(shù)據(jù)中心,但是對于一個數(shù)據(jù)中心內的網絡故障也是同樣適用的。我只是覺得用兩個數(shù)據(jù)中心這樣更容易考慮這個問題。

注意到上面第二點,就算它違反了 CAP 的可用性,但我們還是在成功地處理著請求。

所以當一個系統(tǒng)選擇了可線性化(也就是說不是 CAP 可用的),這并不一定意味著網絡分區(qū)一定會造成應用停運。

如果你可以把用戶的流量轉移到 Leader 數(shù)據(jù)庫,那么用戶根本就不會注意到任何問題。

實際應用中的可用性和 CAP 可用性并不相同。你應用的可用性多數(shù)是通過 SLA 來衡量的(比如 99.9% 的正確的請求一定要在一秒鐘之內返回成功)。

但是一個系統(tǒng)無論是否滿足 CAP 可用性其實都可以滿足這樣的 SLA。實際操作中,跨多個數(shù)據(jù)中心的系統(tǒng)經常是通過異步備份(Asynchronous Replication)的,所以不是可線性化的。

但是做出這個選擇的原因經常是因為遠距離網絡的延遲,而不是僅僅為了處理數(shù)據(jù)中心的網絡故障。

很多系統(tǒng)既不是可線性化的也不是 CAP 可用的

在 CAP 對可用性還有一致性嚴格的定義下,系統(tǒng)們表現(xiàn)怎么樣?

拿任意一個 Single Master 的有備份的數(shù)據(jù)庫作為一個例子。這也是標準的數(shù)據(jù)庫設置。

在這種情況下,如果用戶不能訪問 Leader,就不能寫到數(shù)據(jù)庫。雖然他還能從 Follower 那里讀到數(shù)據(jù),但是他不能寫任何數(shù)據(jù)就說明它不是 CAP 可用的。更不要說這種設置還常常聲稱自己是“高可用的(High Availablity)”。

如果以上這種設置不是 CAP 可用的,那是不是就是說他滿足 CP(一致)?

等一下,如果你是從 Follower 那里讀到的數(shù)據(jù),因為備份是異步的,所以你可能讀到舊的數(shù)據(jù)。所以你的讀操作不是可線性化的,所以不滿足 CAP 中的一致性。

而且支持 Snapshot Isolation/MVCC 的數(shù)據(jù)庫是故意做成不可線性化的。否則會降低數(shù)據(jù)庫的并發(fā)性。

比如 PostgreSQL 的 SSI 提供的是可串行化而不是可線性化,Oracle 兩者都不支持。僅僅因為數(shù)據(jù)庫標榜自己是 ACID 并不意味著它就滿足 CAP 中的一致性。

所以這些系統(tǒng)既不是 CAP 一致的,也不是 CAP 可用的。他們既不是 CP 也不是 AP,他們只是 P,不管這是什么意思。(是的,“三選二”也允許你只從三個中選一個,甚至一個都不選!)

那 NoSQL 怎么樣的?拿 MongoDB 作為一個例子:每一個 Shard 都只有一個 Leader(至少只要他不在 split-brain 的模式下,它應該是這樣的),根據(jù)以上的論證,那就說明他不是 CAP 可用的。

而且 Kyle 最近發(fā)現(xiàn),設置了***的一致性,他還是允許非一致性的讀操作,所以它也不是 CAP 一致的。

那像 Riak,Cassandra 還有 Voldemort 這些聲稱是 AP 的高可用的 Dynamo 的繼承者們又怎么樣呢?

這取決于你的設置。如果你接受讀寫只訪問一個拷貝(R=W=1),那么這確實是 CAP 可用的。

但是如果你要求 Quorum 讀寫(R+W>N),而且你有網絡分區(qū),那么那些被分在少部分節(jié)點的用戶就不能達到 Quorum。

所以 Quorum 操作不是 CAP 可用的(至少暫時是不可用的,直到你在少部分的分區(qū)內加入了更多的節(jié)點)。

你有時候會看到人們聲稱 Quorum 讀寫可以保證可線性化,但是我覺得依賴這樣的聲明是不明智的。

因為在一些復雜的情況下,Read Repair 操作和 Sloppy Quorum 同時發(fā)生,就有可能會重寫已經被刪除了的數(shù)據(jù)。

或者當備份數(shù)(Replicas)已經低于原來的 W 值(違反了 Quorum 的條件),或者當備份數(shù)被加到了高于原來的 N 值(還是違反了 Quorum 的條件),這些都可以導致不可線性化的訪問結果。

這些都不是差的系統(tǒng):他們在實際運用中都很成功。但是目前為止,我們還是不能嚴格把他們分類為 AP 或者 CP,要么是因為取決于具體的設定,或者是因為這個系統(tǒng)一致性和可用性都不滿足。

案例分析:ZooKeeper

那 ZooKeeper 又怎么樣呢?他用了 Consensus 算法,所以人們一般認為他是很清楚的選擇了一致性而放棄了可用性(也就是 CP 系統(tǒng))。

但是如果你閱讀 ZooKeeper 的文檔,他們很清楚的說了 ZooKeeper 的默認設置不提供可線性化的讀操作。

每一個連接到一個服務器的客戶端,當你要讀的時候,即使別的節(jié)點有更新的數(shù)據(jù),你只能看到那個服務器本地的數(shù)據(jù)。

這樣讀操作就比需要收集 Quorum 或者訪問 Leader 要更快。但這也說明 ZooKeeper 默認不滿足 CAP 的一致性定義。

做可線性化的讀操作在 ZooKeeper 中是支持的。你需要在讀操作之前發(fā)一個 Sync 命令。

但這不是默認的設置,因為這樣讀操作會更慢。人們有時候會用 Sync 命令,但一般不會是所有的讀操作都用。

那 ZooKeeper 的可用性呢?他要求達到大多數(shù) Quorum,來達到共識,才能處理一個寫操作。

如果你有網絡分區(qū),一邊有大多數(shù)節(jié)點,一邊有少部分節(jié)點。那么擁有大多數(shù)節(jié)點的分區(qū)還可以繼續(xù)工作,但是少部分節(jié)點的分區(qū)就算節(jié)點們都正常工作著,還是不能處理寫操作。

所以 ZooKeeper 的寫操作在網絡分區(qū)的情況下,不滿足 CAP 的可用性(即使擁有大多數(shù)節(jié)點的分區(qū)還是可以處理寫操作的)。

更有意思的是,ZooKeeper 3.4.0 還加入了一個只讀的模式。在這個模式下,少部分節(jié)點的分區(qū)還可以繼續(xù)處理讀操作,不需要 Quorum!

這個讀操作是滿足 CAP 可用性的。所以 ZooKeeper 默認設置既不是一致的(CP)也不是可用的(AP),只是"P"。

但是你有選擇通過用 Sync 命令來讓它成為 CP。并且在正確的設置下,讀操作(不包括寫)其實是 CAP 可用的。

這讓人不是很舒服。如果就因為 ZooKeeper 的默認設置不是可線性化的就稱他為不一致,那就歪曲了他的功能。

他其實可以提供非常強的一致性!他支持 Atomic Broadcast(這個可以約化為共識問題)以及每個 Session 的 Causal Consistency。

這比 read your writes,monotonic reads 還有 consistent prefix reads 在一起都要強。

他的文檔上說 ZooKeeper 提供可串行化的一致性,但這其實是過于謙虛了,因為他其實可以提供更強的一致性。

根據(jù) ZooKeeper 的例子,你就會發(fā)現(xiàn)就算這系統(tǒng)在網絡分區(qū)的時候既不是 CP 也不是 AP(甚至在默認設置下,就算沒有網絡分區(qū),也不是可線性化的),但他還是很合理的。

我猜 ZK 在 Abadi 的 PACELC 的框架下是 PC/EL,但我不覺得這比 CAP 更有啟發(fā)性。

CP/AP:一個偽二分法

事實上我們都沒有成功地把一個數(shù)據(jù)庫無歧義地分類為 AP 或者 CP。這應該告訴我們 CP/AP 根本就不是合適的用來描述系統(tǒng)的標簽。

我相信我們應該不要再把數(shù)據(jù)庫歸類為 AP 或者 CP 了,因為:

在同一個軟件內,你可能有多個一致性屬性的選擇。

  • 很多系統(tǒng)在 CAP 的定義下,既不是一致也不可用。然而我從來沒有聽到別人稱這些系統(tǒng)為"P",可能是因為這樣不太好看。但這并不差,他很可能是完全合理的設計,他只是不在 CP/AP 這兩個分類中。
  • 雖然大部分軟件都不在 CP/AP 這兩類中,但人們還是強行把軟件分為這兩類。這就導致了,為了適用,不可避免地改變對“一致性”或者“可用性”的定義。

不幸的是,如果用詞的定義改變了,CAP 定理自己也不適用了,那 CP/AP 區(qū)分也就完全沒有意義了。

  • 把系統(tǒng)分為這兩類,導致了很多細節(jié)被忽略。在考慮分布式系統(tǒng)設計的時候,會有很多關于容錯,延遲,簡單模型,運行成本,等等的考慮。把那么多細節(jié)編碼到一個比特的信息,顯然是不可能的。

比如說雖然 ZooKeeper 有一個 AP 的只讀模式,但這個模式也提供對所有寫操作的 total ordering。

這比 Riak 或者 Cassandra 這些 AP 系統(tǒng)提供的保障要強得多。所以簡單地把他們都歸為 AP 一個類別就顯得很不合理。

  • 甚至 Eric Brewer 承認 CAP 是一個容易誤導人的而且過于簡化的模型。在 2000 年,CAP 的意義在于讓大家開始討論關于分布式系統(tǒng)的取舍。

他在這方面做得很好,但是他不是用來作為一個正式的突破性的結果,也不是一個嚴格的數(shù)據(jù)系統(tǒng)的分類方式。

15 年之后,我們已經有了多得多的有不一樣一致性和容錯模型的系統(tǒng)。CAP 已經完成了他自己的使命,現(xiàn)在是時候不要在糾結了。

學會獨立思考

如果用 CP 和 AP 來描述和評論系統(tǒng)是不合適的,那么我們應該用什么呢?我不認為有一個唯一的答案。

很多人花了很多心思考慮這些問題,也提出了術語和模型來幫助我們理解這些問題。

想要學習這些思想,你就需要更深入自己閱讀文獻:

  • 一個很好的起點就是 Doug Terry 的論文。其中他用棒球來解釋了各種不一樣的最終一致性。可讀性很強,而且就算對像我這樣不是美國人而且完全不懂棒球也解釋的很清晰。
  • 如果你對 Transaction 的 Isolation 模型有興趣(這和分布式系統(tǒng)的一致性不一樣,但是相關),我的小項目 Hermitage 你可以看一下。
  • 這篇論文討論了分布式系統(tǒng)的一致性和 Transaction 的 Isolation 以及可用性之間的關系。(這篇論文也描述了不同一致性之間的分級。Kyle Kingsbury 很喜歡給別人講這個。)

 

  • 當你讀到過這些了以后,你應該已經準備好深入閱讀論文。我在這篇文章中加入了很多對文獻的引用。去看一下,很多專家已經幫你把很多問題都已經解決了。
  • 作為***的手段,如果你不想讀論文原文,我建議你看一下我的書。這本書用通俗易懂的方式總結了大多數(shù)重要的思想。
  • 如果你想學更多關于怎么正確使用 ZooKeeper,F(xiàn)lavio Junqueira 還有 Benjamin Reed 的書是非常不錯的。

不管你選擇哪一種學習方式,我都鼓勵你保持好奇心和耐心,因為這不是容易的學科。

但是這是有回報的,因為你學會如果考慮取舍,進而搞清楚什么樣的架構對于你的應用是最合適的。

但是不管你做什么,請不要再說 CP 還有 AP 了,因為根本不合理。

***,謝謝 Kyle Kingsbury 還有 Camille Fournier 對于這篇文章初稿的評論。當然,所有的錯誤還有不受歡迎的觀點都是我本人的。

 

 

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

2021-11-03 16:10:16

RedisJava內存

2018-11-05 08:10:30

Netty架構模型

2021-05-27 05:30:23

數(shù)據(jù)分析工具數(shù)據(jù)可視化

2021-08-27 10:14:22

機器學習工具手冊人工智能

2020-03-05 15:12:51

數(shù)據(jù)分析人工智能運營

2025-11-17 09:19:10

AI模型開源

2023-02-26 00:00:01

Spring數(shù)據(jù)庫組件

2023-02-26 10:14:51

Spring第三方庫

2018-10-25 09:37:02

Docker入門容器

2024-08-28 11:56:33

2018-09-12 09:34:11

ZooKeeper概念集群

2020-06-09 11:15:29

Linux命令行電子書

2023-01-11 08:24:32

2020-04-14 10:50:47

FlutterGithub

2017-05-15 12:58:00

編程javaapl

2017-02-20 15:51:07

2018-07-16 10:10:43

WiFi上網網速

2021-02-26 10:16:55

鴻蒙HarmonyOS應用開發(fā)

2021-06-09 07:56:51

JvmJVM面試題Java

2019-04-28 11:06:01

Hbase架構程序員
點贊
收藏

51CTO技術棧公眾號

国产高清在线观看| 国产精品黄色大片| 精品麻豆剧传媒av国产九九九| 国产精品久久久久影院亚瑟| 91传媒免费看| 国产超碰人人爽人人做人人爱| 精品视频国产| 精品国产网站在线观看| 国产91在线视频观看| 尤物网在线观看| 成人精品一区二区三区中文字幕| 国产激情综合五月久久| 欧美日韩视频在线一区二区观看视频| 亚洲天堂视频在线播放| 欧美不卡视频| 亚洲图片欧美午夜| 性感美女一区二区三区| xxxxx.日韩| 精品动漫一区二区三区| 中文字幕剧情在线观看一区| 五月天婷婷在线观看| 寂寞少妇一区二区三区| 日本乱人伦a精品| 欧美久久久久久久久久久久| 国产一区精品福利| 亚洲福中文字幕伊人影院| 亚洲成色最大综合在线| 少妇一级淫片免费看| 激情综合色播五月| 国产精品爽爽ⅴa在线观看| 国产成人亚洲欧洲在线| 女人色偷偷aa久久天堂| 深夜精品寂寞黄网站在线观看| 久久久免费视频网站| 国产一二区在线观看| 久久久久国产精品麻豆ai换脸| 91亚色免费| 一级日韩一级欧美| 日韩不卡一二三区| 91超碰caoporn97人人| 欧美日韩一级在线观看| 99精品视频在线| 67194成人在线观看| 正义之心1992免费观看全集完整版| 香港一级纯黄大片| 国产91色综合久久免费分享| 成人深夜直播免费观看| 中文字幕永久在线视频| 天天射成人网| 中文字幕亚洲欧美在线 | 亚洲国产精品免费在线观看| 精品国内自产拍在线观看视频| 亚洲精品一二区| 懂色av粉嫩av蜜乳av| 国内毛片久久| 亚洲国产精品成人av| 性农村xxxxx小树林| 这里视频有精品| 午夜精品久久久| 亚洲精品国产suv一区88| 人妻夜夜爽天天爽| 国产成人亚洲综合色影视| 亚洲a区在线视频| 国产偷拍一区二区| 国产黄色精品网站| 国产伦精品一区二区| 91在线视频免费播放| 国产精品久久久免费| 一区二区亚洲欧洲国产日韩| 小早川怜子一区二区三区| 亚洲成人1区| 91精品国产aⅴ一区二区| 一级黄色片在线免费观看| 国产乱码精品一区二区三区亚洲人| 在线播放中文一区| 91精品人妻一区二区三区四区| 91成人入口| 日韩精品极品视频免费观看| 日本高清www| 精品久久久久中文字幕小说| 久久五月天综合| 国产在线视频二区| 噜噜噜躁狠狠躁狠狠精品视频| 国产91精品在线播放| 91成品人影院| 丰满放荡岳乱妇91ww| 久久久精品国产一区二区三区| 一卡二卡三卡在线观看| 精品一区二区免费看| 18成人在线| 日本人妖在线| 国产精品久久看| 精品国偷自产一区二区三区| 在线天堂中文资源最新版| 欧美午夜精品久久久| 欧美日韩一区二区区| 夜夜春成人影院| 精品国产拍在线观看| 丰满少妇高潮一区二区| 日韩伦理一区| 久久久亚洲国产天美传媒修理工| 丰满少妇xoxoxo视频| 狠狠色综合播放一区二区| 国产午夜精品在线| www在线播放| 久久精品视频一区| 欧美日韩dvd| av在线日韩| 亚洲成人网av| 我要看黄色一级片| 久久婷婷一区| 国产97免费视| 亚洲h视频在线观看| 国产欧美精品日韩区二区麻豆天美| 路边理发店露脸熟妇泻火| 韩国成人漫画| 亚洲精品一区二区三区影院| 亚洲女人毛茸茸高潮| 国产人成精品一区二区三| 国产主播欧美精品| 一区二区日韩在线观看| jvid福利写真一区二区三区| 超碰成人在线免费观看| 韩国成人动漫| 亚洲护士老师的毛茸茸最新章节| 国内毛片毛片毛片毛片毛片| 久久激情婷婷| 国产日产精品一区二区三区四区| 欧美69xxxx| 91福利在线免费观看| 国产综合内射日韩久| 99久久夜色精品国产亚洲96 | 日本亚洲自拍| 国产精品yjizz视频网| 日韩欧美你懂的| 99热在线观看精品| 日本不卡中文字幕| 国产精品久久久久9999| 亚洲日本中文字幕在线| 一区二区三区不卡视频 | 国产不卡高清在线观看视频| 翔田千里亚洲一二三区| 麻豆视频在线免费观看| 91国产丝袜在线播放| 国产成人av一区二区三区不卡| 在线亚洲激情| 九九热久久66| 色偷偷偷在线视频播放| 色欧美乱欧美15图片| 亚洲久久久久久| 好看的亚洲午夜视频在线| 国产精品久久久久久久久男| 国产精品一区二区人人爽| 国产欧美精品日韩区二区麻豆天美| 中文字幕乱码人妻综合二区三区| 欧美成人基地| 欧美亚洲视频在线观看| 日本福利在线观看| 欧美性色xo影院| 日韩人妻一区二区三区| 视频在线观看国产精品| 日韩免费电影一区二区三区| 99riav视频一区二区| 色婷婷**av毛片一区| 一级特黄aa大片| 一区二区三区四区五区视频在线观看 | 亚洲欧洲一区| 鲁片一区二区三区| 国产不卡网站| 日韩亚洲欧美成人| 99久久亚洲精品日本无码| 一区二区三区高清不卡| 亚洲男女在线观看| 伊人精品一区二区三区| 成人av在线看| 能在线观看的av| 日本福利片高清在线观看| 午夜精品久久久久久久久| 国产激情在线免费观看| 日韩一区精品视频| 在线看成人av电影| 国产精品xxxav免费视频| 日本成人在线视频网址| 香蕉视频在线播放| 日韩欧美国产高清| 九一国产在线观看| 中文字幕亚洲成人| 国产一级免费片| 日韩有码一区二区三区| 91xxx视频| 自拍自偷一区二区三区| 成人激情av在线| 国产夫妻在线| www.国产一区| 天堂国产一区二区三区| 欧美色男人天堂| 久久高清免费视频| 中文字幕av一区二区三区高| 日韩欧美一级在线| 久久这里只有精品一区二区| 国产精品永久免费观看| 丁香影院在线| 日韩在线免费观看视频| 天堂网在线播放| 制服丝袜亚洲色图| 一级成人黄色片| 一区二区三区四区激情| 高清国产在线观看| 成人黄色777网| 亚洲第一天堂久久| 久久xxxx精品视频| 日韩欧美精品免费| 99精品在线观看| 欧美连裤袜在线视频| 日韩高清在线观看一区二区| 日韩av免费网站| 爱福利在线视频| 久久久精品久久久久| 在线观看中文字幕码| 亚洲国产另类av| 神马午夜精品91| 久久精品夜夜夜夜久久| 久久久久成人精品无码中文字幕| 久草精品在线观看| 欧美日韩在线免费播放| 99国内精品| 免费一级淫片aaa片毛片a级| 99精品在线| 亚洲视频欧美在线| 精品国产一区二区三区小蝌蚪| 精品乱色一区二区中文字幕| 日韩精品一区二区三区中文字幕 | 一区二区三区短视频| 欧美大片免费观看| 国产激情在线| 日韩最新中文字幕电影免费看| 黄色av免费在线看| 日韩欧美中文在线| 天堂资源在线播放| 亚洲免费观看高清完整| 久久久久久久久久97| 国产精品嫩草久久久久| 免费一级特黄3大片视频| 久久综合久久鬼色| 人妻无码中文久久久久专区| 成人手机电影网| 麻豆精品国产传媒av| 成人小视频在线| 中文字幕18页| 丁香婷婷综合激情五月色| 久久久久亚洲av无码专区首jn| 国产精品一级在线| 国产91美女视频| 夜夜精品视频| 女人喷潮完整视频| 久久久亚洲人| 日韩中文字幕二区| 免费精品99久久国产综合精品| 男人添女人下面免费视频| 蜜桃av一区二区在线观看| 手机免费av片| 粉嫩aⅴ一区二区三区四区 | 亚洲精选av| 国产精品手机视频| 日韩精品社区| 日韩精品成人一区二区在线观看| 日韩欧美视频| 91精品国产毛片武则天| 一区在线播放| 亚洲男人天堂色| 九九国产精品视频| 中国男女全黄大片| 2022国产精品视频| 国产白丝一区二区三区 | 中文字幕日韩精品无码内射| 日韩视频一区二区三区在线播放免费观看 | 91精品人妻一区二区三区蜜桃2| 国产激情精品久久久第一区二区| 亚洲av成人片无码| 亚洲国产精品ⅴa在线观看| 亚洲一级二级片| 亚洲高清不卡在线观看| 91在线视频免费播放| 欧美一区二区三区在线观看 | 亚洲香蕉伊综合在人在线视看| 91精品大全| 欧美丰满少妇xxxx| 国产综合色区在线观看| 亚洲bt天天射| 精品一区在线| 大桥未久一区二区三区| 亚洲小说欧美另类婷婷| 五月婷婷激情久久| 大胆亚洲人体视频| 精品一区二区三区蜜桃在线| 亚洲女同一区二区| 亚洲黄网在线观看| 日韩一区二区电影网| 久久精品视频5| 欧美男人的天堂一二区| 天天干视频在线| 色噜噜狠狠色综合网图区| a在线视频v视频| 国产一区二区色| 牲欧美videos精品| 麻豆一区二区三区在线观看| 国产精品老牛| 免费啪视频在线观看| 国产欧美精品国产国产专区| 精品少妇久久久| 欧美日本视频在线| 91麻豆视频在线观看| 亚洲国产精品热久久| 麻豆av免费在线观看| 日本欧美黄网站| 狠狠一区二区三区| 妞干网这里只有精品| 三级在线观看一区二区| 国产调教打屁股xxxx网站| 国产精品的网站| 无码人妻丰满熟妇奶水区码| 亚洲精品一区二区三区精华液| 欧美激情二区| 国产精品成人一区| 午夜欧洲一区| 99在线免费视频观看| 国产福利一区在线观看| 欧美日韩生活片| 色综合久久88色综合天天6| 免费观看黄色一级视频| 欧美成人精品在线播放| 在线免费成人| 五月天亚洲综合| 视频一区欧美日韩| 亚洲AV无码片久久精品| 岛国视频午夜一区免费在线观看| 亚洲av无码乱码国产精品久久| 久久激情视频免费观看| 色综合久久久| 在线观看日韩羞羞视频| 狠狠色丁香九九婷婷综合五月| 99精品欧美一区二区| 日本高清不卡在线观看| 久草视频视频在线播放| 日韩av理论片| 欧美军人男男激情gay| www.色就是色| 国产欧美日韩在线看| 一区二区三区麻豆| 中文字幕久热精品在线视频| 国产一区二区精品调教| 婷婷亚洲婷婷综合色香五月| 日本不卡123| 五月婷婷综合激情网| 日韩一区二区三区免费看| 在线观看三级视频| 动漫精品视频| 亚洲日韩视频| 国产福利短视频| 色综合咪咪久久| 最新真实国产在线视频| 国产精品色婷婷视频| 色综合天天爱| 永久免费看片在线观看| 亚洲一区二区五区| 欧美日韩国产亚洲沙发| 国产精品久久久久久久久免费看 | 成人av在线资源网| 中文字幕精品三级久久久| 亚洲香蕉在线观看| 高清国产一区二区三区四区五区| 国产欧美123| 91香蕉视频污| 一本一道精品欧美中文字幕| 欧美精品做受xxx性少妇| 久久精品福利| 日韩肉感妇bbwbbwbbw| 一区二区三区高清不卡| 免费一级在线观看| 国产日韩在线观看av| 欧美日韩亚洲国产精品| 已婚少妇美妙人妻系列| 欧美激情在线一区二区| av手机免费看| 国产91精品青草社区| 欧美日韩一二三四| 中文字幕av一区二区三区人妻少妇 | 免费观看日韩av| 久久精品视频6| 一区二区在线免费视频| 91精品久久久久久综合五月天| 国产一区二区三区精彩视频 | 国产乱子伦一区二区三区国色天香| 国产一级做a爰片在线看免费| 亚洲午夜小视频| 99精品国产一区二区三区2021| 国产xxxxx在线观看| 亚洲丝袜美腿综合| 经典三级在线| 成人三级视频在线观看一区二区|