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

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

共 7564字,需瀏覽 16分鐘

 ·

2021-07-02 11:38


作者:蘑菇先生
出處: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ì)過程中,繞不開的一個(gè)難題。 

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

  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)中,阻塞式重試是比較常見的一種方式。

偽代碼示例:

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ì)帶來以下問題:

  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è)問題:通過讓 B 服務(wù)的 API 支持冪等性來解決。

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

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

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

異步隊(duì)列

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

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ò)問題、當(dāng)前服務(wù)宕機(jī)等。這樣還是會(huì)遇到阻塞式重試相同的問題,即 DB 寫入成功了,但推送失敗了。

理論上來講,分布式系統(tǒng)下,涉及多個(gè)服務(wù)調(diào)用的代碼都存在這樣的情況,在長期運(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ù)資源做檢測、資源預(yù)留,比如對(duì)庫存的檢查、預(yù)扣。
  • 階段二、Confirm 操作:提交確認(rèn) Try 操作的資源預(yù)留。比如把庫存預(yù)扣更新為扣除。
  • 階段二、Cancel 操作:Try 操作失敗后,釋放其預(yù)扣的資源。比如把庫存預(yù)扣的加回去。

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

比如一個(gè)商城應(yīng)用需要調(diào)用 A 庫存服務(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ù)庫的數(shù)據(jù)一致性問題。但 TCC 方式依然存在一些問題,實(shí)際使用中需要注意,包括上面章節(jié)提到的調(diào)用失敗的情況。

空釋放

上面代碼中如果 C.Try() 是真正調(diào)用失敗,那下面多余的 C.Cancel() 調(diào)用會(huì)出現(xiàn)釋放并沒有鎖定資源的行為。這是因?yàn)楫?dāng)前服務(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)致空釋放問題,同時(shí)引起 C 的資源被鎖定,一直得不到釋放。

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

調(diào)用失敗

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

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

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

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

本地消息表

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

