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

終于有人把“分布式事務”說清楚了!

開發 架構 開發工具 分布式
一個復雜的系統往往都是從一個小而簡的系統發展衍化而來,為了滿足日益增長的業務需求,不斷的增加系統的復雜度,從單體架構逐步發展為分布式架構,而分布式系統架構的設計主要關注:高性能,高可用,高拓展。

 一個復雜的系統往往都是從一個小而簡的系統發展衍化而來,為了滿足日益增長的業務需求,不斷的增加系統的復雜度,從單體架構逐步發展為分布式架構,而分布式系統架構的設計主要關注:高性能,高可用,高拓展。

[[279637]] 

圖片來自 Pexels

分布式事務

高可用是指系統無中斷的執行功能的能力,代表了系統的可用程度,是進行系統設計時必須要遵守的準則之一。

而高可用的實現方案,無外乎就是冗余,就存儲的高可用而言,問題不在于如何進行數據備份,而在于如何規避數據不一致對業務造成的影響。

對于分布式系統而言,要保證分布式系統中的數據一致性就需要一種方案,可以保證數據在子系統中始終保持一致,避免業務出現問題。

這種實現方案就叫做分布式事務,要么一起成功,要么一起失敗,必須是一個整體性的事務。

理論基礎

在講解具體方案之前,有必要了解一下分布式中數據設計需要遵循的理論基礎,CAP 理論和 BASE 理論,為后面的實踐鋪平道路。

CAP 理論

CAP,Consistency Availability Partition tolerance 的簡寫:

  • Consistency:一致性,對某個客戶端來說,讀操作能夠返回最新的寫操作結果。
  • Availability:可用性,非故障節點在合理的時間內返回合理的響應。
  • Partition tolerance:分區容錯性,當出現網絡分區后,系統能夠繼續提供服務,你知道什么是網絡分區嗎?

因為分布式系統中系統肯定部署在多臺機器上,無法保證網絡做到 100% 的可靠,所以網絡分區一定存在,即 P 一定存在。

在出現網絡分區后,就出現了可用性和一致性的問題,我們必須要在這兩者之間進行取舍,因此就有了兩種架構:

  • CP 架構
  • AP 架構

①CP 架構

 

當網絡分區出現后,為了保證一致性,就必須拒接請求,否則無法保證一致性:

  • 當沒有出網絡分區時,系統 A 與系統 B 的數據一致,X=1。
  • 將系統 A 的 X 修改為 2,X=2。
  • 當出現網絡分區后,系統 A 與系統 B 之間的數據同步數據失敗,系統 B 的 X=1。
  • 當客戶端請求系統 B 時,為了保證一致性,此時系統 B 應拒絕服務請求,返回錯誤碼或錯誤信息。

上面這種方式就違背了可用性的要求,只滿足一致性和分區容錯,即 CP,CAP 理論是忽略網絡延遲,從系統 A 同步數據到系統 B 的網絡延遲是忽略的。

CP 架構保證了客戶端在獲取數據時一定是最近的寫操作,或者獲取到異常信息,絕不會出現數據不一致的情況。

②AP 架構

當網絡分區出現后,為了保證可用性,系統 B 可以返回舊值,保證系統的可用性: 

  • 當沒有出網絡分區時,系統 A 與系統 B 的數據一致,X=1。
  • 將系統 A 的 X 修改為 2,X=2。
  • 當出現網絡分區后,系統 A 與系統 B 之間的數據同步數據失敗,系統 B 的 X=1。
  • 當客戶端請求系統 B 時,為了保證可用性,此時系統 B 應返回舊值,X=1。

上面這種方式就違背了一致性的要求,只滿足可用性和分區容錯,即 AP,AP 架構保證了客戶端在獲取數據時無論返回的是最新值還是舊值,系統一定是可用的。

CAP 理論關注粒度是數據,而不是整體系統設計的策略。

BASE 理論

BASE 理論指的是基本可用 Basically Available,軟狀態 Soft State,最終一致性 Eventual Consistency,核心思想是即便無法做到強一致性,但應該采用適合的方式保證最終一致性。

