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

如何平衡存儲系統的一致性和可用性?

開發 架構
在分布式存儲系統中,讓系統中多個實例的狀態保持一致,是一個比較難處理的問題。尤其是當系統出現故障時,系統能否始終保持一致性,很大程度上影響了系統的可用性和數據的可靠性。

在分布式存儲系統中,讓系統中多個實例的狀態保持一致,是一個比較難處理的問題。尤其是當系統出現故障時,系統能否始終保持一致性,很大程度上影響了系統的可用性和數據的可靠性。

典型的由不一致導致的重大事故是這樣的:正常情況下,系統通過某種數據同步機制保持各實例上狀態的一致性,當發生實例宕機、網絡分區等故障時,這種同步機制無法正常工作,一致性被打破。

這種情況下,出現了多份不一致的狀態數據,系統很難自動去判斷到底哪份狀態數據才是“正確的”,也就沒有辦法自動恢復。更糟糕的是,一旦這種不一致的狀態被其它系統讀取,錯誤的狀態將被傳遞到其它系統中,造成不可預期的結果。

這種復雜的數據錯誤,即使人工處理也是非常難恢復,往往恢復時間需要幾小時或幾天,嚴重情況下甚至于無法恢復。

可以看出,在故障情況下仍然保持一致性,是系統能快速從故障中恢復的前提條件,有助于提升系統的可用性。但為了保證一致性,在數據更新時,往往需要協調參與的各個模塊,確保它們同步更新。比如,使用各種分布式事務。

但這會導致這些模塊在可用性上緊密耦合在一起,反而降低了系統的可用性。這種場景下,可用性和一致性又存在矛盾。

本文從高可用視角來重新審視數據一致性問題,討論如何在可用性和一致性上取得相對的平衡。

01 如無必要,勿增副本

在考慮如何平衡一致性與可用性之前,最重要的是要意識到,在分布式系統中解決一致性問題需要付出非常大的代價,這些代價可能包括:可用性降低、性能下降、用戶體驗變差或者是極大的增加了系統的復雜度。

因此,不要人為制造一致性難題。但是,很多情況下,因為缺少這方面的意識,我們無意間為系統制造了本無必要的一致性難題,然后又付出了巨大的代價去解決這個難題,得不償失。

為系統中的狀態數據設計多個副本的情況并不罕見,常見的多副本設計包括:

  • 以不同格式或數據結構存儲多個副本。
  • 在不同類型的外部存儲中存儲多個副本。
  • 在本地磁盤或內存中緩存數據的副本。

以上這些都是我們時常會用到的設計模式,難道說它們都是“不好的設計”么?

當然不是這樣的。

架構設計是平衡的藝術,當架構師選擇某種設計或架構時,一定要充分了解當前選擇的優勢和代價,確保優點是我們所需要的,代價是我們能接受的。這樣的設計才是在當前場景下最優的選擇。

為數據增加副本會帶來一致性難題,開發者需要為此付出巨大的代價去維護數據一致性。所以,在設計過程中需要慎重考慮,為系統增加副本所帶來的收益和付出的代價,二者相比是不是值得做出這樣的選擇。

我們需要避免的是,在設計過程中未經仔細思考隨意增加副本的行為。

以下是幾個常見的錯誤示例:

  • 僅僅是為了寫代碼的時候更方便地讀取數據,就隨意增加副本。比如,為了便于查詢,將數據庫中A表中的部分字段,在B表中也保存一份。
  • 系統中存在多個外部存儲,為了讀寫方便,在每個外部存儲都保存一份數據副本。比如,集群的元數據保存在ZooKeeper中,為了方便管理控制臺操作,也在MySQL中保存一份同樣的數據。
  • 不考慮系統的性能實際要求,為了讓系統速度更快一些,在Redis和內存中緩存數據。

02 一致性與可用性的矛盾

在現有硬件技術條件下,對分布式系統中每個節點更新操作,總會有先后,不可能做到絕對的“同時”,也就無法保證系統的多個副本在“任何時刻”狀態都相同。

