国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

分布式事務(wù)的 6 種解決方案,寫得非常好!

共 8017字,需瀏覽 17分鐘

 ·

2021-07-02 10:00


相關(guān)閱讀

300本計(jì)算機(jī)編程的經(jīng)典書(shū)籍下載

AI全套:Python3+TensorFlow打造人臉識(shí)別智能小程序

最新人工智能資料-Google工程師親授 Tensorflow-入門到進(jìn)階

Java架構(gòu)全階段七期完整

黑馬頭條項(xiàng)目 - Java Springboot2.0(視頻、資料、代碼和講義)14天完整版

Spring核心編程思想

作者:蘑菇先生
出處:www.cnblogs.com/mushroom/p/13788039.html

介紹

在分布式系統(tǒng)、微服務(wù)架構(gòu)大行其道的今天,服務(wù)間互相調(diào)用出現(xiàn)失敗已經(jīng)成為常態(tài)。如何處理異常,如何保證數(shù)據(jù)一致性,成為微服務(wù)設(shè)計(jì)過(guò)程中,繞不開(kāi)的一個(gè)難題。 

在不同的業(yè)務(wù)場(chǎng)景下,解決方案會(huì)有所差異,常見(jiàn)的方式有:

  1. 阻塞式重試;
  2. 2PC、3PC 傳統(tǒng)事務(wù);
  3. 使用隊(duì)列,后臺(tái)異步處理;
  4. TCC 補(bǔ)償事務(wù);
  5. 本地消息表(異步確保);
  6. MQ 事務(wù)。

本文側(cè)重于其他幾項(xiàng),關(guān)于 2PC、3PC 傳統(tǒng)事務(wù),網(wǎng)上資料已經(jīng)非常多了,這里不多做重復(fù)。

阻塞式重試

在微服務(wù)架構(gòu)中,阻塞式重試是比較常見(jiàn)的一種方式。

偽代碼示例:

m := db.Insert(sql)

err := request(B-Service,m)

func request(url string,body interface{}){
  for i:=0; i<3; i ++ {
    result, err = request.POST(url,body)
    if err == nil {
        break 
    }else {
      log.Print()
    }
  }
}

如上,當(dāng)請(qǐng)求 B 服務(wù)的 API 失敗后,發(fā)起最多三次重試。如果三次還是失敗,就打印日志,繼續(xù)執(zhí)行下或向上層拋出錯(cuò)誤。

這種方式會(huì)帶來(lái)以下問(wèn)題:

  1. 調(diào)用 B 服務(wù)成功,但由于網(wǎng)絡(luò)超時(shí)原因,當(dāng)前服務(wù)認(rèn)為其失敗了,繼續(xù)重試,這樣 B 服務(wù)會(huì)產(chǎn)生 2 條一樣的數(shù)據(jù)。
  2. 調(diào)用 B 服務(wù)失敗,由于 B 服務(wù)不可用,重試 3 次依然失敗,當(dāng)前服務(wù)在前面代碼中插入到 DB 的一條記錄,就變成了臟數(shù)據(jù)。
  3. 重試會(huì)增加上游對(duì)本次調(diào)用的延遲,如果下游負(fù)載較大,重試會(huì)放大下游服務(wù)的壓力。

第一個(gè)問(wèn)題:通過(guò)讓 B 服務(wù)的 API 支持冪等性來(lái)解決。

第二個(gè)問(wèn)題:可以通過(guò)后臺(tái)定時(shí)腳步去修正數(shù)據(jù),但這并不是一個(gè)很好的辦法。

第三個(gè)問(wèn)題:這是通過(guò)阻塞式重試提高一致性、可用性,必不可少的犧牲。

阻塞式重試適用于業(yè)務(wù)對(duì)一致性要求不敏感的場(chǎng)景下。如果對(duì)數(shù)據(jù)一致性有要求的話,就必須要引入額外的機(jī)制來(lái)解決。

異步隊(duì)列

在解決方案演化的過(guò)程中,引入隊(duì)列是個(gè)比較常見(jiàn)也較好的方式。如下示例:

m := db.Insert(sql)

err := mq.Publish("B-Service-topic",m)

在當(dāng)前服務(wù)將數(shù)據(jù)寫入 DB 后,推送一條消息給 MQ,由獨(dú)立的服務(wù)去消費(fèi) MQ 處理業(yè)務(wù)邏輯。和阻塞式重試相比,雖然 MQ 在穩(wěn)定性上遠(yuǎn)高于普通的業(yè)務(wù)服務(wù),但在推送消息到 MQ 中的調(diào)用,還是會(huì)有失敗的可能性,比如網(wǎng)絡(luò)問(wèn)題、當(dāng)前服務(wù)宕機(jī)等。這樣還是會(huì)遇到阻塞式重試相同的問(wèn)題,即 DB 寫入成功了,但推送失敗了。

理論上來(lái)講,分布式系統(tǒng)下,涉及多個(gè)服務(wù)調(diào)用的代碼都存在這樣的情況,在長(zhǎng)期運(yùn)行中,調(diào)用失敗的情況一定會(huì)出現(xiàn)。這也是分布式系統(tǒng)設(shè)計(jì)的難點(diǎn)之一。另外,MQ 系列面試題和答案全部整理好了,微信搜索互聯(lián)網(wǎng)架構(gòu)師,在后臺(tái)發(fā)送:2T,可以在線閱讀。

TCC 補(bǔ)償事務(wù)

在對(duì)事務(wù)有要求,且不方便解耦的情況下,TCC 補(bǔ)償式事務(wù)是個(gè)較好的選擇。

