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

一文搞明白分布式事務(wù)解決方案!真的 So Easy!

開發(fā) 前端
Seata 中涉及到四種不同的模式,接下來(lái)介紹的四種不同模式,其實(shí)都是在說(shuō)當(dāng)有一個(gè)本地事務(wù)失敗的時(shí)候,該如何回滾?這就是我們后面要說(shuō)的四種不同的分布式事務(wù)模式了。

分布式事務(wù),咱們前邊也聊過(guò)很多次了,網(wǎng)上其實(shí)也有不少文章在介紹分布式事務(wù),不過(guò)里邊都會(huì)涉及到不少專業(yè)名詞,看的大家云里霧里,所以還是有一些小伙伴在微信上問(wèn)我。

那么今天,我就再來(lái)一篇文章,和大家捋一捋這個(gè)話題。以下的內(nèi)容主要圍繞阿里的 seata 來(lái)和大家解釋。

1. 什么是反向補(bǔ)償

首先,來(lái)和大家解釋一個(gè)名詞,大家在看分布式事務(wù)相關(guān)資料的時(shí)候,經(jīng)常會(huì)看到一個(gè)名詞:反向補(bǔ)償。啥是反向補(bǔ)償呢?

我舉一個(gè)例子:假設(shè)我們現(xiàn)在有三個(gè)微服務(wù)分別是 A、B、C,現(xiàn)在在 A 服務(wù)中分別調(diào)用 B 和 C 服務(wù),為了確保 B 和 C 同時(shí)成功或者同時(shí)失敗,我們需要使用到分布式事務(wù)。但是按照我們之前對(duì)本地事務(wù)的理解,B 和 C 中的本地事務(wù),當(dāng) B 服務(wù)中的事務(wù)執(zhí)行完畢并且提交之后,現(xiàn)在 C 服務(wù)中的事務(wù)出現(xiàn)異常需要回滾了,但是,B 已經(jīng)提交了還怎么回滾呀?

此時(shí)我們所說(shuō)的回滾其實(shí)并不是傳統(tǒng)意義上的,通過(guò) MySQL redo log 日志來(lái)回滾的那種,而是通過(guò)一條更新 SQL,再把 B 服務(wù)中已經(jīng)更改過(guò)的數(shù)據(jù)復(fù)原。

這就是我們所說(shuō)的反向補(bǔ)償!

2. 基本概念梳理

Seata 中有三個(gè)核心概念:

  • TC (Transaction Coordinator) - 事務(wù)協(xié)調(diào)者:維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局事務(wù)提交或回滾。
  • TM (Transaction Manager) - 事務(wù)管理器:定義全局事務(wù)的范圍,開始全局事務(wù)、提交或回滾全局事務(wù)。
  • RM ( Resource Manager ) - 資源管理器:管理分支事務(wù)處理的資源( Resource ),與 TC 交談以注冊(cè)分支事務(wù)和報(bào)告分支事務(wù)的狀態(tài),并驅(qū)動(dòng)分支事務(wù)提交或回滾。

其中,TC 為單獨(dú)部署的 Server 服務(wù)端,TM 和 RM 為嵌入到應(yīng)用中的 Client 客戶端。我們來(lái)看如下一張圖片:

圖片

這張圖基本上把這個(gè)三個(gè)概念解釋清楚了。

其實(shí)不看這張圖,我們大概也能猜到分布式事務(wù)的實(shí)現(xiàn)原理:首先得有一個(gè)全局的事務(wù)協(xié)調(diào)者(TC),各個(gè)本地事務(wù)(RM)在開始執(zhí)行的時(shí)候,或者在執(zhí)行的過(guò)程中,及時(shí)將自己的狀態(tài)報(bào)告給全局事務(wù)協(xié)調(diào)者,這個(gè)全局事務(wù)協(xié)調(diào)者知道每一個(gè)分支事務(wù)目前的執(zhí)行狀態(tài),當(dāng)他(TC)發(fā)現(xiàn)所有的本地事務(wù)都執(zhí)行成功的時(shí)候,就通知大家一起提交;當(dāng)他發(fā)現(xiàn)在本次事務(wù)中,有人執(zhí)行失敗的時(shí)候,就通知大家一起回滾(當(dāng)然這個(gè)回滾不一定是真的回滾,而是反向補(bǔ)償)。那么一個(gè)事務(wù)什么時(shí)候開始什么時(shí)候結(jié)束呢?也就是事務(wù)的邊界在哪里?seata 中的分布式事務(wù)都是通過(guò) @GlobalTransactional 注解來(lái)實(shí)現(xiàn)的,換句話說(shuō),這個(gè)注解該加在哪里?添加該注解的地方其實(shí)就是事務(wù)管理器 TM 了。

