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

Raft / 事務(wù)與可串行化 / 兩階段提交 / Spanner ...

開發(fā) 前端
PageRank 的那個(gè) ??for??? 循環(huán)里,全都是 ??transformation??? 操作,比如 ??join??? 和 ??map???。每次循環(huán),Spark 只是在圖紙上又加了幾筆,擴(kuò)展了一下 DAG。這個(gè)過程當(dāng)然非???,因?yàn)闆]有涉及任何大規(guī)模的數(shù)據(jù)計(jì)算。

MapReduce (1): 如何用 MapReduce 找最大值?

這道題非常經(jīng)典,是理解 MapReduce 思想的敲門磚。

問題背景 :想象一下,我們有 100 個(gè)文件,每個(gè)文件里都寫滿了數(shù)字,一行一個(gè)。我們的任務(wù)是找出這所有數(shù)字里的最大值。

解讀

MapReduce 的核心思想是“分而治之”。

  1. map 階段 :map 函數(shù)就像是“地方海選賽”。每個(gè) map 任務(wù)會(huì)分配到一個(gè)或多個(gè)文件。它的工作很簡單:就在自己負(fù)責(zé)的這堆數(shù)里,找出那個(gè)最大的“地方冠軍”。然后,它會(huì)輸出一個(gè)鍵值對(duì),比如 ( "max", 12345 ),其中 12345 就是它找到的那個(gè)局部最大值。這里用一個(gè)固定的 key (比如空字符串 "" 或者 "max") 是個(gè)小技巧,目的是確保所有這些“地方冠軍”都能被送到同一個(gè) reduce 任務(wù)那里去進(jìn)行“總決賽”。
  2. reduce 階段 :reduce 函數(shù)就是“全國總決賽”。因?yàn)榍懊嫠械?nbsp;map 任務(wù)都用了同一個(gè) key,所以 MapReduce 框架會(huì)把所有 map 的輸出(也就是所有“地方冠軍”的數(shù)值)都集合起來,然后交給一個(gè) reduce 任務(wù)。這個(gè) reduce 任務(wù)的工作就更簡單了:在這些“地方冠軍”里,選出那個(gè)唯一的“全國總冠軍”,也就是全局最大值。

reduce 函數(shù)會(huì)被調(diào)用幾次?

只會(huì)有 1 次。因?yàn)槲覀兦擅畹卦O(shè)計(jì)了讓所有 map 的輸出都使用同一個(gè) key,所以這些數(shù)據(jù)只會(huì)被匯集到一個(gè) reduce 任務(wù)中處理。

MapReduce (2): 為什么寫入中間文件需要“先寫臨時(shí)文件再重命名”?

問題背景 :有個(gè)同學(xué)叫 Alyssa,她在實(shí)現(xiàn) MapReduce 的 worker 時(shí)偷懶了。她直接用 os.Create() 來創(chuàng)建中間結(jié)果文件,而不是遵循“先寫到一個(gè)臨時(shí)文件,寫完后再用 os.Rename() 重命名”這個(gè)最佳實(shí)踐。這會(huì)出什么問題?

解讀

這個(gè)問題觸及了分布式系統(tǒng)中一個(gè)非常重要的概念:處理“慢節(jié)點(diǎn)”和任務(wù)的原子性。

在 MapReduce 中,master 有一個(gè)叫做 投機(jī)執(zhí)行 (speculative execution) 的機(jī)制。如果它發(fā)現(xiàn)某個(gè) map 任務(wù)運(yùn)行得特別慢,它可能會(huì)在另一臺(tái)機(jī)器上重新啟動(dòng)一個(gè)一模一樣的任務(wù),誰先跑完就用誰的結(jié)果。

現(xiàn)在,我們來想象一個(gè)災(zāi)難場景:

  1. master 派任務(wù) M 給 worker W1W1 由于網(wǎng)絡(luò)、CPU 等原因,運(yùn)行得非常慢。
  2. master 等得不耐煩了,啟動(dòng)了投機(jī)執(zhí)行,把同樣的任務(wù) M 又派給了 worker W2。W2 身強(qiáng)力壯,很快就完成了計(jì)算,并用 os.Create("mr-M-R") 創(chuàng)建并寫好了中間文件。
  3. master 收到 W2 的捷報(bào),于是啟動(dòng)了對(duì)應(yīng)的 reduce 任務(wù),這個(gè) reduce 任務(wù)開始讀取 W2 生成的那個(gè) mr-M-R 文件。
  4. 就在此時(shí),慢吞吞的 W1 終于也完成了它的計(jì)算。它也執(zhí)行了 os.Create("mr-M-R")。
  5. 關(guān)鍵點(diǎn)來了:os.Create() 在文件已存在時(shí),會(huì)直接清空它!于是,W2 辛辛苦苦生成的、reduce 任務(wù)正在讀取的文件,瞬間被 W1 清空了。
  6. reduce 任務(wù)讀著讀著發(fā)現(xiàn)文件變空了,最終得出了錯(cuò)誤的結(jié)果。

