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

如何將Saga建模為狀態(tài)機(jī)

譯文
開發(fā) 前端
在微服務(wù)架構(gòu)中,單個服務(wù)內(nèi)的事務(wù)通常使用ACID事務(wù)來提供數(shù)據(jù)一致性。

[[418363]]

【51CTO.com快譯】在微服務(wù)架構(gòu)中,單個服務(wù)內(nèi)的事務(wù)通常使用ACID事務(wù)來提供數(shù)據(jù)一致性。

介紹

本文描述了在微服務(wù)系統(tǒng)中管理分布式和長時間運(yùn)行的事務(wù)的架構(gòu)和概念框架。作者發(fā)表此文旨在與開發(fā)社區(qū)分享經(jīng)驗,表達(dá)對事件驅(qū)動架構(gòu)的熱情,并促進(jìn)對復(fù)雜事件處理分布式系統(tǒng)的討論興趣。

概述

微服務(wù)在其真正的場景中是一個分布式系統(tǒng)。一個事務(wù)被分發(fā)到多個服務(wù),這些服務(wù)被順序或并行調(diào)用以完成整個事務(wù)。在微服務(wù)架構(gòu)中,單個服務(wù)中的事務(wù)使用ACID事務(wù)來提供數(shù)據(jù)一致性。然而,面臨挑戰(zhàn)在于處理跨多個服務(wù)的事務(wù),在某些情況下需要很長時間才能完成。在這種情況下,應(yīng)用程序必須使用復(fù)雜的機(jī)制來管理事務(wù)。而ACID是指數(shù)據(jù)庫管理系統(tǒng)(DBMS)在寫入或更新資料的過程中,為保證事務(wù)是正確可靠的,所必須具備的四個特性:原子性、一致性、隔離性、持久性。

設(shè)想

考慮一個使用微服務(wù)架構(gòu)實現(xiàn)的航空公司航班座位預(yù)訂簡單的場景。在這個場景中,一個微服務(wù)來鎖定預(yù)訂座位,另一個微服務(wù)接受付款,還有一個微服務(wù)在付款之后解鎖并分配席位,每個微服務(wù)都實現(xiàn)一個本地事務(wù)。旅客要成功完成航班預(yù)訂流程,必須完成所有三個步驟。如果任何一個步驟失敗,則必須回滾之前完成的所有步驟。由于整體事務(wù)的邊界跨越多個服務(wù)和數(shù)據(jù)庫,因此被認(rèn)為是一個分布式事務(wù)。

考慮通過微服務(wù)方法實現(xiàn)另一個訂單實現(xiàn)場景。工作流事務(wù)從訂單服務(wù)開始,首先創(chuàng)建訂單,隨后采用另一個服務(wù)進(jìn)行付款,接下來為交易創(chuàng)建發(fā)票,然后進(jìn)行發(fā)貨,最后交付訂單并完成工作流,并循環(huán)執(zhí)行每個本地事務(wù)。這里的訂單處理本質(zhì)上是分布式的,完成工作流程可能需要幾天到幾周的時間。這樣的事務(wù)可以稱為長時間運(yùn)行的事務(wù),因為不能使用傳統(tǒng)的ACID事務(wù)語義一次性執(zhí)行所有步驟。

挑戰(zhàn)

隨著微服務(wù)架構(gòu)的出現(xiàn),分布式事務(wù)管理存在兩個關(guān)鍵問題:

  • 原子性:原子性意味著事務(wù)中的所有步驟都必須獲得成功,或者如果一個步驟失敗,則應(yīng)該回滾之前完成的所有步驟。但是在微服務(wù)架構(gòu)中,一個事務(wù)可以由不同微服務(wù)處理的多個本地事務(wù)組成。因此,如果其中一個本地事務(wù)失敗,那么如何回滾之前成功完成的事務(wù)?
  • 隔離性:事務(wù)隔離指定對事務(wù)中的語句可見的數(shù)據(jù)量,特別是當(dāng)多個服務(wù)調(diào)用同時訪問同一數(shù)據(jù)源時。如果來自任何一個微服務(wù)的對象持久地保存在數(shù)據(jù)庫中,而另一個請求同時讀取同一個對象,那么該服務(wù)應(yīng)該提交舊數(shù)據(jù)還是新數(shù)據(jù)?