經(jīng)過(guò)上面的介紹,小伙伴們應(yīng)該明白了,其實(shí)用 Seata 實(shí)現(xiàn)分布式事務(wù)沒有想象的那么難,原理還是非常 Easy 的。

Seata 中涉及到四種不同的模式,接下來(lái)介紹的四種不同模式,其實(shí)都是在說(shuō)當(dāng)有一個(gè)本地事務(wù)失敗的時(shí)候,該如何回滾?這就是我們后面要說(shuō)的四種不同的分布式事務(wù)模式了。

3. 什么是兩階段提交

先來(lái)看下面一張圖:

圖片

這張圖里涉及到三個(gè)概念:

  • AP:這個(gè)不用多說(shuō),AP 就是應(yīng)用程序本身。
  • RM:RM 是資源管理器,也就是事務(wù)的參與者,大部分情況下就是指數(shù)據(jù)庫(kù),一個(gè)分布式事務(wù)往往涉及到多個(gè) RM。
  • TM:TM 就是事務(wù)管理器,創(chuàng)建分布式事務(wù)并協(xié)調(diào)分布式事務(wù)中的各個(gè)子事務(wù)的執(zhí)行和狀態(tài),子事務(wù)就是指在 RM 上執(zhí)行的具體操作。

那么什么是兩階段(Two-Phase Commit, 簡(jiǎn)稱 2PC)提交?

兩階段提交說(shuō)白了道理很簡(jiǎn)單,松哥舉個(gè)簡(jiǎn)單例子來(lái)和大家說(shuō)明兩階段提交:

比如下面一張圖:

圖片

我們?cè)?Business 中分別調(diào)用 Storage 與 Order、Account,這三個(gè)中的操作要同時(shí)成功或者同時(shí)失敗,但是由于這三個(gè)分處于不同服務(wù),因此我們只能先讓這三個(gè)服務(wù)中的操作各自執(zhí)行,三個(gè)服務(wù)中的事務(wù)各自執(zhí)行就是兩階段中的第一階段。

第一階段執(zhí)行完畢后,先不要急著提交,因?yàn)槿齻€(gè)服務(wù)中有的可能執(zhí)行失敗了,此時(shí)需要三個(gè)服務(wù)各自把自己一階段的執(zhí)行結(jié)果報(bào)告給一個(gè)事務(wù)協(xié)調(diào)者,事務(wù)協(xié)調(diào)者收到消息后,如果三個(gè)服務(wù)的一階段都執(zhí)行成功了,此時(shí)就通知三個(gè)事務(wù)分別提交,如果三個(gè)服務(wù)中有服務(wù)執(zhí)行失敗了,此時(shí)就通知三個(gè)事務(wù)分別回滾。

這就是所謂的兩階段提交。

總結(jié)一下:兩階段提交中,事務(wù)分為參與者(例如上圖的各個(gè)具體服務(wù))與協(xié)調(diào)者,參與者將操作成敗通知協(xié)調(diào)者,再由協(xié)調(diào)者根據(jù)所有參與者的反饋情報(bào)決定各參與者是要提交操作還是中止操作,這里的參與者可以理解為 RM,協(xié)調(diào)者可以理解為 TM。

不過(guò) Seata 中的各個(gè)分布式事務(wù)模式,基本都是在二階段提交的基礎(chǔ)上演化出來(lái)的,因此并不完全一樣,這點(diǎn)需要小伙伴們注意。

4. AT 模式

AT 模式是一種全自動(dòng)的事務(wù)回滾模式。

整體上來(lái)說(shuō),AT 模式是兩階段提交協(xié)議的演變:

  • 一階段:業(yè)務(wù)數(shù)據(jù)和回滾日志記錄在同一個(gè)本地事務(wù)中提交,釋放本地鎖和連接資源。
  • 二階段則分兩種情況:2.1 提交異步化,非常快速地完成。2.2 回滾通過(guò)一階段的回滾日志進(jìn)行反向補(bǔ)償。