正確的做法是什么呢?

原子性的“寫入臨時(shí)文件后重命名”。W1 和 W2 都先寫入各自的臨時(shí)文件(比如 mr-M-R-temp-W1),寫完后,再用 os.Rename() 這個(gè)原子操作去搶占最終的文件名。這樣就能保證,無論誰快誰慢,reduce 任務(wù)讀到的文件一定是某個(gè) worker 完整寫入的結(jié)果,而不是一個(gè)被中途清空的文件。

GFS: 同時(shí)讀同一個(gè) GFS 文件,內(nèi)容一定相同嗎?

問題背景 :兩個(gè)客戶端,在沒有任何寫入操作的情況下,同時(shí)從頭到尾讀取 GFS 上的同一個(gè)文件。它們讀到的內(nèi)容保證會(huì)一樣嗎?

解讀

不保證。 GFS 在設(shè)計(jì)上為了性能和可用性,在某些一致性上做了妥協(xié)。

問題的根源在于 GFS 的一種特殊寫操作:記錄追加 (record append)。當(dāng)一個(gè)客戶端執(zhí)行追加操作時(shí),primary 副本會(huì)確定一個(gè)偏移量,然后通知所有 secondary 副本也寫入。但如果某個(gè) secondary 副本當(dāng)時(shí)正好網(wǎng)絡(luò)不通或者掛了,它可能就收不到這個(gè)寫入指令。GFS 的 primary 不會(huì)死等所有副本都成功,它只會(huì)把錯(cuò)誤報(bào)告給客戶端。

這就導(dǎo)致了一個(gè)后果:同一個(gè)數(shù)據(jù)塊的不同副本(chunk replica),可能內(nèi)容不一樣了。一個(gè)副本有這次追加的數(shù)據(jù),另一個(gè)沒有。

所以,當(dāng)那兩個(gè)客戶端來讀取文件時(shí),如果它們不幸地連接到了持有不同數(shù)據(jù)副本的 chunkserver 上,它們讀到的內(nèi)容自然也就不一樣了。

Raft (1): currentTerm 必須持久化嗎?

問題背景 :Ben 同學(xué)覺得每次都持久化 currentTerm 太麻煩,他想了個(gè)“聰明”的辦法:當(dāng)一個(gè)節(jié)點(diǎn)重啟時(shí),不從持久化存儲(chǔ)里讀 currentTerm,而是直接讀取它日志里最后一條記錄的任期號(hào),并把它作為自己的 currentTerm。這會(huì)出什么問題?

解讀

Ben 的這個(gè)改動(dòng)會(huì)破壞 Raft 協(xié)議的根基——投票的正確性,從而可能導(dǎo)致“腦裂”(即同一任期出現(xiàn)兩個(gè) leader)。

currentTerm 和 votedFor 這兩個(gè)狀態(tài),是 Raft 節(jié)點(diǎn)在選舉中的“記憶”。它們必須被持久化,以確保節(jié)點(diǎn)在崩潰重啟后不會(huì)“失憶”并做出矛盾的決定。

我們來看一個(gè)具體的失敗場景:

  1. 一個(gè)集群,節(jié)點(diǎn) P1 的日志里最后一條記錄的任期是 10。所以它當(dāng)前的 currentTerm 也是 10。
  2. 候選人 P2 發(fā)起了 term 11 的選舉。P1 收到投票請(qǐng)求,它一看任期比自己的高,于是投票給了 P2。同時(shí),P1 把自己的(內(nèi)存中的)currentTerm 更新為 11,并持久化 votedFor = P2。
  3. 在 P1 還來不及持久化 currentTerm = 11 的時(shí)候,它突然崩潰了。
  4. P1 重啟。按照 Ben 的邏輯,它會(huì)讀取日志,發(fā)現(xiàn)最后一條記錄的任期是 10,于是它把自己的 currentTerm 初始化為 10。
  5. 這時(shí),另一個(gè)候選人 P3 也發(fā)起了 term 11 的選舉。P3 的投票請(qǐng)求到達(dá)了 P1。P1 檢查后發(fā)現(xiàn),請(qǐng)求的任期 11 比自己的當(dāng)前任期 10 要高,并且(假設(shè)它沒持久化 votedFor 或者 votedFor 邏輯也有問題)它認(rèn)為自己還沒在 term 11 里投過票。于是,它又投票給了 P3!