為了解決這些問題并提供有效的事務(wù)管理能力,可以采取兩種方法:一是兩階段提交(2PC) ;二是Saga。

(1)兩階段提交(2PC)

保持跨多個服務(wù)的數(shù)據(jù)一致性的傳統(tǒng)方法是使用分布式事務(wù),其事實標(biāo)準(zhǔn)是兩階段提交(2PC)。兩階段提交(2PC) 確保事務(wù)中的所有參與者或者提交或者回滾。它分為兩個階段工作;階段1稱為準(zhǔn)備階段,控制節(jié)點詢問所有參與節(jié)點是否準(zhǔn)備好提交;階段2稱為提交階段,如果所有節(jié)點都回答是肯定的,則控制節(jié)點要求它們提交,否則回滾。

盡管兩階段提交(2PC)可以幫助在分布式系統(tǒng)中提供事務(wù)管理,但它也會成為單點故障,因為事務(wù)的責(zé)任落在了協(xié)調(diào)器上,并且這種協(xié)調(diào)器的典型實現(xiàn)本質(zhì)上是同步的,這會導(dǎo)致減少未來的吞吐量。因此,兩階段提交(2PC)還存在以下不足:

  • MongoDB和Cassandra等現(xiàn)代NoSQL數(shù)據(jù)庫不提供支持。
  • Apache Kafka等現(xiàn)代消息代理不提供支持。
  • 同步IPC降低了可用性。
  • 所有參與者都必須在場。

(2)Saga

為了解決在微服務(wù)架構(gòu)中維護(hù)數(shù)據(jù)一致性這一更復(fù)雜的問題,應(yīng)用程序必須使用基于松耦合異步服務(wù)概念的不同機(jī)制。這就是Saga發(fā)揮重要作用的地方。

Saga是一種架構(gòu)模式,它提供了一種優(yōu)雅的方法來實現(xiàn)跨多個服務(wù)的事務(wù),在本質(zhì)上是異步和反應(yīng)式的。因此,Saga可以定義為事件驅(qū)動的本地事務(wù)序列,其中每個本地事務(wù)更新數(shù)據(jù)庫,并發(fā)布命令或事件以觸發(fā)Saga中的下一個本地事務(wù)。如果本地事務(wù)因為違反業(yè)務(wù)規(guī)則而失敗,那么Saga將執(zhí)行一系列補(bǔ)償事務(wù),這些補(bǔ)償事務(wù)將撤消先前本地事務(wù)所做的更改。

Saga實現(xiàn)確保執(zhí)行所有事務(wù)或撤消所有更改,從而提供原子性保證。將Saga設(shè)計為狀態(tài)機(jī)模型將提供處理隔離的對策。

Saga模式如何提供幫助

使用微服務(wù)架構(gòu),單個業(yè)務(wù)流程將多個微服務(wù)聚合在一起以提供整體解決方案。使用微服務(wù)架構(gòu)實現(xiàn)ACID(原子性、一致性、隔離性、持久性)事務(wù)非常困難,并且在某些情況下是不可能的。

例如,在以上提到的航班座位預(yù)訂場景中,具有預(yù)訂座位功能的微服務(wù)無法實現(xiàn)支付數(shù)據(jù)庫的鎖定,因為它在大多數(shù)情況下可能是外部服務(wù)。但是仍然需要某種形式的事務(wù)管理,這種事務(wù)被稱為BASE事務(wù):基本可用、軟狀態(tài)和最終一致。

必須采取補(bǔ)償措施來恢復(fù)作為事務(wù)一部分發(fā)生的任何事情。以下是Saga如何為航班預(yù)訂座位場景圖:

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

當(dāng)Saga的一個步驟由于違反業(yè)務(wù)規(guī)則而失敗時,Saga必須通過執(zhí)行補(bǔ)償事務(wù)撤消先前步驟所做的更新。假設(shè)Saga的第(n+1)個交易失敗,則必須撤銷之前n個事務(wù)的影響。

從概念上來說,每個步驟Ti都有一個相應(yīng)的補(bǔ)償事務(wù)Ci,它可以消除Ti的影響。為了消除前n個步驟的影響,Saga必須以相反的順序執(zhí)行每個Ci。如圖所示,其步驟順序為T1…Tn、Cn…C1。