BASE,Basically Available Soft State Eventual Consistency 的簡寫:

  • BA:Basically Available 基本可用,分布式系統在出現故障的時候,允許損失部分可用性,即保證核心可用。
  • S:Soft State 軟狀態,允許系統存在中間狀態,而該中間狀態不會影響系統整體可用性。
  • E:Consistency 最終一致性,系統中的所有數據副本經過一定時間后,最終能夠達到一致的狀態。
  • BASE 理論本質上是對 CAP 理論的延伸,是對 CAP 中 AP 方案的一個補充。

分布式事務協議

X/Open XA 協議

XA 是一個分布式事務協議,由 Tuxedo 提出。XA 規范主要定義了(全局)事務管理器(Transaction Manager)和(局部)資源管理器(Resource Manager)之間的接口。

XA 接口是雙向的系統接口,在事務管理器(Transaction Manager)以及一個或多個資源管理器(Resource Manager)之間形成通信橋梁。

 

XA 協議采用兩階段提交方式來管理分布式事務。XA 接口提供資源管理器與事務管理器之間進行通信的標準接口。

2PC:二階段提交協議

二階段提交(Two-phase Commit),是指,為了使基于分布式系統架構下的所有節點在進行事務提交時保持一致性而設計的一種算法(Algorithm)。通常,二階段提交也被稱為是一種協議(Protocol)。

在分布式系統中,每個節點雖然可以知曉自己的操作是成功或者失敗,卻無法知道其他節點的操作是成功或失敗。

當一個事務跨越多個節點時,為了保持事務的 ACID 特性,需要引入一個作為協調者的組件來統一掌控所有節點(稱作參與者)的操作結果并最終指示這些節點是否要把操作結果進行真正的提交(比如將更新后的數據寫入磁盤等等)。

因此,二階段提交的算法思路可以概括為:參與者將操作成敗通知協調者,再由協調者根據所有參與者的反饋情報決定各參與者是否要提交操作還是中止操作。

二階段提交算法的成立基于以下假設:

  • 該分布式系統中,存在一個節點作為協調者(Coordinator),其他節點作為參與者(Cohorts)。且節點之間可以進行網絡通信。
  • 所有節點都采用預寫式日志,且日志被寫入后即被保持在可靠的存儲設備上,即使節點損壞不會導致日志數據的消失。
  • 所有節點不會永久性損壞,即使損壞后仍然可以恢復。

 

二階段提交分為兩階段:

  • 投票階段
  • 提交階段

投票階段 Prepares: 

  • 協調者向所有參與者詢問是否可以執行提交操作,并開始等待各參與者的響應。
  • 參與者執行事務操作,如果執行成功就返回 Yes 響應,如果執行失敗就返回 No 響應。
  • 如果協調者接受參與者響應超時,也會認為執行事務操作失敗。

 

提交階段 Commit:

  • 如果第一階段匯總所有參與者都返回 Yes 響應,協調者向所有參與者發出提交請求,所有參與者提交事務。
  • 如果第一階段中有一個或者多個參與者返回 No 響應,協調者向所有參與者發出回滾請求,所有參與者進行回滾操作。

二階段提交優點:盡量保證了數據的強一致,但不是 100% 一致。

二階段提交缺點:

  • 單點故障,由于協調者的重要性,一旦協調者發生故障,參與者會一直阻塞,尤其是在第二階段,協調者發生故障,那么所有的參與者都處于鎖定事務資源的狀態中,而無法繼續完成事務操作。
  • 同步阻塞,由于所有節點在執行操作時都是同步阻塞的,當參與者占有公共資源時,其他第三方節點訪問公共資源不得不處于阻塞狀態。
  • 數據不一致,在第二階段中,當協調者向參與者發送提交事務請求之后,發生了局部網絡異?;蛘咴诎l送提交事務請求過程中協調者發生了故障,這會導致只有一部分參與者接收到了提交事務請求。

而在這部分參與者接到提交事務請求之后就會執行提交事務操作。但是其他部分未接收到提交事務請求的參與者則無法提交事務。從而導致分布式系統中的數據不一致。

二階段提交的問題:如果協調者在第二階段發送提交請求之后掛掉,而唯一接受到這條消息的參與者執行之后也掛掉了,即使協調者通過選舉協議產生了新的協調者并通知其他參與者進行提交或回滾操作的話,都可能會與這個已經執行的參與者執行的操作不一樣。

當這個掛掉的參與者恢復之后,就會產生數據不一致的問題。

3PC:三階段提交協議