TCC 把調(diào)用每個(gè)服務(wù)都分成 2 個(gè)階段、 3 個(gè)操作:

  • 階段一、Try 操作:對(duì)業(yè)務(wù)資源做檢測(cè)、資源預(yù)留,比如對(duì)庫(kù)存的檢查、預(yù)扣。
  • 階段二、Confirm 操作:提交確認(rèn) Try 操作的資源預(yù)留。比如把庫(kù)存預(yù)扣更新為扣除。
  • 階段二、Cancel 操作:Try 操作失敗后,釋放其預(yù)扣的資源。比如把庫(kù)存預(yù)扣的加回去。

TCC 要求每個(gè)服務(wù)都實(shí)現(xiàn)上面 3 個(gè)操作的 API,服務(wù)接入 TCC 事務(wù)前一次調(diào)用就完成的操作,現(xiàn)在需要分 2 階段完成、三次操作來(lái)完成。

比如一個(gè)商城應(yīng)用需要調(diào)用 A 庫(kù)存服務(wù)、B 金額服務(wù)、C 積分服務(wù),如下偽代碼:

m := db.Insert(sql)
aResult, aErr := A.Try(m)
bResult, bErr := B.Try(m)
cResult, cErr := C.Try(m)
if cErr != nil {
    A.Cancel()
    B.Cancel()
 C.Cancel()
else {
    A.Confirm()
    B.Confirm()
    C.Confirm()
}

代碼中分別調(diào)用 A、B、C 服務(wù) API 檢查并保留資源,都返回成功了再提交確認(rèn)(Confirm)操作;如果 C 服務(wù) Try 操作失敗后,則分別調(diào)用 A、B、C 的 Cancel API 釋放其保留的資源。

TCC 在業(yè)務(wù)上解決了分布式系統(tǒng)下,跨多個(gè)服務(wù)、跨多個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)一致性問(wèn)題。但 TCC 方式依然存在一些問(wèn)題,實(shí)際使用中需要注意,包括上面章節(jié)提到的調(diào)用失敗的情況。

空釋放

上面代碼中如果 C.Try() 是真正調(diào)用失敗,那下面多余的 C.Cancel() 調(diào)用會(huì)出現(xiàn)釋放并沒(méi)有鎖定資源的行為。這是因?yàn)楫?dāng)前服務(wù)無(wú)法判斷調(diào)用失敗是不是真的鎖定 C 資源了。如果不調(diào)用,實(shí)際上成功了,但由于網(wǎng)絡(luò)原因返回失敗了,這會(huì)導(dǎo)致 C 的資源被鎖定,一直得不到釋放。

空釋放在生產(chǎn)環(huán)境經(jīng)常出現(xiàn),服務(wù)在實(shí)現(xiàn) TCC 事務(wù) API 時(shí),應(yīng)支持空釋放的執(zhí)行。

時(shí)序

上面代碼中如果 C.Try() 失敗,接著調(diào)用 C.Cancel() 操作。因?yàn)榫W(wǎng)絡(luò)原因,有可能會(huì)出現(xiàn) C.Cancel() 請(qǐng)求會(huì)先到 C 服務(wù),C.Try() 請(qǐng)求后到,這會(huì)導(dǎo)致空釋放問(wèn)題,同時(shí)引起 C 的資源被鎖定,一直得不到釋放。

所以 C 服務(wù)應(yīng)拒絕釋放資源之后的 Try() 操作。具體實(shí)現(xiàn)上,可以用唯一事務(wù)ID來(lái)區(qū)分第一次 Try() 還是釋放后的 Try()。

調(diào)用失敗

Cancel 、Confirm 在調(diào)用過(guò)程中,還是會(huì)存在失敗的情況,比如常見(jiàn)的網(wǎng)絡(luò)原因。

Cancel() 或 Confirm() 操作失敗都會(huì)導(dǎo)致資源被鎖定,一直得不到釋放。這種情況常見(jiàn)解決方案有:

  1. 阻塞式重試。但有同樣的問(wèn)題,比如宕機(jī)、一直失敗的情況。
  2. 寫入日志、隊(duì)列,然后有單獨(dú)的異步服務(wù)自動(dòng)或人工介入處理。但一樣會(huì)有問(wèn)題,寫日志或隊(duì)列時(shí),會(huì)存在失敗的情況。

理論上來(lái)講非原子性、事務(wù)性的二段代碼,都會(huì)存在中間態(tài),有中間態(tài)就會(huì)有失敗的可能性。

本地消息表

本地消息表最初是 ebay 提出的,它讓本地消息表與業(yè)務(wù)數(shù)據(jù)表處于同一個(gè)數(shù)據(jù)庫(kù)中,這樣就能利用本地事務(wù)來(lái)滿足事務(wù)特性。

具體做法是在本地事務(wù)中插入業(yè)務(wù)數(shù)據(jù)時(shí),也插入一條消息數(shù)據(jù)。然后在做后續(xù)操作,如果其他操作成功,則刪除該消息;如果失敗則不刪除,異步監(jiān)聽(tīng)這個(gè)消息,不斷重試。

本地消息表是一個(gè)很好的思路,可以有多種使用方式:

配合MQ

示例偽代碼:

messageTx := tc.NewTransaction("order")
messageTxSql := tx.TryPlan("content")

m,err := db.InsertTx(sql,messageTxSql)
if err!=nil {
 return err
}

aErr := mq.Publish("B-Service-topic",m)
if aErr!=nil { // 推送到 MQ 失敗
 messageTx.Confirm() // 更新消息的狀態(tài)為 confirm
}else {
 messageTx.Cancel() // 刪除消息
}

// 異步處理 confirm 的消息,繼續(xù)推送
func OnMessage(task *Task){
   err := mq.Publish("B-Service-topic", task.Value())
   if err==nil {
     messageTx.Cancel()
   }
}