在這一示例中,Tn+1步驟失敗,這需要撤消T1…Tn步驟。Saga以與遠(yuǎn)期事務(wù)相反的順序執(zhí)行補(bǔ)償事務(wù):Cn…C1。Cis測序的機(jī)制與Tis測序沒有任何區(qū)別。Ci的完成必須觸發(fā)Ci-1的執(zhí)行。

Pivot事務(wù)和Retryable事務(wù)

下表顯示了Saga在航班座位預(yù)訂中每個步驟的補(bǔ)償事務(wù),其三個步驟被稱為補(bǔ)償事務(wù),因為它們之后是可能失敗的步驟。在此需要注意的是,并非所有步驟都需要補(bǔ)償事務(wù)。

Saga模式中還有另外兩種事務(wù)類型;一個是Pivot事務(wù),就像Saga中的一個成功/失敗點。如果Pivot事務(wù)提交,則Saga將一直運(yùn)行到結(jié)束。另一個是Retryable事務(wù),跟隨Pivot事務(wù)并保證事務(wù)成功。

Saga保證

Saga保證以下兩種結(jié)果之一: Saga中的所有請求或者都成功完成,或者執(zhí)行一部分請求及其補(bǔ)償請求。而請求和補(bǔ)償請求都需要遵循一定的原則:

  • 單個事務(wù)可以中止,并且必須是冪等的。
  • 補(bǔ)償事務(wù)必須是冪等的、可交換的,并且不能中止(必須無限期重試或在必要時通過人工干預(yù)解決)。

Saga協(xié)調(diào)策略

Saga執(zhí)行協(xié)調(diào)器(SEC)是實現(xiàn)成功的Saga流程的核心組件。Saga協(xié)調(diào)可在以下方面實施:

  • 編排(choreography)——在Saga參與者之間分配決策和排序。換句話說,參與者在沒有集中控制點的情況下交換事件,每個本地事務(wù)都會發(fā)布觸發(fā)其他服務(wù)中的本地事務(wù)的域事件。

盡管Saga編排是簡單且可靠的基于事件的通信,但它只能處理簡單用例,并且存在一些限制,這使其無法成為管理分布式事務(wù)的理想選擇。而基于編排的Saga難以理解,經(jīng)常會產(chǎn)生循環(huán)依賴,并且Saga參與者之間存在緊密耦合的風(fēng)險。

  • 協(xié)調(diào)(orchestration)——將Saga的協(xié)調(diào)邏輯集中在Saga協(xié)調(diào)器類中。Saga協(xié)調(diào)器向Saga 參與者發(fā)送命令并對事件的結(jié)果采取行動。協(xié)調(diào)器執(zhí)行Saga請求,存儲和解釋每個任務(wù)的狀態(tài),并通過補(bǔ)償事務(wù)處理故障恢復(fù)?;趨f(xié)調(diào)器的Saga更適合復(fù)雜的事件處理,并使它們成為管理分布式事務(wù)的一種理想選擇。

Saga協(xié)調(diào)器(Saga Orchestrator)

正如Saga“協(xié)調(diào)”模式所暗示的那樣,有一個單獨的協(xié)調(diào)器組件負(fù)責(zé)管理整個流程工作流。在使用編制時可以定義一個協(xié)調(diào)器類,它的唯一職責(zé)是告訴Saga參與者要做什么。Saga協(xié)調(diào)器使用命令/異步回復(fù)式交互與參與者進(jìn)行通信。為了執(zhí)行Saga步驟,它會向參與者發(fā)送命令消息,告訴它要執(zhí)行什么操作。在Saga參與者執(zhí)行操作后,它會向協(xié)調(diào)器發(fā)送回復(fù)消息。然后協(xié)調(diào)器處理這一消息并確定下一步要執(zhí)行的Saga步驟。

上圖顯示了航班座位預(yù)訂采用Saga的基于協(xié)調(diào)器的過程。Saga由Saga協(xié)調(diào)器組件編排,該組件使用異步請求/響應(yīng)調(diào)用Saga參與者。Saga協(xié)調(diào)器跟蹤進(jìn)程并通過命令組件向Saga參與者發(fā)送命令操作,例如座位鎖定服務(wù)(Seat Blocking Service)和付款服務(wù)(Payment Service),并通過事件處理器從其回復(fù)通道讀取回復(fù)消息,然后確定下一個步驟,采用Saga協(xié)調(diào)器預(yù)訂航班座位的步驟如下:

