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

一次面試阿里之后的感慨:TCC分布式事務原理真的得搞明白

開發 架構
咱們這篇文章,就用大白話+手工繪圖,并結合一個電商系統的案例實踐,來給大家講清楚到底什么是TCC分布式事務。

一、寫在前面

之前網上看到很多寫分布式事務的文章,不過大多都是將分布式事務各種技術方案簡單介紹一下。很多朋友看了不少文章,還是不知道分布式事務到底怎么回事,在項目里到底如何使用。

所以咱們這篇文章,就用大白話+手工繪圖,并結合一個電商系統的案例實踐,來給大家講清楚到底什么是TCC分布式事務。

首先說一下,這里可能會牽扯到一些Spring Cloud的原理,如果有不太清楚的同學,可以參考之前的文章:??用SpringCloud的時候胡亂寫配置的兄弟們,事故加班一定很多??


二、業務場景介紹

咱們先來看看業務場景,假設你現在有一個電商系統,里面有一個支付訂單的場景。

那對一個訂單支付之后,我們需要做下面的步驟:

  • 更改訂單的狀態為“已支付”
  • 扣減商品庫存
  • 給會員增加積分
  • 創建銷售出庫單通知倉庫發貨

這是一系列比較真實的步驟,無論大家有沒有做過電商系統,應該都能理解。

三、進一步思考

好,業務場景有了,現在我們要更進一步,實現一個TCC分布式事務的效果。

什么意思呢?也就是說,訂單服務-修改訂單狀態,庫存服務-扣減庫存,積分服務-增加積分,倉儲服務-創建銷售出庫單。

上述這幾個步驟,要么一起成功,要么一起失敗,必須是一個整體性的事務

舉個例子,現在訂單的狀態都修改為“已支付”了,結果庫存服務扣減庫存失敗。那個商品的庫存原來是100件,現在賣掉了2件,本來應該是98件了。

結果呢?由于庫存服務操作數據庫異常,導致庫存數量還是100。這不是在坑人么,當然不能允許這種情況發生了!

但是如果你不用TCC分布式事務方案的話,就用個Spring Cloud開發這么一個微服務系統,很有可能會干出這種事兒來。

我們來看看下面的這個圖,直觀的表達了上述的過程。

所以說,我們有必要使用TCC分布式事務機制來保證各個服務形成一個整體性的事務。

上面那幾個步驟,要么全部成功,如果任何一個服務的操作失敗了,就全部一起回滾,撤銷已經完成的操作。

比如說庫存服務要是扣減庫存失敗了,那么訂單服務就得撤銷那個修改訂單狀態的操作,然后得停止執行增加積分和通知出庫兩個操作。

說了那么多,老規矩,給大家上一張圖,大伙兒順著圖來直觀的感受一下。

四、落地實現TCC分布式事務

那么現在到底要如何來實現一個TCC分布式事務,使得各個服務,要么一起成功?要么一起失敗呢?

大家稍安勿躁,我們這就來一步一步的分析一下。咱們就以一個Spring Cloud開發系統作為背景來解釋。

1、TCC實現階段一:Try

首先,訂單服務那兒,他的代碼大致來說應該是這樣子的:

如果你之前看過Spring Cloud架構原理那篇文章,同時對Spring Cloud有一定的了解的話,應該是可以理解上面那段代碼的。

其實就是訂單服務完成本地數據庫操作之后,通過Spring Cloud的Feign來調用其他的各個服務罷了。

但是光是憑借這段代碼,是不足以實現TCC分布式事務的啊?!兄弟們,別著急,我們對這個訂單服務修改點兒代碼好不好。

首先,上面那個訂單服務先把自己的狀態修改為:OrderStatus.UPDATING。

這是啥意思呢?也就是說,在pay()那個方法里,你別直接把訂單狀態修改為已支付啊!你先把訂單狀態修改為UPDATING,也就是修改中的意思。

這個狀態是個沒有任何含義的這么一個狀態,代表有人正在修改這個狀態罷了。

然后呢,庫存服務直接提供的那個reduceStock()接口里,也別直接扣減庫存啊,你可以是凍結掉庫存。

舉個例子,本來你的庫存數量是100,你別直接100 - 2 = 98,扣減這個庫存!

你可以把可銷售的庫存:100 - 2 = 98,設置為98沒問題,然后在一個單獨的凍結庫存的字段里,設置一個2。也就是說,有2個庫存是給凍結了。

