幫助協調獨立更新的分布式數據的方法和系統的制作方法

            文檔序號:7971542閱讀:285來源:國知局
            專利名稱:幫助協調獨立更新的分布式數據的方法和系統的制作方法
            技術領域
            本發明一般地涉及分布式通信環境,并且特別地涉及對分布式通信環境的獨立更新的分布式數據進行協調。
            背景技術
            分布式通信環境包括高度可用、可升級的系統,這些系統可用于各種情形,包括那些需要工作的高吞吐量或者系統的連續或近似連續的可用性的情形。
            分布式環境的一個例子是具有一個或多個集群的集群式環境。集群包括例如多個共享資源并彼此協作以執行系統任務的操作系統實例。在集群式環境中,經常對信息進行復制,以使相同信息在集群的所有成員上可用。由于當并非所有成員都在線時成員可能會個別地或分組地進行更新,因此保持這些數據的一致性是很困難的。此外,將這些成員拆分(劃分)為不進行通信的子組要求當修復這種拆分時對在不同子組上所進行的更新進行協調。
            目前,為了實現更新,提供了集中式更新日志或集中式數據服務器,或者通過僅當定數(quorum)的成員在線時才允許更新來保持一致性。然而,形成集群的成員通常希望在不依賴于集中式存儲或主成員(primary member)的情況下保持分布式的一致的信息。此外,定數要求是有缺陷的,原因是當定數達不到或丟失時,就不能進行處理。
            基于前述內容,需要一種在沒有集中式存儲或定數要求的情況下用于實現更新和用于協調獨立更新的分布式數據的改進的能力。

            發明內容
            通過提供一種幫助協調分布式通信環境的數據的方法,克服了現有技術的缺點并提供了附加的優點。該方法包括例如確定分布式通信環境的一組分布式數據與該分布式通信環境的另一組分布式數據是否一致,其中該確定包括在確定中使用一個或多個局部單調遞增的值;以及響應于所述確定,對該一組分布式數據和該另一組分布式數據中的至少一組分布式數據進行更新,以協調該一組分布式數據與該另一組分布式數據之間的一處或多處不一致。
            根據本發明的另一個方面,提供了一種幫助協調集群式通信環境的數據的方法。該方法包括例如由加入成員發起加入該集群式通信環境的集群的操作,該集群包括至少一個當前成員;由該至少一個當前成員中的當前成員向該加入成員提供當前成員構成數據結構;由該加入成員確定一組增量,該一組增量包括該加入成員與該當前成員之間的零處或多處數據不一致,該確定使用至少一個局部單調遞增的值;由該加入成員向該當前成員提供該一組增量以及加入成員的成員構成數據結構;由該當前成員確定一組增量,該一組增量包括該當前成員與該加入成員之間的零處或多處數據不一致,該確定使用至少一個局部單調遞增的值;由該當前成員解決該加入成員的一組增量與該當前成員的一組增量之間的零處或多處沖突,以提供一組已解決的增量;以及向該集群的一個或多個成員,包括該加入成員提供該一組已解決的增量。
            在此還描述和要求保護對應于上述方法的系統和計算機程序產品。
            通過本發明的技術可以實現更多的特征和優點。在此詳細地描述了本發明的其他實施例和方面,并且這些實施例和方面可以看作是所要求保護的發明的一部分。


            在本說明書所附的權利要求書中作為例子特別地指出和明確地要求保護本發明的一個或多個方面。根據以下結合附圖而進行的詳細描述,本發明的前述和其他目標、特征和優點將顯而易見,在附圖中圖1示出了包含和使用本發明的一個或多個方面的通信環境的一個圖2A示出了根據本發明的一個方面的圖1的通信環境的集群的一個例子;圖2B示出了根據本發明的一個方面的存儲于一個成員上并被協調的所復制的信息的一個例子;圖3示出了根據本發明的一個方面的成員構成表的一個例子;圖4示出了根據本發明的一個方面的數據表的一個例子;圖5示出了根據本發明的一個方面的與成員加入集群相關聯的邏輯的一個實施例;圖6A示出了根據本發明的一個方面的與加入成員確定增量相關聯的邏輯的一個實施例;圖6B示出了根據本發明的一個方面的與當前成員確定增量相關聯的邏輯的一個實施例;圖7示出了根據本發明的一個方面的與確定沖突相關聯的邏輯的一個實施例;圖8示出了根據本發明的一個方面的與對增量進行復制相關聯的邏輯的一個實施例;圖9示出了根據本發明的一個方面的與對增量進行應用相關聯的邏輯的一個實施例;以及圖10示出了根據本發明的一個方面的與為了從一種或多種優化中受益而處理元數據相關聯的邏輯的一個實施例。
            具體實施例方式
            根據本發明的一個方面,提供了一種用于幫助協調通信環境的獨立更新的分布式數據的能力。為了協調數據,使用了局部單調遞增的值。這些值的例子包括本地計數器、單調遞增的本地時戳等。假設將來的值或時戳不會早于先前的值或時戳(即時間不會向后流轉)。
            圖1中示出了包含和使用本發明的一個或多個方面的通信環境的一個例子。分布式通信環境100包括例如通過多個連接104互連的多個節點102。作為一個例子,節點102是RS/6000并且連接104是耦合這些節點的局域網(LAN)連接。作為另一個例子,節點102是通過局域網(LAN)連接、交換機、因特網連接和/或其他類型的連接而互連的個人計算機。此外,多種其他類型的節點和/或連接可以包括在包含和使用了本發明的一個或多個方面的環境中。此外,盡管在圖1的環境中包括了5個節點,但這只是一個例子并且僅用于說明的目的。通信環境可以包括任意數目的節點,這些節點中的一些或全部節點相互耦合。
            通信環境100例如是集群式環境。在一個集群式環境中,有由集群成員形成的一個或多個集群。集群的集群成員共享資源并彼此協作以執行任務。例如,Novaes等人在2000年5月31日提交的序列號為09/583,677的題目為“A Method,System And Program Products For Managing AClustered Computing Environment(用于管理集群式計算環境的方法、系統和程序產品)”(存檔號為POU920000004US1)的專利申請中描述了集群式環境的一個例子的各個方面,在此通過引用的方式包含其全部內容。
            作為一個例子,通信環境100包括具有多個成員202的集群200(圖2)。在這個特定的例子中,成員202是環境的節點;然而,在其他的例子中,成員是除節點之外的實體,諸如虛擬機或其他實體。盡管將集群200示出為具有5個成員,但是這只是用于說明的目的。集群200可以包括一個或多個成員,包括通信環境的所有節點(或其他實體)或節點(或其他實體)的子集。
            在集群200中,在該集群的所有成員上復制信息。這樣,每個成員202包括例如一個成員構成表204(圖2b)和一個或多個數據表206。包括成員構成表和數據表的所復制的信息保持同步,以便集群的每個成員可以訪問相同的一致的信息。為了保持這種一致性,使用協調組件208,以下對其進行更詳細的描述。
            參考圖3描述成員構成表204的一個例子。成員構成表204包括例如包含于集群中的成員302的列表;以及每個成員302的最后改變的時戳(LCTS)304。最后改變的時戳表示出現與該最后改變的時戳相關聯的成員是數據表中的一行數據的改變首項(change leader)的情況的最近時間。最后改變的時戳是本地(節點特定的)時間并且不是集群同步時間(cluster-synchronized time)。該值是單調遞增的,并且因此其不是時刻(time-of-day)值,而是計時器本身的基本值。成員構成表204還可以包括其他信息。
            參考圖4描述數據表206的一個例子。數據表206包括多個數據行400(圖4),每一行包括例如唯一地標識數據行的關鍵字402;數據404;指示出負責發起對數據行的改變的成員的改變首項406;以及指定改變時間的改變時戳(CTS)408。在一個實施例中,每個集群一次只有一個改變首項。然而,在其他的實施例中,一次可以有多個改變首項是活動的。
            協調組件208(圖2b)使用成員構成表和數據表來對已經獨立地更新并且未反映在一個或多個集群成員處的信息進行協調。例如,當集群的一個成員斷開了與集群的其他成員的通信并且在集群中或在該分離的成員處進行了更新時,會發生這種情況。當該成員重新與其他成員進行通信時,對該成員的信息和其他成員的信息進行協調。
            作為另一個例子,在集群的成員于斷開的時間點上活動時使用協調。例如,假設5節點(節點1-5)集群的節點1和節點2是活動的,并且隨后停止。然后,集群的節點3-5是活動的。當所有的成員均為活動的時,使用協調來協調集群的彼此不進行通信的兩個子組所進行的更新,因為這些更新是由單獨的子組進行的。
            為了成為集群的一個活動的成員,成員加入該集群。在此所用的術語“加入”是指在任意時間上一個成員在集群中變為活動的。作為例子,其包括從系統復位開始成員第一次在集群中變為活動的;以及/或者在集群劃分(即拆分)之后成員變為活動的。還可以存在其他例子,并且可以認為其他例子也包含在“加入”的定義以及本發明的一個或多個方面之內。
            在一個實施例中,具有不同改變的多個成員可以同時加入。在這種情況下,集群的當前成員確定其相對于所有加入成員的改變。
            協調組件包括用于協調不一致的信息的邏輯。例如,其包括用以將成員加入集群的加入邏輯,確定待協調的任意改變的增量確定邏輯,用以確定是否存在待解決的任意沖突的邏輯,用以將改變復制到集群的所有成員(或者在另一個實施例中,成員子集)的復制邏輯,以及用以對已確定的增量進行應用的應用邏輯。如有必要,則可以既協調數據表又協調成員構成表。以下參考加入處理來描述與協調有關的更多細節。
            一個成員加入一個集群以成為該集群的活動成員。例如,成員1可能是集群A的成員,但是其可能不與該集群的其他成員進行通信,并且因此,其是該集群的非活動成員。為了成為活動成員,成員1加入該集群。該成員可以在該成員能夠與該集群的其他成員進行通信的任意時間上請求加入該集群。因此,即使該成員加入并且隨后發生故障,該成員也可以再次加入。
            在加入處理期間,請求加入集群的成員確定其所具有的與集群信息不一致的信息。這稱作增量處理。同樣,集群確定該集群是否具有任何與該加入者不一致的信息。同樣,這稱作增量處理。
            參考圖5來描述與加入處理相關聯的邏輯的一個實施例。首先,在步驟500中,提出請求以加入集群。在這個例子中,該請求由已經恢復與集群的通信的成員提出。在此將請求加入的成員稱作加入成員或加入者。
            在步驟502中,響應于該加入請求,集群的當前成員(例如,集群首項)向該加入成員發送當前成員構成表。在步驟504中,該加入成員使用該成員構成表來確定其相對于當前在其要加入的集群中使用的表的一組增量。例如,加入成員使用其接收到的該成員構成表而針對該加入成員所維護的每個數據表中的每一行確定該行是否是需要由現有成員處理的增量(例如改變)。
            可以以多種方式來確定增量。在一個例子中,按照參考圖6A所描述的那樣來執行處理。首先,在步驟600中,由加入成員選擇該加入成員的數據表的一行用于處理。在詢問602中,對當該行最后一次修改時該當前成員是否存在于該集群中進行判斷。如果該行的改變首項(CL)存在于該當前成員的成員構成表(CMT)中,并且如果該當前成員的成員構成表(CMT)中的改變首項的最后改變的時戳(LCTS)大于或等于該數據行的已改變的時戳(CTS)(即CMT[row.CL].LCTS>=row.CTS,其中表中的行用與C++相似的箭頭符號來表示,陣列索引是表關鍵字,并且行中的字段用點(.)來表示),則該當前成員是在線的。
            如果當該行最后一次改變時該當前成員在線,則在步驟604中該行不是一個增量。然而,如果當該行最后一次改變時該當前成員不在線,則在步驟608中該行是發送給該當前成員的一個增量。當前成員在加入成員的增量組中維護該增量以便用于進一步的處理,下文將對此進行描述。
            接下來,在詢問610中,對是否還有更多的行需要處理進行判斷。如果還有更多的行需要處理,則處理返回步驟600。否則,在步驟612中,對加入成員的增量處理完成。
            返回圖5,如果有任何增量,則在步驟506中將增量(例如,數據表的已改變的行)和加入成員的成員構成表發送給當前成員。
            除了上述內容之外,當前成員在步驟508中確定其是否具有相對于加入成員的任何增量。參考圖6B描述了這種邏輯的一個實施例。首先,在步驟650中,由當前成員選擇該當前成員的數據表的一行用于處理。在詢問652中,對當該行最后一次修改時該加入成員是否在該集群中進行判斷。如果該數據行的改變首項(CL)存在于該加入成員的成員構成表(JMT)中,并且如果該加入成員的成員構成表中的改變首項的最后改變的時戳(LCTS)大于或等于該行的CTS(即JMT[row.CL].LCTS>=row.CTS),則該加入成員是在線的。如果JMT[row.CL].LCTS>=row.CTS,則該改變在集群中是已知的。如果當該行最后一次改變時,該加入成員已經在線,則在步驟654中該行不是一個增量。另一方面,如果當該行最后一次修改時該加入成員不在線,則在步驟656中將該行添加到由當前成員創建并維護的當前成員的增量組中。
            如果沒有任何增量,則在此之后在詢問658中對是否存在更多的行需要處理進行判斷。如果還有更多的行需要處理,則處理從步驟650繼續進行。否則,在步驟660中,與當前成員確定其增量相關聯的處理結束。
            返回圖5,在當前成員確定其相對于加入成員的增量之后,假設存在增量,則在步驟510中,當前成員確定是否存在任何沖突,并且如果存在沖突則解決沖突。參考圖7描述了與確定沖突相關聯的邏輯的一個在一個例子中,為了確定是否存在沖突,在步驟700(圖7)中,從當前成員的增量組中選擇一行,并且在詢問702中對所選的行是否在加入成員的增量組中進行判斷。如果該行不在加入成員的增量組中,則沒有沖突,并且可以添加該行,下文將會對此進行描述。
            然而,如果在詢問702中該行在加入成員的增量組中,則在詢問706中對該行的數據是否與該加入成員的行的數據相同進行判斷。如果兩行中的數據相同,則在步驟708中該行不是一個增量,并且可以從兩個增量組中將該行移除。
            返回詢問706,如果兩行中的數據不同,則存在沖突,并且在詢問710中,對是通過選擇當前成員的增量還是通過選擇加入成員的增量來解決該沖突進行判斷。可以以多種不同方式來處理行沖突,這些方式包括仲裁的方式或者編程的方式,在仲裁的方式中,將兩行之一選擇為當前行,在編程的方式中,編寫一個程序來確定要使用的行。程序參考例如其他成員上的數據表來作出決定。在一個例子中,在選擇要使用的行時,對兩行的改變首項是否相同進行判斷。如果兩行的改變首項相同,則進一步對當前成員的LCTS和加入成員的LCTS哪一個更大進行判斷。選擇與較大的LCTS相關聯的行。
            如果確定選擇當前成員的增量行,則在步驟714中從加入成員的增量組中移除該行。然而,如果確定通過選擇加入成員的增量行來解決沖突,則在步驟712中從當前成員的增量組中移除該行。
            在步驟704、708、712或714之后,在詢問716中對是否有更多的行需要處理進行判斷。如果有更多的行需要處理,則處理從步驟700繼續進行。否則,沖突處理結束。
            返回圖5,在解決沖突之后,在步驟512中,在本例中,將增量(如果存在)發送給所有的成員。參考圖8描述了與該處理相關聯的邏輯的一個實施例。在圖8的處理中,創建一個累積的增量組,其包括來自當前成員的增量組和加入成員的增量組的增量。在本例中,隨后將該累積的組發送給集群的所有成員。(在另一個例子中,將其發送給一個子集的成員)。
            參考圖8,首先,在步驟800中,從當前成員的增量組中選擇一行,并在步驟802中將所選的行添加到累積的增量組中。在此之后,在詢問804中對該當前成員的增量組中是否有更多的行需要處理進行判斷。如果還有更多的行需要處理,則處理從步驟800開始繼續;否則,該邏輯就繼續處理加入成員的增量組。
            在步驟806中,從加入成員的增量組中選擇一行,并且在步驟808中將該行應用到當前成員的表中。另外,在步驟810中,將該改變添加到累積的增量組。
            然后,在詢問812中對加入成員的增量組中是否有更多的行需要處理進行判斷。如果還有更多的行,則處理從步驟806繼續進行;否則,在步驟814中,將累積的增量組發送給集群的所有成員,包括加入成員和已加入成員。
            返回圖5,在將增量發送給所有成員之后(假設有增量需要發送),在步驟514中,對這些增量進行應用。參考圖9描述了與該處理相關聯的邏輯的一個實施例。圖9的處理是由接收到增量的每個集群成員執行的。
            首先,在步驟900中,從累積的增量組中選擇一個增量行,并且在詢問902中對該行是否存在于執行該處理的成員的表中進行判斷。如果該行存在于表中,則在詢問904中進一步對該增量是否是“刪除”進行判斷。如果該增量是“刪除”,則在步驟906中刪除該行;否則,在步驟908中改變該行。在此之后,處理從如下所述的詢問912繼續進行。
            返回詢問902,如果該行不存在于表中,則在詢問909中對該增量是否為“刪除”進行判斷。如果該增量是“刪除”,并且該行不存在,則不需要對該行進行處理,并且處理從如下所述的詢問912繼續進行。然而,如果該行不存在于該表中并且該該增量不是“刪除”,則在步驟910中添加該行,并且處理從詢問912繼續進行。
            在詢問912中,對成員構成表是否需要更新進行判斷。作為一個例子,對該增量的改變首項的時戳是否大于該成員構成表中的改變首項的最后改變的時戳(即,CL.CTS>CL.LCTS)進行判斷。如果CL.CTS>CL.LCTS,則在步驟914中利用改變首項的最后改變的時戳來對成員構成表進行更新。在此之后,或者如果該成員構成表不需要進行更新,則在詢問916中對累積增量組中是否有更多的行需要被應用進行判斷。如果有更多的行需要被應用,則處理從步驟900開始繼續進行;否則,應用增量邏輯結束。由此,使用兩階段提交過程來提交所有成員處的改變,然后在假設該提交成功的情況下,結束加入處理。
            如上所述,利用加入處理,與成員構成表相結合的數據表的改變首項和已改變的時戳的信息實現了對表改變的相對先后順序的確定。這提供了一種機制,其用于忽略先前已經包含在合并的表中的行。
            在一個實施例中,不管加入成員是否具有任何增量,當前成員都復制已更新的表。這考慮的是加入成員不具有數據表或者當前成員的數據表中的行不在加入成員的數據表中的情況。如果成員的成員構成表被無意地(或惡意地)刪除了,則加入處理仍可以工作。在這種情況下,成員加入時不帶有成員構成表。當成員加入一個集群時,加入操作有效地引起全部表被傳送。這也是將新安裝的成員初次添加到集群的情況。然而,如果該成員是所出現的第一個成員,則其他的成員確定他們的所有表都是增量。在另一個實施例中,可能確定在當前成員的表中沒有任何數據,并且作為代替,復制該加入者的表。
            在又一個實施例中,有多個加入成員。在這種情況下,每個加入成員都執行在此所述的處理,然而,當前成員確定其相對于任何加入成員是否具有增量。這在當前成員的圖表中引入了外部循環,其中在確定增量時針對加入成員的成員構成表中的每個表對當前成員的數據行進行檢查,并且還引入了一個循環,該循環用以在確定沖突時和在沖突解決之后移除未被選擇的增量時以及在當增量相同時從多個加入者的增量組中移除增量時檢查每個加入成員的增量組。
            此外,在對增量進行應用時,在改變一行之前,成員(當前成員或加入者)將檢查該改變是否適用。因此,如果其成員構成表(MT)[row.CL].LCTS==row.CTS,則不需要對該改變進行處理并且可以跳過該改變(因為所選的增量來自于該節點)。在處理期間可以在每一個成員上進行該項操作,因為任何當前成員或加入成員都可能處于這種“健忘”的狀態。
            由于加入成員已經是非活動的,因此加入集群所包括的步驟可能根據已經發生的處理而不同。因此,下面描述了為實現加入而發生的處理的不同例子。
            例1簡單合并。這描述了子集群同時選擇一個當前成員來進行處理的拆分修復情況。
            5個成員{N1-N5}。改變首項為N1。
            所有成員上的成員構成表(MT)為成員 LCTSN10N20N30N40N50LCTS==0表示成員不曾是任何行的改變首項。
            所創建的兩個數據行條目關鍵字CL CTSRG12 N1 0100CG5 N1 0101集群的MT成員 LCTSN10101
            N20N30N40N50該集群隨后拆分(即劃分)。
            子集群A={N1-N3},CL=N1。
            子集群B={N4-N5},CL=N4。
            子集群A改變了RG12關鍵字CL CTSRG12 N1 0200RG45 N1 0101子集群A的MT成員 LCTSN10200N20N30N40N50子集群B改變了RG45關鍵字CL CTSRG12 N1 0100RG45 N4 0200子集群B的MT成員 LCTSN10101N20N30N40200N50
            修復了網絡拆分,并且子集群A和子集群B重新合并為一個完整的集群{N1-N5},CL=N1。假設子集群A的主項N1是當前成員。N1將N1的MT發送給所選的加入成員(N4)。N4隨后將計算一個增量,N4將這個增量發送給N1。N1隨后將針對N的增量的每一行而確定是否存在與該行的沖突。這可以描述為1.將N1.MT發送給N4。
            2.針對N4中的每一行,確定N4是否具有增量。
            a.N4.RG12.CL=N1。N1.MT[N1].LCTS=0200,N4.RG12.CTS=0100。
            N1更大,因此N1具有更近的改變。RG12不是增量。
            b.N4.RG45.CL=N4。N1.MT[N4].LCTS=0;N4.RH45.CTS=0200。
            N4更大,因此RG45是增量。
            3a.將來自N4的增量(RG45)連同N4.MT一起發送給N1。
            3b.N1確定其相對于N4的增量。該檢查不是利用每個增量行,而是利用相對于N4的MT的數據表中的每個行。如果其是增量,則可以檢查從N4接收到的增量以查看該行是否為其中的增量以及其是否具有相同的數據值。
            4.針對增量中的每一行,確定是否存在沖突。
            a.針對行N1.RG45。N1.RG45.CL=N1。N4.MT[N1].LCTS=0101。N1.RG45.CTS=0101。它們相等,這意味著N4知道RG45的N1版本,因此N4.RG45是已更新的行。N1利用來自N4的行對RG45進行更新。
            5.通過上述步驟,合并所有的數據行。現在合并成員構成行。針對N1.MT中的每一行,與N4中相同的行進行比較。選擇具有最大LCTS的行。
            6.現在N1復制MT和數據表。
            例2復雜合并如果集群{N1,N2,N3,N4,N5}具有完全復制的數據表和成員構成表,并且隨后拆分成子集群A{N1,N2,N3}和子集群B{N4,N5},則每一方都知道當劃分發生時有效的LCTS值。因此,如果A方進行了改變并定義了RG12,則該條目的CTS值將大于該行的CL的先前的LCTS。如果B方(N4,N5)改變了先前的用于RG45的條目,則該條目的CTS同樣將大于CL的先前的LCTS。
            如果修復了該拆分并且兩個子集群準備合并,則A方將具有1行的增量組(RG12),并且B方將具有1行的增量組(RG45)。與上述的簡單情況相似,當應用到A方時,B方的增量將代替該行。
            然而,假設N5在修復拆分之前發生故障。然后,當修復拆分時,成員N4將并入子集群A,從而成員構成為{N1-N4}。該行增量仍將被發現和應用。
            如果隨后N4死機,使成員構成再次成為{N1-N3},并且再次修改了RG45,則RG45將會接收到已更新的CTS。更重要的是,RG45的CL值將從N4變為N1。注意,現在有行RG45的3個單獨的組。即成員構成{N1-N3},N4以及N5,并且它們都具有截然不同的CTS值。
            如果N5隨后加入該集群,則N5將發現它相對于集群沒有增量,原因是對RG45的改變是當N4在集群中時應用的。而該集群將發現它相對于N5具有兩個必須應用的改變(RG12和RG45)。下面將進一步描述這個例子。
            網絡拆分成子集群A={N1-N3},CL=N1以及子集群B={N4,N5},CL=N4。
            子集群A的成員構成表成員 LCTSN10101N20N30N40N50子集群B的成員構成表成員 LCTSN10101N20
            N30N40N50子集群A和子集群B上的數據行關鍵字CL CTSRG12 N1 0100RG45 N1 0101子集群A改變了RG12關鍵字CL CTSRG12 N1 0200RG45 N1 0101子集群B改變了RG45關鍵字CL CTSRG12 N1 0101RG45 N4 0200N5發生故障。A={N1-N3},B={N4}。
            N4與A合并。A={N1-N4}。將N4上發生的RG45改變反映到A中。
            子集群A的成員構成表成員 LCTSN10200N20N30N40200N50子集群A上的數據行關鍵字CL CTSRG12 N1 0200RG45 N4 0200
            N4發生故障。使得A={N1-N3}。
            子集群A(N1-N3)改變了RG45關鍵字CL CTSRG12 N1 0200RG45 N1 0201子集群A的成員構成成員 LCTSN10201N20N30N40200N50N5加入A方。
            N5的成員構成成員 LCTSN10101N20N30N40200N50N5上的數據行關鍵字CL CTSRG12 N1 0101RG45 N4 02001.將N1.MT發送給N5。
            2.針對N5中的每一行,確定N5是否具有增量。
            a.N5.RG12.CL=N1。N1.MT[N1].LCTS=0201,N5.RG12.CTS=0101。行RG12的CTS小于N1的MT LCTS,因此N1上的數據行比N5上的數據行更近,因此該行不是增量。
            b.N5.RG45.CL=N4。N1.MT[N4].LCTS=0200;N5.RG45.CTS=0200。N4的MT LCTS與行RG45中的N4的CTS相同,因此該行不是增量。
            3.沒有增量被發送給N1,但是仍然合并成員構成表(在這種情況下,N1的成員構成表將不發生改變)。N1仍復制合并的成員構成表和數據表。
            盡管在此描述了加入處理的例子,但是在不偏離本發明的精神的情況下可以對這一處理進行各種變更。作為一個例子,提供一種優化,其中處理和/或復制的信息保持最少。例如,在處理的早期階段(例如,在加入處理的初始階段)對是否有任何需要處理的增量進行判斷。如果沒有任何增量,則處理迅速停止。參考圖10對此進行了更詳細的描述。
            參考圖10,如在此所描述的那樣,既在當前成員處又在加入成員處執行處理。首先,在步1000中,當前成員將其最后改變的時戳發送給加入成員,并且加入者將其最后改變的時戳發送給當前成員。在此之后,加入成員和當前成員中的每一個對當前成員的改變首項是否等于加入成員的改變首項進行判斷。在這一例子中,每個成員都知道另一個成員的首項;然而,在另一個實施例中,對改變首項信息進行交換。如果改變首項不同,則不對時戳進行比較,因此在步1006中,如果有增量,則當前成員和加入成員都將處理增量。然而,如果當前成員的改變首項與加入成員的改變首項相等,則在詢問1004中進一步對當前的LCTS是否與加入的LCTS相等進行判斷。如果當前的LCTS與加入的LCTS相等,則在步1008中沒有增量需要處理,并且處理完成。然而,如果當前的LCTS與加入的LCTS不相等,則在詢問1010中進一步對當前LCTS是否大于加入成員的LCTS進行判斷。如果當前LCTS大于加入成員的LCTS,則在步1012中當前成員可能具有增量。然而,如果當前成員的LCTS小于或等于加入的LCTS,則在步1014中加入成員可能具有需要處理的增量。如果在步1006和步1014中有需要處理的增量,則在步1016中,如以上參考圖6A和圖6B所述的那樣,處理從確定是否有任何增量開始繼續進行。
            在上面的實施例中,如果沒有需要處理的增量,則處理結束。如果加入者或當前成員具有需要處理的增量,則處理繼續。當前成員將它的表的元數據(例如,成員ID、CL以及LCTS)發送給加入者,并且加入者將它的表的元數據發送給當前成員。對于每個表,分別對每個元數據的值進行比較。在當前成員或加入成員上只對那些具有增量的表進行處理。
            在上述的例子中,已經假設成員在集群中的存在表示已經合并了在其中成員是改變首項的任意改變。然而,如果在特定成員上丟失了數據,則情況將不是這樣。例如,如果例如由于表刪除或替代,成員(例如,節點)上的成員構成表全部丟失,則成員已經忘記了當它作為改變首項存在時所進行的改變。該成員就叫做一個“健忘”的成員。
            對于健忘的成員,對元數據進行交換以使得可以確定這種情況。當對表進行改變時,將針對該已改變的時戳保存為表中的元數據(CL.CTS),并且作為整組表的元數據。因此,每個表記錄所應用的最后時戳,并且成員構成表記錄應用到任意表的最后時戳。當成員加入時,其與當前的集群交換這組元數據,并且因此,可以確定該成員是否已經忘記了它的任何改變。例如,如果表已經被移除,則將元數據時戳交換為CL=0,CTS=0。這直接意味著包含在集群成員上的表應當在不考慮任何增量的情況下被使用。如果成員是加入該集群的第一個成員,則加入成員將發現整個數據表都將被看做增量并被用來與當前成員進行交換。
            為了處理從不同成員移動或恢復表的情況,表的元數據還包含成員標識。因此,在導入后,成員能夠確定該表是否是在其自身上創建的,并且如果不是,則忽略并移除該表,用包含于加入成員的集群中的當前信息對該表進行替換。
            如果重置了成員的系統時間,從而使時間值不再是單調遞增的,則這也可以被發現,因此不會使改變具有不正確的時戳。為了處理這一點,成員構成表的元數據還包含由成員自身形成的用于LCTS的條目。因此,在導入后,如果元數據LCTS小于系統時間,則將使用的值是LCTS+1,直到系統時間之類的時間重置為正確的值,或系統時間跟上改變計數器為止。這確保了值保持單調遞增。
            如果兩種情況同時發生,則重置系統時間并將表恢復到前一個鏡像,以成員作為改變首項的一些改變將以大于正由成員使用的單調確定的值的CTS值存在于集群中。在這種情況下,復制的已解決的成員構成表包括晚于在成員上使用的單調遞增的值的LCTS值。當檢測到這一點時,將該值重置為包含于復制的成員構成表中作為該表的條目的值LCTS+1。
            此外,如果將表恢復到先前的版本,并且將計時器向后調,則檢查接收到的成員構成表以查看LCTS是否大于所記錄的LCTS,并且將時戳設定為較大的值。對于多個加入者,這一處理相對于所有的成員構成表,即當前成員和所有加入者而進行。在增量處理期間進行檢測是因為最新的時戳存在于增量中。因此,該邏輯是如果row.CL==該成員&&row.CTS>該成員的MT[該成員],則將計時器更新為單調遞增的。(注意,這將時戳恢復為該成員為CL時的最后CTS。如果其他的成員未對改變進行記錄,則有可能在數據表被替換時這些改變已經丟失。)下面描述與健忘的成員相關聯的處理的例子。
            例3健忘的成員(例如,節點)時間動作16:00 N1和N2是所定義的節點。
            20:36 N1和N2開啟并運行,以N1作為主項。
            23:45 將一個備份鏡像切換到磁帶上。
            00:01 進行一個改變(C1).
            00:45 N1發生故障,N2成為主項。
            01:15 進行另一個改變(C2)。
            02:15 一個人停止了N2。
            02:23 N1被擦除(scratch)并從備份磁帶上重新加載。
            03:02 N1啟動。
            03:04 N2啟動并加入到與N1一起。改變C1和C2都只存在于N2上。
            與上面的例子相似,當N2計算其增量時,C1和C2都在增量中,原因是在進行這些改變之前就恢復了成員構成表,N1和N2的LCTS都來自第一次備份發生之前。改變C1和C2在備份之后,因此當N2加入時,N2將正確地將C1和C2放在其增量中。N1接受了這兩個改變,原因是每一行的CTS都大于該行的CL的LCTS,并且這些行的N1的CTS小于N2針對這些行的CL而具有的LCTS。
            上面詳細描述了用于在諸如集群成員之類的獨立更新的條目之間提供一致的信息的協調處理。除了上述內容之外,在此還敘述了兩種情形。一種情形是當表中的行被刪除時的情形,并且另一種情形是處理刪除的成員。
            當數據表中的一行被刪除時,其被標記為已經被刪除,但是仍保留在數據表中。處理這種已刪除的行的一種方式是一旦刪除了一行就不允許改變。因此,如果檢測到增量改變,則忽略該改變并且該行仍保持為已刪除狀態。保留已經被刪除的行,直到集群的所有成員都在線為止,此時將這些“未處理的刪除”行從復制到加入成員的數據表中移除。如果在所有成員在線的同時刪除行,則無需將該行保留為“未處理的”并且可以移除該行。
            如同對任意其他的數據行那樣處理已刪除的行。其包括指示出進行刪除的時間的時戳,并且可以作為增量被檢測并在加入處理期間被處理。一種潛在的機制是將刪除看做相對于改變具有優先權。因此,如果在沖突解決期間檢測到行的增量改變,則對刪除進行處理,而不是進行改變。
            如果將刪除的行添加回表中(該行的關鍵字與已刪除的行的關鍵字相同),則如果成員都未記錄了對該行的未處理的刪除,則保留該行。還存在其他的機制,其在這些情況下通過使沖突解決處理確定應當保留哪一行來實現正確的處理。
            在一個實施例中,對已刪除的行進行累積,直到每個成員都加入了該集群為止。如果所有的成員都存在于集群中,則可知每個成員都已經看到了該已刪除的行并且該已刪除的行可以被丟棄。
            當刪除一個成員時,在成員構成表中將該成員標記為已刪除,并且將其保留在成員構成表中,直到所有的成員都已經加入為止。將已刪除的成員保留在成員構成表中是因為其成員ID(標識)和時戳可能在數據表中,并且該信息被用于確定增量。然而,已刪除的成員不計算在所需的成員數目中,以便丟棄已刪除的行或已刪除的成員。
            當所有已定義的成員都已經加入集群時,從成員構成表中丟棄已刪除的成員。將數據表處理為移除該已刪除成員的條目。在表被復制之前,以該已刪除的成員作為改變首項值的行替換它們的時戳以表明處理該加入的當前集群成員是改變首項并且當前的時戳是已改變的時戳,使得數據表的行都不指向已刪除的成員。這一處理是以不可再分的方式進行的,因此從成員構成表中刪除成員并改變時戳標簽是以不可再分的方式進行的。如果這些動作之一失敗,則它們就都失敗。
            在又一個實施例中,還處理已添加的成員的情況。在此,一個成員上的成員構成表具有比另一個成員上的成員構成表更多的條目。在這種情況下,如果時戳屬于一個不存在于成員構成表中的改變首項,則其被假設為一個增量。當解決成員構成表條目時,將該條目添加到成員構成表。
            在另一個實施例中,不是單獨的節點個別地加入,而是通過拆分創建的兩個子集群在修復拆分之后又回到一起。在這種場景中,來自于一個子集群的一個成員被看做是當前成員,并且另一個子集群的一個成員被看做是加入者。在該加入子集群中的所有成員不需要處理合并步,但是需要進行增量應用和提交的處理。(注意,有可能有多于兩個子集群進行合并,并且因此仍會有多個加入者——來自于除了從中選擇當前成員的那個子集群之外的每個子集群的加入者)。
            以上詳細描述了用于幫助協調通信環境的獨立更新的分布式數據的能力。為了協調數據,使用了局部單調遞增的值。這些值的一個例子是本地時戳。這些時戳是單調遞增的,因此確保了在更新中使用的將來的時戳早于先前的時戳。通過使用局部單調遞增的值,在不需要集中式更新日志,集中式數據服務器,共享磁盤或其他的共享介質,或者硬件時鐘的情況下對更新進行有利的協調。此外,在不需要定數的情況下進行協調。
            在本發明的一個或多個方面中,以這樣一種方式在多個正在進行通信的節點之間復制永久性的數據,即允許在任意時間段上當未與其余節點進行通信的節點(包括已經從一組節點中被刪除的節點)的任意子集可能已經對數據進行了更新時,節點同時對已明確更新的數據條目以及未明確更新的條目進行正確的標識,允許在一些節點上刪除數據條目并且允許對從節點上丟失的數據進行檢測。
            盡管上文已經描述了多個例子,但在不偏離本發明的精神的情況下,可以進行多種變更。例如,除了在此描述的那些環境之外的環境也可以包含和使用本發明的一個或多個方面。例如,盡管已經參考集群式環境描述了本發明的一個或多個方面,但是這只是一個例子。任何具有待協調的獨立更新的數據的環境都可以使用本發明的一個或多個方面。此外,集群或其他環境的成員可以不是節點,諸如可以是虛擬機或其他類型的實體。此外,在其他的實施例中,為了執行用于協調獨立更新的數據的加入處理或其他處理,可以進行一種或多種優化或其他改變。在其他的例子中,附加的、不同的或更少的邏輯可以作為協調組件的一部分。還有可能有多種其他的變更。
            此外,盡管這些例子使用了時戳,但是可以使用任意的單調遞增的值,包括但不限于計數器。時戳只是一個例子。
            本發明的一個或多個方面的能力可以以軟件、固件、硬件或它們的某些組合來實現。
            本發明的一個或多個方面可以包括在具有例如計算機可讀介質的一種制造產品(例如一個或多個計算機程序產品)中。該介質中具有例如用以提供和實現本發明能力的計算機可讀程序代碼裝置或邏輯(例如指令、代碼、命令等)。這種制造產品可以作為計算機系統的一部分而包括或單獨地進行銷售。
            另外,可以提供機器可讀的至少一種程序存儲裝置,其包含至少一個指令程序,該指令程序可由機器來執行以實現本發明能力。
            在此描述的流程圖僅僅是例子。在不偏離本發明的精神的情況下,可以對在此描述的這些示圖或步驟(或操作)進行多種變更。例如,可以以不同次序來執行各步驟,或可以添加、刪除或修改各步驟。所有這些變更都應看做是所要求保護的發明的一部分。
            盡管在此已經詳細示出和描述了優選的實施例,但是本領域的普通技術人員將很容易理解,在不偏離本發明精神的情況下,可以進行各種修改、添加、替換等,并且因此這些修改、添加、替換等都應看做是在所附權利要求書中所限定的本發明的范圍之內。
            權利要求
            1.一種幫助協調分布式通信環境的數據的方法,所述方法包括確定所述分布式通信環境的一組分布式數據與所述分布式通信環境的另一組分布式數據是否一致,其中所述確定包括在所述確定中使用一個或多個局部單調遞增的值;以及響應于所述確定,對所述一組分布式數據和所述另一組分布式數據中的至少一組分布式數據進行更新,以協調所述一組分布式數據與所述另一組分布式數據之間的一處或多處不一致。
            2.根據權利要求1所述的方法,其中所述使用包括將所述一組分布式數據的局部單調遞增的值與所述另一組分布式數據的局部單調遞增的值進行比較。
            3.根據權利要求1所述的方法,其中所述分布式通信環境包括集群式環境,所述一組分布式數據包括所述集群式環境的集群的一個成員的數據,并且所述另一組分布式數據包括所述集群的另一個成員的數據。
            4.根據權利要求3所述的方法,其中所述一個成員包括所述集群的當前成員并且所述另一個成員包括所述集群的加入成員,并且其中所述使用包括將所述加入成員的局部單調遞增的值與從所述當前成員的成員構成數據結構中獲得的局部單調遞增的值進行比較,以確定所述加入成員是否具有一個或多個增量,其中與所述加入成員的局部單調遞增的值相關聯的值是為了從所述當前成員的成員構成數據結構中獲得局部單調遞增的值而用于所述當前成員的成員構成數據結構中的索引;以及將所述當前成員的局部單調遞增的值與從所述加入成員的成員構成數據結構中獲得的局部單調遞增的值進行比較,以確定所述當前成員是否具有一個或多個增量,其中與所述當前成員的局部單調遞增的值相關聯的值是為了從所述加入成員的成員構成數據結構中獲得局部單調遞增的值而用于所述加入成員的成員構成數據結構中的索引。
            5.根據權利要求4所述的方法,其中用于所述當前成員的成員構成數據結構中的索引的值包括對與所述加入成員的局部單調遞增的值相關聯的數據的改變首項的指示,并且其中用于所述加入成員的成員構成數據結構中的索引的值包括對與所述當前成員的局部單調遞增的值相關聯的數據的改變首項的指示。
            6.根據權利要求1所述的方法,其中所述分布式通信環境包括集群式環境,所述一組分布式數據包括所述集群式環境的集群的當前成員的數據,并且所述另一組分布式數據包括所述集群的加入成員的數據,并且其中所述使用包括將所述當前成員的局部單調遞增的時間值與所述加入成員的局部單調遞增的時間值進行比較,以確定所述當前成員和所述加入成員中的一個或多個是否具有相對于對方的一個或多個增量。
            7.根據權利要求6所述的方法,其中所述比較是響應于所述當前成員的改變首項與所述加入成員的改變首項的比較結果為相等而進行的。
            8.根據權利要求1所述的方法,其中在所述分布式通信環境的一個通信節點上維護所述一組分布式數據,并且所述另一組分布式數據是所述一組分布式數據的一組復制數據并且在所述分布通信環境的另一通信節點上維護所述另一組分布式數據,并且其中當所述一個通信節點與所述另一通信節點彼此不進行通信時,作為對所述一組分布式數據和所述另一組分布式數據中的至少一組分布式數據進行更新的結果,存在一處或多處不一致。
            9.一種幫助協調集群式通信環境的數據的方法,所述方法包括由加入成員發起加入所述集群式通信環境的一個集群的操作,所述集群包括至少一個當前成員;由所述至少一個當前成員中的當前成員向所述加入成員提供當前成員構成數據結構;由所述加入成員確定一組增量,所述一組增量包括所述加入成員與所述當前成員之間的零處或多處數據不一致,所述確定使用至少一個局部單調遞增的值;由所述加入成員向所述當前成員提供所述一組增量以及加入成員的成員構成數據結構;由所述當前成員確定一組增量,所述一組增量包括所述當前成員與所述加入成員之間的零處或多處數據不一致,所述確定使用至少一個局部單調遞增的值;由所述當前成員解決所述加入成員的一組增量與所述當前成員的一組增量之間的零處或多處沖突,以提供一組已解決的增量;以及向所述集群的一個或多個成員,包括所述加入成員提供所述一組已解決的增量。
            10.根據權利要求9所述的方法,其中由所述加入成員確定增量包括從所述加入成員的數據結構中選擇數據行;確定當所述數據行最后一次改變時所述當前成員是否存在于所述集群中,所述確定使用至少一個局部單調遞增的值;以及針對所述數據結構的零個或多個數據行重復所述選擇和確定。
            11.根據權利要求9所述的方法,其中由所述當前成員確定增量包括從所述當前成員的數據結構中選擇數據行;確定當所述數據行最后一次改變時所述加入成員是否存在于所述集群中,所述確定使用至少一個局部單調遞增的值;以及針對所述數據結構的零個或多個數據行重復所述選擇和確定。
            12.根據權利要求9所述的方法,其中所述發起包括同時向所述集群加入多個加入成員。
            13.根據權利要求9所述的方法,其中所述加入成員的一組增量和所述當前成員的一組增量中的至少一組增量包括已刪除的行,并且其中保留所述已刪除的行,直到所述集群的所有非活動成員都已經加入所述集群為止。
            14.根據權利要求9所述的方法,其中具有復制的且彼此一致的數據的多個加入成員準備加入所述集群,并且其中所述多個加入成員中的單個加入成員與所述發起、由當前成員進行的提供、由所述加入成員進行的確定、由所述加入成員進行的提供、由所述當前成員進行的確定以及所述解決相關聯。
            15.一種幫助協調分布式通信環境的數據的系統,所述系統包括用于確定所述分布式通信環境的一組分布式數據與所述分布式通信環境的另一組分布式數據是否一致的裝置,其中所述用于確定的裝置包括用于在所述確定中使用一個或多個局部單調遞增的值的裝置;以及用于響應于所述確定而對所述一組分布式數據和所述另一組分布式數據中的至少一組分布式數據進行更新以協調所述一組分布式數據與所述另一組分布式數據之間的一處或多處不一致的裝置。
            16.根據權利要求15所述的系統,其中所述用于使用一個或多個局部單調遞增的值的裝置包括用于將所述一組分布式數據的局部單調遞增的值與所述另一組分布式數據的局部單調遞增的值進行比較的裝置。
            17.根據權利要求15所述的系統,其中所述分布式通信環境包括集群式環境,所述一組分布式數據包括所述集群式環境的集群的當前成員的數據,并且所述另一組分布式數據包括所述集群的加入成員的數據,并且其中所述用于使用一個或多個局部單調遞增的值的裝置包括用于將所述加入成員的局部單調遞增的值與從所述當前成員的成員構成數據結構中獲得的局部單調遞增的值進行比較以確定所述加入成員是否具有一個或多個增量的裝置,其中與所述加入成員的局部單調遞增的值相關聯的值是為了從所述當前成員的成員構成數據結構中獲得所述局部單調遞增的值而用于所述當前成員的成員構成數據結構中的索引;以及用于將所述當前成員的局部單調遞增的值與從所述加入成員的成員構成數據結構中獲得的局部單調遞增的值進行比較以確定所述當前成員是否具有一個或多個增量的裝置,其中與所述當前成員的局部單調遞增的值相關聯的值是為了從所述加入成員的成員構成數據結構中獲得所述局部單調遞增的值而用于所述加入成員的成員構成數據結構中的索引。
            18.根據權利要求17所述的系統,其中用于所述當前成員的成員構成數據結構中的索引的值包括對與所述加入成員的局部單調遞增的值相關聯的數據的改變首項的指示,并且其中用于所述加入成員的成員構成數據結構中的索引的值包括對與所述當前成員的局部單調遞增的值相關聯的數據的改變首項的指示。
            19.根據權利要求15所述的系統,其中所述分布式通信環境包括集群式環境,所述一組分布式數據包括所述集群式環境的集群的當前成員的數據,并且所述另一組分布式數據包括所述集群的加入成員的數據,并且其中所述使用包括將所述當前成員的局部單調遞增的時間值與所述加入成員的局部單調遞增的時間值進行比較,以確定所述當前成員和所述加入成員中的一個或多個是否具有相對于對方的一個或多個增量。
            20.根據權利要求19所述的系統,其中所述比較是響應于所述當前成員的改變首項與所述加入成員的改變首項的比較結果為相等而進行的。
            21.一種幫助協調集群式通信環境的數據的系統,所述系統包括加入成員,發起加入所述集群式通信環境的集群的操作,所述集群包括至少一個當前成員;所述至少一個當前成員中的當前成員,其向所述加入成員提供當前成員構成數據結構;所述加入成員確定一組增量,所述一組增量包括所述加入成員與所述當前成員之間的零處或多處數據不一致,所述確定使用至少一個局部單調遞增的值;所述加入成員向所述當前成員提供所述一組增量以及加入成員的成員構成數據結構;所述當前成員確定一組增量,所述一組增量包括所述當前成員與所述加入成員之間的零處或多處數據不一致,所述確定使用至少一個局部單調遞增的值;所述當前成員解決所述加入成員的一組增量與所述當前成員的一組增量之間的零處或多處沖突,以提供一組已解決的增量;以及所述集群的一個或多個成員,包括所述加入成員,其被提供所述一組已解決的增量。
            22.根據權利要求21所述的系統,其中所述加入成員確定所述一組增量包括所述加入成員從所述加入成員的數據結構中選擇數據行;確定當所述數據行最后一次改變時所述當前成員是否存在于所述集群中,所述確定使用至少一個局部單調遞增的值;以及針對所述數據結構的零個或多個數據行重復所述選擇和確定。
            23.根據權利要求21所述的系統,其中所述當前成員確定所述一組增量包括所述當前成員從所述當前成員的數據結構中選擇數據行;確定當所述數據行最后一次改變時所述加入成員是否存在于所述集群中,所述確定使用至少一個局部單調遞增的值;以及針對所述數據結構的零個或多個數據行重復所述選擇和確定。
            24.根據權利要求21所述的系統,其中具有復制的且彼此一致的數據的多個加入成員準備加入所述集群,并且其中所述多個加入成員中的單個加入成員與所述發起、由當前成員進行的提供、由所述加入成員進行的確定、由所述加入成員進行的提供、由所述當前成員進行的確定以及所述解決相關聯。
            25.一種產品,包括至少一個計算機可用介質,所述計算機可用介質具有用于幫助協調分布式通信環境的數據的計算機可讀程序代碼邏輯,所述計算機可讀程序代碼邏輯包括用于執行根據權利要求1-15中任意一項所述的步驟的指令。
            全文摘要
            對分布式通信環境的獨立更新的數據進行協調以便向該環境的多個成員,諸如集群式環境的集群的多個成員提供一致的數據。使用局部單調遞增的值來協調數據。在協調不一致的數據時所用的一類局部單調遞增的值是本地時戳。
            文檔編號H04L29/08GK1964297SQ200610148459
            公開日2007年5月16日 申請日期2006年11月10日 優先權日2005年11月10日
            發明者杰弗里·S·盧卡施, 羅伯特·米勒 申請人:國際商業機器公司
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品