大致上的邏輯就是上面這樣,我們通過(guò)一個(gè)具體的案例來(lái)看看 AT 模式是如何工作的:

假設(shè)有一個(gè)業(yè)務(wù)表 product,如下:

圖片

現(xiàn)在我們想做如下一個(gè)更新操作:

update product set name = 'GTS' where name = 'TXC';

步驟如下:

一階段:

  • 解析 SQL:得到 SQL 的類型(UPDATE),表(product),條件(where name = 'TXC')等相關(guān)的信息。
  • 查詢前鏡像:根據(jù)解析得到的條件信息,生成查詢語(yǔ)句,定位數(shù)據(jù)(查找到更新之前的數(shù)據(jù))。
  • 執(zhí)行上面的更新 SQL。
  • 查詢后鏡像:根據(jù)前鏡像的結(jié)果,通過(guò)主鍵定位數(shù)據(jù)。
  • 插入回滾日志:把前后鏡像數(shù)據(jù)以及業(yè)務(wù) SQL 相關(guān)的信息組成一條回滾日志記錄,插入到 UNDO_LOG 表中。
  • 提交前,向 TC 注冊(cè)分支:申請(qǐng) product 表中,主鍵值等于 1 的記錄的 全局鎖。
  • 本地事務(wù)提交:業(yè)務(wù)數(shù)據(jù)的更新和前面步驟中生成的 UNDO LOG 一并提交。
  • 將本地事務(wù)提交的結(jié)果上報(bào)給 TC。

二階段:

二階段分兩種情況,提交或者回滾。

先來(lái)看回滾步驟:

  • 首先收到 TC 的分支回滾請(qǐng)求,開啟一個(gè)本地事務(wù),執(zhí)行如下操作。
  • 通過(guò) XID 和 Branch ID 查找到相應(yīng)的 UNDO LOG 記錄(這條記錄中保存了數(shù)據(jù)修改前后對(duì)應(yīng)的鏡像)。
  • 數(shù)據(jù)校驗(yàn):拿 UNDO LOG 中的后鏡像與當(dāng)前數(shù)據(jù)進(jìn)行比較,如果有不同,說(shuō)明數(shù)據(jù)被當(dāng)前全局事務(wù)之外的動(dòng)作做了修改。這種情況,需要根據(jù)配置策略來(lái)做處理。
  • 根據(jù) UNDO LOG 中的前鏡像和業(yè)務(wù) SQL 的相關(guān)信息生成并執(zhí)行回滾的語(yǔ)句:update product set name = 'TXC' where id = 1;
  • 提交本地事務(wù)。并把本地事務(wù)的執(zhí)行結(jié)果(即分支事務(wù)回滾的結(jié)果)上報(bào)給 TC。

再來(lái)看提交步驟:

  • 收到 TC 的分支提交請(qǐng)求,把請(qǐng)求放入一個(gè)異步任務(wù)的隊(duì)列中,馬上返回提交成功的結(jié)果給 TC。
  • 異步任務(wù)階段的分支提交請(qǐng)求將異步和批量地刪除相應(yīng) UNDO LOG 記錄。

大致上就是這樣一個(gè)步驟,思路還是比較清晰的,就是當(dāng)你要更新一條記錄的時(shí)候,系統(tǒng)將這條記錄更新之前和更新之后的內(nèi)容生成一段 JSON 并存入 undo log 表中,將來(lái)要回滾的話,就根據(jù) undo log 中的記錄去更新數(shù)據(jù)(反向補(bǔ)償),將來(lái)要是不回滾的話,就刪除 undo log 中的記錄。

在整個(gè)過(guò)程中,開發(fā)者只需要額外創(chuàng)建一張 undo log 表就行了,然后給需要處理全局事務(wù)的地方加上 @GlobalTransactional 注解就行了。

其他的提交呀回滾呀都是全自動(dòng)的,比較省事。所以如果你項(xiàng)目中選擇了用 seata 來(lái)處理分布式事務(wù),那么用 AT 模式的概率還是相當(dāng)高的。

5. TCC 模式

