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

常用的分布式事務都有哪些?我該用哪個?

開發 前端 分布式
分布式的CAP理論應該是人盡皆知了,它描述了一致性(C)、可用性(A)、分區容錯性(P)的一系列權衡。很多時候,我們要在一致性和可用性之間權衡,而分布式事務,就是在這個大的前提下,盡可能的達成一致性的要求。

[[428152]]

本文轉載自微信公眾號「小姐姐味道」,作者小姐姐養的狗  。轉載本文請聯系小姐姐味道公眾號。

分布式的CAP理論應該是人盡皆知了,它描述了一致性(C)、可用性(A)、分區容錯性(P)的一系列權衡。很多時候,我們要在一致性和可用性之間權衡,而分布式事務,就是在這個大的前提下,盡可能的達成一致性的要求。

目標很小,問題很大,做法也各有不同。

“如何在微服務中實現分布式事務?”一般在被問到這樣的問題時,我都會回答“要盡量避免使用分布式事務”,這也是Martin Fowler所推薦的。但現實總是殘酷的,拆分了微服務之后,分布式事務是非常硬核的需求,是繞不開的,我們依然要想辦法搞定它。但分布式環境錯綜復雜,還伴隨著網絡狀況產生的超時,如何讓事務達到一致性的狀態,難度很大。

分布式事務,由一系列小的子事務組成。這些子事務,同大的分布式事務一樣,同樣要遵循ACID的原則。在一致性這個屬性上,根據達到一致性之前所存在的時間,又分為強一致性和最終一致性(BASE)。

注意,對于子事務,這里有個小小的誤解。并不是只有和數據庫打交道的操作,才叫做事務。在微服務環境下,如果你通過RPC調用了另外一個遠程接口,并造成了相關數據狀態的變化,這個RPC接口,也叫做事務。

所以,在分布式事務中,我們把這些子事務涉及到的操作,叫做資源。當操作能正常完成的時候,根本不需要什么額外處理。事務主要處理的是發生異常之后的流程。

下面,我們就來看一下常見的分布式事務解決方案。

1. 一階段提交(1PC)

先來看一下最簡單的事務提交情況。

如果你的業務,只有一個資源需要協調,那么它可以直接提交。比如,你使用了一個數據庫,那么就可以直接使用begin,commit等指令完成事務提交。

在Spring中,通過注解,就可以完成這樣的事務。如果發生了嵌套事務,它的實現方式,本質上,是通過ThreadLocal向下傳遞的。所以如果你的應用中有子線程相關的事務需要管理,它辦不到。

我們再來看分布式事務。所謂的分布式事務,就是協調2個或者多個資源,達到共同提交或者共同失敗的效果,也就是分布式的ACID。

2. 兩階段提交(2PC)

在一階段提交的概念擴展下,最簡單的分布式事務解決方案,就是二階段提交。二階段提交不是指有兩個參與資源,而是說有兩個分布式的協調階段,它可能有多個資源需要協調。

2.1 重要參與者

協調者(coordinator),也就是我們需要自建事務管理器,通常在整個系統中只有一個。

事務參與者(participants),就是指的我們所說的資源,通常情況下會有多個,否則也稱不上分布式事務了。

2.2 過程

廣義上的2PC(two phase commit),有哪兩階段呢?

  • client 分布式事務發起者
  • commit-request/voting 準備階段
  • commit/rollback 提交或者回滾

準備階段,也叫做voting階段。所謂的voting,就是參與者告知協調者,自己的資源到底是能夠提交(代表它準備好了),還是取消本次事務(比如發生異常)。

這個投票比較有意思,只要有一個參與者返回了false,本次事務就需要終止,然后執行rollback。只有全票通過,才會正常commit。協調者將這個結果,周知所有參與者的這個過程,就是二階段。

二階段提交其實非常容易理解。你可以把每個參與者的執行,想象成正常的SQL更新語句。它們一直掛在那里等待,直到協調者給出確切的commit或者rollback消息,才會正常往下執行。