積分服務的addCredit()接口也是同理,別直接給用戶增加會員積分。你可以先在積分表里的一個預增加積分字段加入積分。

比如:用戶積分原本是1190,現在要增加10個積分,別直接1190 + 10 = 1200個積分啊!

你可以保持積分為1190不變,在一個預增加字段里,比如說prepare_add_credit字段,設置一個10,表示有10個積分準備增加。

倉儲服務的saleDelivery()接口也是同理啊,你可以先創建一個銷售出庫單,但是這個銷售出庫單的狀態是“UNKNOWN”。

也就是說,剛剛創建這個銷售出庫單,此時還不確定他的狀態是什么呢!

上面這套改造接口的過程,其實就是所謂的TCC分布式事務中的第一個T字母代表的階段,也就是Try階段。

總結上述過程,如果你要實現一個TCC分布式事務,首先你的業務的主流程以及各個接口提供的業務含義,不是說直接完成那個業務操作,而是完成一個Try的操作。

這個操作,一般都是鎖定某個資源,設置一個預備類的狀態,凍結部分數據,等等,大概都是這類操作。

咱們來一起看看下面這張圖,結合上面的文字,再來捋一捋這整個過程。

2、TCC實現階段二:Confirm

然后就分成兩種情況了,第一種情況是比較理想的,那就是各個服務執行自己的那個Try操作,都執行成功了,bingo!

這個時候,就需要依靠TCC分布式事務框架來推動后續的執行了。

這里簡單提一句,如果你要玩兒TCC分布式事務,必須引入一款TCC分布式事務框架,比如國內開源的ByteTCC、himly、tcc-transaction。

否則的話,感知各個階段的執行情況以及推進執行下一個階段的這些事情,不太可能自己手寫實現,太復雜了。

如果你在各個服務里引入了一個TCC分布式事務的框架,訂單服務里內嵌的那個TCC分布式事務框架可以感知到,各個服務的Try操作都成功了。

此時,TCC分布式事務框架會控制進入TCC下一個階段,第一個C階段,也就是Confirm階段。

為了實現這個階段,你需要在各個服務里再加入一些代碼。

比如說,訂單服務里,你可以加入一個Confirm的邏輯,就是正式把訂單的狀態設置為“已支付”了,大概是類似下面這樣子:

庫存服務也是類似的,你可以有一個InventoryServiceConfirm類,里面提供一個reduceStock()接口的Confirm邏輯,這里就是將之前凍結庫存字段的2個庫存扣掉變為0。

這樣的話,可銷售庫存之前就已經變為98了,現在凍結的2個庫存也沒了,那就正式完成了庫存的扣減。

積分服務也是類似的,可以在積分服務里提供一個CreditServiceConfirm類,里面有一個addCredit()接口的Confirm邏輯,就是將預增加字段的10個積分扣掉,然后加入實際的會員積分字段中,從1190變為1120。

倉儲服務也是類似,可以在倉儲服務中提供一個WmsServiceConfirm類,提供一個saleDelivery()接口的Confirm邏輯,將銷售出庫單的狀態正式修改為“已創建”,可以供倉儲管理人員查看和使用,而不是停留在之前的中間狀態“UNKNOWN”了。

好了,上面各種服務的Confirm的邏輯都實現好了,一旦訂單服務里面的TCC分布式事務框架感知到各個服務的Try階段都成功了以后,就會執行各個服務的Confirm邏輯。

訂單服務內的TCC事務框架會負責跟其他各個服務內的TCC事務框架進行通信,依次調用各個服務的Confirm邏輯。然后,正式完成各個服務的所有業務邏輯的執行。

同樣,給大家來一張圖,順著圖一起來看看整個過程。

3、TCC實現階段三:Cancel

好,這是比較正常的一種情況,那如果是異常的一種情況呢?

舉個例子:在Try階段,比如積分服務吧,他執行出錯了,此時會怎么樣?

那訂單服務內的TCC事務框架是可以感知到的,然后他會決定對整個TCC分布式事務進行回滾。

也就是說,會執行各個服務的第二個C階段,Cancel階段。

同樣,為了實現這個Cancel階段,各個服務還得加一些代碼。

首先訂單服務,他得提供一個OrderServiceCancel的類,在里面有一個pay()接口的Cancel邏輯,就是可以將訂單的狀態設置為“CANCELED”,也就是這個訂單的狀態是已取消。