三階段提交(Three-phase commit),是為解決兩階段提交協議的缺點而設計的。與兩階段提交不同的是,三階段提交是“非阻塞”協議。

三階段提交在兩階段提交的第一階段與第二階段之間插入了一個準備階段,使得原先在兩階段提交中,參與者在投票之后,由于協調者發生崩潰或錯誤,而導致參與者處于無法知曉是否提交或者中止的“不確定狀態”所產生的可能相當長的延時的問題得以解決。

三階段提交的三個階段:

  • CanCommit
  • PreCommit
  • DoCommit
  •  

①詢問階段:CanCommit

協調者向參與者發送 Commit 請求,參與者如果可以提交就返回 Yes 響應,否則返回 No 響應。

②準備階段:PreCommit

協調者根據參與者在詢問階段的響應判斷是否執行事務還是中斷事務:

  • 如果所有參與者都返回 Yes,則執行事務。
  • 如果參與者有一個或多個參與者返回 No 或者超時,則中斷事務。

參與者執行完操作之后返回 ACK 響應,同時開始等待最終指令。

③提交階段:DoCommit

協調者根據參與者在準備階段的響應判斷是否執行事務還是中斷事務:

  • 如果所有參與者都返回正確的 ACK 響應,則提交事務。
  • 如果參與者有一個或多個參與者收到錯誤的 ACK 響應或者超時,則中斷事務。
  • 如果參與者無法及時接收到來自協調者的提交或者中斷事務請求時,會在等待超時之后,會繼續進行事務提交。

協調者收到所有參與者的 ACK 響應,完成事務。

解決二階段提交時的問題:在三階段提交中,如果在第三階段協調者發送提交請求之后掛掉,并且唯一的接受的參與者執行提交操作之后也掛掉了,這時協調者通過選舉協議產生了新的協調者。

在二階段提交時存在的問題就是新的協調者不確定已經執行過事務的參與者是執行的提交事務還是中斷事務。

但是在三階段提交時,肯定得到了第二階段的再次確認,那么第二階段必然是已經正確的執行了事務操作,只等待提交事務了。

所以新的協調者可以從第二階段中分析出應該執行的操作,進行提交或者中斷事務操作,這樣即使掛掉的參與者恢復過來,數據也是一致的。

所以,三階段提交解決了二階段提交中存在的由于協調者和參與者同時掛掉可能導致的數據一致性問題和單點故障問題,并減少阻塞。

因為一旦參與者無法及時收到來自協調者的信息之后,他會默認執行提交事務,而不會一直持有事務資源并處于阻塞狀態。

三階段提交的問題:在提交階段如果發送的是中斷事務請求,但是由于網絡問題,導致部分參與者沒有接到請求。

那么參與者會在等待超時之后執行提交事務操作,這樣這些由于網絡問題導致提交事務的參與者的數據就與接受到中斷事務請求的參與者存在數據不一致的問題。

所以無論是 2PC 還是 3PC 都不能保證分布式系統中的數據 100% 一致。

解決方案

舉個栗子:在電商網站中,用戶對商品進行下單,需要在訂單表中創建一條訂單數據,同時需要在庫存表中修改當前商品的剩余庫存數量。

兩步操作一個添加,一個修改,我們一定要保證這兩步操作一定同時操作成功或失敗,否則業務就會出現問題。

建立時:業務量不大,用戶少,系統只是一個單體架構,訂單表與庫存表都在一個數據庫中,這時可以使用 MySQL 的本地事務保證數據一致性。 

 

發展期:業務發展迅速,用戶量變多,單數據已經出現了性能瓶頸,按照業務緯度進行分庫,分為訂單庫和庫存庫,由于跨庫跨機器,MySQL 的本地事務不能再保證訂單庫和庫存庫的數據一致性。

 

成熟期:業務拓展,單體架構已經滿足不了需求,進而衍化成了分布式系統,這時的訂單和庫存已經拆分為了兩個子系統提供服務,子系統間使用 RPC 進行通信。

但是無論系統發展成什么樣,我們都要保證業務不出問題,保證訂單和庫存的數據一致,這時候要思考下在服務之間我們應如何保證數據一致。

 

強一致性分布式事務

單體架構多數據源,在業務開發中,肯定是先執行對訂單庫的操作,但是不提交事務,再執行對庫存庫的操作,也不提交事務,如果兩個操作都成功,在一起提交事務,如果有一個操作失敗,則兩個都進行回滾。