TCC(Try-Confirm-Cancel) 模式就帶一點(diǎn)手動(dòng)的感覺了,它也是兩階段,但是和 AT 又不太一樣,我們來(lái)看下流程。

官網(wǎng)上有一張 TCC 的流程圖,我們來(lái)看下:

圖片

可以看到,TCC 也是分為兩階段:

  • 第一階段是 prepare,在這個(gè)階段主要是做資源的檢測(cè)和預(yù)留工作,例如銀行轉(zhuǎn)賬,這個(gè)階段就先去檢查下用戶的錢夠不夠,不夠就直接拋異常,夠就先給凍結(jié)上。
  • 第二階段是 commit 或 rollback,這個(gè)主要是等各個(gè)分支事務(wù)的一階段都執(zhí)行完畢,都執(zhí)行完畢后各自將自己的情況報(bào)告給 TC,TC 一統(tǒng)計(jì),發(fā)現(xiàn)各個(gè)分支事務(wù)都沒有異常,那么就通知大家一起提交;如果 TC 發(fā)現(xiàn)有分支事務(wù)發(fā)生異常了,那么就通知大家回滾。

那么小伙伴可能也發(fā)現(xiàn)了,上面這個(gè)流程中,一共涉及到了三個(gè)方法,prepare、commit 以及
rollback,這三個(gè)方法都完全是用戶自定義的方法,都是需要我們自己來(lái)實(shí)現(xiàn)的,所以我一開始就說(shuō) TCC 是一種手動(dòng)的模式。

和 AT 相比,大家發(fā)現(xiàn) TCC 這種模式其實(shí)是不依賴于底層數(shù)據(jù)庫(kù)的事務(wù)支持的,也就是說(shuō),哪怕你底層數(shù)據(jù)庫(kù)不支持事務(wù)也沒關(guān)系,反正 prepare、commit 以及 rollback 三個(gè)方法都是開發(fā)者自己寫的,我們自己將這三個(gè)方法對(duì)應(yīng)的流程捋順就行了。

6. XA 模式

如果小伙伴們懂得 MySQL 數(shù)據(jù)庫(kù)的 XA 事務(wù),那么一下子就懂得 seata 中的 XA 模式是咋回事了。

XA 規(guī)范是 X/Open 組織定義的分布式事務(wù)處理(DTP,Distributed Transaction Processing)標(biāo)準(zhǔn)。

XA 規(guī)范描述了全局的事務(wù)管理器與局部的資源管理器之間的接口。XA規(guī)范的目的是允許的多個(gè)資源(如數(shù)據(jù)庫(kù),應(yīng)用服務(wù)器,消息隊(duì)列等)在同一事務(wù)中訪問(wèn),這樣可以使 ACID 屬性跨越應(yīng)用程序而保持有效。

XA 規(guī)范使用兩階段提交來(lái)保證所有資源同時(shí)提交或回滾任何特定的事務(wù)。

XA 規(guī)范在上世紀(jì) 90 年代初就被提出。目前,幾乎所有主流的數(shù)據(jù)庫(kù)都對(duì) XA 規(guī)范提供了支持。

XA 事務(wù)的基礎(chǔ)是兩階段提交協(xié)議。需要有一個(gè)事務(wù)協(xié)調(diào)者來(lái)保證所有的事務(wù)參與者都完成了準(zhǔn)備工作(第一階段)。如果協(xié)調(diào)者收到所有參與者都準(zhǔn)備好的消息,就會(huì)通知所有的事務(wù)都可以提交了(第二階段)。MySQL 在這個(gè) XA 事務(wù)中扮演的是參與者的角色,而不是協(xié)調(diào)者(事務(wù)管理器)。

MySQL 的 XA 事務(wù)分為內(nèi)部 XA 和外部 XA。外部 XA 可以參與到外部的分布式事務(wù)中,需要應(yīng)用層介入作為協(xié)調(diào)者;內(nèi)部 XA 事務(wù)用于同一實(shí)例下跨多引擎事務(wù),由 Binlog 作為協(xié)調(diào)者,比如在一個(gè)存儲(chǔ)引擎提交時(shí),需要將提交信息寫入二進(jìn)制日志,這就是一個(gè)分布式內(nèi)部 XA
事務(wù),只不過(guò)二進(jìn)制日志的參與者是 MySQL 本身。MySQL 在 XA 事務(wù)中扮演的是一個(gè)參與者的角色,而不是協(xié)調(diào)者。