因此,這里我們討論的一致性是,系統作為一個整體對外部所表現出的一致性。換句話說就是,分布式系統內部可以存在不一致的狀態,但只要這種不一致的狀態對外部是不可見的,那就可以認為這個系統具備一致性。

在分布式系統中,既要保證高可用又要保證一致性是幾乎不可能實現的。我們把分布式系統抽象成最簡單的模型:一個只有兩個有狀態節點系統。然后在這個最簡模型下來分析一致性問題:如何保證這兩個節點上的狀態,在任何時刻都是相同的?

即使在這樣一個最簡模型下,保持一致性仍然面臨下面的3個難題。

第一個難題是,如何處理更新操作失敗的情況。

要保持兩個節點上狀態的一致性,理論上需要每次更新狀態時同步更新兩個節點上的狀態。如果某一個節點上的更新操作失敗了,系統將變成如下不一致的狀態:一個節點更新成功,而另外一個節點更新失敗。

在這種情況下,還要保持系統的一致性,就需要將這種不一致狀態隔離在系統內部,不能讓外部系統感知,并且盡快修復不一致的狀態。

要修復這種不一致狀態,一般有兩種方法,分別是重試和回滾。

  • 重試指的是,讓失敗的節點重新執行更新操作。如果重試成功,系統將重新回到一致的狀態。
  • 回滾指的是,讓之前更新成功的節點執行回滾操作,回到更新前的狀態,也可以讓系統重新回到一致狀態。

但重試和回滾的實現代價都很大。

通過重試來解決一致性的前提是,被重試的更新操作必須具備冪等性和原子性。

  • 冪等性,可以保證多次重試同一個更新操作不會改變狀態的正確性;
  • 原子性,則可以避免在更新具有復雜數據結構的狀態失敗時,只更新了部分狀態的尷尬局面。

如果系統的狀態不是保存在關系型數據庫中,要實現冪等性和原子性其實很不容易。

實現回滾同樣要保證原子性,此外為了能將狀態恢復到更新之前,需要在執行更新操作之前記錄原始狀態,系統還要考慮如何處理回滾失敗的問題。

第二個難題是,如何在其中一個節點不可用的情況下保證系統一致性。

當系統其中的一個節點不可用時,另外一個節點仍然可以提供讀寫服務。當故障節點恢復后,理論上只要把狀態數據從可用節點同步到之前故障的節點上,系統就可以重新回到一致性狀態了。而在現實中實現好數據同步,既要做到快速同步,又要保證不重不漏,難度和代價都比較大。

最簡單的方法是全量數據同步,清空故障節點上的狀態數據,然后將可用節點上的狀態數據全部復制到故障節點上。全量同步相對比較耗時,如果數據量比較大,就必須采用增量同步的方法。

而增量同步,則需要精準地界定出哪些數據屬于“增量數據”。這對于大多數采用多線程并行處理請求的服務來說,幾乎不可能實現。同時,另一個不得不考慮的極端情況是,如果在一段時間內兩個節點交替多次出現不可用的情況,系統將很難判定哪個節點上的狀態才是“正確可信的狀態”,也就無法恢復系統的一致性狀態。

第三個難題是,如何在網絡分區情況下保證系統的一致性。

網絡分區,指的是由于網絡設備故障,造成網絡分裂為多個獨立的區域。典型場景是兩個機房間的網絡中斷,這兩個機房就形成了兩個互不聯通的分區。

假設發生了網絡分區,系統的兩個節點恰巧分別位于不同分區,這種情況下,雖然沒有節點不可用,但節點間無法通信,也就無法保證系統一致性。如果系統不能容忍“不一致”,唯一的辦法就是在網絡分區期間停止對外提供服務,也就是說需要犧牲“可用性”。

上面我們討論的情況,就是著名的CAP理論的一種典型場景:在網絡分區的情況下,一致性和可用性只能二選其一。