災(zāi)難發(fā)生了 :P1 在同一個(gè)任期 11 里,先后為 P2 和 P3 兩個(gè)不同的候選人投了票。這嚴(yán)重違反了 Raft 的選舉安全規(guī)則,完全可能導(dǎo)致 P2 和 P3 都分別獲得足夠選票成為 leader,系統(tǒng)出現(xiàn)“雙主”,狀態(tài)機(jī)將執(zhí)行不同的指令,數(shù)據(jù)一致性被破壞。

Raft (2): AppendEntries 時(shí)直接覆蓋日志行不行?

問題背景 :Bob 同學(xué)為了簡化代碼,修改了 AppendEntries RPC 的處理邏輯。他不再檢查日志沖突,而是簡單粗暴地直接用 leader 發(fā)來的日志覆蓋本地日志。這為什么是錯(cuò)的?

解讀

這個(gè)改動(dòng)破壞了 Raft 的日志匹配屬性 (Log Matching Property),這是確保安全性的核心。直接覆蓋會(huì)導(dǎo)致一個(gè)已提交的日志條目被錯(cuò)誤地更改。

看這個(gè)例子:

  1. 有三個(gè)節(jié)點(diǎn) S1S2S3。S1 是 term 1 的 leader。
  2. S1 在 index 1 追加了日志 A,在 index 2 追加了日志 B。它把 [A, B] 發(fā)給了 S2 和 S3。
  3. S2 成功收到了 [A, B]。S1 和 S2 構(gòu)成了多數(shù)派,所以 A 和 B 在 S1 上被提交了。S3 可能因?yàn)榫W(wǎng)絡(luò)延遲只收到了 A。
  4. 現(xiàn)在,一個(gè) 之前 從 S1 發(fā)出的、但被網(wǎng)絡(luò)延遲了的 AppendEntries RPC(這個(gè) RPC 只包含 A)終于到達(dá)了 S2。
  5. 按照 Bob 的錯(cuò)誤邏輯,S2 不做沖突檢查,直接用這個(gè) RPC 的內(nèi)容來更新自己的日志。它會(huì)把自己的日志從 [A, B] 截?cái)嗷?nbsp;[A]。
  6. S1 掛了。S3 發(fā)起 term 2 的選舉。S3 的日志是 [A],S2 的日志現(xiàn)在也是 [A],所以 S2 會(huì)投票給 S3。
  7. S3 成為 term 2 的新 leader。它在 index 2 寫入了一個(gè) 不同 的日志 C
  8. S3 把 C 復(fù)制給了 S2,并且它們倆構(gòu)成了多數(shù)派,提交了 C。

最終結(jié)果 :在 index 2 這個(gè)位置,S1 提交的日志是 B,而 S2 和 S3 提交的卻是 C。不同的節(jié)點(diǎn)在同一個(gè)日志索引上提交了不同的命令,狀態(tài)機(jī)不再一致,Raft 的安全性被徹底打破。

MIT 6.824 2020 年期末考試解析

事務(wù)與可串行化 (Transactions and Serializability)

問題背景 :有三個(gè)并發(fā)事務(wù) T1, T2, T3。初始時(shí),數(shù)據(jù)庫里的變量 xyz 都是 0。

T1:       T2:         T3:
begin()   begin()     begin()
put(y, 2) put(x, 99)  tmpx = get(x)
end()     put(y, 99)  tmpy = get(y)
          put(z, 99)  tmpz = get(z)
          end()       print tmpx, tmpy, tmpz
                      end()

問題 1:如果 T3 打印出 99, 2, 99,這個(gè)結(jié)果是可串行化的嗎?

解讀

是的,這是可串行化的。

可串行化 (Serializable) 的意思是,盡管事務(wù)是并發(fā)執(zhí)行的,但其最終結(jié)果必須等同于這些事務(wù)按照 某一個(gè) 串行順序執(zhí)行的結(jié)果。我們的任務(wù)就是去找到這個(gè)串行順序。