庫存服務也是同理,可以提供reduceStock()的Cancel邏輯,就是將凍結庫存扣減掉2,加回到可銷售庫存里去,98 + 2 = 100。

積分服務也需要提供addCredit()接口的Cancel邏輯,將預增加積分字段的10個積分扣減掉。

倉儲服務也需要提供一個saleDelivery()接口的Cancel邏輯,將銷售出庫單的狀態修改為“CANCELED”設置為已取消。

然后這個時候,訂單服務的TCC分布式事務框架只要感知到了任何一個服務的Try邏輯失敗了,就會跟各個服務內的TCC分布式事務框架進行通信,然后調用各個服務的Cancel邏輯。

大家看看下面的圖,直觀的感受一下。

五、總結與思考

好了,兄弟們,聊到這兒,基本上大家應該都知道TCC分布式事務具體是怎么回事了!

總結一下,你要玩兒TCC分布式事務的話:

首先需要選擇某種TCC分布式事務框架,各個服務里就會有這個TCC分布式事務框架在運行。

然后你原本的一個接口,要改造為3個邏輯,Try-Confirm-Cancel。

  • 先是服務調用鏈路依次執行Try邏輯
  • 如果都正常的話,TCC分布式事務框架推進執行Confirm邏輯,完成整個事務
  • 如果某個服務的Try邏輯有問題,TCC分布式事務框架感知到之后就會推進執行各個服務的Cancel邏輯,撤銷之前執行的各種操作

這就是所謂的TCC分布式事務。

TCC分布式事務的核心思想,說白了,就是當遇到下面這些情況時,

  • 某個服務的數據庫宕機了
  • 某個服務自己掛了
  • 那個服務的redis、elasticsearch、MQ等基礎設施故障了
  • 某些資源不足了,比如說庫存不夠這些

先來Try一下,不要把業務邏輯完成,先試試看,看各個服務能不能基本正常運轉,能不能先凍結我需要的資源。

如果Try都ok,也就是說,底層的數據庫、redis、elasticsearch、MQ都是可以寫入數據的,并且你保留好了需要使用的一些資源(比如凍結了一部分庫存)。

接著,再執行各個服務的Confirm邏輯,基本上Confirm就可以很大概率保證一個分布式事務的完成了。

那如果Try階段某個服務就失敗了,比如說底層的數據庫掛了,或者redis掛了,等等。

此時就自動執行各個服務的Cancel邏輯,把之前的Try邏輯都回滾,所有服務都不要執行任何設計的業務邏輯。保證大家要么一起成功,要么一起失敗。

寫到這里,本文差不多該結束了。等一等,你有沒有想到一個問題?

如果有一些意外的情況發生了,比如說訂單服務突然掛了,然后再次重啟,TCC分布式事務框架是如何保證之前沒執行完的分布式事務繼續執行的呢?

所以,TCC事務框架都是要記錄一些分布式事務的活動日志的,可以在磁盤上的日志文件里記錄,也可以在數據庫里記錄。保存下來分布式事務運行的各個階段和狀態。

問題還沒完,萬一某個服務的Cancel或者Confirm邏輯執行一直失敗怎么辦呢?

那也很簡單,TCC事務框架會通過活動日志記錄各個服務的狀態。

舉個例子,比如發現某個服務的Cancel或者Confirm一直沒成功,會不停的重試調用他的Cancel或者Confirm邏輯,務必要他成功!

當然了,如果你的代碼沒有寫什么bug,有充足的測試,而且Try階段都基本嘗試了一下,那么其實一般Confirm、Cancel都是可以成功的!

最后,再給大家來一張圖,來看看給我們的業務,加上分布式事務之后的整個執行流程:

少大公司里,其實都是自己研發TCC分布式事務框架的,專門在公司內部使用,比如我們就是這樣。

不過如果自己公司沒有研發TCC分布式事務框架的話,那一般就會選用開源的框架。

這里筆者給大家推薦幾個比較不錯的框架,都是咱們國內自己開源出去的:ByteTCC,tcc-transaction,himly。

大家有興趣的可以去他們的github地址,學習一下如何使用,以及如何跟Spring Cloud、Dubbo等服務框架整合使用。

只要把那些框架整合到你的系統里,很容易就可以實現上面那種奇妙的TCC分布式事務的效果了。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-05-19 12:14:22

分布式開發框架

2018-11-23 09:25:00

TCC分布式事務

2021-06-08 12:46:27