(1)FrontEnd UI向Saga協(xié)調(diào)器發(fā)送座位預(yù)訂請求。

(2)Saga協(xié)調(diào)器啟動一個新的工作流并向座位鎖定服務(wù)(Seat Blocking Service)發(fā)送一個座位鎖定命令(Seat Blocking Command)。

(3)座位鎖定服務(wù)(Seat Blocking Service)處理命令并回復(fù)一個座位鎖定事件(Seat Blocked Event)。

(4)Saga協(xié)調(diào)器觸發(fā)工作流中的下一個動作,并向付款服務(wù)(Payment Service)發(fā)送付款請求命令(Payment Request Command)。

(5)付款服務(wù)(Payment Service)回復(fù)付款成功事件(Payment Success Event)。

(6)Saga協(xié)調(diào)器然后向座位分配服務(wù)(Seat Allocation Service)發(fā)送一個座位分配命令(Seat Allocation Command)。

(7)座位分配服務(wù)(Seat Allocation Service)回復(fù)一個座位分配事件(Seat Allocated Event)。

(8)Saga協(xié)調(diào)器結(jié)束事務(wù)并完成工作流。

但是,如果座位鎖定服務(wù)、付款服務(wù)或座位分配服務(wù)中任何一個步驟失敗,Saga航班預(yù)訂的場景可能會失敗。為了有效地管理工作流并處理故障,建議將Saga建模為狀態(tài)機(jī),因為它描述了所有可能的場景,并讓協(xié)調(diào)器確定需要執(zhí)行的操作。

作為狀態(tài)機(jī)的Saga

將Saga協(xié)調(diào)器建模為狀態(tài)機(jī)是一種有效的方式,不僅可以管理分布式事務(wù),還可以支持長時間運(yùn)行的事務(wù)。狀態(tài)機(jī)由一組狀態(tài)和一組由事件觸發(fā)的狀態(tài)之間的轉(zhuǎn)換組成。每個轉(zhuǎn)換都可以有一個動作,對于Saga來說,它是一個Saga參與者的調(diào)用。

狀態(tài)之間的轉(zhuǎn)換由Saga參與者執(zhí)行的本地事務(wù)的完成觸發(fā)。當(dāng)前狀態(tài)和本地事務(wù)的特定結(jié)果決定了狀態(tài)轉(zhuǎn)換以及要執(zhí)行的操作。因此,使用狀態(tài)機(jī)模型可以更輕松地設(shè)計、實現(xiàn)和測試Sagas。

上圖突出顯示了Saga航班預(yù)訂的狀態(tài)機(jī)模型。該狀態(tài)機(jī)由許多狀態(tài)和轉(zhuǎn)換組成,其中包括以下內(nèi)容:

  • 開放訂單(Order Open)——初始狀態(tài)。Saga在工作流開始時設(shè)置這一狀態(tài)。
  • 鎖定座位(Blocking Seat)——當(dāng)處于這種狀態(tài)時,Saga正在等待座位鎖定服務(wù)(Seat Blocking Service)來阻止預(yù)訂座位。
  • 授權(quán)付款(Authorizing Payment)——Saga正在等待來自付款服務(wù)(Payment Service)的支付授權(quán)命令的回復(fù)。
  • 分配座位(Allocating Seat)——在支付成功后等待座位分配服務(wù)(Seat Allocation Service)分配座位。
  • 反向付款(Reverse Payment)——如果座位分配失敗,Saga將發(fā)送付款退款請求。
  • 解鎖座位(Unblock Seat)——如果支付授權(quán)失敗,Saga將發(fā)送一個失敗事件來解除對座位的封定。
  • 訂單完成(Order Completed)——表示Saga成功完成的最終狀態(tài)。
  • 訂單被拒絕(Order Rejected)——表示訂單被其中一位參與者拒絕的最終狀態(tài)。

最后,Saga工作流可以重新設(shè)計為Saga狀態(tài)機(jī)。Saga協(xié)調(diào)器鏈接到一個狀態(tài)機(jī),它負(fù)責(zé)通過狀態(tài)管理器API管理事務(wù)狀態(tài)。除此之外,它還負(fù)責(zé)將事務(wù)狀態(tài)存儲在持久數(shù)據(jù)存儲設(shè)備中,以確保發(fā)生系統(tǒng)故障時的恢復(fù)。