我們來試試 T2 -> T1 -> T3 這個(gè)順序:

  1. 先執(zhí)行 T2x 變成 99,y 變成 99,z 變成 99。
  2. 接著執(zhí)行 T1y 被更新為 2。現(xiàn)在狀態(tài)是 x=99, y=2, z=99。
  3. 最后執(zhí)行 T3:讀取 x 得到 99,讀取 y 得到 2,讀取 z 得到 99。打印結(jié)果 99, 2, 99。

完全匹配!既然我們找到了一個(gè)能產(chǎn)生同樣結(jié)果的串行順序,那么這個(gè)結(jié)果就是可串行化的。

問題 2:如果 T3 打印出 0, 2, 99,這個(gè)結(jié)果是可串行化的嗎?

解讀

不,這不是可串行化的。

這次我們無法找到任何一個(gè)合法的串行執(zhí)行順序。我們可以用依賴關(guān)系來分析:

  • T3 讀到了 x = 0。而 T2 會(huì)把 x 改成 99。為了能讀到 0,T3 的 get(x) 必須發(fā)生在 T2 的 put(x, 99) 之前。所以,在任何等價(jià)的串行順序中,必然有 T3 在 T2 之前。
  • T3 讀到了 z = 99z 的初始值是 0,只有 T2 會(huì)把它改成 99。為了能讀到 99,T3 的 get(z) 必須發(fā)生在 T2 的 put(z, 99) 之后。所以,在任何等價(jià)的串行順序中,必然有 T2 在 T3 之前。

這里就出現(xiàn)了致命的矛盾:T3 必須在 T2 之前,同時(shí) T2 又必須在 T3 之前。這是不可能的。這種依賴環(huán)路意味著不存在任何一個(gè)串行順序能產(chǎn)生這個(gè)結(jié)果,因此它不是可串行化的。

兩階段提交 (Two-Phase Commit)

問題背景 :在兩階段提交 (Two-Phase Commit, 2PC) 協(xié)議中,worker 在投票 PREPARE 成功后,需要一直持有鎖,直到收到最終的 COMMIT 或 ABORT 消息。如果我們改動(dòng)一下,讓 worker 在回復(fù) PREPARE 后就立即釋放鎖,會(huì)發(fā)生什么?

解讀

這么做會(huì)徹底破壞事務(wù)的原子性和隔離性。PREPARE 階段結(jié)束后,worker 處于一個(gè)“不確定”的狀態(tài),它并不知道事務(wù)最終是會(huì)成功還是失敗。在這個(gè)節(jié)骨眼上釋放鎖,會(huì)引發(fā)兩種嚴(yán)重的問題:

  1. 讀到“臟數(shù)據(jù)” (Dirty Reads) :如果 worker 釋放了鎖,并且讓其他事務(wù)能夠看到它本地“預(yù)提交”的修改(比如 T1 修改了 x 的值)。此時(shí),另一個(gè)事務(wù) T_other 進(jìn)來讀到了這個(gè)新值。但萬一 T1 的協(xié)調(diào)者最終決定 ABORT 整個(gè)事務(wù),那么 T_other 就相當(dāng)于讀到了一個(gè)從未真實(shí)存在過的數(shù)據(jù),后續(xù)的所有計(jì)算都是基于這個(gè)“幻影”數(shù)據(jù),后果不堪設(shè)想。
  2. 破壞可串行化 :另一種情況是,worker 釋放了鎖,但很“聰明”地把修改先隱藏起來,不讓別的事務(wù)看見。但即使這樣,另一個(gè)事務(wù) T_other 還是可以進(jìn)來獲取 T1 剛剛釋放的鎖。T_other 可能會(huì)讀取一些 T1 沒有修改過的數(shù)據(jù)(這是舊值),然后 T1 的 COMMIT 消息到達(dá),T1 的修改被應(yīng)用。之后,T_other 又讀取了 T1 修改過的數(shù)據(jù)(這是新值)。這樣一來,T_other 在一個(gè)事務(wù)里,既看到了過去,又看到了未來,看到了一個(gè)數(shù)據(jù)不一致的“混合快照”,這同樣破壞了可串行化。

結(jié)論 :鎖必須持有到事務(wù)的最終狀態(tài)(COMMIT 或 ABORT)被確定為止,這是 2PC 保證隔離性的關(guān)鍵。