分布式阿里TCC

2022-05-30 10:37:35

分布式事務反向補償

2024-06-28 09:07:19

2022-01-12 10:02:02

TCC模式 Seata

2024-06-12 09:06:48

2025-04-30 10:44:02

2024-10-09 14:14:07

2025-05-07 00:10:00

分布式事務TCC模式

2022-06-21 08:27:22

Seata分布式事務

2021-07-07 10:28:09

分布式架構系統

2019-10-09 11:42:10

分布式取錢異步流程

2019-07-09 09:19:51

分布式事務App

2019-06-25 14:44:11

分布式事務數據庫

2024-12-09 09:35:00

2022-07-10 20:24:48

Seata分布式事務

2021-12-20 10:39:30

TopK排序代碼

2022-06-27 08:21:05

Seata分布式事務微服務

2021-10-25 10:33:29

Python 開發編程語言
點贊
收藏

51CTO技術棧公眾號

国产麻豆精品一区二区| 一区二区三区日本久久久| 亚洲三级免费电影| 99re热精品| 免费观看一区二区三区毛片| 久久99国产精品视频| 欧美日本免费一区二区三区| av影院在线播放| 日本福利在线观看| 激情综合五月婷婷| 欧美亚洲另类在线| 国产成人免费在线观看视频| 91麻豆精品激情在线观看最新 | 欧美日韩高清一区二区不卡| 99er在线视频| 91最新在线| www.激情成人| 成人黄色免费在线观看| 欧美成人手机视频| 欧美精选一区二区三区| 欧美成人精品3d动漫h| 妞干网在线免费视频| 色在线视频网| 国产精品色一区二区三区| 国产乱子伦精品| 国产绿帽一区二区三区| 久久精品成人| 久久久中文字幕| 99成人在线观看| 久久99蜜桃| 欧美精品一区二区三区高清aⅴ| 欧美三级理论片| 看黄在线观看| 亚洲激情欧美激情| 影音先锋男人的网站| 日本成人一区| www.99精品| 99久久国产免费免费| 最近日韩免费视频| 模特精品在线| 欧美性视频网站| 亚洲国产精一区二区三区性色| 亚洲高清影视| 日韩视频在线免费| 天天舔天天操天天干| 亚州av日韩av| 日韩av在线一区二区| 无码人妻一区二区三区精品视频 | 99精品国产一区二区青青牛奶| 久久视频在线直播| 精品亚洲乱码一区二区| 日韩欧美精品综合| 日韩在线观看免费全集电视剧网站| 亚洲黄色小说视频| 黑人操亚洲人| 中文精品99久久国产香蕉| 白白色免费视频| 国产一区二区三区四区五区传媒| 亚洲男人的天堂在线| theav精尽人亡av| 亚洲激情播播| 亚洲天堂成人在线视频| 久操视频在线观看免费| 成人高清av| 色偷偷av一区二区三区| 亚洲不卡在线播放| 欧美国产三区| 国内外成人免费激情在线视频| 国产真实乱人偷精品视频| 亚洲国产高清一区二区三区| 国内偷自视频区视频综合| 男人的天堂一区二区| 免费国产自线拍一欧美视频| 热99在线视频| 一二三区中文字幕| 国产精品综合av一区二区国产馆| 999国内精品视频在线| 欧美视频一二区| 久久综合久久综合久久综合| 久久久久无码国产精品一区| 无码精品一区二区三区在线| 成人免费毛片片v| 激情欧美一区二区三区中文字幕| 性xxxfllreexxx少妇| 国产乱码字幕精品高清av| 亚洲在线免费看| 亚洲欧美另类视频| www国产成人免费观看视频 深夜成人网| 久久国产精品久久精品国产| 欧美色图另类| 国产精品视频第一区| 天天干天天色天天爽| 波多野结依一区| 欧美性色视频在线| 亚洲娇小娇小娇小| 亚洲一二三区视频| 亚洲精美色品网站| 黄色片在线观看免费| 久久中文字幕二区| 欧美激情精品久久久久| 欧美a∨亚洲欧美亚洲| 久久天堂精品| 亚洲xxxx18| 亚洲 欧美 激情 另类| 国产精品午夜久久| 在线观看日本一区| 九色porny自拍视频在线播放| 色国产综合视频| 欧美一区二区三区视频| 日产中文字幕在线精品一区| аⅴ资源新版在线天堂| 又紧又大又爽精品一区二区| av在线免费观看国产| 黄色综合网址| 欧美一级在线观看| 老鸭窝一区二区| 亚欧美无遮挡hd高清在线视频| 欧美激情女人20p| 无码人妻精品一区二区三区不卡| 久久国内精品自在自线400部| 国产高清在线一区| 91啦中文在线| 亚洲狼人国产精品| 亚洲xxxx2d动漫1| 国产精品17p| 中文字幕亚洲无线码在线一区| 日本妇女毛茸茸| 视频一区中文字幕国产| 91九色在线观看| 国产对白叫床清晰在线播放| 亚洲自拍欧美精品| 在线观看国产一级片| 伊人久久大香线蕉综合网蜜芽| 久青草国产97香蕉在线视频| 天堂а√在线中文在线新版| 国产精品一区不卡| 亚洲春色在线视频| 中文av在线全新| 精品精品欲导航| 色老板免费视频| 免费在线日韩av| 精品久久久久亚洲| 污视频网站免费在线观看| 欧美午夜电影在线播放| 在线视频 日韩| 一区二区三区毛片免费| 国产精品色悠悠| 日韩电影免费| 亚洲女性喷水在线观看一区| 国产又黄又猛又粗又爽的视频| 女一区二区三区| 久久免费少妇高潮久久精品99| 91片黄在线观看喷潮| 国产欧美在线观看一区| 国产在线观看福利| 日韩深夜影院| 97人人做人人爱| www.黄色片| 亚洲天堂成人在线观看| 欧美午夜aaaaaa免费视频| 奇米亚洲欧美| 日韩免费观看av| 理论在线观看| 色综合久久久网| 色婷婷av777| 美女视频一区免费观看| 看高清中日韩色视频| 免费在线观看黄色| 91麻豆精品国产91久久久资源速度 | 最新日韩av在线| 久久久久国产精品熟女影院| 日本一本不卡| 国产精品色婷婷视频| 婷婷在线视频| 91麻豆精品国产91久久久使用方法 | 日韩在线亚洲| 久久久久久久久91| 国产91免费看| 欧美视频在线观看免费| 国产三级视频网站| 日韩在线卡一卡二| 永久域名在线精品| 欧美一区一区| 午夜精品久久久久久久99热浪潮| 污污网站在线免费观看| 日本久久一区二区| 国产精品815.cc红桃| 免费的成人av| 蜜桃视频一区二区在线观看| 国产精品丝袜在线播放| 91精品国产免费久久久久久| 国产视频第一页在线观看| 欧美精品丝袜中出| 免费在线观看国产精品| 99久久99久久综合| 日韩欧美国产片| 亚洲网站在线| 日本黑人久久| 国产精品3区| 国内精品伊人久久| 中文字幕在线免费| 精品日本一线二线三线不卡| 日韩精品成人在线| √…a在线天堂一区| 国产一级伦理片| 免费观看一级特黄欧美大片| 中国丰满熟妇xxxx性| 精品国产乱码久久久久久1区2匹| 成人精品在线视频| 热色播在线视频| 久久亚洲精品一区二区| 天天干在线观看| 在线亚洲高清视频| 久久一二三四区| 亚洲国产成人私人影院tom| 韩国三级丰满少妇高潮| 美女日韩在线中文字幕| 日韩视频 中文字幕| 激情五月色综合国产精品| 91视频8mav| 色老太综合网| 欧美放荡办公室videos4k| 九色视频成人自拍| 精品国产欧美一区二区| 夜夜躁很很躁日日躁麻豆| 午夜欧美视频在线观看| 91香蕉一区二区三区在线观看| 91免费视频网址| 欧美日韩一区二区区| 日韩av一区二区在线影视| 强伦女教师2:伦理在线观看| 国产精品入口久久| 国产一区二区久久久| **国产精品| 国产99视频精品免视看7| 欧美aaa免费| 久久久电影免费观看完整版| 免费在线黄色网址| 日韩三级电影网址| 99re只有精品| 欧美精品一卡两卡| 波多野结衣在线观看一区| 亚洲va欧美va人人爽| 九九热最新地址| 中文久久乱码一区二区| 亚洲精品视频久久久| 成人av网站大全| 日批免费观看视频| 国产精品自拍av| 蜜臀一区二区三区精品免费视频| 亚洲免费网站| 国产精品无码av在线播放| 精品99视频| 成 年 人 黄 色 大 片大 全| 欧美日韩亚洲一区在线观看| 日本免费在线视频观看| 欧美成人激情| 一区二区高清视频| 日韩在线视频精品| 亚洲成人在线视频网站| 亚洲成人最新网站| 男同互操gay射视频在线看| 88国产精品视频一区二区三区| 亚洲一区美女| 国产精品久久久久9999赢消| 亚洲精品中文字幕乱码三区不卡| 精品久久久中文字幕| 亚洲一区3d动漫同人无遮挡| 日韩电影二区| 亚洲精品二区| 99热国内精品| 狠狠干视频网站| 欧美日本精品| 国产最新免费视频| 久久99伊人| 久草福利视频在线| 久久成人av少妇免费| 91亚洲一区二区| 狠狠色丁香婷综合久久| 97精品人人妻人人| 97久久超碰精品国产| 久久精品国产亚洲av麻豆| 日本一区二区三区国色天香| av在线免费播放网址| 亚洲视频中文字幕| 欧美日韩国产精品一区二区三区| 欧美色播在线播放| 国产精品成人久久久| 欧美日本乱大交xxxxx| www.色视频| 日韩大片免费观看视频播放| 国产人成在线视频| 欧美成年人视频网站欧美| av电影在线免费| 国产成人亚洲精品| 国产精品1区| 久久久久久亚洲精品不卡4k岛国| 欧美精品尤物在线观看| 桥本有菜av在线| 男人天堂欧美日韩| 人妻少妇偷人精品久久久任期| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久久久久毛片| 亚洲精品国产第一综合99久久 | 久久亚洲道色| 亚洲精品白虎| 日韩视频一区二区三区在线播放免费观看 | 国外视频精品毛片| 蜜桃成人精品| 成人毛片网站| 国产日韩视频在线| 欧美美女黄色网| 视频一区中文字幕| 东京热av一区| 国产精品电影一区二区| 日韩av免费网址| 91精品国产乱| 亚洲一区二区三区久久| 成人在线免费电影网站| 99国产超薄肉色丝袜交足的后果| 国精一区二区| 国产精品久久中文字幕| 国产精品1区2区3区在线观看| 国产交换配乱淫视频免费| 中文子幕无线码一区tr| 国产精品成人aaaa在线| 欧美久久久久中文字幕| 男人天堂网在线| 久久久久久久久久国产精品| 日本精品在线一区| 精品一区在线播放| 综合av在线| 午夜免费看毛片| 久久久久久**毛片大全| 国产成人自拍视频在线| 日韩欧美国产一区二区三区| 成全电影播放在线观看国语| 欧亚精品中文字幕| 日韩三级久久| 99热这里只有精品7| 日韩二区在线观看| 少妇光屁股影院| 亚洲一本大道在线| 99精品免费观看| 日韩中文字幕网| 久久91导航| 久久免费一区| 女主播福利一区| 亚洲第一天堂久久| 中文字幕国产一区| 中文字幕天堂在线| 亚洲精品资源在线| gogo久久| 国产精品久久久久久久小唯西川 | 国产999在线观看| 欧洲专线二区三区| 成年人视频网站免费观看| 91年精品国产| 潘金莲一级淫片aaaaaa播放| 日韩精品极品毛片系列视频| 欧美sm一区| 久久青青草原| 六月婷婷一区| 91网站免费入口| 色伊人久久综合中文字幕| 成人av毛片| 国产在线a不卡| 中文字幕一区二区三区乱码图片 | 久久婷婷开心| 久久国产毛片| 亚洲精品天堂网| 欧美日韩精品一区二区| 欧美精品日韩少妇| 91精品在线国产| 欧美日本三区| 无码人妻精品一区二区三应用大全 | 亚洲国产片色| 免费看污片网站| 欧美日精品一区视频| 欧美边添边摸边做边爱免费| 成人一区二区电影| 久久伦理在线| 免费看三级黄色片| 精品久久久久久久久久| 黄色的视频在线免费观看| 国产精品美女av| 欧美大片专区| 成人无码www在线看免费| 在线观看中文字幕不卡| 麻豆网站在线观看| 粉嫩av免费一区二区三区| 国产日韩高清一区二区三区在线| 麻豆精品国产传媒av| 欧洲色大大久久| a级网站在线播放| 狠狠爱一区二区三区| 日韩av在线发布| 日本黄色小说视频| 日韩精品欧美国产精品忘忧草 | 欧美精品色视频|