具體做法是在本地事務(wù)中插入業(yè)務(wù)數(shù)據(jù)時(shí),也插入一條消息數(shù)據(jù)。然后在做后續(xù)操作,如果其他操作成功,則刪除該消息;如果失敗則不刪除,異步監(jiān)聽這個(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, 無論哪種狀態(tài)在 OnMessage 都可以監(jiān)聽到,從而發(fā)起重試。

本地事務(wù)保障消息和業(yè)務(wù)一定會(huì)寫入數(shù)據(jù)庫,此后的執(zhí)行無論宕機(jī)還是網(wǎng)絡(luò)推送失敗,異步監(jiān)聽都可以進(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ù)的例子,沒有 MQ 的引入。這種使用異步重試,并用本地消息表保障消息的可靠性,解決了阻塞式重試帶來的問題,在日常開發(fā)中比較常見。

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

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


消息過期

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

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

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

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

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

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

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

如下示例場景:

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

這個(gè)無用的消息,需要消息服務(wù)去確認(rèn)這個(gè)消息是否執(zhí)行成功,沒有則刪除,有繼續(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)處理邏輯來確認(rèn)業(yè)務(wù)是否成功。

總結(jié)

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

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

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

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

最后,關(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

推薦閱讀:

世界的真實(shí)格局分析,地球人類社會(huì)底層運(yùn)行原理

企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

【中臺(tái)實(shí)踐】華為大數(shù)據(jù)中臺(tái)架構(gòu)分享.pdf

華為的數(shù)字化轉(zhuǎn)型方法論

華為如何實(shí)施數(shù)字化轉(zhuǎn)型(附PPT)

超詳細(xì)280頁Docker實(shí)戰(zhàn)文檔!開放下載

華為大數(shù)據(jù)解決方案(PPT)


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

手機(jī)掃一掃分享

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

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩高清区| 老女人操逼视频| 国产福利视频| 91香蕉国产在线观看| 色婷婷欧美| 无码人妻一区二区三区蜜桃视频| 青草一区| 天天躁日日躁狠狠| 中文字幕无码网站| 四季AV一区二区夜夜嗨| a在线免费观看| 91视频在线看| 狼人综合影院| 综合伊人大香蕉| 中文字幕在线电影| 91人人视频| 久久国产性爱| 91视频观看| 九热大香蕉| 开心五月色婷婷综合开心网| 成人无码精品亚洲| 天天干妹子| 99热最新在线| 老熟女痒到不行-ThePorn| 日韩欧美在线观看视频| 亚洲综合网在线| 中文字幕av一区| 人人草大香蕉| 国产欧美一区二区三区在线看蜜臀| 国产一区二区三区18| 人妻无码在线观看| 日韩精品视频免费在线观看| 亚洲人妻系列| 91探花足浴店少妇在线| 无码中文视频| 北条麻妃九九九精品视频免费观看| www.re99| 无码成人午夜在线影院| 一区二区三区在线观看| 人妻少妇91精品一区黑人| 国产黄色片在线免费观看| 色天堂在线观看视频| 91高潮| 久久一区二区三区四区| 亚洲免费av在线| 强开小嫩苞一区二区三区网站| 五月开心激情网| 免费操逼网站| 中文字幕观看| 狼友在线播放| 亚洲午夜精品视频| 在线播放亚洲| 中文字幕在线无码观看| 999国产视频| 亚洲综合色婷婷| 色色色色网| 中文四区| 亚洲精品97久久中文字幕| 亚洲AV官方网站| 欧美性性性| 四川婬妇BBw搡BBBB搡| 五月婷婷中文| 97人妻碰碰中文无码久热丝袜| 18成人网站在线观看| 黄色在线视频网站| 国产视频福利| 蜜臀AV一区二区| 九九热热| 成人福利免费视频| jjzz国产| 午夜免费播放观看在线视频| 熟女国产| 刘玥91精品一区二区三区| 97人妻人人澡人人| 日韩中文字幕无码中字字幕| 亚洲av网站| 色五月欧美| 亚洲天堂一区二区| 天天干少妇| 69AV无码| 国产熟妇搡BBBB搡BBBB搡| 亚洲激情黄色| 少妇在线观看| 三级片男人的天堂| 国产精品99久久久久的广告情况| 午夜精品久久久久久久久无码99热 | 啪啪人妻| 国产91探花精品一区二区| 亚洲无码在线视频播放| 亚洲无码在线观看视频| 女生自慰网站免费| 久久丝袜| 激情婷婷色五月| 黄片51| 人妻少妇精品| 天堂国产一区二区三区| 日韩欧美小视频| 国产女同在线观看| 无码免费视频在线观看| 亚洲日韩网站在线观看| 欧美国产乱伦| 欧美性爱在线观看| 国产成人精品一区二区三区视频| 久久久亚洲无码| 蜜芽成人精品久久久视频| 爱爱黄色视频| 午夜福利av电影| 成人色色网| 日韩欧美在线免费| 亚洲做爱视频| 日本亚洲精品秘入口A片| 国产色情视频| 懂色AV无码中字幕一区| 国产一级二级三级| 四川少妇搡bbw搡bbbb| 麻豆mdapp03.tⅴ| 少妇性受XXXX黑人XYX性爽 | 在线观看中文字幕| 亚洲区一| 欧美色一级| 国产成人视频免费观看| 亚洲一区图片| 青青草成人在线| 色国产在线| 日本黄色免费网站| 超碰93| 在线观看2区| a黄色片| 国产性精品| 色天堂网站| 国产精品嫩草久久久久yw193| 亚洲精品视频无码| 成人免费网站在线| 国产激情视频在线免费观看| 国产亲子乱XXXXinin| 国产波霸爆乳一区二区| 亚洲vs无码秘蜜桃少妇| 91人人操人人| 天天色图片| 日韩黄页网站| 成人久久综合| 成人网一区二区| 丰满人妻一区二区三区蜜桃视频 | 中文字幕内射| 日韩av三级在线观看| 97日日| 蜜乳AV一区二区三区| 久久久久无码精品亚洲日韩| 欧美多人| 芳芳的骚逼| 亚洲中文字幕一| 亚洲区在线播放| 欧美在线a| 黄网站在线免费| 五月丁香啪啪啪| 午夜福利黄| 青娱乐亚洲视频在线| 欧美日韩激情| 亚洲无码1区| 色五月婷婷五月天激情| 无码av网站| 台湾毛片| 成人777777| 专区无日本视频高清8| 三级黄片网站| 夜夜狠狠躁日日| 国产视频无码| 性爱视频小说| 亚洲性图第一页| 国产三级片网址| 久草视频播放| 中文字幕无码综合| 日韩小视频| 99久久99久久| 少妇搡BBBB搡BBB搡18禁| 国产中文字幕在线| 欧美一级特黄A片免费看| 午夜试看120秒体验区的特点| 亚洲视频免费观看| 中文字幕免费看| AV四虎| 亚洲国产av一区| 蜜桃精品视频| 午夜蜜桃人妻一区二区| 欧美插插| 国产美女精品久久AV爽| 国产成人精品视频免费| 黄色电影A| 2022天天干| 国产美女自拍| 人妻精品一区二区三区| 先锋资源av在线| 精品国内视频| 人妻少妇被猛烈进入中文字幕| 欧美人操逼| 成人久久久久一级大黄毛片中国 | 加勒比精品| 无码人妻精品一区二区三区蜜臀百度 | 国产成人小电影| 色婷婷一区二区三区四区五区精品视 | 激情AAA| 婷婷视频在线观看| 国内精品一区二区三区| 北京熟妇搡BBBB搡BBBB电影 | 罗莉AV| 激情久久AV一区AV二区AV三区| 超碰在线人人干| 黄色三级片网站| 成人激情综合网| 成人久久久久一级大黄毛片中国| 欧美日在线观看| 美女AV网站| 丝瓜视频污APP| 四川BBBB擦BBBB| 天堂中文资源在线| 男人在线天堂| 黄色无码av| 午夜视频网站| 亚洲AV电影在线| 西西444WWW无码视频软件| A亚洲天堂| 秋霞午夜福利| 影音先锋亚洲资源| 超碰97久久| 蜜桃av一区二区三区| 在线天堂999| 大香蕉青青| 中文字幕自拍偷拍| 一级黄色录相片| 手机在线小视频| 大香蕉网址| 人人妻人人澡人人爽人人| 五月天狠狠操| 国产精品国产精品国产专区不| 欧美1区2区| 99爱免费视频| 影音先锋色AV| 日韩在线女优天天干| 色噜噜狠狠一区二区三区300部| 亚洲中文字幕日本| 青青草无码成人AV片| 亚洲无码性爱| 五月婷婷五月天| 亚洲精品免费视频| 操逼视频免费在线观看| 91精品国产91久久久久久久久久 | 中文无码高清在线| 日本道在线视频| 黄色片在线免费观看| 蜜臀久久99精品久久久电影| 五月综合久久| 水蜜桃一曲二区| 91精品综合| 黄色片A片| 欧美强开小嫩苞| 国产h视频在线观看| 国产日逼网站| 91无码秘蜜桃一区二区三区-百度 精品人妻一区二区三区在线视频不卡 | 日韩午夜成人电影| 99热都是精品| 日本精品国产| 亚洲无码福利| 青青草手机视频| 国产精品A片守望| 免费黄色成人视频| 亚洲天堂精品在线观看| 深爱五月婷婷| 亚洲一级av| 高清无码毛片| 久久狠| 91无码成人视频| 中国一级黄色A片| 人妻精品一区二区在线| 三级高清无码视频| 欧美系列在线| 亚洲色图第一页| 成人av免费观看| 国产成人无码精品| 超碰在线无码| 九九热国产视频| 亚洲欧美日韩久久| 成人视频一区二区| 日本无码嫩草一区二区| 伊人黄片| 一本免费视频| 日韩vA| 亚洲精品秘一区二区三线观看| 国产怡红院| 91中文在线| 爱爱一区| 91久久久久| 日韩小视频| 91精品婷婷国产| 欧美人人插| 中国老熟女2老女人| 日本在线免费视频| 国产嫩草视频| 毛片在线免费| 欧美一级aaa| 人妻久久久| 在线中文字幕av| 国产欧美在线观看| 日日碰狠狠| av不卡免费观看| 亚洲三级国产| 简单AV网| 久久精品久久久久久久| av无码免费| 最新国产精品| 春宵福利导航| 在线免费观看毛片| 狠狠操网站| 辽宁模特张雪馨视频最新| 成人精品A片免费网站| 乱伦一区二区三区| 日韩欧美国产精品综合嫩V| 麻豆激情| 91黄色视频在线观看| 亚洲中文字幕人妻。| 国产免费啪啪视频| 亚洲成人AV电影| 国产专区在线| 欧美黄色片| 色天堂色男人| 欧美亚洲国产一区二区三区| 一本色道久久综合无码| 亚洲AV无码精品| 色逼视频| 操一操干一干| 九九内射| 无码爱爱| 综合网久久| 欧美区在线观看| 午夜福利123| 黄色电影天堂| 性无码一区二区三区| 精品国产va久久久久久| 中文字幕北条麻妃| 亚洲成人AV电影| 嫩草在线视频| 亚洲性精| 亚洲AV毛片成人精品网站| 精品国产久| 亚洲69| 日韩无码精品AV| 国产九九九视频| 亚洲性爱一级片| 黄色片免费观看| 国产一级黄色A片| 欧美日韩无码视频| 成人做爰黄AAA片免费直播岛国| av资源在线| 在线看的av| 青青草社区| 欧美黄片在线免费观看| 亚洲精品成人无码熟妇在线| 日本一级婬片免费放| 人人摸人人操人人| 人妻少妇一区二区| 色婷婷激情综合网| 人人妻人人色| 韩日无码人妻| 亚洲中文字幕色| 欧美高清性XXXXHDvideosex| 国产美女一级特黄大片| 天堂网av2025| 啪啪网站免费| 麻豆国产成人AV一区二区三区| 强伦轩一区二区三区在线观看| 精品国产AⅤ麻豆| 无码成人视频| 久操视频免费看| 国产精品扒开腿做爽爽爽A片唱戏 中文字幕一区二区三区精华液 | 日本色网站| 免费无码| 无码精品一区二区在线| 女人的天堂AV| 91天天在线| V在线| 欧美一级在线观看| 91精品国产一区三一| 天天人人精品| 97无码人妻一区二区三区| 在线色网站| 五月综合激情| 日韩主播在线| 作爱网站| 亚洲日韩中文字幕在线| 亚洲欧美在线一区| 超碰97av| 中文字幕av在线观看| 亚洲成人精品一区| 午夜无码精品一区二区三区99午| 日韩大片免费观看| 欧美操逼在线观看| 影音先锋天堂| 婷婷在线影院| 成人三级毛片| 97国产精品| 免费一区视频| 国产一级片在线播放| 国外亚洲成AV人片在线观看| 国产口爆在线观看| 在线观看日韩三级片av| 国产麻豆精品成人免费视频| 一级黄色片免费看| 一区二区三区水蜜桃| 老熟女视频| 日本黄色a片| 精品中文字幕在线观看| 狼色视频| 日韩人妻无码专区| 真实白嫖91探花无码| 色天堂影院| 天天爽夜夜爽夜夜爽精品| 成人在线观看网站| 成人网中文字幕| 大香蕉亚洲| 日本精品在线播放| 亚洲三级网站| 日本AAAA片| 雾水情缘电影港片| av天堂无码| 免费在线性爱视频| 91小视频| 日日夜夜天天综合| 99热免费在线| 亚洲午夜无码久久久| 神马午夜福利视频| 日韩图色| 五月天av在线观看| 国产原创精品| 人人艹人人艹| 日逼天堂| 在线观看免费黄网站| 亚洲色图欧美| 少妇bbb| 成人h网站在线观看| 日韩一级高清| 少妇性受XXXX黑人XYX性爽| 人妻视频网站| 日韩无码操逼| 一本一道vs波多野结衣| 超碰一级片| 国产主播AV| 青青草国产| 国产无码AV在线| 麻豆91久久久| 怡春院av| 九九视频网| 国产浮力草草| 免费无码国产| 国产一级婬乱A片| 精品无码产区一区二| 美日韩视频| 黄色片在线视频| 国产做受91一片二片老头| 91丨九色丨熟女泻火| 国产无码成人电影| 一级黄色电影免费看| 中文字幕无码影院| 激情男人网| 三级视频网| 日韩一级片在线| 日韩精品在线免费视频| 少妇bbw搡bbbb搡bbbb| 国产一级片无码| 97人人爱| 熟女中文字幕| 国产美女一级真毛片酒店| 国产精品成人69| 亚洲网站在线| 天天超碰| 香蕉污视频| 国产av天堂| 久久伊人综合| 中文字幕人妻精品一区| 日韩aaaaaa| 2017天天干天天射| 亚洲无码高清在线观看| 精品国产偷拍| 老太色HD色老太HD.| 日韩中文在线观看| 一区二区水蜜桃| 操女人的网站| 青青在线| 日韩高清av| 在线观看无码高清视频| 北条麻妃无码在线| 操片| 亚洲熟妇AV日韩熟妇在线| 国产AV高清| 逼特逼视频在线观看| 777三级| 制服丝袜一区| 伊人久久AV诱惑悠悠| 熟女无码| AV在线精品| 色婷婷一区二区三区久久午夜| 丰满熟妇人妻无码视频| 国产黄色片免费| 中文字幕乱伦性爱| 激情黄色五月天| 亚洲无码av在线播放| 欧美高清无码视频| 182在线视频| 老熟女搡BBBB搡BBBB视频| 日韩vA| 中文字幕浅井香舞被黑人俘虏| 干片网| 内射极品美女| 亚洲无码高清一区| 激情五月婷婷色| 国产成人AV一区二区三区在线观看| 91最新视频| 肏逼网站在线观看| 91麻豆免费视频网站| 少妇搡BBBB搡BBBB毛多多| 北条麻妃人妻中文无码| 视频在线观看一区| 亚洲40p| 岛国AV片| 竹菊传媒一区二区三区| 伊人影院在线看| 狠狠肏视频| 免费欧美三级片| 中文无码日韩| 国产性爱精品影片免费看| 欧美操比视频| 亚洲中文字幕网| 午夜成人av| 波多野结衣无码电影| 开心深爱激情网| 黄色毛片一级| 成人AV十八亚洲二区| 2019人人操| а中文在线天堂精品| 青青草小视频| 日韩专区中文字幕| 免费在线观看视频a| 少妇人妻在线| 91精品午夜少妇| 极品久久久久| AV国产在线观看| 影音先锋色色| AV777777| 无码欧美精品一区二区| AAA一区二区三区| 日韩美女在线视频| 国产高清激情| 久热中文在线观看精品视频 | 男人视频网| 极品少妇av| 大香蕉75在线| 精品国产女人| а中文在线天堂精品| 久久黄色精品视频| 国产又猛又黄又爽| 懂色AV一区二区三区国产中文在线 | 欧美精品区| 逼特逼视频在线观看| 日本a片在线观看| 国产精品国产精品国产专区| 天天色情| 五月婷婷一区| 在线观看国产黄色| 亚洲日本在线观看| 亚洲免费观看视频| 操东北女人| 最新午夜综合福利视频| 欧美激情无码炮击| 日韩性爱视频在线播放| 亚洲视频在线观看播放| 久久久久久久久免费视频| 天天日天天噜| av久操| 精品视频网| 国产成人性爱| av婷婷在线| 果冻传媒一区二区三区| 91精品国产欧美一区二区成人| 无码一级片| 日韩视频免费观看高清完整版在线观 | A级视频免费观看| 天堂网色| 欧美日P| 欧美性猛交XXXX乱大交| 日本高清一区| 国内自拍偷拍| yOujiZZ欧美精品| 一级片黑人| aV无码av天天aV天天爽第一| 亚洲AV秘无码不卡在线观看 | 人妻免费视频| 99热免费| 亚洲高清视屏| 天堂黄片| 丁香六月婷婷激情| 成人免费无码激情AV片| 黄色A片网址| 18性XXXXX性猛交| 亚洲国产精品精JIZZ老师| 美日韩一区| 国产精品一色哟哟哟| 日日躁夜夜躁| 中国一级黄色毛片| 美日韩免费视频| 大鸡吧在线视频| 欧美精品综合| 人操人| www.zaixianshipin| 乱子伦一区二区三区视频在线观看| free性欧美| 欧美日韩免费观看视频| 中国美女一级黄片| 隸則av| 亚洲成人在线无码| 欧美性爱xxxx| 日韩中文欧美| 91精品久久久久久久| 激情一区| 国产一级黄色毛片| 青青草在线观看视频| 一级欧美黑人大战白妞| 青娱乐伊人| 西西444WWW大胆无视频软件亮点| 亚洲系列| 伊人性视频| 欧美第一网站| 国产伦精品一级A片视频夜夜| 国产欧美日韩在线视频| 精品人妻午夜一区二区三区四区| 另类罕见稀奇videos| 人妻大香蕉| 超碰在线观看2407| 在线观看日韩精品| 久久99国产精品| 国产黄A片免费网站免费| 一级AA片| 日韩成人无码特集| 精品无码视频在线| 大黑人荫蒂BBBBBBBBB| 农村A片婬片AAA毛片| 91熟女首页| 国产在线性爱视频| 嫩苞又嫩又紧AV无码| 男女啪啪免费网站| 三级AV在线免费观看| 先锋AV资源网| 成人网站三级片| av无码网站| 91少妇精品| 美女网站视频黄| 国产—a毛—a毛A免费看图| 成人网站视频在线观看| 日韩做爱| 三级黄色免费网站| 午夜性爱剧场| 人妻电影亚洲av| 人人操人人看人人| 日本狠狠操| 无码一道本| 久草大香蕉在线视频| 夫妻-ThePorn| 婷婷激情久久| 国产人国产视频成人免费观看… | 91探花在线播放| 无码精品人妻一区二区三区漫画 | 久草美女| 久久精品99视频| 欧美成人网站免费在线观看| 一本色道久久综合狠狠躁的推荐 | 日韩欧美精品在线观看| 日韩性爱视频| 成人H在线| 69视频国产| 高清无码色播| 影音先锋中文字幕av| 久久久久久久亚洲| 免费人成年激情视频在线观看| 三级在线网站| 特级毛片www| 国产乱码| 天天艹夜夜| 色综合天天| 人妻中文字幕av| 男人天堂色男人| 国产剧情一区二区av在线观看| 国产成人中文字幕| 国产一二三视频| 国产一级黄色毛片| 国产一级二级视频| 欧美一级黄色片| 欧美性猛交ⅩXXX无码视频| 伊人久久电影| 香蕉一级视频| 日韩AV一二三| 黄色视频| 又黄又爽视频| 江苏妇搡BBBB搡BBBB小说| 性猛交AAAA片免费观看直播| 成人性爱免费视频| 熟女人妻一区二区三区| 日本中文字幕亚洲| 高清无码毛片| 一级A片黄色| 亚洲无码一| 激情视频在线播放| 三级片无码视频| 国产寡妇亲子伦一区二区三区四区 | 大香蕉福利在线| 最新国产视频| 午夜精品久久久久久久99老熟妇| 日本一级黄| sesese999| 国产日韩欧美久久| 国产精品18禁| 西西444大胆无码视频| 人人射人人爱| 无码在线免费观看| 一区二区成人视频| 日本不卡一区二区| 蜜臀av网| 自拍偷拍亚洲| 国产AV直播| 婷婷精品国产a久久综合| 香蕉91| 亚洲一区二区在线免费观看| www亚洲| 国产高清Av| 色婷婷在线视频播放| av香蕉| 免费黄色小视频在线观看| 国产亲子乱XXXXinin| 久9久9| 亚洲专区中文字幕| 日本女人高潮视频| 国产毛片一区二区| 偷窥丶亚洲丶熟女| AAAA毛片| 一级A毛片| 无码人妻一区二区一牛影视| 亚洲热在线视频| 三级片在线视频| 91九色TS另类国产人妖| 91大香蕉| 最近中文字幕在线中文字幕7| 欧洲毛片基地c区| 超碰在线天天干| 国产欧美日韩综合精品| 国产无套视频| 波多野结衣AV在线观看| 精品欧美一区二区三区| 91人人人人| 国产偷拍精品视频| 亚洲中文字幕影院| 人人爱久久| 国产伦子伦一级A片免费看小说| 色国产在线视频| 女同二人91| 国产一级二级在线观看| 无码做爰欢H肉动漫网站在线看| 91久久国产性奴调教| 久久无码专区| 日韩无码中文字幕| 特級西西444WWw高清大膽| 精品成人Av一区二区三区| 91成人无码看片在线观看网址| 青青草国产在线视频| 強姧伦一区二区三区在线播放| 特级西西444www无码视频免费看| 性感欧美美女| 久久AV秘一区二区三区水生| 欧美日韩色视频| 日韩无码视频一区| 日韩美女在线| 中文字幕一级片| 性爱视频网址| 免费做a爰片77777| 精品久久三级片| 日韩三级小说| 丁香婷婷六月天| 天天久久毛片| 毛片毛片毛片| 日韩中文字码无砖| 日韩无码精品一区| 精品人妻一区二区三区四区不卡在| 国产棈品久久久久久久久久九秃| 国产一区二区波多野结衣| 婷婷色网| 丰满老妇高潮一级A片| 蜜臀久久精品久久久久| 国产浮力草草| 午夜无码熟妇丰满人妻| 在线观看成人18| 西西444WWW无码大胆在线观看| 在线大香蕉| 在线免费看黄色视频| 黄色视频网站观看| 亚洲欧洲久久电影| 88AV在线| 中文字幕在线中文| 国产wwwww| 人人爱人人操| 中文字幕一区二区6页| 狼人一区二区| 蜜臀久久99精品久久久久久宅男| 人人操人人色| 亚洲aa| 日韩欧美成人在线观看| 粉嫩99国产精品久久久久久人妻 | 97色色五月天| 91在线永久| 亚洲美穴| 97日韩天堂| 在线免费观看黄| 欧美伦妇AAAAAA片| 精品成人在线观看| 色淫视频| 亚洲成人免费视频| 日韩在线精品| 懂色AV一区二区三区国产中文在线| 亚洲国产精品尤物yw在线观看 | 人人色人人干| 日啪| 国产精品久久久久久久牛牛| 成人无码高清在线观看| 91av在线播放| 日本人人操| 亚洲特级毛片| 91精品国产一区二区三区| 思思热在线视频精品| 天天撸天天干天天日| 日本免费一区二区三区| 国产在线观看av| 欧美性色网| 国产人妖网站| 双腿张开被9个男人调教| 国产乱伦片、| 男人的天堂在线| 欧美成人激情| 久久久亚洲熟妇熟女| 久久蝌蚪窝| 久久综合操| 国产超碰青青草| 精品国产AV色一区二区深夜久久 | 色色色99| 在线亚洲免费| 中国国产乱子伦| 高清中文字幕在线A片| 人人妻人人操人人干| 国产人妻人伦精品1国产丝袜| 大香蕉操逼视频| 欧美精品一二三| 日本亚洲黄色视频| 国产无码中文| 99久久久精品| 国产一在线| 天天看天天爽| 中国a一片一级一片| 五月天色色图| 91人妻一区二区三区无不码超满| 米奇7777狠狠狠狠| 91AV视频| 乱伦五月天| 884aa四虎影成人精品一区| 国精品91无码一区二区三区在线 | 色色网站免费| 91在线视频| 亚洲三级无码| 人人操免费| 一道本一区二区| 九九性爱视频| 国产精品无码AV| 成人三级片在线| 极品人妻疯狂3p超刺激| 国产内射无码| 日本无码高清| 亚洲无码精品在线观看| 夜夜撸网站| 岛国无码破解AV在线播放| 日本a在线观看| A在线| 亚洲A级片| 日韩精品成人无码免费| 欧美女人操逼| 天天色情| 久久免费视频精品| 欧美色色色色色色| 日本免费a片| 69AV在线视频| 爱爱91| 亚洲AV无码国产精品| 亚洲日韩精品秘在线观看| 成人无码在线播放| 南京搡BBBB搡BBBB| 成人免费黄片| 色色一区| 逼逼AV网站-日韩电影| 肏逼黄色一级|