換言之,MySQL 天然的就可以通過(guò) XA 規(guī)范來(lái)實(shí)現(xiàn)分布式事務(wù),只不過(guò)需要借助一些外部應(yīng)用的支持。我們來(lái)看下 Seata 中的 XA 模式使用流程。

先來(lái)看一張來(lái)自官方的圖片:

圖片

可以看到,這也是一個(gè)兩階段提交:

  • 一階段:業(yè)務(wù) SQL 操作放在 XA 分支中進(jìn)行,XA 分支完成后,執(zhí)行 XA prepare,由 RM 對(duì) XA 協(xié)議的支持來(lái)保證持久化(即之后任何意外都不會(huì)造成無(wú)法回滾的情況)。
  • 二階段分兩種情況:提交或者回滾:

分支提交:執(zhí)行 XA 分支的 commit

分支回滾:執(zhí)行 XA 分支的 rollback

和前面兩種模式的區(qū)別在于,XA 模式中的回滾,是正兒八經(jīng)的回滾,是我們傳統(tǒng)意義上所理解的回滾,而不是一種反向補(bǔ)償。

7. Saga 模式

’最后再來(lái)看看 saga 模式,這種模式應(yīng)用很少,大家作為了解即可。

saga 模式是 seata 提供的長(zhǎng)事務(wù)解決方案,然而長(zhǎng)事務(wù)是我們?cè)陂_發(fā)中應(yīng)該避免的,因?yàn)樾实筒⑶胰菀自斐伤梨i。

這個(gè) saga 模式就有點(diǎn)像流程引擎,開發(fā)者先自己畫一個(gè)流程引擎,把整個(gè)事務(wù)中涉及到的方法都囊括進(jìn)來(lái),每一個(gè)方法返回什么的時(shí)候就是正常的,返回什么就是異常的,正常的就繼續(xù)往下走,異常的就執(zhí)行另一套流程,也就是我們需要提前準(zhǔn)備好兩套方法,第一套是各種正常情況的執(zhí)行流程,第二套則是發(fā)生異常之后的執(zhí)行流程,類似下面這樣:

圖片

綠色的都是正常的流程,紅色的則是發(fā)生異常后回滾的流程。回滾中也是一種反向補(bǔ)償。

8. 小結(jié)

好啦,分布式事務(wù) 4 種模式就和大家說(shuō)清楚啦~后面有空整幾個(gè)案例一起實(shí)踐下!

責(zé)任編輯:武曉燕 來(lái)源: 江南一點(diǎn)雨
相關(guān)推薦

2021-06-28 10:03:44

分布式數(shù)據(jù)庫(kù)架構(gòu)

2025-04-29 04:00:00

分布式事務(wù)事務(wù)消息

2023-09-14 15:44:46

分布式事務(wù)數(shù)據(jù)存儲(chǔ)

2020-05-28 09:35:05

分布式事務(wù)方案

2024-06-13 09:25:14

2025-04-28 00:44:04

2024-03-26 12:08:53

分布式事務(wù)存儲(chǔ)

2022-11-24 17:34:04

TCC分布式

2023-04-03 15:04:00

RPCPHP語(yǔ)言

2010-07-21 13:53:41

SQL Server分

2019-01-11 18:22:07

阿里巴巴技術(shù)開源

2025-05-07 00:10:00

分布式事務(wù)TCC模式

2023-11-06 09:06:54

分布式一致性數(shù)據(jù)

2019-08-27 14:46:59

ElasticSearES數(shù)據(jù)庫(kù)

2020-07-10 08:03:35

DNS網(wǎng)絡(luò)ARPAne

2024-05-10 08:43:04

外觀模式接口系統(tǒng)

2024-05-09 09:09:19

組合模式對(duì)象

2024-05-13 10:45:25

中介模式面向?qū)ο?/a>數(shù)量

2016-10-25 14:35:05

分布式系統(tǒng) 存儲(chǔ)

2019-07-25 15:32:35

分布式事務(wù)微服務(wù)系統(tǒng)架構(gòu)
點(diǎn)贊
收藏

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