基于 2PC/XA 協議實現的 JTA:我們已經知道了 2PC 和 XA 協議的原理,而 JTA 是 Java 規范,是 XA 在 Java 上的實現。

JTA(Java Transaction Manager):

  • Transaction Manager:常用方法,可以開啟,回滾,獲取事務。begin(),rollback()...
  • XAResouce:資源管理,通過 Session 來進行事務管理,commit(xid)...
  • XID : 每一個事務都分配一個特定的 XID。

JTA 主要的原理是二階段提交,當整個業務完成了之后只是第一階段提交,在第二階段提交之前會檢查其他所有事務是否已經提交。

如果前面出現了錯誤或是沒有提交,那么第二階段就不會提交,而是直接回滾,這樣所有的事務都會做回滾操作?;?JTA 這種方案實現分布式事務的強一致性。

JTA 的特點:

  • 基于兩階段提交,有可能會出現數據不一致的情況
  • 事務時間過長,阻塞
  • 性能低,吞吐量低

實現可以使用基于 JTA 實現的 Jar 包 Atomikos 例子可以自己百度一下。

正常架構設計中是否應該出現這種跨庫的操作,我覺得是不應該的,如果按業務拆分將數據源進行分庫,我們應該同時將服務也拆分出去才合適,應遵循一個系統只操作一個數據源(主從沒關系),避免后續可能會出現的多個系統調用一個數據源的情況。

最終一致性分布式事務方案

JTA 方案適用于單體架構多數據源時實現分布式事務,但對于微服務間的分布式事務就無能為力了,我們需要使用其他的方案實現分布式事務。

①本地消息表

本地消息表的核心思想是將分布式事務拆分成本地事務進行處理。

以本文中例子,在訂單系統新增一條消息表,將新增訂單和新增消息放到一個事務里完成,然后通過輪詢的方式去查詢消息表,將消息推送到 MQ,庫存系統去消費 MQ。

執行流程: 

  • 訂單系統,添加一條訂單和一條消息,在一個事務里提交。
  • 訂單系統,使用定時任務輪詢查詢狀態為未同步的消息表,發送到 MQ,如果發送失敗,就重試發送。
  • 庫存系統,接收 MQ 消息,修改庫存表,需要保證冪等操作。
  • 如果修改成功,調用 RPC 接口修改訂單系統消息表的狀態為已完成或者直接刪除這條消息。
  • 如果修改失敗,可以不做處理,等待重試。

訂單系統中的消息有可能由于業務問題會一直重復發送,所以為了避免這種情況可以記錄一下發送次數,當達到次數限制之后報警,人工接入處理;庫存系統需要保證冪等,避免同一條消息被多次消費造成數據一致。

本地消息表這種方案實現了最終一致性,需要在業務系統里增加消息表,業務邏輯中多一次插入的 DB 操作,所以性能會有損耗,而且最終一致性的間隔主要由定時任務的間隔時間決定。

②MQ 消息事務

消息事務的原理是將兩個事務通過消息中間件進行異步解耦。

訂單系統執行自己的本地事務,并發送 MQ 消息,庫存系統接收消息,執行自己的本地事務。

乍一看,好像跟本地消息表的實現方案類似,只是省去了對本地消息表的操作和輪詢發送 MQ 的操作,但實際上兩種方案的實現是不一樣的。

消息事務一定要保證業務操作與消息發送的一致性,如果業務操作成功,這條消息也一定投遞成功。

 

消息事務依賴于消息中間件的事務消息,基于消息中間件的二階段提交實現的,RocketMQ 就支持事務消息。

執行流程:

  • 發送 Prepare 消息到消息中間件。
  • 發送成功后,執行本地事務。
  • 如果事務執行成功,則 Commit,消息中間件將消息下發至消費端。
  • 如果事務執行失敗,則回滾,消息中間件將這條 Prepare 消息刪除。
  • 消費端接收到消息進行消費,如果消費失敗,則不斷重試。

這種方案也是實現了最終一致性,對比本地消息表實現方案,不需要再建消息表,不再依賴本地數據庫事務了,所以這種方案更適用于高并發的場景。

③最大努力通知