鑒于一致性與可用性存在沖突,以及實現一致性的代價過高這兩個原因,在設計分布式系統時,放棄對嚴格一致性的約束,讓系統去適應相對寬松一致性,從而在一致性、可用性和性能上取得相對可接受的平衡,是更加理性的選擇。

所謂“寬松一致”,是在隔離性和性能等方面適當放寬要求后的一系列降級版一致性。相對的,我們之前討論的一致性,也被稱為“強一致”。最終一致是普遍采用的一種寬松一致。

比如上面的例子,在網絡分區的情況下,如果可以接受最終一致,則系統仍然可以在其中的一個分區提供讀寫服務,另一個分區提供只讀服務,極大增強系統的可用性。只要待網絡故障結束后,再通過單向數據同步即可恢復系統一致性。

03 在一致性與可用性之間保持平衡

犧牲強一致后,當系統故障時,由于系統存在多個副本,就比較容易繼續維持可用性。無論是發生網絡故障還是服務器宕機,只要調用端還能訪問某個存活的副本,系統仍然可以提供服務。

BASE給出了一種平衡一致性和可用性的策略,這種策略適用范圍廣泛,實現難度不大,在一致性和可用性上都有不錯的表現。BASE是“基本可用(Basically Available)”“軟狀態(Soft State)”和“最終一致(Eventually Consistent)”這三個詞的縮寫。

其中:

  • 基本可用是對可用性的妥協,指的是在故障時,系統以響應時間變長、部分功能不可用或者部分請求失敗為代價,換取整個系統仍然可以提供基本的服務能力。
  • 軟狀態和最終一致則是對一致性的妥協。具體地說,就是犧牲了原子性和隔離性,允許系統內出現外部可見的“中間狀態”,但需要在短時間內恢復為一致狀態,達成最終一致。

在多個組件構成的分布式系統中,如果某個組件在設計上降低了可用性和一致性的等級,依賴這個組件的其它組件或外部服務為了能夠兼容這種降級設計,往往需要付出額外的代價。因此,設計者需要針對系統的實際情況來權衡決策,謹慎降級可用性和一致性。基本可用不等于不可用,最終一致也不等于不一致。

接下來介紹實踐BASE理論的常用方法和常見誤區。

“最終一致”允許不一致的中間狀態被外部可見,但需要在短時間內恢復為一致狀態。這里面的“短時間”能否量化呢?

要回答這個問題,我們需要分系統正常和故障二種情況來分別討論。

在系統正常時,達成最終一致的時間要求是“在系統外部幾乎不可感知”,具體來說應該與需要同步狀態的節點之間的網絡時延差不多。比如,如果系統的節點都部署在同一個數據中心內,達成最終一致的時延不應超過幾個毫秒;對于一個全球部署的系統,達成最終一致的時延可能需要幾十至幾百毫秒。

在系統發生網絡分區故障時,為了盡可能保證系統的可用性,需要進一步犧牲達成最終一致的時延,最長可能需要等到故障恢復后系統才能達成最終一致。

▲圖1 系統故障時需要更長的時間達成最終一致

犧牲一致性需要守住兩個底線:防止腦裂和要保證單調讀寫。

我們首先來討論底線一:防止腦裂。

例如,傳統MySQL主從結構中,如果主庫宕機,或者網絡分區導致無法訪問主庫,也不應該去更新從庫中的數據,否則在故障結束后,系統面對主庫和從庫二份不一樣的數據,是無法自動恢復的。這種情況被稱為“腦裂(Split-brain)”,出現腦裂后,理論上系統的一致性不可恢復。

工程實踐中,一般都需要人工介入,借助數據的業務屬性(比如,同一訂單支付操作一定早于發貨操作,則可以判斷“已發貨”狀態是比“已支付”更新的狀態),才有可能完成數據的一致性修復。