上面代碼中其 messageTxSql 是插入本地消息表的一段 SQL :

insert into `tcc_async_task` (`uid`,`name`,`value`,`status`) 
values ('?','?','?','?')

它和業(yè)務(wù) SQL 在同一個(gè)事務(wù)中去執(zhí)行,要么成功,要么失敗。

成功則推送到隊(duì)列,推送成功,則調(diào)用 messageTx.Cancel() 刪除本地消息;推送失敗則標(biāo)記消息為 confirm。本地消息表中 status 有 2 種狀態(tài) try、confirm, 無(wú)論哪種狀態(tài)在 OnMessage 都可以監(jiān)聽(tīng)到,從而發(fā)起重試。

本地事務(wù)保障消息和業(yè)務(wù)一定會(huì)寫入數(shù)據(jù)庫(kù),此后的執(zhí)行無(wú)論宕機(jī)還是網(wǎng)絡(luò)推送失敗,異步監(jiān)聽(tīng)都可以進(jìn)行后續(xù)處理,從而保障了消息一定會(huì)推到 MQ。

而 MQ 則保障一定會(huì)到達(dá)消費(fèi)者服務(wù)中,利用 MQ 的 QOS 策略,消費(fèi)者服務(wù)一定能處理,或繼續(xù)投遞到下一個(gè)業(yè)務(wù)隊(duì)列中,從而保障了事務(wù)的完整性。

配合服務(wù)調(diào)用

示例偽代碼:

messageTx := tc.NewTransaction("order")
messageTxSql := tx.TryPlan("content")

body,err := db.InsertTx(sql,messageTxSql)
if err!=nil {
    return err
}

aErr := request.POST("B-Service",body)
if aErr!=nil { // 調(diào)用 B-Service 失敗
 messageTx.Confirm() // 更新消息的狀態(tài)為 confirm
}else {
 messageTx.Cancel() // 刪除消息
}

// 異步處理 confirm 或 try 的消息,繼續(xù)調(diào)用 B-Service 
func OnMessage(task *Task){
  // request.POST("B-Service",body)
}

這是本地消息表 + 調(diào)用其他服務(wù)的例子,沒(méi)有 MQ 的引入。這種使用異步重試,并用本地消息表保障消息的可靠性,解決了阻塞式重試帶來(lái)的問(wèn)題,在日常開(kāi)發(fā)中比較常見(jiàn)。

如果本地沒(méi)有要寫 DB 的操作,可以只寫入本地消息表,同樣在 OnMessage中處理:

messageTx := tc.NewTransaction("order")
messageTx := tx.Try("content")
aErr := request.POST("B-Service",body)
// ....


消息過(guò)期

配置本地消息表的 Try 和 Confirm 消息的處理器:

TCC.SetTryHandler(OnTryMessage())
TCC.SetConfirmHandler(OnConfirmMessage())

在消息處理函數(shù)中要判斷當(dāng)前消息任務(wù)是否存在過(guò)久,比如一直重試了一小時(shí),還是失敗,就考慮發(fā)郵件、短信、日志告警等方式,讓人工介入。

func OnConfirmMessage(task *tcc.Task) {
if time.Now().Sub(task.CreatedAt) > time.Hour {
    err := task.Cancel()  // 刪除該消息,停止重試。
   // doSomeThing() 告警,人工介入
    return
 }
}

在 Try 處理函數(shù)中,還要單獨(dú)判斷當(dāng)前消息任務(wù)是否存在過(guò)短,因?yàn)?nbsp;Try狀態(tài)的消息,可能才剛剛創(chuàng)建,還沒(méi)被確認(rèn)提交或刪除。這會(huì)和正常業(yè)務(wù)邏輯的執(zhí)行重復(fù),意味著成功的調(diào)用,也會(huì)被重試;為盡量避免這種情況,可以檢測(cè)消息的創(chuàng)建時(shí)間是否很短,短的話可以跳過(guò)。

重試機(jī)制必然依賴下游 API 在業(yè)務(wù)邏輯上的冪等性,雖然不處理也可行,但設(shè)計(jì)上還是要盡量避免干擾正常的請(qǐng)求。

獨(dú)立消息服務(wù)

獨(dú)立消息服務(wù)是本地消息表的升級(jí)版,把本地消息表抽離成一個(gè)獨(dú)立的服務(wù)。所有操作之前先在消息服務(wù)添加個(gè)消息,后續(xù)操作成功則刪除消息,失敗則提交確認(rèn)消息。

然后用異步邏輯去監(jiān)聽(tīng)消息,做對(duì)應(yīng)的處理,和本地消息表的處理邏輯基本一致。但由于向消息服務(wù)添加消息,無(wú)法和本地操作放到一個(gè)事務(wù)里,所以會(huì)存在添加消息成功,后續(xù)失敗,則此時(shí)的消息就是個(gè)無(wú)用消息。

如下示例場(chǎng)景:

err := request.POST("Message-Service",body)
if err!=nil {
  return err
}
aErr := request.POST("B-Service",body)
if aErr!=nil {
  return aErr
}

這個(gè)無(wú)用的消息,需要消息服務(wù)去確認(rèn)這個(gè)消息是否執(zhí)行成功,沒(méi)有則刪除,有繼續(xù)執(zhí)行后續(xù)邏輯。相比本地事務(wù)表 try 和 confirm ,消息服務(wù)在前面多了一種狀態(tài) prepare。

MQ 事務(wù)

有些 MQ 的實(shí)現(xiàn)支持事務(wù),比如 RocketMQ 。MQ 的事務(wù)可以看作獨(dú)立消息服務(wù)的一種具體實(shí)現(xiàn),邏輯完全一致。