因此,Saga狀態(tài)機(jī)有責(zé)任或者完成所有事務(wù),或者使系統(tǒng)處于已知狀態(tài),以便它可以確定可能執(zhí)行下一個動作狀態(tài)或補(bǔ)償活動的順序,無論發(fā)生的事務(wù)是分布的還是長期的。

好處和潛在用例

  • 更簡單的依賴關(guān)系——Saga協(xié)調(diào)器調(diào)用Saga參與者,但參與者不調(diào)用協(xié)調(diào)器。因此,協(xié)調(diào)器依賴于參與者,反之則不然,因此不存在循環(huán)依賴關(guān)系。
  • 減少耦合——每個服務(wù)都實現(xiàn)了一個由協(xié)調(diào)器調(diào)用的API,因此它不需要知道Saga參與者發(fā)布的事件。
  • 關(guān)注點分離——Saga協(xié)調(diào)邏輯在Saga協(xié)調(diào)器中實現(xiàn)本地化。域?qū)ο蟾唵危⑶也恢浪鼈儏⑴c的Saga。
  • 數(shù)據(jù)一致性——跨多個微服務(wù)保持?jǐn)?shù)​​據(jù)一致性,無需緊密耦合。
  • 開發(fā)人員體驗——設(shè)計允許開發(fā)人員只關(guān)注Saga參與者的業(yè)務(wù)邏輯,并簡化Saga協(xié)調(diào)器上有狀態(tài)工作流的實現(xiàn)。

可以執(zhí)行此類實現(xiàn)的幾個潛在用例:

(1)訂單管理系統(tǒng)

  • 電子商務(wù)
  • 送餐
  • 機(jī)票預(yù)訂
  • 酒店/出租車預(yù)訂

(2)結(jié)算交易。

指南和建議

如果組織正在設(shè)計和構(gòu)建編排器驅(qū)動的Saga以支持分布式和長時間運(yùn)行的事務(wù),則建議遵循以下準(zhǔn)則:

  • 協(xié)調(diào)器應(yīng)該只負(fù)責(zé)管理事務(wù)和狀態(tài),此處不應(yīng)添加任何業(yè)務(wù)邏輯。而業(yè)務(wù)邏輯應(yīng)該在各個服務(wù)參與者中定義。
  • 進(jìn)出協(xié)調(diào)器的所有事件和命令都應(yīng)承載事務(wù)數(shù)據(jù),而不是引用數(shù)據(jù)。
  • 使用異步樣式消息在服務(wù)之間進(jìn)行通信。
  • 如果使用消息代理(如Kafka),則實施冪等性和狀態(tài)檢查以提高彈性。
  • 適用于在CQRS和Event Sourcing架構(gòu)中設(shè)計命令端(寫入模型)。

原文標(biāo)題:Modeling Saga as a State Machine,作者:Rohit Singh

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2024-03-12 08:35:47

分布式事務(wù)中間件SeataSaga

2023-03-06 07:35:30

狀態(tài)機(jī)工具訂單狀態(tài)

2024-01-08 09:46:47

2010-06-18 12:38:38

UML狀態(tài)機(jī)視圖

2021-07-08 09:15:20

單片機(jī)編程狀態(tài)機(jī)編程語言

2013-09-03 09:57:43

JavaScript有限狀態(tài)機(jī)

2010-06-18 13:25:44

UML狀態(tài)機(jī)視圖

2024-10-10 17:46:06

2010-07-08 13:03:31

UML狀態(tài)機(jī)圖

2011-06-24 16:09:24

Qt 動畫 狀態(tài)機(jī)

2020-03-27 10:50:29

DSL 狀態(tài)機(jī)工具

2021-06-05 05:11:52

代碼狀態(tài)機(jī)邏輯

2010-07-12 15:00:56

UML狀態(tài)機(jī)視圖

2025-10-29 07:38:45

2021-04-29 09:31:05

前端開發(fā)技術(shù)

2021-09-07 06:40:26

狀態(tài)機(jī)識別地址

2017-11-21 18:05:00

云計算虛擬機(jī)遷移

2022-05-23 08:00:00