Spanner: 為什么所有寫操作要用同一個(gè)時(shí)間戳?

問題背景 :在 Spanner 中,一個(gè)讀寫事務(wù)里的所有寫操作,都會(huì)被賦予一個(gè)相同的提交時(shí)間戳。如果我們把它改成:每次客戶端調(diào)用寫操作時(shí),就用當(dāng)時(shí)的 TT.now().latest 作為這個(gè)寫操作的時(shí)間戳。這樣,一個(gè)事務(wù)內(nèi)的不同寫操作就會(huì)有不同的時(shí)間戳。這會(huì)破壞什么?

解讀

這會(huì)破壞只讀事務(wù)的可串行化保證。

Spanner 的一個(gè)核心特性是它能提供嚴(yán)格可串行化的只讀事務(wù)。它通過給只讀事務(wù)選擇一個(gè)時(shí)間戳 s_read,然后讀取在 s_read 時(shí)刻的數(shù)據(jù)庫快照來實(shí)現(xiàn)的。

在原版 Spanner 中,一個(gè)讀寫事務(wù) T_rw 的所有寫操作共享一個(gè)提交時(shí)間戳 s_write。這樣一來,對(duì)于任何只讀事務(wù),要么它的 s_read < s_write(完全看不到 T_rw 的修改),要么 s_read > s_write(能看到 T_rw 所有的修改)。這保證了原子性,T_rw 的修改對(duì)于只讀事務(wù)來說是“要么全有,要么全無”的。

但如果按照問題中的修改,T_rw 的多個(gè)寫操作 W1, W2, W3 會(huì)有各自不同的時(shí)間戳 ts1, ts2, ts3。這時(shí),一個(gè)只讀事務(wù)的時(shí)間戳 s_read 就可能恰好落在這些寫操作之間,比如 ts1 < s_read < ts2。這意味著這個(gè)只讀事務(wù)會(huì)看到 W1 的修改,但看不到 W2 和 W3 的修改。它看到了一個(gè)“半成品”狀態(tài)的 T_rw,事務(wù)的原子性被打破,自然也就不再是可串行化的了。

Spark: for 循環(huán)為什么執(zhí)行那么快?

問題背景 :Ben 在用 Spark 跑 PageRank,他發(fā)現(xiàn)代碼里的那個(gè) for 循環(huán),每次迭代都只花幾毫秒,整個(gè)循環(huán)跑完不到一秒。但整個(gè) Spark 作業(yè)卻要跑好幾個(gè)小時(shí)。這是為什么?

解讀

這是因?yàn)?Spark 的惰性求值 (lazy evaluation) 機(jī)制。

在 Spark 中,操作被分為兩類:

  • 轉(zhuǎn)換 (Transformation) :比如 mapfilterjoin 等。這些操作并不會(huì)立即執(zhí)行計(jì)算。它們只是在構(gòu)建一個(gè)叫做 有向無環(huán)圖 (DAG) 的計(jì)算藍(lán)圖。你可以想象成你在畫一張建筑圖紙,而不是真的在蓋房子。
  • 動(dòng)作 (Action) :比如 countcollectsaveAsTextFile 等。只有當(dāng)一個(gè) action 被調(diào)用時(shí),Spark 才會(huì)根據(jù)之前構(gòu)建好的 DAG 圖,真正地開始分發(fā)任務(wù)、讀取數(shù)據(jù)、執(zhí)行計(jì)算。

PageRank 的那個(gè) for 循環(huán)里,全都是 transformation 操作,比如 join 和 map。每次循環(huán),Spark 只是在圖紙上又加了幾筆,擴(kuò)展了一下 DAG。這個(gè)過程當(dāng)然非??欤?yàn)闆]有涉及任何大規(guī)模的數(shù)據(jù)計(jì)算。真正耗時(shí)的計(jì)算,是在循環(huán)結(jié)束后,當(dāng)某個(gè) action(比如 collect() 或者把結(jié)果寫入文件)被調(diào)用時(shí),才一次性觸發(fā)的。那幾個(gè)小時(shí),就是花在了執(zhí)行這張龐大的計(jì)算圖紙上。

責(zé)任編輯:武曉燕 來源: Piper蛋窩
相關(guān)推薦

2024-05-21 14:12:07

2023-07-26 09:24:03

分布式事務(wù)分布式系統(tǒng)

2025-06-10 08:02:15

2022-12-21 19:04:35

InnoDBMySQL

2022-03-28 10:44:51