最大努力通知相比前兩種方案實現簡單,適用于一些最終一致性要求較低的業務,比如支付通知,短信通知這種業務。

以支付通知為例,業務系統調用支付平臺進行支付,支付平臺進行支付,進行操作支付之后支付平臺會盡量去通知業務系統支付操作是否成功,但是會有一個最大通知次數。

如果超過這個次數后還是通知失敗,就不再通知,業務系統自行調用支付平臺提供一個查詢接口,供業務系統進行查詢支付操作是否成功。

 

執行流程:

  • 業務系統調用支付平臺支付接口, 并在本地進行記錄,支付狀態為支付中。
  • 支付平臺進行支付操作之后,無論成功還是失敗,都需要給業務系統一個結果通知。
  • 如果通知一直失敗則根據重試規則進行重試,達到最大通知次數后,不再通知。
  • 支付平臺提供查詢訂單支付操作結果接口。
  • 業務系統根據一定業務規則去支付平臺查詢支付結果。

這種方案也是實現了最終一致性。

④補償事務 TCC

TCC,Try-Confirm-Cancel 的簡稱,針對每個操作,都需要有一個其對應的確認和取消操作。

當操作成功時調用確認操作,當操作失敗時調用取消操作,類似于二階段提交,只不過是這里的提交和回滾是針對業務上的,所以基于 TCC 實現的分布式事務也可以看做是對業務的一種補償機制。

TCC 的三階段:

  • Try 階段:對業務系統做檢測及資源預留。
  • Confirm 階段:對業務系統做確認提交,Try 階段執行成功并開始執行 Confirm 階段時,默認 Confirm 階段是不會出錯的。即:只要 Try 成功,Confirm 一定成功。
  • Cancel 階段:在業務執行錯誤,需要回滾的狀態下執行的業務取消,預留資源釋放。

在 Try 階段,是對業務系統進行檢查及資源預覽,比如訂單和存儲操作,需要檢查庫存剩余數量是否夠用,并進行預留,預留操作的話就是新建一個可用庫存數量字段,Try 階段操作是對這個可用庫存數量進行操作。

比如下一個訂單減一個庫存:

 

執行流程:

  • Try 階段:訂單系統將當前訂單狀態設置為支付中,庫存系統校驗當前剩余庫存數量是否大于 1,然后將可用庫存數量設置為庫存剩余數量 -1。
  • 如果 Try 階段執行成功,執行 Confirm 階段,將訂單狀態修改為支付成功,庫存剩余數量修改為可用庫存數量。
  • 如果 Try 階段執行失敗,執行 Cancel 階段,將訂單狀態修改為支付失敗,可用庫存數量修改為庫存剩余數量。

基于 TCC 實現分布式事務,代碼邏輯相對復雜一些,需要將原來的接口的邏輯拆分為:Try,Confirm ,Cancel 三個接口的邏輯。

基于 TCC 實現的分布式事務框架:

  • ByteTCC,github.com/liuyangming
  • tcc-transaction:github.com/changmingxi

讀完之后應該對分布式事務有了一個大致的了解,在實際生產中我們要盡量避免使用分布式事務,能轉化為本地事務就用本地事務,如果必須使用分布式事務,還需要從業務角度多思考使用哪種方案更適合,總之行動之前多思考。

 

責任編輯:武曉燕 來源: chenmingyu.top
相關推薦

2020-03-02 15:17:37

云原生CNCF容器

2019-07-04 09:13:04

中臺百度團隊

2021-02-25 08:21:38

高可用風險故障

2020-10-29 10:35:53

Nginx架構服務器

2018-07-26 09:06:29

Java內存模型

2020-01-13 15:34:10

超融合邊緣計算架構

2018-11-23 09:25:00

TCC分布式事務

2022-08-03 20:18:58

機器學習算法分析數據

2021-10-20 18:49:29

架構分布式系統

2022-11-11 15:49:41

MySQL隔離

2020-07-29 09:21:34

Docker集群部署隔離環境

2024-04-01 10:09:23

AutowiredSpring容器

2025-06-23 08:20:00

PaimonFluss大數據

2021-04-10 10:37:04

OSITCP互聯網

2025-02-19 10:49:24

2021-07-05 22:22:24

協議MQTT

2019-02-21 16:24:28

5G火車站設備

2019-07-07 08:18:10

MySQL索引數據庫