所有操作之前先在 MQ 投遞個(gè)消息,后續(xù)操作成功則 Confirm 確認(rèn)提交消息,失敗則Cancel刪除消息。MQ 事務(wù)也會(huì)存在 prepare狀態(tài),需要 MQ 的消費(fèi)處理邏輯來(lái)確認(rèn)業(yè)務(wù)是否成功。

總結(jié)

從分布式系統(tǒng)實(shí)踐中來(lái)看,要保障數(shù)據(jù)一致性的場(chǎng)景,必然要引入額外的機(jī)制處理。

TCC 的優(yōu)點(diǎn)是作用于業(yè)務(wù)服務(wù)層,不依賴某個(gè)具體數(shù)據(jù)庫(kù)、不與具體框架耦合、資源鎖的粒度比較靈活,非常適用于微服務(wù)場(chǎng)景下。缺點(diǎn)是每個(gè)服務(wù)都要實(shí)現(xiàn) 3 個(gè) API,對(duì)于業(yè)務(wù)侵入和改動(dòng)較大,要處理各種失敗異常。開(kāi)發(fā)者很難完整處理各種情況,找個(gè)成熟的框架可以大大降低成本,比如阿里的 Fescar。

本地消息表的優(yōu)點(diǎn)是簡(jiǎn)單、不依賴其他服務(wù)的改造、可以很好的配合服務(wù)調(diào)用和 MQ 一起使用,在大多業(yè)務(wù)場(chǎng)景下都比較實(shí)用。缺點(diǎn)是本地?cái)?shù)據(jù)庫(kù)多了消息表,和業(yè)務(wù)表耦合在一起。文中本地消息表方式的示例,來(lái)源于作者寫的一個(gè)庫(kù),有興趣的同學(xué)可以參考下 https://github.com/mushroomsir/tcc

MQ 事務(wù)和獨(dú)立消息服務(wù)的優(yōu)點(diǎn)是抽離出一個(gè)公共的服務(wù)來(lái)解決事務(wù)問(wèn)題,避免每個(gè)服務(wù)都有消息表和服務(wù)耦合在一起,增加服務(wù)自身的處理復(fù)雜性。缺點(diǎn)是支持事務(wù)的 MQ 很少;且每次操作前都先調(diào)用 API 添加個(gè)消息,會(huì)增加整體調(diào)用的延遲,在絕大多數(shù)正常響應(yīng)的業(yè)務(wù)場(chǎng)景下,是一種多余的開(kāi)銷。

最后,關(guān)注公眾號(hào)互聯(lián)網(wǎng)架構(gòu)師,在后臺(tái)回復(fù):2T,可以獲取我整理的 MQ 系列面試題和答案,非常齊全。

TCC 參考:https://www.sofastack.tech/blog/seata-tcc-theory-design-realization/

MQ 事務(wù)參考:https://www.jianshu.com/p/eb571e4065ec

看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多人


往期資源:


Flutter 移動(dòng)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn) 視頻(開(kāi)發(fā)你自己的抖音APP)
Java面試進(jìn)階訓(xùn)練營(yíng) 第2季(分布式篇)
Java高級(jí) - 分布式系統(tǒng)開(kāi)發(fā)技術(shù)視頻