2.3 問題

  • 阻塞問題。兩階段提交最大的問題,就是它是一個阻塞的協議,效率低。如果協調器永久失敗,一些參與者,將永遠無法完成它的事務
  • 單點故障問題。由于協調者在整個環節中有著非常重要的作用,所以一旦它發生了SPOF,整個系統將變的不可用,這是不能忍受的
  • 事務完整性問題。在某些情況下,比如協調者發送commit指令后,發生異常,有一部分執行成功了,會造成整個事務不一致。因為能不能提交,第一階段就決定了,第二階段只是通知而已,你就是死也要給我提交
  • 并不是所有的資源都支持2PC(或者XA)

對于第三點,我們舉個例子。比如你的commit-request階段全部返回了yes,然后協調者發送了commit指令。但這時候,有一臺服務器A宕機了,無法執行這個commit。這時候,我們的client也會收到成功的消息。A機器重啟之后,要有能力來恢復、繼續執行commit指令,這些都是工程上必須要處理的。

2.4 框架

2PC也叫做XA事務,大多數數據庫如MySQL,都支持XA協議。在Java中,JTA(不是什么JPA哦)是XA協議的實現。Spring也有JTA的事務管理器。

Atomikos、bitronix實現了JTA,它們只需要提供jar包就可以了。實現了XA協議的數據庫或者消息隊列,已經能夠具備了準備、提交、回滾的各種能力。

使用在seata等框架,需要啟動一個獨立的seata服務協調者節點。seata使用的AT,借助于外部事務管理器,概念與XA類似。

3. 三階段提交(3PC)

相比較二階段提交,三階段提交最典型的特點是加入了超時機制。當然,3階段證明了它有三個階段,這個差別更顯著。它本質上只是2PC的一些改進,所以身上完全充滿了2PC的影子。

3.1 重要參與者

3PC和2PC是一樣的。

3.2 過程

3PC比2PC多了一個步驟,那就是詢問階段。

  • CanCommit 詢問階段
  • PreCommit 準備階段
  • DoCommit 提交階段

提交階段,無非就是發送個commit或者rollback指令,重要的處理還是在準備階段,3PC把它一拆為2。

注意下面這個對應關系哦,2PC和3PC都有一個準備階段,但它們的作用是不同的。

  1. 3PC     2PC 
  2. CanCommit   commit-request/voting 
  3. PreCommit  
  4. DoCommit    commit 

3PC的詢問階段,對應的才是2PC的準備階段,都是ask一下參與者是否準備好了,但執行過程會有一些區別。

為什么要這么做?因為2PC有效率問題。2PC的執行過程是阻塞的,一個資源在進入準備階段之后,必須等待所有的資源準備完畢才能進行下一步,在這個過程中,它們對全局一無所知。

比如,有ABCDE等5個參與者,E其實是一個有問題的參與者資源。但2PC每次都會執行ABCD的預提交,當詢問到E的時候,發現是有問題的,再依次執行ABCD等參與者的rollback。在這種情況下,ABCD執行了無用的事務預處理和rollback,是非常浪費資源的。

3PC通過拆分這個詢問階段,在確保所有參與者建康良好的情況下,才會發起真正的事務處理,在效率和容錯性上更勝一籌。從概率上來講,由于commit之前粒度變小了,commit階段出問題的幾率就變小,能省下不少事。

另外,3PC引入了超時機制。在PreCommit階段,如果超時,就認為失敗;而在DoCommit階段,如果超時還會繼續執行下去。但不論怎樣,整個事務并不會一直等待下去。

3.3 問題

3PC理論上是比較優秀的,還能夠避免阻塞問題,但它多了一次網絡通信。如果參與者的數量比較多,網絡質量比較差的情況下,這個開銷非常可觀。它的實現也比較復雜,在實際應用中,是不太多的。

3PC也并不是完美的,因為PreCommit階段和DoCommit也并不是原子的,和2PC類似,依然存在一致性問題。

4. TCC