性欧美video另类hd尤物| 国产www视频| 综合亚洲色图| 欧美日韩精品一区视频| 成年人视频大全| 人妻与黑人一区二区三区| 久久国产日本精品| 操日韩av在线电影| 欧美精品黑人猛交高潮| 亚洲日韩中文字幕一区| 亚洲成人av资源| 日韩一区二区电影在线观看| 精品人妻aV中文字幕乱码色欲| 欧美18—19sex性hd| 久久免费的精品国产v∧| 国产精品一区二区久久久久| 欧美一级高潮片| 日韩精品欧美| 精品视频在线导航| 欧美高清精品一区二区| 欧美日韩在线精品一区二区三区激情综合 | 亚洲国产经典视频| 国产成人精品福利一区二区三区 | 国精产品视频一二二区| 超碰精品在线观看| 欧美久久久久免费| aⅴ在线免费观看| 欧美草逼视频| 中文字幕一区二| 日韩欧美一区二区在线观看| 国 产 黄 色 大 片| 老司机精品视频一区二区三区| 91av在线不卡| 国产精品第56页| 欧美在线不卡| 久久精品一本久久99精品| 成人在线一级片| 欧美爱爱网站| 精品福利视频一区二区三区| 天堂av2020| 视频一区在线免费看| 色呦呦日韩精品| 国产妇女馒头高清泬20p多| 大片免费在线看视频| 国产精品免费av| 视频一区二区三区免费观看| 九色网友自拍视频手机在线| 99麻豆久久久国产精品免费 | 91福利视频在线观看| 99精品久久久久| 91tv官网精品成人亚洲| 久久精品91久久香蕉加勒比| 激情无码人妻又粗又大| 日韩专区精品| 搡老女人一区二区三区视频tv| 成人激情五月天| av永久不卡| 在线一区二区日韩| 日本黄色激情视频| 欧美残忍xxxx极端| www.日韩欧美| 少妇久久久久久被弄高潮| 女人香蕉久久**毛片精品| 欧美裸体男粗大视频在线观看| 波多野结衣亚洲一区二区| 亚洲精品tv久久久久久久久久| 久久精品亚洲94久久精品| 日韩一区二区三区四区在线| 在线日本成人| 欧美在线观看网址综合| 无码日韩精品一区二区| 日韩va亚洲va欧美va久久| 国产精品久久久久久久久久东京 | 奇米精品一区二区三区四区| 国产精品无av码在线观看| 国产精品乱码一区二区| 国产河南妇女毛片精品久久久| 国产成人精品一区二区三区福利 | 99久久久无码国产精品免费蜜柚 | 国产极品精品在线观看| 一级黄色av片| 国产精品自拍毛片| 国产尤物99| 川上优的av在线一区二区| 日韩一区在线播放| 男女视频网站在线观看| 美女福利一区二区三区| 欧美老女人在线| 国产女人18毛片水真多18| 亚洲区小说区图片区qvod| 最近2019好看的中文字幕免费| 九九热最新地址| 午夜影院日韩| 亚洲一区二区在线| 亚州av在线播放| 国产精品久久一级| 精品无码国模私拍视频| 超碰这里只有精品| 精品久久人人做人人爱| 国产精品免费无码| 欧美日韩国产色综合一二三四| 欧美中文在线视频| 国产三级伦理片| 久久嫩草精品久久久精品一| 国产大尺度在线观看| 色戒汤唯在线观看| 欧美一区二区成人| 三年中国中文观看免费播放| 韩国在线视频一区| 成人激情视频小说免费下载| 四虎在线视频免费观看| 亚洲日本一区二区三区| 久久久精品在线视频| 91蝌蚪精品视频| 色爱av美腿丝袜综合粉嫩av| 日本韩国欧美中文字幕| 懂色av噜噜一区二区三区av | 雨宫琴音一区二区三区| 日韩**中文字幕毛片| 国产a级免费视频| 国产精品欧美一区喷水| 91视频最新入口| 一区二区三区欧洲区| 中文字幕精品在线视频| 亚洲欧美日韩激情| 97精品久久久午夜一区二区三区| 三上悠亚免费在线观看| 国产精品久久久久久久久免费高清 | 精品久久久久久无码国产| 亚洲一区网址| 大胆人体色综合| 中文字幕人妻一区二区在线视频 | 欧美日韩综合网| 成年网站在线视频网站| 日韩欧美国产综合一区| 亚洲区一区二区三| 日韩电影在线免费看| 欧美高清性xxxxhd| 两个人看的在线视频www| 日韩欧美第一区| 中文字幕在线观看成人| 国产一区在线观看麻豆| 一区二区在线高清视频| av成人免费看| 日韩在线视频网站| 中文字幕一区二区三区人妻四季| 欧美韩日一区二区三区| 国产wwwxx| 欧美特黄一级大片| 国产精品久久久久久久av大片| 电影在线一区| 欧美四级电影在线观看| 国产aaaaaaaaa| 精品一区免费av| 亚洲天堂av免费在线观看| 一区在线不卡| 精品中文字幕视频| 亚洲精品无amm毛片| 亚洲午夜久久久久中文字幕久| 亚洲熟女乱综合一区二区| 狠狠88综合久久久久综合网| 国产日韩欧美二区| 午夜不卡影院| 伊人久久综合97精品| 91极品身材尤物theporn| 亚洲私人黄色宅男| 图片区偷拍区小说区| 亚洲午夜久久久久久尤物 | 日韩欧美1区| 成人免费视频a| 欧美日韩经典丝袜| 亚洲国产成人av在线| 在线观看日本视频| 国产日韩欧美一区二区三区乱码 | 在线免费观看av网址| 欧美激情一区二区在线| 色婷婷.com| 激情亚洲网站| 欧美第一黄网| 国产精品久久免费视频| 国模gogo一区二区大胆私拍| 青春有你2免费观看完整版在线播放高清 | 久久资源综合| 国产不卡一区二区在线播放| 米奇精品一区二区三区| 精品乱人伦小说| 久久久蜜桃一区二区| 中文字幕一区二区三区精华液| 肉丝美足丝袜一区二区三区四| 国产欧美一区二区三区国产幕精品| 日本成人黄色| 北条麻妃在线一区二区免费播放 | 伊人久久免费视频| 午夜精品一区二区三| 色综合一区二区三区| 国产精品视频一区二区三| 久久综合九色综合欧美就去吻| www.这里只有精品| 亚洲精品乱码| 中文有码久久| 免费一区二区三区视频导航| 91欧美激情另类亚洲| 桃色av一区二区| 久久躁狠狠躁夜夜爽| 国产在线一在线二| 精品国产3级a| 国产草草影院ccyycom| 91久久线看在观草草青青 | 一本色道久久综合亚洲aⅴ蜜桃| 欧美 日韩 国产 一区二区三区| 91丨porny丨中文| 韩国三级丰满少妇高潮| 日韩不卡免费视频| 国产肥臀一区二区福利视频| 欧美一区精品| 影音先锋亚洲视频| 国产成人精品一区二区免费看京 | 黄色a级三级三级三级| 日韩精品亚洲专区| 男人添女人下面高潮视频| 中文字幕一区二区三三 | 国产毛片毛片毛片毛片毛片毛片| 狠狠久久亚洲欧美| 黑森林精品导航| 亚洲欧美日韩专区| 久久国产亚洲精品无码| 亚洲午夜一级| 777久久精品一区二区三区无码| 欧美午夜精彩| 日韩国产美国| 国产精品最新| 美脚丝袜一区二区三区在线观看| 国产一区福利| 国产伦理久久久| 国产精品巨作av| 国产激情一区二区三区在线观看| 在线观看欧美| 成人免费淫片aa视频免费| 久久青草免费| 国产一区二区在线免费| 日韩网站中文字幕| 国产精品精品久久久| 激情开心成人网| 日本精品视频网站| 久久电影tv| 国产精品吹潮在线观看| 美女福利一区二区| 国产成人精品一区| av一区在线播放| 国产精品高潮粉嫩av| 成人精品国产亚洲| 国产欧美一区二区| 精品一区二区三区亚洲| 99国产在线| 9l亚洲国产成人精品一区二三| 国产精品一区免费观看| 欧美亚视频在线中文字幕免费| 国产麻豆日韩| 中文字幕中文字幕精品| 日本欧美精品久久久| blacked蜜桃精品一区| 亚洲午夜在线观看| 99精品美女| 国产在线视频综合| 国产视频久久| 婷婷丁香激情网| 精品一区二区三区的国产在线播放 | 精品亚洲一区二区三区| 国产黄在线观看免费观看不卡| 中文字幕日韩精品有码视频| 国产福利在线播放麻豆| 欧美激情久久久久| xxx欧美xxx| 国产精品一区久久| 日韩三级网址| 久久久久久久久久久一区| 波多野结衣在线观看一区二区三区 | 四虎成人av| 免费人成在线观看视频播放| 国产精品一级| 欧美女同在线观看| 丁香婷婷综合网| 中国女人特级毛片| 一区二区高清视频在线观看| 国产成人无码精品久久久久| 欧洲精品一区二区| www.精品久久| 在线成人中文字幕| 青草视频在线免费直播| 人九九综合九九宗合| 国产精品一站二站| 免费av在线一区二区| 亚洲国产精品成人| 免费在线观看的av网站| 黄色日韩网站视频| 搡老熟女老女人一区二区| 国产精品第五页| 九九热精品视频在线| 91麻豆精品国产91久久久使用方法 | 成人免费一区| 国产欧美一区二区视频| 手机亚洲手机国产手机日韩| 国产老熟妇精品观看| 国内精品视频一区二区三区八戒| 国产美女喷水视频| 亚洲综合区在线| 夜夜躁狠狠躁日日躁av| 日韩高清不卡av| 啦啦啦中文在线观看日本| 91精品国产综合久久香蕉最新版| 亚洲8888| 可以在线看的av网站| 韩国一区二区在线观看| 亚洲黄色免费视频| 精品美女久久久久久免费| 国产欧美久久久| 色悠悠久久久久| 韩日成人影院| 久久精品五月婷婷| 亚洲无线视频| 蜜桃视频无码区在线观看| 国产精品久久久久久久久搜平片 | 亚洲第一综合| 老牛嫩草一区二区三区日本| 成人在线视频免费播放| 一区二区不卡在线视频 午夜欧美不卡在 | 久久久999| 可以直接看的无码av| 亚洲国产精品久久久久秋霞影院 | aaaaaa毛片| 亚洲精品v欧美精品v日韩精品| 免费在线看污片| 444亚洲人体| 午夜久久免费观看| 一道本在线免费视频| 国产欧美精品一区aⅴ影院 | 亚洲精品在线一区二区| 蜜桃传媒在线观看免费进入 | av中文字幕播放| 久久亚洲国产精品成人av秋霞| 黄色成人小视频| 亚洲高清视频一区二区| 日本亚洲免费观看| 国产午夜福利一区| 欧美视频一区二| 在线日本视频| 91精品久久久久久久| 亚洲精品91| 亚洲成年人av| 激情亚洲一区二区三区四区 | 97超碰人人模人人人爽人人爱| 综合久久五月天| 先锋影音网一区二区| 日本三日本三级少妇三级66| 黑人巨大精品欧美一区| 欧美三级 欧美一级| 欧美成人艳星乳罩| 波多一区二区| 裸模一区二区三区免费| 天堂在线一区二区| 毛片久久久久久| 欧美一区二区三区在| 成人福利电影| 欧美日韩中文国产一区发布| 麻豆精品一区二区av白丝在线| 黄色片子在线观看| 精品国产乱码久久久久久闺蜜| 青青青免费在线视频| 日产精品高清视频免费| 久久丁香综合五月国产三级网站 | 欧美女人交a| 日本黄色动态图| 欧美性色综合网| av大片在线| 免费h精品视频在线播放| 久久精品国产99久久6| 免费在线观看黄色av| 日韩久久精品电影| 91精品视频一区二区| 加勒比成人在线| 日本一区二区动态图| 精品黑人一区二区三区国语馆| 91国产高清在线| 久久电影院7| 黄色国产在线视频| 欧美综合天天夜夜久久| 在线观看wwwxxxx| 任我爽在线视频精品一| 国产精品一区二区在线看| 国产在线观看黄色| 久久亚洲综合国产精品99麻豆精品福利| 9l视频自拍蝌蚪9l视频成人| 国产视频在线视频| 亚洲综合免费观看高清完整版 | www.xxxx精品| 青青视频一区二区| 欧美性受xxxx黒人xyx性爽| 欧美丝袜美女中出在线| 中文在线观看免费| 无遮挡亚洲一区|