瀏覽 68
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 午夜福利亚洲| 脓肿是什么原因引起的,该怎么治疗| 精品免费| 欧美激情无码一区二区三区张丽 | 任我操在线视频| 婷婷五月天成人| 97免费在线观看视频| 操欧美女人| 日韩在线观看| 国产123区| 五月天婷婷综合| 亚洲天堂视频在线观看免费| 高清中文字幕在线A片| 久久99视频免费观看| 中文字幕无码毛片| 国产精品18在线| 精品蜜桃一区二区三区| 亚洲黄色精品| 中文精品字幕人妻熟女| 蜜桃Av噜噜一区二区三| 欧美亚洲综合在线| 骚逼综合网| 黄色视频免费网站| 无码不卡在线播放| 色色射| 成年人观看视频| 影音先锋日韩精品| 深夜福利网| 日韩爱爱网站| 久久9久| 国产91久久婷婷一区二区| 欧美一级A片免费看视频小说| 天天爽天天| 无码字幕| 另类av| 亚洲AV成人片无码网站| 亚洲精品秘一区二区三线观看| 久久人人爱| 亚洲电影av| 久久无码高清| 五月婷婷丁香在线| 国产欧美在线视频| 热99在线| 大香蕉a片| AV高清无码在线| 校园春色亚洲色图| 欧美v在线观看| 久久久久中文字幕| 男人操女人视频网站| 18禁网站在线看| 亚洲中文无码第一页| 欧美经典自拍狼友| 欧美一级a| 水蜜桃视频网站| 一级成人片| 国产精品操逼视频| 久久亚洲成人| 青青草综合网| 操逼视频免费在线观看| 91精品网站| a在线观看视频| 成人做爰69片免费观看| 欧美女人操逼| 国产日韩欧美视频| 日韩午夜福利| 色综合久久天天综合网| 久一精品| 免费做爱网站| 国产精品av在线| 无码理论片| 丰满人妻一区二区三区精品高| 成人毛片100免费观看| 亚州高清无码视频| 91视频在线免费看| 亚洲黄色影视| 大香蕉久操视频| 亚洲偷拍网| 天天干天天舔| 国产又爽又黄在线看视频| 亚洲一区在线免费观看| 亚洲色一区二区| 亚州在线视频| 九九乱伦| 最新中文字幕在线视频| 91成人一区二区三区| 日韩无码首页| 超碰精品在线| 大地影院在线资源观看| 色五月激情五月| 操人妻视频| 大香蕉国产在线| 91在线观看高清18| 中文人妻| 骚妇p| 拍拍AV| 日韩在线观看视频免费| 人妻少妇精品视频一区二区三区| 亚洲波多野结衣| 一区二区三区四区无码在线| 69福利| 国产精品国产精品国产专区不52| 超碰97老师| 三级网站视频| 精东影业AV无码精品| 91小视频在线| 亚洲无码视频免费| 亚洲无码精品一区二区| 蜜桃av在线播放| 成人视频一区二区| 强奷伦奷片91| 一区在线视频| 91迷奸| 亚洲夜夜爱| 97黄色| 久久天堂av| 激情五月天av| 狠狠2021| 中文字幕A片| 欧美一级婬片AAAAAA片| 色秘乱码一区二区三区唱戏| 欧美一道本| 美女黄片| 无码精品ThePorn| 精品人妻一区二区三区鲁大师| aa无码视频| 日本少妇高清视频| 日韩三级片网址| 狠狠色狠狠撸| 99久久国产热无码精品免费| 蜜桃视频在线观看视频| 国产成人精品123区免费视频| 精品区| 亚洲AV免费在线| 噜噜视频| 亚洲免费MV| 北条麻妃精品青青久久价格| AV大片免费看| 久久久成人精品| 中文字幕第9页| 翔田千里无码破解| 九色PORNY9l原创自拍| 色综合久久88色综合天天99| www黄片| 日本黄色视频电影| 欧美午夜精品久久久久免费视| 亲孑伦XXXⅹ熟女| 成人免费A片在线观看直播96| 欧美午夜精品久久久久久3D| 一区二区三区无码免费| 免费在线成人网站| 中文字幕的| 国产精品色情A级片| 中文字幕一二三| 污视频网站免费观看| 影音先锋成人AV资源| 亚洲日韩视频在线播放| 午夜激情视频网站| 500部大龄熟乱4K视频| 驲韩在线视频免费观看| 成人视频高清无码| 少妇久久久久久久久久| 国产人妖TS重口系列网站观看| 北条麻妃精品| 一区二区毛片| S28AV| 大香蕉福利在线| 超碰1999| 国产成人精品一区二| 午夜无码人妻AV大片| 中文字幕日韩有码| 中文字幕av高清片,中文在线观看| 中文字幕亚洲中文字幕| 深夜福利一区二区| 亚洲视频网站在线观看| 黄色一级片免费看| 黄色日逼视频| 中文成人在线| 婷婷五月综合中文字幕| 亚洲综合精品| 欧美日韩成人在线视频| 91探花秘在线播放| 狼友视频免费观看| 国产做爰XXXⅩ久久久骚妇| 狠狠躁18三区二区一区免费人| 老司机免费福利视频| 豆花视频在线| 中国少妇xxx| 午夜亚洲无码| 亚洲精品乱码久久久久久| 欧美综合在线观看| 另类老妇奶性生BBwBB| 91色五月| 日韩精品成人av| 国产美女啪啪视频| 婷婷色av| 99热加勒比| 久久免费成人电影| a欧美| 特级西西44www无码| 欧美成人网站在线观看| 大鸡巴视频在线| 日韩无码一二三区| 亚洲日韩免费视频| 欧美人操逼| 嫩草视频在线观看免费网站| 亚洲中文无码AV在线| 亚洲码无人客一区二区三区 | 国产女同性系列| 日本三级无码| 国产激情电影| 久草国产在线视频| 农村一级婬片A片AAA毛片古装 | 91丨PORNY丨在线中文| 日韩AV资源网| 一区二区无码精品| 亚洲一区二区在线免费观看 | 国产拍拍拍| 欧美在线va| 激情婷婷网| 日韩激情片| 北条麻妃无码在线观看| 亚洲日逼| 亚洲欧美美国产| 国产夫妻自拍av| 四川BBB嫩BBBB爽BBBB| 亚洲色图五月天| 人人妻人人插| 日韩中文字幕无码| 欧美成人aaa| 丁香六月婷婷综合缴| A片免费在线| 樱桃av| 亚洲日韩AV电影| 午夜精品久久久久久久久无码99热| 亚洲丁香五月天| 青青草在线免费视频| 爱爱黄色视频| 欧美99| 蜜臀久久99精品久久久久久宅男| 国产精品99视频| 少妇人妻无码| 日韩不卡| 日韩在线99| 日韩欧美一级视频| 97人妻在线| 吴梦梦一区二区三区| 无码熟妇人妻无码AV在线天堂| 丁香婷婷六月天| 亚洲无码在线播放| 加勒比日韩无码| AV第一福利大全导航| 国产三级午夜理伦三级| 成人三区| 91一区在线观看| 成人一级a片| 精品91海角乱| 日韩不卡精品| 97人妻一区二区精品视频| 国产成人高潮毛片| 亚洲一区二区在线| 亚洲天堂在线免费观看视频| 麻酥酥在线视频| 囯产精品一区二区三区线一牛影视1 | 悠悠无码一区日韩妇女| 亚洲真人无码| 国产在线一区二区三区| 久久99精品国产麻豆婷婷洗澡| 久久久成人精品| 久久少妇视频| 蜜桃网一区二区| 国产成人免费在线视频| 成人黄色电影在线观看| 97精品人人A片免费看| 自拍偷拍综合网| 久久免费黄色视频| 久久久久无码国产精品一区| 色五月中文字幕| 洞av| 日韩一级片网站| 久久综合五月| 婷婷五月激情中文字幕| 久久嫩草国产成人一区| www.狠狠操| 日本中文字幕精品| 国产日韩一区| 小H片在线观看| 国产老骚逼| 国产又爽又黄免费网站校园里| 欧美性爱在线网站| 十八禁无码网站在线观看| 中文人妻| 日韩在线观看网址| 99自拍视频| 国产日韩在线播放| 成人AV影院| 伊人成人视频在线观看| 色天天干| 欧美天天| 亚洲国产成人久久| 91精品网站| AV女优天堂| 神马影院午夜福利| 人人操AV在线| 亚洲先锋影音| 成人自拍偷拍| 国产乱码精品一品二品| 日日摸日日碰| 欧美怡红院视频| www.一区二区| 亚洲一区二区网站| 欧美精品系列| 91在线观看18| 在线啊啊啊| 日韩欧美国产高清91| 国产欧美综合三级伦| 91禁樱桃在线| 黄片视频链接| 特级西西人体WWWWW| 不卡无码中文字幕一区| 国产A片网站| 搡BBB,搡BBBB,搡BBBB| 一区无码高清| 精品乱子伦一区二区三区| 黄色片一级片| 天天射天天爽| 久久精品视频播放| 国产精品无码7777777| 人人干人人操人人爱| 日韩人妻丝袜中文字幕| 成人高清无码| 国产操逼小视频| 色老板免费视频| 成人在线中文| 中文字幕无码AV| 午夜免费小视频| 欧美成人久久| 国产黄色片在线播放| 99人妻人人爽人人添人人精品| 中文字幕国产综合| 午夜AV无码| 无码人妻一区二区三区三| 女人操逼| 国产SUV精品一区二区| 波多野结衣av在线播放| 日韩欧美一级A片| 欧美一级在线视频| 亚洲中文字幕日本| 久久久成人免费电影| 水蜜桃视频网站在线观看| 国内成人AV| 91成人综合| AV一区二区三区四区| 麻豆传媒av| 中文字幕不卡视频| 国产寡妇亲子伦一区二区三区四区| 日本AⅤ在线观看| 日韩av中文字幕在线播放| 依人大香蕉| 麻豆精品一区二区三区| 色色色网站| 杨幂操逼视频| 在线免费看AV| 欧美日韩人妻高清中文| 97人妻人人澡人人爽人人精品 | 有码中文字幕| 久久探花| 国产精品无毛五区六区| 亚洲精品伊人| 亚洲va综合va国产va中文| 99毛片| 高清毛片AAAAAAAAA片| 91探花视频| 人人操97| 九九热精品视频在线播放| av三级网站| 亚洲综合激情| 国产迷奸在线| 香蕉黄色三级片| 国产视频一区二区在线观看| 操B五月天| 人人爽人人| 日本少妇高潮喷水XXXXXXX| 黄色片毛片| 日韩精品中文字幕在线观看 | 天天搞天天色| 北条麻妃99| 一本色道久久综合亚洲怎么玩| 中文字幕亚洲日韩| 黄色网页在线| 色玖玖| 中国一级黄色毛片| 黄色av免费看| 国产精品午夜成人免费| 日韩毛片一区二区| 噜噜视频| WWW色色| 狠狠躁日日躁夜夜躁A片视频| 一区二区三区无码免费| 国产激情综合在线| 欧美成人一级| 在线观看的AV| 日韩AA视频| 激情视频在线免费观看| AV电影在线免费观看| 免费无码高清视频| 久久午夜无码鲁丝片主演是谁| 欧美洲成人网站| 国产熟妇毛多久久久久一区| a日韩| 操逼视频在线免费观看| www.中文无码| 免费看毛片中文字幕| 丁香婷婷视频| 欧美性xxxxx| 黄色免费网站在线观看| 国产sm视频| 夜夜网站| 韩国高清无码视频| 国产网友自拍| 婷婷情色五月| 亚洲无码电影网站| 精品一区二区三区四区五区六区七区八区九区| 亚洲在线免费视频| 亚洲欧美成人网站| 伊人9| 无码人妻丰满熟妇区毛片视频| 一级黄色性爱视频| 成人夜间视频| 免费操逼网| 亚洲天堂AV在线观看| 蜜臀AV在线| 操一区| 国产成人自拍视频在线| 一道本在线视频| 成人黄色小电影| 国产一级电影网站| 蜜臀一区二区三区| 91熟女乱伦| 中文字幕一区二区三区人妻在线视频 | 大香蕉性爱| 99精品国自产在线| 苍井空无码一区二区三区| 免费黄色视频网站| 国产精品日韩高清北条麻衣| 日本最新免费二区| 国产成人小视频| 亚洲AV无码秘翔田| 老熟女AV| 婷婷五月综合网| 中文字幕第9页| 亚州精品成人片| 免费看黄色大片| 日韩视频区| 五月天黄色电影网站| 日本人妻中文字幕| 你操综合| 欧美另类色图| 囯产精品久久久久久久久免费无码| 国产又黄又大又粗| 成人视频一区二区| 精品永久免费| 日韩aaaa| www.黄色在线观看| 亚洲字幕av| 特级西西人体WWWww| 嫩小槡BBBB槡BBBB槡免费-百度| 国产,亚洲91| 黄色亚洲| www.婷婷六月天| 国产精品自在线| 亚洲精品无码视频| 加勒比无码| 色综合999| 日韩一级网站| 高潮喷水视频| AAA级片| 人人插人人操| 免费观看的av| 亚洲AV无码A片在线观看蜜桃| 日本A片在线播放| 一级AV在线| 亚洲精品成人片在线观看精品字幕| 猫咪AV成人永久网站| 亚洲无码精品一区二区三区| 三级成人av| 激情婷婷| 日韩毛片网| 熟女老阿V8888AV| 91嫩草久久久久久久| 91水蜜桃| 美女自慰网站在线观看| 亚洲欧美日韩动漫| 西西444WWW无码大胆在线观看| 成人超碰在线| 狠狠草狠狠干| 91色区| 亚洲无码高清电影| 成年人在线视频| 男女无码视频| 久久精品视频一区| 三级影片在线观看性| 人妻电影亚洲av| 久久中文娱乐网| 久爱视频| 操逼逼视频| 中文在线观看视频| 毛片精品| 无码人妻一区二区三一区免费n狂飙 | 黄色人妻| 漂亮人妻吃鸡啪啪哥哥真的好| 国产在线观看一区二区| www.簧片| 久久一级A片| 一品国精和二品国精的文化意义| 中文毛片| 无码操B| 免费黄色视频网站大全| 国产在线色视频| 亚洲福利视频电影精| 人人妻人人爽人人操| 亚洲精品久久久久avwww潮水| 操逼网站在线看| 水多多成人网站A片| 热久久免费视频| 草久视频| 亚洲福利视频网站| 岛国AV免费在线| 欧美成人精品A片免费一区99| 一区二区三区免费观看| 波多野结衣视频在线| 国产传媒_色哟哟| 男人操女人免费网站| 国精产品一区二区三区在线观看| 老女人操逼视频| 国产乱伦网| 3344在线观看免费下载视频| 无码视频久久| 国产欧美综合在线观看| 不卡无码免费| 色婷婷综合网| 无码a区| 91视频www| 精东av| 一级片国产| 五月激情婷婷基地| 日韩在线视频免费观看| 亚洲AV无码电影| 蜜臀久久99精品久久久兰草影视| 美日韩无码视频| 成人久久久久久| 国产男女av| 97人人艹| 亚洲成人在线网站| 大黑人荫蒂BBBBBBBBB| 免费一级大片| 欧美69影院| 五月丁香激情四射| 中文字幕日本电影| 国产aa| 熟女人妻人妻の视频| 无码人妻精品一区二区三区99仓| 色综合久久久无码中文字幕999| 自拍三区| 无码三级在线播放| 99日韩无码| 四川妇BBB桑BBB桑BBB| 亚洲第一国产黄AV动漫软件| 色婷婷免费视频| 韩国精品在线观看| 色婷视频| 91色色色色| 久操新在线| 牛牛精品视频一区二区| 日本黄色电影网站| 欧美一级黄色电影| 亚洲无码99| 国产Av高清| 亚洲中文字幕视频在线| 77777精品成人免费A片| 老司机午夜免费精品视频| 98无码人妻精品一区二区三区 | 成人丁香五月天| 天天搞搞| 久久精品v| 特黄AAAAAAAA片视频| 成人在线免费观看视频| 无码人妻一区二区一牛影视| 成人福利网| 五月中文字幕| 东京热黄色| 北条麻妃波多波多野结衣| 日韩专区中文字幕| 国产激情网址| 成人久久大香蕉| 四季AV一区二区凹凸懂色桃花| 久久99久久99久久| 精品无码国产一区二区三区51安| 国产精品h| 中文字幕第83页| 人人干人人干人人| 激情黄色视频| 国产在线精品观看| 亚洲中文字幕免费在线观看| 色婷视频| 亚洲三级无码在线| 国产精品一区av| 加勒比综合无码| AV超碰| 免费在线性爱视频| 天堂精品在线| 玩弄大乳乳妾高潮乳喷视频| 久久99精品国产| 日本三级片在线| 一级免费黄色电影| 91精品久久香蕉国产线看观看| 成人日韩欧美| 97香蕉久久国产超碰青草专区| 日韩av免费看| 亚洲专区在线播放| 91视频在线免费看| 天天高清无码| 国产一区二区免费| 亚洲精品秘一区二区三区在线观看| 午夜特级| 亚欧视频在线观看| 免费无码婬片aaaa| 变态另类av| 人人操人人妻人人看| 亚洲免费观看在线观看| 欧美精品在线免费观看| 亚洲AV资源在线| 一区二区中文字幕| 操大逼视频免费国产| 影音先锋无码一区| 亚洲国产成人精品综合99| 性爱AV在线观看| 国产非洲欧美在线| 伊人成人视频在线观看| 欧美一二三区黄色免费视屏| www.97yy| 亚洲一区二区三区在线++中国| 亚洲无码影院| 北条麻妃无码在线| 操逼视频在线观看| 俺去俺来也在线www色官网| 日本A视频| 操操影院| 99热这里| 大香蕉伊人| 一纹A片免费观看| 婷婷五月天激情俺来也| 最新中文字幕一区| 久久国产黄色一级片| 欧美成人图片视频在线| 性色aV中文字幕| 午夜亚洲国产一区视频网站| 国产操比网| 亚洲蜜桃av一区| 蜜桃Av| 欧美视频手机在线| 精品视频在线免费| 黄色一级片免费在线观看| 欧美久色| 水果派红桃AV解说| 99re视频在线播放| 亚洲最新AV网站| 成人影视在线免费观看| 亚洲射色| 91精彩视频在线观看| 精品动漫一区二区三区| 国产成人精品一区| 国产精品免费观看久久久久久久久 | 亚洲精品国产精品乱玛不99| 任你爽在线视频| 91香蕉国产在线观看| 欧美一级电影| 免费观看的av| 91无码人妻东京热精品一区| 一级a免费| 亲子伦一区二区三区观看方式| 成人性爱视频网| 色婷婷av在线| 国产丝袜在线| 亚欧成人网站| 国产黄A| 国产精品观看| 亚洲h| 91精品国产综合久久久蜜臀酒店| 爱爱打炮影院| 欧美日韩免费在线播放电影在线播放电影在线播放电影免费 | 日本成人性爱视频网站一区| 龙泽美曦土豪| 91人兽| 做爱A片| 骚骚肥肥一区二区三区| 国产精品无码无套在线照片| 国产美女做爱视频| 成人午夜精品无码区| 国产黄色视频在线观看免费 | 爆操无码| 国产自慰一区| 秋霞一区二区| 四虎成人免费视频| 久久草大香蕉| av在线一区二区| 俺来也俺也去| 少妇一区二区三区| 久久夜色精品噜噜亚洲AV| 人妻精品电影| 欧美日韩中文在线观看| 国产第页| 六月婷婷五月| 无码人妻一区二区三区免水牛视频| 艹逼免费视频| 国精产品一二四区黑人| 在线视频一区二区三区| 99热国产在线| 日本AI高清无码在线观看网址| 午夜色色影院| 又爽又黄免费网站97双女| 日韩中文字幕国产| 人妻少妇精品无码| 中国一级黄色毛片| 99热这里只有精品1| 第一色影院| 性爱无码| 国产V精品| 91精品国产一区二区三区四区大| 精品国精品自拍自在线| 亚洲日韩在线免费观看| 亚洲成人无码在线播放| 亚洲精品娱乐| 欧美不卡在线| 亚洲无码成人| 成人黄网在线观看| 人人操夜夜爽| 在线欧美日韩| 欧美成人在线视频网站| 一本道高清| 五月网| 亚洲中文字幕在线观看视频网站| 亚洲国产av一区| 国产欧美日韩一区| 91天天爽| 人人艹人人| 欧美日韩国产一区二区| 91精品无码| 久久久亚洲AV| 高清无码视频免费版本在线观看| 91在线视频免费| 午夜福利大香蕉| A黄色片| 亚洲色图15P| 欧美性BBwBBwBBwHD| 婷婷日韩在线| 久久久久久久久久国产精品| 久久婷婷综合网| 国产欧美精品一区二区| 久热中文字幕| 特一级黄色电影| 91久久久久久久久久| 久久国产热视频| 亚欧免费视频| 亚洲高清视频在线| 久久永久免费精品人妻专区| 大BBBw大BBBW另类| 无码一区视频| 无码人妻精品一区二区三区蜜桃91 | 精品视频久久久久久| 无码国产av| 色综合久久久无码中文字幕999| 免费一级无码成人片| 国产高清在线观看| 亚洲夜夜爱| 91日韩高清| 中文资源在线a中文| 大香蕉手机在线视频| 国产一区二区精品| 美女裸体视频网站| 懂色av懂色av粉嫩av| 欧美一级AA| 国产A视频| 久久v| 乱人伦欲国语对白| 亚洲伊人成人| 国产一级片视频| 51成人网站免费| 天天干夜夜操熟女| 欧美粗大| 六月婷婷中文字幕| 免费无码一区二区三区| 丰臀肥逼高清视频电影播放| 国产—级a毛—a毛免费视频| 国产精品美女毛片j酒店| 亚欧成人| 亚洲中文在线视频| 操逼视频国产91| 大香蕉做爱视频| 亚洲小说区图片区都市| 超碰日本| 败火老熟女ThePorn视频| 激情人妻网站| 操屄小视频| 伊人网视频在线| 2025最新偷拍| 无码波多野结衣| 一本道视频在线| 亚洲51| 麻豆一区视频| 欧美黄色成人视频| 无码区一区二区三区| h网站在线观看| 91丨人妻丨国产| 国内精品久久久久久久久久| 乱伦网址| 欧美卡一卡二| 中文无码网站| 亚洲精品国产成人AV在线| 国产综合精品久久久久成人AV| 九色PORNY国产成人蝌蚪| 成人中文字幕无码| 欧美日韩精品一区二区三区视频播放| 日韩精品三级片| 杨晨晨不雅视频| 国精品无码一区二区三区在线秋菊 | 一级黄色电影在线观看| 热热毛片| 色中色av| 2022黄片| 无码精品ThePorn| 先锋影音亚洲无码av| 十八女人高潮A片免费| 69国产| 黑人粗暴偷拍一区二区| 亚洲精品高清视频| 男人天堂手机在线| 好吊视频一区二区三区四区| 翔田千里53歳在线播放| 无码人妻丰满熟妇精品| 在线看黄片| 蝌蚪九色啦403| 色婷在线视频| 91人人妻人人澡人人爽人人| 亚洲中文字幕在线视频| 黑人精品XXX一区一二区| 一本久久精品一区二区| 无码第一页| 精品交换一区二区三区无码| 麻豆传媒一区二区| 欧美日韩国产成人| 1024国产在线| 亚洲精品一区二区三区四区五区六区| 色图欧美色图| 黄色视频一区二区| 激情另类视频| 性满足BBWBBWBBW| 亚洲中文字幕久久日| 日韩中字幕无码| 欧美精品第一页| a网站免费观看| 久久五月亭亭| 网址你懂得| 一区二区三区精品婷婷| 性爱91视频| 久久视频免费| 国产91探花系列在线观看| 人人操人人模| 大荫蒂HD大荫蒂视频| 亚洲国产精品成人网站| 高清无码在线免费观看视频| 人人摸人人操人人| 成人性生活影视av| 日韩中文字幕精品| 成人免费无码| 免费黄色小视频在线观看| 一道本无码在线播放| 大香蕉伊人视频| 一级色色| 91啦丨露脸丨熟女色啦| 国产黄色一级片| 粉嫩99精品99久久久久久特污| 熟妇人妻中文AV无码| 亚洲人气无码AV| 午夜特级| 欧美丰满少妇人妻精品| 插吧插吧综合网| 日韩无码视频网站| 无码精品ThePorn| 亚洲一本大道| 学生妹一级片| 亚洲免费精品视频| 香蕉操逼| 日韩中文字幕无码| 99久久久久久久久久| 边吃边摸| 超碰自拍私拍二区三区区| 四季AV之日韩人妻无码| 亚洲国产精品久久久| 亚洲成年人网| 国产女人18毛片水18精品|