2021-06-13 12:03:46

SaaS軟件即服務

2022-03-27 20:32:28

Knative容器事件模型
點贊
收藏

51CTO技術棧公眾號

一区在线播放| 偷拍中文亚洲欧美动漫| 国产.精品.日韩.另类.中文.在线.播放| 亚洲人成伊人成综合网小说| 国产精品美女呻吟| 欧美成人激情视频免费观看| 日韩精品一区二区三区色偷偷| 精品国产精品自拍| 欧美激情第六页| 国产精品久久久久久久免费| 欧美在线1区| 亚洲欧美中文日韩v在线观看| 青青青在线观看视频| 日韩在线视频观看免费| 日日夜夜精品免费视频| 九九九久久久久久| 性欧美一区二区| 久久久久久久久成人| 精品日韩美女的视频高清| 一区二区三区不卡在线| 四虎影院在线播放| 国产一区二区免费在线| 日本欧美国产在线| 国产在线欧美在线| 99久久精品网| 国产一区二区日韩精品欧美精品| 亚欧无线一线二线三线区别| 秋霞午夜在线观看| 97精品国产97久久久久久久久久久久| 欧美激情国产精品| 亚洲a∨无码无在线观看| 少妇精品导航| 精品久久久久久久久久久久久久久久久 | av小说在线观看| 奇米一区二区| 欧美精品丝袜中出| 嫩草av久久伊人妇女超级a| 欧美色图天堂| 亚洲精品欧美二区三区中文字幕| 国产精品中文字幕在线| 97在线免费视频| www,av在线| 激情亚洲影院在线观看| 精品色蜜蜜精品视频在线观看| 高清av免费一区中文字幕| 黄色av网站免费观看| 亚洲毛片av| 久久人人97超碰精品888 | 91蝌蚪porny| 亚洲综合精品一区二区| 国产精品女同一区二区| 美女一区二区三区在线观看| 国产精品高清在线观看| 4438国产精品一区二区| 国产精品最新自拍| 日本精品久久中文字幕佐佐木 | 国产精品免费视频网站| 欧美日韩视频在线一区二区观看视频 | 色一情一乱一乱一区91av| 国产呦萝稀缺另类资源| 91精品视频在线看| 国产视频在线观看免费| 国产乱码一区二区三区| dy888夜精品国产专区| av免费观看在线| 国产成人综合在线播放| 99久热re在线精品996热视频| 天堂网中文字幕| 久久精品人人| 国产精品久久久91| 亚洲中文字幕在线一区| 韩国v欧美v亚洲v日本v| 99理论电影网| 天天射天天色天天干| 91麻豆精品在线观看| 热舞福利精品大尺度视频| 国产精品二线| **网站欧美大片在线观看| 日本一区二区免费高清视频| 在线xxxx| 福利视频第一区| 簧片在线免费看| av日韩久久| 日韩欧美精品在线| 深爱五月激情网| 久久人体视频| 国内精久久久久久久久久人| 日韩一级在线视频| 国产尤物一区二区| 免费观看成人高| 日本暖暖在线视频| 亚洲成人tv网| 欧美大尺度做爰床戏| 亚洲国产精品免费视频| 亚洲精品91美女久久久久久久| 在线视频一二区| 给我免费播放日韩视频| 一区二区欧美激情| 免费一级黄色大片| 日韩一区精品字幕| 国产高清精品一区| 国产一区二区影视| 亚洲综合激情网| 我要看一级黄色大片| 99精品国产高清一区二区麻豆| 欧美一区二区福利视频| 欧美熟妇精品黑人巨大一二三区| 超碰97成人| 一区二区欧美日韩视频| 国产精品日日夜夜| 精品一区二区三区影院在线午夜| 国产精品免费一区豆花| 国产成人av免费看| 亚洲国产成人一区二区三区| 777久久精品一区二区三区无码| 午夜免费视频在线国产| 午夜精品久久久久久久| 日韩a一级欧美一级| 精品久久电影| 97av视频在线| 亚洲成a人片在线| 中文字幕中文字幕一区| 99精品人妻少妇一区二区| 欧美日韩黄网站| 中文字幕免费精品一区| 51国产偷自视频区视频| 大桥未久av一区二区三区中文| 成人在线免费观看一区| 国模吧精品人体gogo| 精品毛片网大全| 久久久国产精品久久久| 久久久久亚洲| 国产欧美一区二区三区在线| 蜜桃免费在线| 欧美日韩久久久久| 美女伦理水蜜桃4| 欧美成熟视频| 91美女片黄在线观| 老司机精品视频在线观看6| 欧美色网站导航| 丰满少妇高潮一区二区| 中文在线一区| 久久青青草原一区二区| 老牛影视精品| 精品无人国产偷自产在线| 国产无遮挡又黄又爽又色| 国产精品99久久久久久久女警 | 亚洲AV无码乱码国产精品牛牛| 丰满少妇久久久久久久| 精品91一区二区三区| 国产欧美在线观看免费| 中文字幕精品一区二区精品| 国产成人精品一区二区色戒| 欧美激情资源网| 日韩欧美国产片| 91久久夜色精品国产按摩| 国产欧美日韩中文| 欧美jizzhd69巨大| 欧美一区二区精品| 麻豆疯狂做受xxxx高潮视频| 国产成人丝袜美腿| 一本久道高清无码视频| 久久影院资源站| 日韩av电影院| 国产美女性感在线观看懂色av| 亚洲精品久久7777| 污免费在线观看| 好吊视频一区二区三区四区| 国产不卡一区二区在线观看| 97在线视频免费观看完整版| 欧美成人性福生活免费看| 国产午夜视频在线播放| 91美女片黄在线观看91美女| 天堂社区在线视频| 亚洲精品中文字幕乱码| 国产伦精品一区二区三区免| 蜜桃视频m3u8在线观看| 亚洲午夜色婷婷在线| 91精品国产乱码久久久| 亚洲国产一区二区视频| 国精品无码人妻一区二区三区| 国内自拍视频一区二区三区| 国产一区二区三区无遮挡| 欧美一级大片| 久久国产精品久久久久| 蜜臀久久99精品久久久| 一本色道久久加勒比精品| av最新在线观看| av亚洲精华国产精华| 宅男噜噜噜66国产免费观看| 亚洲色图二区| 欧美午夜免费| 久久爱www.| 国产97在线|亚洲| 最新国产露脸在线观看| 亚洲激情在线观看| 国产一区二区三区成人| 午夜精品福利久久久| 精品伦精品一区二区三区视频密桃| 日本一不卡视频| 亚洲三级在线免费| 妞干网在线观看视频| 麻豆成人入口| 成人网在线免费看| 在线播放高清视频www| 久久久精品亚洲| 国产视频精选在线| 精品国产免费人成在线观看| 亚洲精品一区二三区| 亚洲mv大片欧洲mv大片精品| 国产三级在线观看完整版| 成人中文字幕在线| xxxx在线免费观看| 首页综合国产亚洲丝袜| 国产av熟女一区二区三区| 成人精品视频| 欧美xxxx黑人又粗又长密月| 日韩三级不卡| 国产有码在线一区二区视频| 玖玖在线播放| 久久久久久久久久国产精品| 免费黄色在线看| 亚洲欧美中文字幕在线一区| 国精产品乱码一区一区三区四区| 一二三区精品福利视频| 成人小视频免费看| 2021国产精品久久精品| 成年女人免费视频| 国产精品亚洲一区二区三区在线| 日韩精品久久一区二区| 欧美顶级大胆免费视频| 免费一区二区三区在在线视频| se01亚洲视频| 欧美一区亚洲一区| 免费av不卡在线观看| 久久婷婷国产麻豆91天堂| 搞黄视频在线观看| 亚洲三级免费看| 免费人成黄页在线观看忧物| 亚洲国产精品久久久久| 亚洲成人中文字幕在线| 欧美一级午夜免费电影| 国产精品久久久久毛片| 精品视频一区 二区 三区| 欧美特级黄色片| 色婷婷精品久久二区二区蜜臀av| 亚洲 欧美 变态 另类 综合| 日本一区二区三区在线不卡| 中文字幕国产专区| 久久久国产精品不卡| 丰满少妇在线观看资源站| 99久久精品免费精品国产| 中国极品少妇videossexhd| 不卡电影免费在线播放一区| 久久久老熟女一区二区三区91| 免费在线欧美视频| 性生活免费在线观看| 美日韩一区二区三区| 亚洲精品20p| 国产精品亚洲午夜一区二区三区| 成年人视频观看| 在线亚洲一区| 国产精品亚洲二区在线观看| 模特精品在线| 男人搞女人网站| 国产一二三精品| 日本人添下边视频免费| av爱爱亚洲一区| 亚洲成人网在线播放| 中文字幕av一区二区三区高| 顶级黑人搡bbw搡bbbb搡| 亚洲免费在线观看视频| 久久精品www人人爽人人| 红桃av永久久久| 亚洲精品毛片一区二区三区| 91麻豆精品91久久久久同性| 亚洲精品一区二区三区不卡| 日韩精品在线视频美女| www在线播放| 欧美激情欧美激情| 日韩在线影院| 成人免费网站在线看| 国产一区二区三区亚洲| 欧洲精品国产| 欧美成人69| 91淫黄看大片| 国产aⅴ综合色| 成人激情五月天| 亚洲蜜桃精久久久久久久| 久久久国产精品成人免费| 欧美日韩国产免费一区二区 | 51蜜桃传媒精品一区二区| 91成人噜噜噜在线播放| 欧美在线视频一区二区三区| 天天综合网网欲色| 18岁网站在线观看| 黄色日韩网站视频| 亚洲精品视频大全| 综合av第一页| 91video| 日韩一级高清毛片| 黄色的视频在线免费观看| 久久中文字幕一区| 欧洲亚洲两性| 99中文视频在线| 日韩大片在线播放| 男人天堂1024| 国产成人aaa| 最新日韩免费视频| 欧美性生交大片免费| 性猛交xxxx乱大交孕妇印度| 伊人伊成久久人综合网小说| 欧美78videosex性欧美| 国产欧美精品在线播放| 小嫩嫩12欧美| 一卡二卡三卡视频| 国产精品综合久久| 亚洲不卡的av| 91国模大尺度私拍在线视频| 狠狠人妻久久久久久综合麻豆| 精品国产露脸精彩对白| 福利在线午夜| 国模吧一区二区| 亚洲开心激情| 大桥未久一区二区三区| 麻豆国产精品777777在线| 日本高清www| 精品色蜜蜜精品视频在线观看| 亚洲AV无码成人精品区东京热| 91黄色免费版| 日本a一级在线免费播放| 久久久欧美精品| 一区二区三区视频播放| 国产精品专区一| 亚洲制服一区| 亚洲影视中文字幕| 国产suv精品一区二区四区视频| 日韩亚洲在线观看| 黄视频网站在线观看| 亚洲欧美综合另类在线卡通| 精品一卡二卡三卡| 91免费国产在线| 国产精品suv一区二区三区| 欧美精品一区视频| a级片免费在线观看| 国产伦精品一区二区三区免费视频| 国产精品极品| 中文字幕无码精品亚洲资源网久久| 噜噜噜在线观看免费视频日韩| 91制片厂毛片| 欧美国产日本韩| 伊人免费在线观看高清版| 在线精品国产成人综合| 97精品国产综合久久久动漫日韩| 成人激情直播| 精品9999| 日本xxx在线播放| 在线看不卡av| 免费高清在线观看| 91在线高清免费观看| 欧美成人国产| 中文字幕在线播放视频| 日韩欧美在线播放| av在线天堂播放| 91在线|亚洲| 国产人成精品一区二区三| 99久久久无码国产精品性| 欧美色视频在线观看| 网友自拍视频在线| 91成人伦理在线电影| 亚洲黑丝一区二区| 成人性生交大免费看| 欧美老年两性高潮| 日本动漫理论片在线观看网站| 国产精品高潮在线| 在线一区免费| 国产乱了高清露脸对白| 一道本成人在线| 免费在线视频欧美| 国产一区福利视频| 青草av.久久免费一区| 欧美精品乱码视频一二专区| 精品福利av导航| 亚洲第一会所| 欧美一区二区视频在线播放| 91小视频免费观看| 中文字幕在线播放不卡| 欧美富婆性猛交| 欧美伦理影院| 欧美图片自拍偷拍| 91黄视频在线| 日本高清成人vr专区| 麻豆av一区二区| 国产精品77777| 欧美性受xxx黑人xyx性爽| 久久99国产综合精品女同| 欧美伦理影院| 免费成人蒂法网站| 91麻豆精品91久久久久久清纯| 麻豆传媒在线完整视频|