TCC是柔性事務,而上面介紹的都是剛性事務。有時候,一個技術問題,可以通過業務建模來實現。

2PC和3PC在概念上看起來雖然簡單,但放在分布式環境中,考慮各種超時和宕機問題,如果考慮的周全,那可真是要了老命。

2PC的框架還是比較多的,但3PC全網找了個遍,發現有名的實現幾乎沒有。

不要傷心,我們有更容易理解,更加直觀的分布式事務。那就是TCC,2007年的老古董。

TCC就是大名鼎鼎的補償事務,是互聯網環境最常用的分布式事務。它的核心思想是:為每一個操作,都準備一個確認動作和相應的補償動作,一共3個方法。

與其靠數據庫,不如靠自己的代碼!2PC,3PC,都和數據庫綁的死死的,TCC才是碼農的最愛(意思就是說,你要多寫代碼)。

image-20210914162640227.png

如圖,TCC同樣分為三個階段,但非常的粗暴!

  • try 嘗試階段 嘗試鎖定資源
  • confirm 確認階段 嘗試將鎖定的資源進行提交
  • cancel 取消階段 其中某個環節執行失敗,將發起事務取消動作

看起來這三個階段,是2階段提交的一種?完全不是。但它們的過程可以比較一下。

  1. TCC     2PC 
  2. Try     業務邏輯 
  3. Confirm    commit-request/voting + commit 
  4. Cancel     rollback 

從上面可以看出來,2PC是一種對事務過程的劃分,而TCC是對正常情況的提交和異常情況的補償。相對于傳統的代碼,try和confirm兩者加起來,才是真正的業務邏輯。

TCC是非常容易理解的,但它有一個大的前提,就是這三個動作必須都是冪等的,對業務有一定的要求。拿資金轉賬來說,try就是凍結金額;confirm就是完成扣減;cancel就是解凍,只要對應的訂單號是一直的,多次執行也不會有任何問題。

由于TCC事務的發起方,直接在業務節點即可完成,和TCC的代碼在同一個地方。所以,TCC并不需要一個額外的協調者和事務處理器,它存放在本地表或者資源中即可。

是的,它也要記錄一些信息,哪怕是HashMap里,否則它根據啥回滾呢?

4.1 問題

TCC事務,需要較多的編碼,以及正確的try和confirm劃分。由于沒有中心協調器,不需要阻塞,TCC的并發量較高,被互聯網業務廣泛應用。

團隊要有能力設計TCC接口,將其拆分成正確的Try和Confirm階段,實現業務邏輯的分級。

4.2 框架

ByteTCC、tcc-transaction、seata等。

5. SAGA

SAGA也是一個柔性事務。

saga的歷史更久遠,要追溯到1987年的一篇論文,可以說是瓶舊酒。它主要處理的是長活事務,但它不保證ACID,只保證最終一致性。

所謂長活事務,可以被分解成交錯運行的子事務,它通過消息,來協調一系列的本地子事務,來達到最終的一致性。

我們可以把SAGA編排器,想象成一個狀態機。每當處理完一條消息,它就能夠知道要執行的下一條消息(子事務)。

比如,我們把事務T,拆分成了T1,T2,T3,T4。那么我們就必須為這些子事務,提供相應的執行邏輯和補償邏輯。沒錯,和TCC一樣,不過比TCC少了一步Try動作,同樣要求這些操作是冪等的。

你瞧瞧,其實SAGA的概念很好理解,你就按照正常的業務邏輯去執行就行了。只不過如果在任何一步發生了異常,就要把前面所提交的數據全部回滾(補償)。唯一特殊的是,它通常是通過消息驅動來完成事務運轉的。

如果你非要追求它的本質,那就是SAGA和TCC一樣,都是先記錄執行軌跡,然后通過不斷地重試達到最終狀態。

上圖是rob vettor所繪制的一個典型的SAGA事務拆分圖。在圖中,黑色的線為正常業務流程,紅色的線為補償業務流程。這是一個簡單的電子商務結賬流程,整個交易跨了5個微服務,可以說是非常大的長事務了。