特別注意的是,不應該以狀態更新的時間戳來判斷狀態數據的新舊并用于恢復一致性。狀態數據中記錄的時間戳來自客戶端或服務端應用所在的多個節點,而現有的時間同步技術所能保證的誤差(10~500ms)過大,所以用時間戳來判斷狀態新舊極其不可靠。人工恢復腦裂的代價往往是“部分數據丟失”和“更長的故障恢復時長”。

那么,如何防止腦裂呢?

在我看來,關鍵是確保故障后能夠恢復最終一致。其前提則是,系統需要具備足夠的信息,以判斷出最新的狀態。然后才能將所有副本的狀態都恢復至這一狀態。在系統故障時,即使為了保證可用性,也不應該違反更新操作的一致性約束。

這里,“更新操作的一致性約束”指的是,系統為了保證一致性,而對狀態更新操作施加的約束條件。比如,最簡單的主從模式下,只能通過主副本更新狀態,無論任何原因無法更新主副本,那就要讓本次更新失敗,犧牲更新操作的可用性。

Paxos等一致性協議,采用了多數派(Quorum)機制保證更新操作的一致性。簡單地說,就是每次更新操作必須在超過半數的副本上達成一致才算更新成功,如果在系統故障時,更新請求不能達成多數派一致,也必須讓本次更新失敗。

接下來,我們討論單調讀寫。

最終一致系統在故障時,為了保證系統持續可用,應允許客戶端從任意一個尚可訪問的節點上讀取狀態數據。盡管這個時候,客戶端讀到的可能并非最新狀態。對于絕大多數系統來說,短時間內讀到一個并非最新狀態都是可接受的。

先來看第一個例子。小明用手機銀行給小華轉了100元,當小明完成了轉賬操作后,實際上這筆錢已經轉入到小華的賬戶。如果這個時候因為系統故障,小華的手機銀行上顯示尚未到賬,然后過了一段時間之后才顯示到賬,也并非是完全不可接受。

然后我們再來看第二個例子,同樣還是以小明給小華轉賬來說明。如圖二所示,在一個只有主從二副本的最終一致性系統中,轉賬成功后主副本的狀態已更新,小明轉給小華的錢已到賬,小華的賬戶余額是100元。但由于同步延遲,從副本中轉賬還未到賬,小華的賬戶余額還是0元。

假設小華第一次查詢賬戶的請求被分配到主副本上,App顯示余額100元。小華再次查詢,這次查詢請求被分配到了從副本上,App顯示余額0元!剛到賬的錢沒了!

對小明來說也可能出現類似的問題,轉賬成功后再查詢賬戶,如果這個查詢請求被分配到了從副本上(這在配置了讀寫分離的數據庫集群上是默認的行為),發現賬戶余額并沒有減少,小明以為轉賬沒成功,再次發起了轉賬,結果多轉了100元。

以上這兩種情況,對外部系統來說無法判斷讀到的狀態是否準確,顯然是不可接受的。

▲圖2 狀態時序錯亂問題

要避免這兩個問題,就需要保證在客戶端視角的一致性。所謂單調讀寫,要求對每一個客戶端來說,每次讀到的狀態不能比上次一讀寫到的狀態更舊。簡單的說就是“不能時序錯亂”。實現單調讀寫有兩種常用的方法。

第一種方法是通過保持會話(Sticky Session)的方式,讓同一個客戶端的請求總是由與之建立會話的那個特定的服務端節點(副本)處理。客戶端只與服務端一個節點交互,自然就不會出現“時序錯亂”的問題。

保持會話的方式實現比較簡單,很多網關都內置了保持會話的功能。如果系統是通過網關對外提供服務,則可以直接使用。即使系統沒有使用網關,只要在客戶端首次連接成功時,返回服務端節點的唯一標識(ID)或URL給客戶端,后續客戶端就可以用這個ID或URL繼續訪問同一個服務端節點了。

但保持會話這種實現方式的問題是,在系統故障時需要降級。如果客戶端連不上會話中的那個服務端節點,只能選擇去連接其它服務端節點創建新的會話。這個會話切換的過程中,仍然存在時序錯亂的可能性。