Windows 11虛擬機(jī)操作系統(tǒng)

2020-12-02 13:33:58

函數(shù)指針編程語言

2011-07-18 10:32:39

域控制器
點贊
收藏

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

精品欧美久久久| 亚洲网站在线| 欧美日本在线观看| 一区二区欧美日韩| 国产成人三级在线播放| 国产欧美日韩亚洲一区二区三区| 亚洲欧美日本精品| 国产又粗又长又爽又黄的视频| 日本在线观看高清完整版| 欧美图片激情小说| 亚洲熟妇无码久久精品| 中文乱码免费一区二区三区下载| 亚洲爱爱爱爱爱| 免费观看成人网| 黄色片网站在线| 99久久er热在这里只有精品15| 国产精品欧美一区二区| 国产精品第72页| 日韩在线欧美| 日韩精品亚洲元码| 久久精品久久99| 奇米777日韩| 亚洲大尺度视频在线观看| 色一情一乱一伦一区二区三欧美| 亚洲成人久久精品| 免费观看日韩av| 97婷婷涩涩精品一区| 黄色录像一级片| 国产videos久久| 欧美va亚洲va| 成人不卡免费视频| 裤袜国产欧美精品一区| 一区二区成人在线| 国产a级片免费看| 国产中文在线视频| 91蜜桃免费观看视频| av电影成人| 国产又粗又猛又色又| 日韩中文字幕av电影| 97视频免费观看| 一区二区视频国产| 日韩精品视频无播放器在线看| 精品一区二区在线看| 日韩av男人的天堂| 日韩欧美高清在线观看| 午夜精品久久99蜜桃的功能介绍| 色悠悠国产精品| 成都免费高清电影| 天天做夜夜做人人爱精品 | 免费成人黄色网| 色丁香久综合在线久综合在线观看| 国产精品va在线观看无码| 黄色的网站在线观看| 国产精品乱码久久久久久| 日本成人黄色| 国产在线一二三| 国产色产综合产在线视频| 欧美国产二区| 青青草视频在线观看| 91丝袜国产在线播放| 久久久久久99| 免费国产在线观看| 久久久久国产精品厨房| 日本一区二区视频| 北岛玲一区二区三区| 国产亚洲综合色| 日韩av影视| av免费在线一区二区三区| 国产女同互慰高潮91漫画| 欧美大香线蕉线伊人久久国产精品 | 欧美日韩在线精品一区二区三区激情 | 亚洲女优在线| 国产成人久久精品| 最近中文字幕av| 久久99精品视频| 114国产精品久久免费观看| 亚洲AV无码乱码国产精品牛牛| 国产成人精品一区二区三区四区 | 亚洲精品第二页| 久久久久影视| 亚洲性线免费观看视频成熟| 国产精品理论在线| 婷婷综合激情| 久久久久久久久久久91| 国产午夜免费福利| 美女视频黄免费的久久 | www.国产区| 少妇精品视频一区二区免费看| 欧美剧情片在线观看| 亚洲女则毛耸耸bbw| 日韩精品福利一区二区三区| 国产一区二区三区中文| 亚洲波多野结衣| 一本久道久久久| 国产免费一区二区三区在线能观看 | 欧美极品影院| 欧美一区二区三区四区五区 | 亚洲欧美日韩国产手机在线| 一本色道久久综合狠狠躁的推荐| 99精品视频在线看| 国产伊人久久| 精品国产一区二区三区久久久蜜月 | 中文字幕久精品免| 国产经典三级在线| 欧美在线高清视频| 国产香蕉精品视频| 欧美精品一区二区三区中文字幕 | 韩国av一区二区三区四区| 国产伦精品一区二区三区视频黑人| 免费在线超碰| 亚洲成av人影院在线观看网| 午夜视频你懂的| 欧美理伦片在线播放| 久久精品国产欧美亚洲人人爽| 九九热国产视频| 黄一区二区三区| 日本不卡久久| cao在线视频| 777亚洲妇女| 久久久久久亚洲中文字幕无码| 亚洲视频观看| 国产日韩欧美在线| 青青草在线视频免费观看| 一区二区日韩av| 亚洲精品www.| 国产一区二区亚洲| 亚州av一区二区| 亚洲xxxx天美| 亚洲欧美日本在线| 日本激情综合网| 自拍自偷一区二区三区| 久久久人成影片一区二区三区观看 | 精品sm在线观看| 波多野结衣家庭教师| 日本在线不卡视频| 久久一区免费| а√天堂资源官网在线资源| 日韩欧美你懂的| 成熟的女同志hd| 韩国精品在线观看| 一区不卡字幕| 亚洲精品伦理| 中文字幕久热精品在线视频 | 91精品欧美一区二区三区综合在 | 一区二区三区在线观看网站| 欧美成人乱码一二三四区免费| 精品少妇av| 国产精品1234| 国产理论电影在线观看| 在线视频综合导航| 小早川怜子久久精品中文字幕| 男人的天堂成人在线| 九九99玖玖| 伊人成综合网站| 亚洲欧美第一页| 无码人妻精品一区二| 国产欧美一区视频| 天天操,天天操| 欧美电影一区| 91免费国产视频| 丝袜美腿av在线| 精品国产一区久久| 日韩三级免费看| 91麻豆精品在线观看| 精品一卡二卡三卡| 日本不卡电影| 91久久综合亚洲鲁鲁五月天| 91cn在线观看| 欧美精品一区二区久久久| 亚州国产精品视频| 久久视频一区二区| 邪恶网站在线观看| 一区二区蜜桃| 国产区日韩欧美| 亚洲成av在线| 久久视频中文字幕| 四虎在线视频免费观看| 色久综合一二码| 国产在线观看免费视频软件| 国产尤物一区二区| 3d动漫一区二区三区| 国产欧美日韩精品一区二区三区| 国产精品青草久久久久福利99| 快射视频在线观看| 亚洲精品wwwww| 一区二区小视频| 亚洲国产精品久久一线不卡| av男人的天堂av| 国产乱码精品一区二区三区忘忧草| 亚洲熟妇无码一区二区三区| 欧美色女视频| 国产精品一区二区在线观看| 欧美黑人粗大| 欧美激情网友自拍| 国产h视频在线观看| 日韩欧美高清一区| 波多野结衣一区二区在线| 亚洲人午夜精品天堂一二香蕉| 91黄色免费视频| 麻豆国产精品一区二区三区| 国精产品一区一区三区视频| 日韩大片在线| 久久99精品久久久久久久青青日本 | 9191久久久久久久久久久| 日本一区二区三区免费视频| 国产精品国产三级国产三级人妇| 亚州av综合色区无码一区| 久久99久久99| 欧美亚洲日本在线观看| 在线成人h网| 一级一片免费播放| 亚洲成人一品| 国产99视频精品免费视频36| 国产亚洲欧美日韩精品一区二区三区| 国内伊人久久久久久网站视频| 日本视频在线| 亚洲最大中文字幕| 日本黄在线观看| 精品国产一区二区三区久久久蜜月 | 国产亚洲永久域名| 大陆极品少妇内射aaaaaa| 日本一本不卡| 精品视频一区在线| caoporn成人免费视频在线| 成人免费视频a| 成人免费毛片嘿嘿连载视频…| 97超级碰碰碰久久久| 激情图片在线观看高清国产| 久久av.com| 国产三区在线观看| 中文字幕日韩精品在线| 国产青青草在线| 亚洲视频网站在线观看| 五月激情婷婷网| 亚洲国产高清自拍| 免费国产羞羞网站视频| 欧美电影精品一区二区| 99久久夜色精品国产亚洲| 欧美精品久久一区二区三区| 国产精品国产精品国产| 在线欧美日韩国产| 亚洲国产av一区二区三区| 欧美视频在线观看免费| 亚洲第一在线播放| 一本色道**综合亚洲精品蜜桃冫| 久久露脸国语精品国产91| 午夜欧美2019年伦理 | 欧美亚洲国产bt| 青青国产在线视频| 91精品福利在线| 日韩乱码一区二区三区| 欧美视频精品在线观看| 91精品国产色综合久久不8| 欧美日韩国产一区| 一级片在线免费观看视频| 欧美日韩极品在线观看一区| 91成人国产综合久久精品| 7777女厕盗摄久久久| 国产农村老头老太视频| 精品毛片乱码1区2区3区| 免费成人在线看| 日韩精品免费在线视频观看| 精品美女视频在线观看免费软件 | 绿色成人影院| 国产成人精品av| 久久国内精品| 粉嫩精品一区二区三区在线观看 | 亚洲欧美日韩精品综合在线观看| 久久电影院7| 黄黄视频在线观看| 伊人久久大香线蕉综合热线| 91精品91久久久中77777老牛| 久久久青草婷婷精品综合日韩| 欧美伦理片在线观看| 精品一区二区三区香蕉蜜桃| 国产精品成人免费一区久久羞羞| 91在线高清观看| 国产精品久久国产精麻豆96堂| 亚洲精品一二三四区| 国产无遮挡又黄又爽| 色综合久久久网| 国产精品嫩草影院桃色| 精品少妇一区二区三区日产乱码| 日本亚洲一区| 超碰91人人草人人干| av今日在线| 国产精品日韩在线播放| 亚洲一区二区三区四区电影| 免费试看一区| 一区二区在线影院| 国产成人在线免费看| 免费成人在线观看| 性高潮免费视频| 国产精品午夜久久| 久久久久亚洲av成人片| 欧美主播一区二区三区美女| 国产福利免费视频| 亚洲色图第三页| 精精国产xxxx视频在线中文版 | 成人毛片一区二区三区| 欧美一区二区日韩| 国产在线视频资源| 欧美激情视频一区二区| yiren22亚洲综合| 国产色综合一区二区三区| 97国产精品| 妺妺窝人体色www在线小说| 国产综合一区二区| 亚洲a v网站| 亚洲电影一级黄| 国产乱子伦精品无码码专区| 亚洲欧洲激情在线| av老司机免费在线| 91日本视频在线| 成人影院在线| 99久久国产宗和精品1上映| 国产精品1区二区.| 91网站免费视频| 欧美日韩中文字幕在线| 高清乱码毛片入口| 美女999久久久精品视频 | 91九色国产在线| 成人精品久久| 黄色高清无遮挡| 久久蜜桃一区二区| 日韩黄色精品视频| 欧美www视频| 欧美韩日亚洲| 亚洲xxx视频| 亚洲91视频| 天堂在线中文在线| 中文一区二区在线观看| 国产又粗又猛又黄视频| 日韩精品久久久久久福利| aaa在线播放视频| 韩国精品一区二区三区六区色诱| 亚洲午夜黄色| 日本人妻一区二区三区| 一片黄亚洲嫩模| 亚洲爱爱综合网| 久久久久久亚洲精品不卡| 亚洲精品aⅴ| 欧美极品少妇无套实战| 国产精品1区二区.| 久久老司机精品视频| 日韩欧美国产精品| 日本精品600av| 97超级碰碰| 欧美午夜免费影院| 一级全黄裸体片| 午夜亚洲福利老司机| 色噜噜一区二区三区| 7m精品福利视频导航| 香蕉久久夜色精品国产更新时间| 欧美老熟妇喷水| 久久久久国产精品免费免费搜索| 欧美一区二区三区不卡视频| 亚洲精品永久免费精品| 欧美羞羞视频| 一区二区三区国产福利| 国产一区二区三区黄视频| 久久久久久久久久久网 | 亚洲一区二区三区在线视频 | 国产91在线播放| 精品高清久久| 国内自拍第二页| 亚洲综合色噜噜狠狠| 无码国产精品一区二区色情男同| 欧美做受高潮1| 97精品一区二区| 无码人妻一区二区三区一| 韩曰欧美视频免费观看| 成年人在线观看网站| 亚洲xxxxx电影| 99日韩精品| 在线观看亚洲大片短视频| 91精品国产综合久久久久| 成人黄色动漫| 日韩精品久久一区二区三区| 国产一区二区三区在线观看精品 | 制服丝袜亚洲精品中文字幕| 精灵使的剑舞无删减版在线观看| 欧美在线3区| 国产剧情在线观看一区二区| 国产a∨精品一区二区三区仙踪林| 亚洲最新av在线网站| 日韩中文字幕一区二区高清99| 欧美黄网站在线观看| 亚洲日本成人在线观看| 色网站免费观看| 成人久久一区二区| av成人天堂| 九九热最新地址| 亚洲日本成人女熟在线观看| 日韩视频一二区| 91淫黄看大片| 亚洲h动漫在线| 欧美jizz18性欧美| 欧美二区三区在线| 国产乱一区二区|