可以看到,這樣的事務流轉,靠文字描述已經是不好理解了,所以SAGA通常會配備一個流程編輯器,直接來把事務編排的過程可視化。

5.1 問題

那問題就有意思多了。

  • 嵌套問題。SAGA只允許兩層嵌套,因為靠消息流轉本來就非常復雜了,嵌套層次深在性能和時序上都不允許。
  • 如果你的事務包含很多子事務,那么很有可能在某個階段就執行失敗了。但如果補償操作也發生問題了呢?極端情況下,需要人工參與。在很多時候,需要記錄日志(saga log)來配合完成
  • 由于這些小事務并不是同時提交的,所以在執行的過程中,會產生臟數據,這和數據庫的read uncommited的概念是一樣的

5.2 框架

在《微服務架構設計模式》的第四章中,說明了SAGA的具體使用示例,現在網絡上的大多數文章都來自于此。但據我所知,使用SAGA的互聯網公司并不是很多,倒是使用TCC的比較多一些(可能是遇到的分布式事務都不是長事務)。

seata同樣提供了SAGA的方式,主要使用的是狀態機驅動的編排模式。為了支持事務的編排,seata提供了一個專用的流程編輯器(在線)。

  1. http://seata.io/saga_designer/index.html 

設計完畢之后,就可以導出為JSON文件,解析之后可以寫入到數據庫中。

bytetcc雖然叫tcc,它也支持SAGA。

5.3 SAGA vs TCC

上面也提到,我在平常工作中,用到TCC比SAGA更多一些,也是由于業務場景確定的。下面簡單的對比一下。

  • 開發難度。TCC的開發難度是比SAGA要高的,因為它需要處理Try階段來凍結資源,而SAGA是直接執行本地事務
  • 臟讀問題。TCC不存在臟讀,因為try階段并不影響數據;SAGA會在小事務之間,或者cancel之間出現臟讀
  • 效率問題。TCC無論成功失敗,都需要和參與方交互兩次;SAGA在正常情況下交互一次,異常情況下交互兩次,所以效率要高
  • 業務流程。TCC適合少量的分布式事務流程,否則寫起來就是噩夢;SAGA適合業務流程長,參與方多的業務,或者遺留系統等無法改造成TCC的業務
  • 手段。TCC是通過業務建模手段解決技術問題;SAGA是通過技術手段解決事務編排

6. 本地消息表

本地消息表的使用場景比較局限,它要靠MQ去實現,它解決的是數據庫事務和MQ之間的事務問題。

如圖,有一個分布式事務,在正常落庫之后,需要通過MQ來協調后續業務的執行。但是,寫DB和寫MQ,是無法達成一致性的,就需要加入一個本地消息表來緩存發送到MQ的狀態。下面我來描述一下這個過程。

  • 1.1 正常寫入數據庫
  • 1.2 在寫入數據庫的同時,寫入一張本地消息表。這張表,用來記錄MQ消息處理的狀態,可以有發送中和已完成兩種狀態。由于消息表和正常的業務表在一個DB中,所以可以達成本地事務,確保同時完成
  • 2 寫入消息表成功之后,可以異步發送MQ消息,且不用關心投遞是否成功
  • 3 后續業務訂閱MQ消息。消費成功之后,將會把執行成功的狀態,再通過MQ來發送。本地業務訂閱這個執行狀態,并把消息表中對應的記錄狀態,改為已完成;如果消費失敗,則不做過多處理
  • 4 存在一個定時任務,持續掃描本地消息表中,狀態為發送中的消息(注意延時),并再次把這些消息發送到MQ,重復2的過程

通過這樣的循環,就可以達到本地DB和MQ消費者狀態的一致性,完成最終一致性的分布式事務。

可以看到,我們有重發MQ的過程,所以這種模式要求消費者也要實現冪等的功能,避免重復對業務產生影響。

6.1 問題

使用本地消息表方案的系統還是挺多的,但它的弊端也顯而易見。

需要開發專用的代碼,與業務耦合在一起,無法完成抽象的框架