幸運的是時序錯亂只可能發生在會話切換過程中,而會話切換只在系統故障時才發生,發生概率很低。而且,客戶端是可以感知到會話切換,從而主動從業務邏輯上做一些補償。此外,因為需要維持會話,無法使用負載均衡策略,系統的彈性(Elasticity)將受到很大的限制,容易出現熱點問題,并且擴縮容也會受到會話的限制。

另一種方法是,通過記錄和比較狀態的版本號來實現單調讀寫。

系統需要為狀態數據維護一個版本號系統,狀態版本號是狀態的一部分,并且要確保每次狀態更新,對應版本號都單調遞增。這個狀態版本號的目的是,標記狀態更新的先后順序,在英文中也稱為Ephoc或者Logical timestamps。

客戶端需要記錄上一次讀寫狀態的版本號,然后在每一次讀取狀態之前比對本次版本號和上次版本號,如果本次版本號不小于上次版本號,就可以認為本次讀取的狀態是可信的。否則,需要丟棄本次讀取結果,等待一會兒或者連接其它服務端重試,以獲取新版本的狀態數據。通過狀態版本號的方式實現單調讀寫,可以完美地保證客戶端視角的一致性,但服務端的實現則更加復雜。

04 小結

我們來回顧下核心內容。

在分布式系統中,平衡可用性和一致性是一個難題,因此在設計過程中,需要避免未經仔細思考而隨意增加副本的行為。

我們推薦設計者在設計系統一致性時能夠兼容最終一致,這樣可以極大提升系統在面臨故障時保持高可用的難度,在一致性和可用性上取得相對較好的平衡。但系統最終一致也不等于不一致,需要防止系統出現腦裂,并通過單調讀寫保證客戶端視角的一致性。

關于作者:李玥,美團基礎技術部高級技術專家,極客時間《后端存儲實戰課》《消息隊列高手課》等專欄作者。曾在浪潮集團、當當網、京東零售等公司任職。從事互聯網電商行業基礎架構領域的架構設計和研發工作多年,曾多次參與雙十一和618電商大促。專注于分布式存儲、云原生架構下的服務治理、分布式消息和實時計算等技術領域,致力于推進基礎架構技術的創新與開源。


責任編輯:武曉燕 來源: 大數據DT
相關推薦

2018-03-19 09:50:50

分布式存儲系統

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2024-08-13 15:42:19

2022-12-14 08:23:30

2022-10-19 12:22:53

并發扣款一致性

2021-02-04 06:30:26

Python編程語言

2021-02-05 08:00:48

哈希算法?機器

2021-02-02 12:40:50

哈希算法數據

2025-09-08 07:25:16

2019-08-30 12:46:10

并發扣款查詢SQL

2020-08-05 08:46:10

NFS網絡文件系統

2025-03-27 08:20:54

2023-05-26 07:34:50

RedisMySQL緩存

2022-02-17 21:04:27

數據庫MysqlRedis

2021-12-14 07:15:57

MySQLRedis數據

2022-09-15 10:37:46

MySQLRedis數據一致性

2023-06-25 09:44:00

一致性哈希數據庫

2021-09-30 09:20:30

分布式系統數據庫數據存儲

2017-09-21 10:59:36

分布式系統線性一致性測試

2021-07-28 08:39:25

分布式架構系統
點贊
收藏

51CTO技術棧公眾號