MySQL日志存儲(chǔ)

2024-01-26 08:18:03

2018-10-29 08:44:29

分布式兩階段提交事務(wù)

2023-11-29 07:47:58

DDIA兩階段提交

2025-05-16 07:46:11

分布式事務(wù)服務(wù)

2023-12-05 09:33:08

分布式事務(wù)

2018-08-20 16:00:23

MySQL并發(fā)控制MVCC

2009-11-18 11:05:27

PHP串行化

2024-12-06 07:10:00

2009-07-10 09:38:06

Java swing組

2017-08-30 18:15:54

MySql

2009-06-09 16:14:47

Java swing組件串行化

2009-11-02 16:41:55

VB.NET串行化對(duì)象

2023-01-18 10:35:49

MySQL數(shù)據(jù)庫

2009-09-11 12:17:59

C#控件屬性

2010-01-12 10:29:51

VB.NET對(duì)象串行化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩欧美主播在线| 波多野结衣视频一区| 在线视频中文亚洲| 久久综合在线观看| 69av成人| 久久久久久99久久久精品网站| 国产精品劲爆视频| 无码人妻精品一区二区三区夜夜嗨| av成人app永久免费| 欧美日韩激情视频| 亚洲欧洲日韩综合二区| 超碰在线观看99| 欧美专区在线| 久久久99久久精品女同性| 岛国精品一区二区三区| 成人性生交大片免费网站| 亚洲国产高清aⅴ视频| 97操在线视频| 亚洲天堂视频在线播放| 欧美喷水视频| 亚洲欧美激情在线视频| 99999精品| 香蕉久久免费电影| 亚洲自拍偷拍av| 视频一区二区综合| 亚洲精品免费在线观看视频| 三级成人在线视频| 欧美激情综合色| 亚洲 欧美 国产 另类| 久久久久97| 欧美一区二区三区四区五区 | 亚洲成人av免费观看| 中文字幕在线官网| 亚洲一区二区三区四区在线观看 | 欧美性极品xxxx娇小| 一级黄色片播放| a√资源在线| 97久久精品人人澡人人爽| 92国产精品久久久久首页| 中文字幕免费观看| 国产精品人人爽人人做我的可爱| 欧美另类xxx| 亚洲色偷偷综合亚洲av伊人| 精品一区二区三| 国产视频久久久久久久| 一边摸一边做爽的视频17国产| 国产精品视频首页| 欧美日韩一区三区| 乌克兰美女av| 91国拍精品国产粉嫩亚洲一区| 狠狠色狠狠色综合日日小说| 无码 制服 丝袜 国产 另类| 亚洲国产精品精华素| 椎名由奈av一区二区三区| 亚洲福利av| 激情在线视频| 久久久不卡网国产精品一区| 麻豆蜜桃91| 日本中文字幕电影在线观看| 91亚洲精品久久久蜜桃| 久久久久久久免费| 色中色在线视频| 91丨porny丨中文| 麻豆亚洲一区| 超碰免费在线观看| 中文成人综合网| 亚洲免费久久| 日本在线视频站| 亚洲色图视频网| 欧美另类videos| 久久香蕉av| 亚洲图片一区二区| 97成人在线免费视频| 日本乱码一区二区三区不卡| 欧美日韩国产页| 日韩亚洲在线视频| 成人涩涩视频| 91麻豆精品国产91| 伦伦影院午夜理论片| 国产精品对白| 亚洲精品丝袜日韩| 欧美波霸videosex极品| 天天综合网网欲色| 欧美激情欧美激情在线五月| 在线观看亚洲欧美| 日韩av电影天堂| 91久久久久久久一区二区| 亚洲AV无码精品色毛片浪潮| 波多野洁衣一区| 日韩av电影免费在线| 男人天堂久久久| 亚洲一区二区视频在线| 日韩中文字幕二区| 爱情电影网av一区二区| 欧美一级在线视频| 国产精品无码永久免费不卡| 成人精品亚洲| 色中色综合影院手机版在线观看| 好看的av在线| 国内精品免费**视频| 精品视频在线观看| 日本美女高清在线观看免费| 亚洲主播在线观看| 少妇黄色一级片| 一区二区三区在线资源| 亚洲人午夜精品| 在线免费日韩av| 天堂蜜桃91精品| 99国产在线观看| 国产在线黄色| 亚洲国产另类精品专区| 亚洲国产日韩欧美在线观看| 国产精品自在线拍| 日韩在线免费av| 六月丁香激情综合| 国产91富婆露脸刺激对白| 欧美欧美一区二区| jizz一区二区三区| 91精品久久久久久蜜臀| 成人无码av片在线观看| 亚洲精品极品| 亚洲xxxxx| 在线视频三区| 天天操天天干天天综合网| 超碰在线免费av| 波多野结衣在线播放一区| 欧美精品在线免费观看| 中文字幕激情视频| 久久久久久免费| 99视频在线免费播放| 日韩视频在线直播| 色噜噜狠狠色综合网图区| 高清乱码免费看污| av不卡在线观看| 日本一级黄视频| 国产精品视频首页| 北条麻妃久久精品| 一区二区视频网| 国产农村妇女精品| 成人性做爰aaa片免费看不忠| 激情小说一区| 国模精品系列视频| 亚洲第一第二区| 亚洲精品高清在线观看| 亚洲天堂av一区二区三区| 日韩av免费大片| 国产精品亚洲美女av网站| 免费成人av电影| 色香蕉久久蜜桃| a毛片毛片av永久免费| 99在线观看免费视频精品观看| 国产传媒一区二区| 女子免费在线观看视频www| 555www色欧美视频| 小泽玛利亚一区二区免费| 久久国产精品免费| 中文字幕欧美日韩一区二区三区| 欧美日韩va| 日韩在线播放一区| 国产精品自拍电影| 亚洲欧美另类小说| 被黑人猛躁10次高潮视频| 欧美高清日韩| 成人自拍视频网站| 成人影院在线视频| 亚洲精品中文字幕女同| 中文字幕免费观看| 国产精品久久99| 日韩视频在线观看一区二区三区| 一区二区电影| 动漫精品视频| 在线天堂资源| 一个色综合导航| 91丨九色丨丰满| 夜夜揉揉日日人人青青一国产精品| 香蕉久久久久久av成人| 99国产精品| 日韩国产一区久久| www.欧美| 欧美一级成年大片在线观看| 国产精品免费播放| 91精选在线观看| 日本三级片在线观看| 久久久一区二区| 老司机久久精品| 国产精品mv在线观看| 久久久久久久久久久久久9999| 777午夜精品电影免费看| 久久夜色精品亚洲噜噜国产mv| 亚洲高清视频网站| 色琪琪一区二区三区亚洲区| 二区三区四区视频| a级精品国产片在线观看| 天天操天天爱天天爽| 欧美一区久久| 欧美精品与人动性物交免费看| 精品亚洲a∨| 久久免费观看视频| 大片免费播放在线视频| 欧美成人精品1314www| 无码人妻丰满熟妇奶水区码| 亚洲蜜桃精久久久久久久| 制服丝袜第二页| 国内精品伊人久久久久影院对白| 无码精品a∨在线观看中文| 久久视频精品| 免费在线观看一区二区| 国产95亚洲| 日韩美女主播视频| 秋霞在线视频| 日韩亚洲欧美中文在线| 手机福利在线| 欧美一级免费大片| 日韩久久久久久久久久| 精品福利一区二区| 欧美一区二区三区爽爽爽| 国产午夜亚洲精品午夜鲁丝片| 中文字幕无码毛片免费看| 日本伊人色综合网| 久在线观看视频| 亚洲欧美一区在线| 亚洲国产高清国产精品| 亚洲毛片免费看| 国产精品手机在线| www欧美在线观看| 国产精品视频999| 樱桃视频成人在线观看| 久久久噜噜噜久噜久久| 最新国产露脸在线观看| 日韩在线观看免费全| 九色蝌蚪在线| 日韩成人中文字幕在线观看| 蜜桃视频污在线观看| 欧美一区二区三区日韩| 国产精品久久久久久久免费看| 日韩欧中文字幕| 五月婷婷视频在线| 激情成人在线视频| 久久久久久久福利| 亚洲男人都懂的| 紧身裙女教师波多野结衣| 中文字幕欧美一| 国产精品视频看看| 18涩涩午夜精品.www| 福利视频第一页| 中文字幕成人网| 四虎国产成人精品免费一女五男| 国产亚洲成aⅴ人片在线观看 | 国产精品一区二区三区美女| 国产精品免费一区二区三区四区| 91精品国产色综合久久不卡粉嫩| 国产日韩欧美在线观看| 人人精品久久| 国产一区二区在线免费| 亚洲欧美一级| 亚洲在线第一页| 91精品导航| 国产乱码精品一区二区三区中文 | 精品国产乱码久久久久久1区2区| www日本在线| 精品日韩欧美在线| 天堂中文在线观看视频| 日韩精品视频三区| 精品视频二区| 中文字幕亚洲综合久久筱田步美| 99reav在线| 久久久精品视频在线观看| 国产乱色在线观看| 欧美日本中文字幕| 成年女人在线看片| 国产精品成人aaaaa网站| jizz亚洲女人高潮大叫| 91人成网站www| 99a精品视频在线观看| 国产自产精品| 免费黄色成人| 亚洲精品中文综合第一页| 68国产成人综合久久精品| 日本a级片在线观看| 国产精品久久| 国产成人无码一二三区视频| 蜜臀av性久久久久蜜臀aⅴ| 中文字幕 日韩 欧美| 国产精品白丝jk黑袜喷水| 中文字幕精品视频在线| 久久精品人人做| 久久精品一区二区三区四区五区| 亚洲一区二区三区激情| 久久人妻免费视频| 91.麻豆视频| 色窝窝无码一区二区三区| 亚洲色图25p| gogogogo高清视频在线| 18一19gay欧美视频网站| 久草综合在线| 国产日韩二区| 999久久久亚洲| 成人一区二区免费视频| 蜜臀久久99精品久久久画质超高清| 少妇高潮一69aⅹ| 久久精品日韩一区二区三区| 欧美黄色免费在线观看| 一本色道久久综合精品竹菊| 国产浮力第一页| 亚洲欧美日韩综合| 色婷婷av在线| 国产精品直播网红| 久久亚州av| 日本福利视频导航| 亚洲综合三区| 色综合五月婷婷| 国产三级精品在线| 国产无遮无挡120秒| 欧美日韩精品二区第二页| 天堂av手机版| 美日韩在线视频| 成人免费在线观看视频| 久久riav| 精品电影一区| 久久久九九九热| 国产精品热久久久久夜色精品三区 | 欧美精品999| 国产精久久久| 亚洲午夜精品国产| 视频一区视频二区在线观看| 久久性爱视频网站| 亚洲在线中文字幕| 国产美女明星三级做爰| 中文字幕精品网| gogo亚洲高清大胆美女人体 | 欧美精品一区二区久久| 欧美视频在线播放一区| 成人精品国产福利| 青青操国产视频| 91麻豆精品国产91久久久使用方法 | 国产资源一区| 日本在线播放一区| 亚洲欧美日韩国产综合精品二区| 精品人妻一区二区免费| 一区二区三区在线观看网站| 国产情侣一区二区| 日韩在线观看免费| 亚洲精品大片| 久久精品国产精品亚洲精品色| 日本不卡一区二区| 婷婷色一区二区三区| 一本久久a久久免费精品不卡| 天天操天天干天天舔| 性色av一区二区咪爱| 精品伊人久久久| 九色自拍视频在线观看| 91在线观看视频| 久久国产精品免费看| 亚洲国产精品久久久久久| aa国产成人| 久久riav| 日本欧美大码aⅴ在线播放| 欧美老女人性生活视频| 欧美性色欧美a在线播放| yiren22亚洲综合伊人22| 国产精品啪视频| 日韩一区欧美| 精品国产午夜福利在线观看| 一区二区三区在线视频播放| 黄色av一区二区三区| 97人人做人人爱| 婷婷综合成人| 国产日韩成人内射视频| 国产精品理论在线观看| 国产情侣在线播放| 午夜精品久久久99热福利| 美日韩中文字幕| 激情视频免费网站| 亚洲视频在线一区二区| 午夜久久久久久久久久| 91精品国产91久久久久久| 久久成人av| 91制片厂毛片| 一区二区三区在线观看欧美| 色资源在线观看| 国产在线视频欧美| 韩国一区二区三区在线观看| av网站有哪些| 欧美区在线观看| av在线加勒比| 日韩欧美三级电影| 国产精品一级二级三级| 欧美三级韩国三级日本三斤在线观看| 精品无码久久久久久国产| 国产成人亚洲一区二区三区| www.激情网| 久久久精品影视| 国产欧美综合视频| 欧美在线www| 亚洲国产精品日韩专区av有中文| 精品一区二区三区四区五区六区| 欧美性猛交xxxx乱大交退制版| 在线观看的网站你懂的| 欧美乱偷一区二区三区在线| 高清国产一区二区|