本地消息表需要寫數據庫,如果數據庫本身的I/O已經比較高了,它會增加數據庫的壓力

7. 最大努力補償

最大努力補償,是一種衰減式的補償機制。

拿個最簡單的例子來說吧。如果你是微信支付的接入方,微信支付成功之后,它會將支付結果推送到你指定的接口。

微信支付+你的支付結果處理,就可以算是一個大的分布式事務。涉及到微信的系統還有你的自有系統。

如果你的系統一直處理不成功,那么微信支付就會一直不停的重試。這就叫最大努力補償,用在系統內和系統間都是可以的。

但也不能無限的重試,重試的間隔通常會隨著時間衰減。常用的衰減策略有。

  1. messageDelayLevel = 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 

上面的公式,意味著如果一直無法處理成功,將在1s...,最大2小時后重試。如果還不成功,就只能進入人工處理通道。

最大努力補償只是一種思想,實際的應用有多種方式。比如,我首先將事務落地到消息隊列,然后依靠消息隊列的重試機制,來達到最大努力補償的效果,這些都是可行的方案。

8. 總結

我們在文中,從本地事務談起,分別聊到了2PC、3PC、TCC、SAGA、本地消息表、最大努力補償等,也了解到了各種解決方案的一些應用場景和解決方式。

分布式事務框架,在這些理論基礎上,都進行了或多或少的修訂,也有不少創新。比如LCN框架(lock,confirm,notify),就抽象出了控制方和發起方的概念,感興趣的可以自行了解。

在互聯網公司中,由于高并發量的訴求,在實際應用中,相對于強事務,大家普遍選用軟事務進行業務處理。使用最多的,就是TCC、SAGA、本地消息表等解決方案。SAGA應對長事務特別拿手,但隔離性稍差;TCC一直性好并發高,但需要較多編碼;本地消息表應用場景有限,耦合業務不能復用。各種解決方案都有它的利弊,一定要結合使用場景進行選擇。

在框架方面,阿里的seata(早些年叫fescar),已經得到了廣泛應用,XA、TCC、SAGA等模式都支持,如果你需要這方面的功能,可以集成嘗試一下。

希望看完本文之后,再次碰到“如何在微服務中實現分布式事務?”這種問題,除了回答“要盡量避免使用分布式事務”,你還可以找到確實可行的解決方案。 

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。

責任編輯:武曉燕 來源: 小姐姐味道
相關推薦

2022-06-27 08:21:05

Seata分布式事務微服務

2021-01-19 05:43:33

分布式2PC3PC

2022-06-21 08:27:22

Seata分布式事務

2017-07-26 15:08:05

大數據分布式事務

2019-10-10 09:16:34

Zookeeper架構分布式

2009-06-19 15:28:31

JDBC分布式事務

2021-09-29 09:07:37

分布式架構系統

2009-09-18 15:10:13

分布式事務LINQ TO SQL

2023-12-26 08:59:52

分布式場景事務機制

2023-09-11 15:40:43

鍵值存儲云服務

2021-02-01 09:35:53

關系型數據庫模型

2025-04-29 04:00:00

分布式事務事務消息

2019-06-26 09:41:44

分布式事務微服務

2022-03-24 07:51:27

seata分布式事務Java

2025-05-15 08:05:00

2019-09-09 10:09:51

分布式事務 數據庫

2014-01-22 13:37:53

2019-11-19 08:47:45

Zookeeper分布式事務

2025-06-11 08:01:06

2013-05-13 10:30:26

分布式架構架構設計網站架構
點贊
收藏

51CTO技術棧公眾號