国产在线精品一区二区夜色| 国产成人精品免费视| 最新热久久免费视频| 91色视频在线观看| 国产亚洲精久久久久久无码77777| 中文字幕区一区二区三| 色天使久久综合网天天| 中文字幕综合在线观看| 天天操天天射天天舔| 视频一区二区三区入口| 欧美成人精品在线观看| 国产福利在线观看视频| 国产成人免费精品| 五月天欧美精品| 亚洲色图自拍| 手机看片国产1024| 精品一区二区三区视频 | 里番在线观看网站| 粉嫩蜜臀av国产精品网站| 国产精品第一第二| 日韩精品――中文字幕| 999久久久免费精品国产| 日韩电影大全免费观看2023年上| 特级黄色片视频| 久久99久久99精品免观看软件| 一区二区三区在线播放| 天天久久人人| 亚洲欧美日韩成人在线| 国产剧情一区二区| 国产精品丝袜高跟| www.国产com| 欧美日本国产| 久久精品国产2020观看福利| 久久美女免费视频| 色88888久久久久久影院| 日韩美女一区二区三区四区| 亚洲免费av一区| 91精品论坛| 香蕉加勒比综合久久| 男女激烈动态图| 一区二区三区视频在线观看视频| 久久综合一区二区| 久久久综合亚洲91久久98| www.天堂av.com| 久久福利资源站| 国产在线视频不卡| 国产美女www| 日韩精品久久理论片| 2020国产精品视频| 人人干人人干人人干| 激情久久久久| 欧美激情精品久久久久久免费印度 | 精品性高朝久久久久久久| 蜜臀av粉嫩av懂色av| 91九色鹿精品国产综合久久香蕉| 日韩一区二区免费高清| 成人性生交视频免费观看| 亚洲黑人在线| 337p亚洲精品色噜噜| 三日本三级少妇三级99| 日韩美香港a一级毛片| 欧美三级一区二区| 中文字幕国产免费| 日韩黄色三级在线观看| 欧美日韩视频在线观看一区二区三区| 亚洲成色www.777999| 欧亚一区二区| 欧美精品在线一区二区三区| 男人午夜视频在线观看| 日韩中文字幕在线一区| 亚洲成人网在线观看| 内射中出日韩无国产剧情| 欧美亚洲色图校园春色| 亚洲乱码国产乱码精品精| 国精产品一区二区三区| 91亚洲自偷观看高清| 久久亚洲国产精品成人av秋霞| 手机在线免费看毛片| 韩国亚洲精品| 热99久久精品| 在线视频免费观看一区| 国产精品一区二区三区四区| 好吊色欧美一区二区三区四区 | 91免费看`日韩一区二区| 免费亚洲一区二区| 四虎久久免费| 亚洲国产va精品久久久不卡综合| 欧美日韩黄色一级片| 怡红院成人在线| 91精品国产综合久久久久久久 | 6080亚洲理论片在线观看| 亚洲第一视频网站| 国产综合精品在线| 欧美激情aⅴ一区二区三区| 97精品久久久中文字幕免费| 这里只有精品免费视频| 国产成人8x视频一区二区| 蜜桃精品久久久久久久免费影院| 在线免费看黄| 亚洲国产成人精品视频| 亚洲一级免费观看| 精品精品国产三级a∨在线| 一区二区亚洲精品国产| 久久97人妻无码一区二区三区| 性欧美长视频| 97人人澡人人爽| av播放在线观看| 午夜精品久久久久久久蜜桃app| 蜜桃免费在线视频| 大型av综合网站| www.欧美三级电影.com| 日本三级小视频| 国产最新精品精品你懂的| 久久久福利视频| 天堂av资源在线观看| 欧美视频在线播放| 国产激情在线免费观看| 国产精品s色| 国产欧美日韩免费| 欧美熟妇另类久久久久久不卡 | 免费在线视频观看| 免费看精品久久片| 久久久久久久久久久久久久久久av| 国产日产一区二区三区| 在线观看日韩一区| 艳妇乳肉豪妇荡乳xxx| 亚洲激情中文| 国产美女91呻吟求| 精品久久久久一区二区三区| 性做久久久久久| 少妇搡bbbb搡bbb搡打电话| 欧美1级片网站| 国产精品草莓在线免费观看| 五月激情六月婷婷| 亚洲午夜日本在线观看| 欧美在线a视频| 91亚洲人成网污www| 国产噜噜噜噜久久久久久久久| 国产专区在线| 一本色道久久综合狠狠躁的推荐| 国产女人18毛片水真多18| 精品动漫3d一区二区三区免费| 亚洲一区亚洲二区| av网址在线免费观看| 7777精品伊人久久久大香线蕉超级流畅| 国产在线综合视频| 男人的天堂久久精品| 日本在线观看一区二区三区| 伊人久久精品一区二区三区| 亚洲精品天天看| 无码人妻精品一区二区三区不卡| 久久蜜桃av一区精品变态类天堂| 日韩久久一级片| 免费视频亚洲| 国产精品久久久久久久久久新婚| av在线免费一区| 欧美日韩国产高清一区| 很污很黄的网站| 国产酒店精品激情| av在线播放天堂| 麻豆精品少妇| 欧美专区在线视频| 都市激情在线视频| 欧美日韩国产在线播放网站| 老司机成人免费视频| 国产一区二区电影| 国产xxxx振车| 亚洲妇女av| 国产精品久久久久久婷婷天堂| 欧美成人hd| 日韩精品一区二区三区swag | 色哟哟精品一区| 摸摸摸bbb毛毛毛片| 久久精品国产精品亚洲精品 | 久久男女视频| 午夜久久资源| 疯狂欧洲av久久成人av电影| 欧美激情xxxx| 玖玖综合伊人| 制服丝袜中文字幕亚洲| 国产成人在线观看网站| 中文字幕免费一区| 九色91porny| 国产欧美成人| 中文精品视频一区二区在线观看| 在线日韩成人| 国产成人福利视频| 超碰最新在线| 亚洲跨种族黑人xxx| 亚洲天堂一二三| 亚洲一二三四在线观看| 一级黄色片大全| 日本中文字幕在线观看| 黄色一区二区三区四区| 久久www免费人成精品| 成人a在线观看高清电影| 欧美成人黄色小视频| 亚洲欧美色视频| 51精品国自产在线| 成人精品免费在线观看| 17c精品麻豆一区二区免费| 成人在线电影网站| 久久99国产精品尤物| 久久久久久久久久网| 91久久夜色精品国产按摩| 精品在线视频一区二区三区| 欧美videos粗暴| 69av视频在线播放| 在线黄色网页| 一区二区三区久久精品| 六月丁香色婷婷| 欧美精品色一区二区三区| 手机看片久久久| 亚洲综合色在线| 影音先锋制服丝袜| 99精品在线免费| 一级黄色片国产| 久久久噜噜噜| 成人在线观看你懂的| 综合久久精品| 亚洲一区二区在线看| 天天做夜夜做人人爱精品 | 在线观看黄色网| 激情亚洲一区二区三区四区 | 欧美性猛交丰臀xxxxx网站| 黄色片子在线观看| 国产精品美女久久久久久久网站| 精品一区二区视频在线观看| 国产一本一道久久香蕉| 美女在线视频一区二区| 久久成人国产| 黄色一级视频在线播放| 欧美另类亚洲| 国产四区在线观看| 日韩成人影院| 日韩视频在线播放| 综合国产视频| 快播亚洲色图| 亚洲日产av中文字幕| 国产在线一区二区三区欧美| 97色成人综合网站| 国产99视频精品免费视频36| 电影一区中文字幕| 亚洲影院色无极综合| 成年永久一区二区三区免费视频| 国产精品日韩在线| 久久人体av| 国产精品视频一区二区高潮| yw.尤物在线精品视频| 国产ts一区二区| 成人日韩精品| 国产精品一区二区久久| 日韩在线电影| 91人成网站www| 日本亚洲视频| 国产精品一 二 三| 久久97精品| 久久涩涩网站| 自拍偷拍精品| 涩涩涩999| 97久久夜色精品国产| 国产女主播av| 国产一区美女| 日韩在线综合网| 丝袜国产日韩另类美女| 我要看一级黄色大片| 久久福利资源站| 欧洲成人午夜精品无码区久久| 丰满亚洲少妇av| 国产精品一区二区人妻喷水| 91视视频在线观看入口直接观看www| 免费看黄色aaaaaa 片| 久久久精品国产免费观看同学| 成年人在线免费看片| 日韩一区在线播放| 久久久无码一区二区三区| 午夜精品久久久久久久| 欧美brazzers| 91精品一区二区三区久久久久久 | 亚洲精品一二区| a√资源在线| 欧美福利视频在线| 原纱央莉成人av片| 91精品久久久久久久久久久| 亚洲精品在线播放| 欧美人与物videos另类| 91成人国产| 国产一区二区三区精彩视频| 久久精品国产一区二区| 中国免费黄色片| 国产亚洲自拍一区| 久草网在线观看| 欧洲亚洲精品在线| 成 人 免费 黄 色| 亚洲全黄一级网站| 污污的网站在线看| 国产精品99久久久久久久久久久久| www.成人在线.com| 欧美高清性xxxxhdvideosex| 中文字幕日韩欧美精品高清在线| 国内自拍在线观看| 国产一区999| 白白色免费视频| 一区二区三区精品久久久| 国产免费www| 欧美精品一区二区在线观看| 最新国产在线观看| 韩国三级日本三级少妇99| 自拍偷拍亚洲| 日韩欧美精品一区二区| 欧美三区在线| 一级做a免费视频| 久久综合五月天婷婷伊人| 欧美爱爱小视频| 欧美日韩综合在线| 亚洲 另类 春色 国产| 久久伊人精品天天| 日韩av电影资源网| 精品无人区一区二区三区| 综合天堂av久久久久久久| av网站在线不卡| 国产日韩欧美a| 国产超碰人人爽人人做人人爱| 日韩欧美另类在线| 日本三级在线视频| 国产精品热视频| 综合国产视频| 日本精品一区在线观看| 成人国产一区二区三区精品| 成人免费黄色小视频| 欧美日韩视频在线第一区 | 亚洲精品影片| 日韩不卡一二区| 狠狠久久亚洲欧美| 天堂av免费在线| 欧美情侣在线播放| 99中文字幕一区| 国产精品麻豆va在线播放| 亚洲精品一级二级三级| www黄色av| 91偷拍与自偷拍精品| 青青草成人av| 日韩国产高清视频在线| 国产拍在线视频| 国产精品美女xx| 亚洲韩日在线| 中文字幕天堂av| 午夜天堂影视香蕉久久| 午夜av免费在线观看| 午夜精品久久久久久99热软件| 风间由美性色一区二区三区四区 | 蜜桃av一区二区| 在线观看免费小视频| 在线看日本不卡| 午夜激情视频在线| 国产精品美乳一区二区免费| 久久裸体网站| 国产欧美激情视频| 亚洲人成网站在线| 午夜精品久久久久久久爽| 久久欧美在线电影| 免费福利视频一区| 国产91在线视频观看| 久久久久久久综合日本| 中文字幕一区二区三区四区免费看 | 国产精品狠色婷| 成人3d动漫在线观看| 波多结衣在线观看| 亚洲乱码国产乱码精品精98午夜 | 国产成人自拍视频在线| 亚洲男女性事视频| 久久青草免费| 日韩精品一区二区免费| 91亚洲精品久久久蜜桃网站 | 日日夜夜精品视频天天综合网| 男人天堂资源网| 欧美videos大乳护士334| 蜜桃av在线播放| 亚洲 国产 欧美一区| 国产精品一二三四五| 国产在线成人精品午夜| 亚洲人成绝费网站色www| 欧美在线se| 欧美一区二区激情| 久久这里只有精品6| 一级全黄裸体免费视频| 97在线日本国产| 欧美成人milf| 丰满岳乱妇一区二区| 欧美日韩黄色影视| 波多野结衣视频一区二区| 日本一区二区三区四区高清视频 | 色噜噜夜夜夜综合网| 黄色网页在线播放| 美日韩精品免费| 国产乱人伦偷精品视频不卡| 成年人视频在线免费看| 久久久av一区| 精品国产美女| 日韩女优在线视频|