国产一区二区主播在线| 色窝窝无码一区二区三区| 日韩欧美高清在线播放| 91精品国产黑色紧身裤美女| 国产青草视频在线观看| 日本中文字幕电影在线观看| 日本欧美一区二区| 欧美大片免费观看| 午夜在线观看一区| 亚洲精品观看| 日本道精品一区二区三区| 日本一级淫片演员| 欧美日韩在线精品一区二区三区激情综| 免费在线观看精品| 91av国产在线| 日本福利片在线观看| 亚洲盗摄视频| 日韩免费在线观看| 中文字幕国产传媒| 九九色在线视频| 中文子幕无线码一区tr| 好吊妞www.84com只有这里才有精品| 亚洲天堂五月天| 一区在线免费观看| 久久久www成人免费精品| 深爱五月激情网| 国产精品对白久久久久粗| 欧美男生操女生| 黑人粗进入欧美aaaaa| 大黄网站在线观看| 亚洲免费观看高清完整版在线观看| 免费久久一级欧美特大黄| 国产黄色av片| 狠狠色丁香婷婷综合| 国产精品福利网站| 香蕉影院在线观看| 99综合在线| 久久久久久午夜| 欧美成人免费看| 99视频精品视频高清免费| 亚洲日本中文字幕免费在线不卡| 老熟妇精品一区二区三区| 亚洲精品一二三**| 日韩一卡二卡三卡国产欧美| 伊人网在线综合| 成人国产激情在线| 欧美日韩久久不卡| 狠狠躁狠狠躁视频专区| 丝袜美腿一区| 色播五月激情综合网| 成人观看免费完整观看| 在线黄色的网站| 狠狠色狠色综合曰曰| 欧美变态另类刺激| 理论片午夜视频在线观看| 精品国产乱码久久久久久虫虫漫画| 成人污网站在线观看| 国产激情在线观看| 亚洲免费观看在线视频| 国产a级黄色大片| 麻豆视频网站在线观看| 亚洲人成网站精品片在线观看| 在线天堂一区av电影| 免费黄网站在线| 亚洲蜜桃精久久久久久久| 日韩中文字幕在线不卡| 国产盗摄在线视频网站| 欧美视频在线观看免费| 免费看污污网站| 亚洲视频资源| 欧美成人aa大片| 日批在线观看视频| 精品在线播放| 俺去啦;欧美日韩| 欧美日韩在线观看免费| 伊人成人在线视频| 日韩av不卡电影| 在线免费一级片| 国产v综合v亚洲欧| 久久99热只有频精品91密拍| 国产高清视频在线| 综合在线观看色| 精品视频在线观看一区| 都市激情亚洲一区| 欧美麻豆精品久久久久久| 极品白嫩少妇无套内谢| 日本天堂一区| 日韩视频精品在线| 欧美成人精品欧美一级乱黄| 丝袜脚交一区二区| 91一区二区三区| 日韩午夜影院| 亚洲精品网站在线观看| 日韩免费一级视频| 伊人久久一区| 日韩理论片久久| 四虎影院中文字幕| 亚洲一区中文| 96pao国产成视频永久免费| 婷婷五月综合久久中文字幕| 欧美激情在线一区二区| av在线播放天堂| 成人全视频在线观看在线播放高清 | 看一级黄色录像| 成人在线观看亚洲| 欧美色videos| www.偷拍.com| 久久综合色占| 久久久亚洲精选| 夜夜躁狠狠躁日日躁av| 99九九99九九九视频精品| 久久精品国产精品亚洲精品色| а√在线中文在线新版| 欧美精品久久久久久久多人混战 | 第四色中文综合网| 中文日韩电影网站| 欧美日韩一级黄色片| 成人激情免费电影网址| 咪咪色在线视频| 四虎影视4hu4虎成人| 亚洲精品国产美女| 免费一级全黄少妇性色生活片| 久久国产三级精品| 日本在线观看一区| 男女羞羞在线观看| 欧美精品一区二区三区在线播放| 国产精品嫩草影院俄罗斯| 日韩电影在线看| 欧美精品一区在线| 国产传媒在线观看| 欧美精品一区二区三区在线 | 91麻豆国产精品| www.黄在线观看| 色婷婷av一区| japanese中文字幕| 久久xxxx| 欧美日韩在线一二三| 国产免费拔擦拔擦8x在线播放 | 在线观看免费视频黄| 欧美在线播放| 99re视频在线播放| 欧美xxxx性xxxxx高清| 欧美一二三区精品| 日韩a级片在线观看| 激情六月婷婷综合| 亚洲免费av网| 精品国产不卡一区二区| 欧美久久久精品| 精品人妻一区二区三区蜜桃 | 主播福利视频一区| 国产偷人爽久久久久久老妇app | 亚洲午夜精品久久久久久性色 | 美女视频久久久| 久久精品国产网站| a级网站在线观看| 日本免费一区二区视频| 国内成人精品一区| 日本a一级在线免费播放| 色偷偷一区二区三区| 国产精品天天干| 久久99久久久久| 91国在线高清视频| 人人精品视频| 国产精品精品视频| 麻豆系列在线观看| 精品国产一二三区| 亚洲 欧美 日韩 综合| 国产午夜亚洲精品理论片色戒 | 亚洲日本视频在线| 亚洲**2019国产| 国产露出视频在线观看| 欧美日韩国产另类一区| 欧美精品99久久久| 91麻豆国产福利精品| 国内外成人免费在线视频| 中文字幕免费一区二区三区| 国产精品乱码视频| 成人精品电影在线| 美女av一区二区| 亚洲日本中文字幕在线| 欧美三级韩国三级日本一级| 成人在线观看小视频| 99久久精品一区| 一区二区三区入口| 伊人激情综合| 亚洲永久激情精品| 国产精品乱战久久久| 国产精品美女久久久久av超清| 午夜激情在线| 欲色天天网综合久久| www.国产黄色| 欧日韩精品视频| 国产精品不卡av| 中文字幕一区二区三区视频| 少妇一级淫片免费放播放| 久久99久久99| 黄色免费视频大全| 牛牛国产精品| 香蕉久久免费影视| 天海翼亚洲一区二区三区| 亚洲www视频| 日韩漫画puputoon| 国语自产精品视频在免费| 国产精品影院在线| 精品国产百合女同互慰| 91在线视频国产| 色哟哟国产精品免费观看| 久久黄色小视频| 国产精品黄色在线观看| 中文字幕狠狠干| 成人免费视频国产在线观看| 色婷婷.com| 可以免费看不卡的av网站| 久草视频这里只有精品| 欧美激情黄色片| 色播亚洲视频在线观看| 老司机在线精品视频| 亚洲综合中文字幕68页| 欧美aaa级| 国产成人精品综合久久久| 99久久精品免费看国产小宝寻花| 久久精品电影一区二区| 三级外国片在线观看视频| 亚洲欧美日韩直播| 日本人妖在线| 日韩av在线电影网| 黄片毛片在线看| 日韩欧美电影一二三| 国产精品无码专区av免费播放| 日韩电影一区| 国产一区在线免费观看| 日本精品在线播放| 成人国产精品一区| 国产91在线播放精品| 国产激情999| 深夜成人影院| 国产不卡在线观看| 欧美xx视频| 日本免费久久高清视频| 这里有精品可以观看| 97av在线影院| 欧美久久天堂| 欧美一级在线亚洲天堂| 在线免费av资源| 2021国产精品视频| 亚洲欧美小说色综合小说一区| 国语自产偷拍精品视频偷 | 欧洲激情综合| 色狠狠久久av五月综合| 欧美一站二站| 亚洲午夜精品福利| 66视频精品| 大陆极品少妇内射aaaaaa| 欧美日韩亚洲一区三区| 亚洲日本韩国一区| av动漫在线播放| 好吊日精品视频| 一女被多男玩喷潮视频| 国产美女诱惑一区二区| 免费日韩视频在线观看| 日韩 欧美一区二区三区| 免费涩涩18网站入口| 久久99精品国产91久久来源| 欧美一级小视频| 国产+成+人+亚洲欧洲自线| 日本在线不卡一区二区| 久久一留热品黄| 在线观看天堂av| 亚洲综合成人在线视频| 全部毛片永久免费看| 91精品1区2区| av网站在线观看免费| 精品成a人在线观看| 蜜芽tv福利在线视频| 精品国产一区二区三区四区在线观看 | 精品一区二区成人精品| 国产女主播在线播放| 久久人人爽爽爽人久久久| 人妻熟人中文字幕一区二区| 亚洲女厕所小便bbb| 日韩高清免费av| 91福利在线看| 午夜精品久久久久久久96蜜桃| 日韩精品电影网| 91社区在线高清| 性色av一区二区三区红粉影视| 忘忧草在线www成人影院| 91九色蝌蚪嫩草| 免费看日本一区二区| 免费成人进口网站| 亚洲欧美日韩国产综合精品二区| 日韩av卡一卡二| 99久久精品费精品国产一区二区| 欧美极品jizzhd欧美18| 亚洲国产一二三| ,一级淫片a看免费| 亚洲男人天堂久| 亚洲小说区图片| 国产精品对白刺激| 女同另类激情重口| 久久久成人精品一区二区三区 | 午夜影院免费体验区| 最新日韩中文字幕| 成av人片在线观看www| 91免费看片在线| 国产伦一区二区三区| 日韩精品一区二区在线视频 | 成人春色激情网| 日韩视频一二区| 秋霞毛片久久久久久久久| 中文字幕人成人乱码| 美女黄色片视频| 99久久99久久精品免费看蜜桃| 三上悠亚在线观看视频| 欧美性xxxxxxx| 韩国中文字幕hd久久精品| 少妇久久久久久| 亚洲成人短视频| 久久精品人成| 1024成人| 国产在线a视频| 国产精品久久久久一区二区三区共| 在线天堂中文字幕| 精品99一区二区三区| 色操视频在线| 亚洲r级在线观看| 久久中文亚洲字幕| 91小视频网站| 国产情人综合久久777777| 青青国产在线观看| 亚洲精品成a人在线观看| 免费毛片在线看片免费丝瓜视频| 亚洲a∨日韩av高清在线观看| 日韩欧美一区免费| 99热这里只有精品在线播放| 久久你懂得1024| 亚洲视频 欧美视频| 亚洲视频视频在线| 第四色男人最爱上成人网| 人禽交欧美网站免费| 久久午夜av| 欧美熟妇激情一区二区三区| 日韩欧美国产一区二区| 你懂的在线网址| 国产成人av在线| 精品一级毛片| 欧美特级aaa| 国产精品久久久久国产精品日日| 中文字幕一区二区人妻痴汉电车| 亚洲午夜久久久影院| 日韩久久一区二区三区| 亚洲bbw性色大片| 麻豆国产一区二区| 亚洲精品久久久久久国| 51午夜精品国产| 日韩三级电影视频| 国内精品视频免费| 久久一区视频| 天美传媒免费在线观看| 91精品国产91久久综合桃花| 91小视频xxxx网站在线| 国产精品免费一区二区| 亚洲免费在线| 影音先锋男人在线| 日韩一区二区免费高清| 美女精品导航| 免费电影一区| 黄页视频在线91| 国产精品第108页| 亚洲美女性视频| 欧美亚洲福利| 久久av综合网| 国产亚洲欧美在线| 91麻豆一区二区| 久久久久久这里只有精品| 亚洲精品aaaaa| 天堂av在线8| 亚洲va欧美va国产va天堂影院| 欧美日韩国产中文字幕在线| 国产日韩在线免费| 99香蕉国产精品偷在线观看| 免费看裸体网站| 亚洲成av人影院在线观看| 国产精品久久久久久69| 91看片淫黄大片一级| 久久精品免费在线| 一级做a爰片久久毛片美女图片| 999精品视频在线观看| 国产高清av在线播放| 日本一区二区免费在线观看视频| av资源免费看| 国产精品jizz在线观看麻豆| 在线成人直播| 先锋影音av在线| 精品国产欧美一区二区| 成人国产精品| 久久网站免费视频| 亚洲精品日日夜夜| 91这里只有精品| 久久99精品久久久久久三级|