• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Java類動態(tài)加載機制在鐵路互聯(lián)網(wǎng)售票中的設(shè)計與實現(xiàn)

    2015-06-28 15:55:17楊立鵬
    鐵路計算機應(yīng)用 2015年11期
    關(guān)鍵詞:代碼集群部署

    王 拓,楊立鵬

    (1.中國鐵道科學(xué)研究院 電子計算技術(shù)研究所,北京 100081;2.北京經(jīng)緯信息技術(shù)公司,北京 100081)

    Java類動態(tài)加載機制在鐵路互聯(lián)網(wǎng)售票中的設(shè)計與實現(xiàn)

    王 拓1,楊立鵬2

    (1.中國鐵道科學(xué)研究院 電子計算技術(shù)研究所,北京 100081;2.北京經(jīng)緯信息技術(shù)公司,北京 100081)

    鐵路互聯(lián)網(wǎng)售票系統(tǒng)已經(jīng)成為重要的售票渠道,部分高并發(fā)業(yè)務(wù)(比如余票查詢、訂單查詢、常用聯(lián)系人查詢等)運行在分布式內(nèi)存數(shù)據(jù)庫集群中。由于業(yè)務(wù)邏輯維護優(yōu)化的需要,業(yè)務(wù)代碼需要頻繁調(diào)整,通過重啟服務(wù)的方式部署新代碼新業(yè)務(wù),耗時相當(dāng)長。為提高運維效率,在研究Java類加載機制的基礎(chǔ)上,本文探討了適用于鐵路互聯(lián)網(wǎng)售票系統(tǒng)的代碼動態(tài)部署模塊的設(shè)計和實現(xiàn)過程,進行了測試與分析,并進行了總結(jié)。

    鐵路互聯(lián)網(wǎng)售票系統(tǒng);分布式內(nèi)存數(shù)據(jù)庫集群;Java類動態(tài)加載機制;Java虛擬機

    鐵路互聯(lián)網(wǎng)售票系統(tǒng)自2011年正式上線以來,經(jīng)過近些年的發(fā)展,已經(jīng)成長為十分重要的鐵路售票渠道。為了使鐵路互聯(lián)網(wǎng)售票系統(tǒng)能夠應(yīng)對超高并發(fā)的查詢請求,余票查詢、票價查詢、訂單查詢等業(yè)務(wù)部署在分布式內(nèi)存數(shù)據(jù)庫集群中。集群數(shù)據(jù)規(guī)模達(dá)到千萬級,甚至億級。每個集群由數(shù)個Java虛擬機(JVM,Java Virtual Machine)組成,一個JVM即一個服務(wù)節(jié)點(Service Node)[1]。

    由于業(yè)務(wù)邏輯調(diào)整維護的需要,部分業(yè)務(wù)代碼需要頻繁調(diào)整。按照以往的方式,需要停止集群服務(wù)、更換程序包、啟動集群。余票信息、常用聯(lián)系人信息、訂單信息3項關(guān)鍵業(yè)務(wù)在單個集群中數(shù)據(jù)規(guī)模、訪問量龐大,集群重啟耗時較長,亟需實現(xiàn)一個無需重啟集群就能動態(tài)部署業(yè)務(wù)代碼的系統(tǒng)功能支撐模塊,使其滿足以下需求:

    (1)能夠適應(yīng)鐵路互聯(lián)網(wǎng)售票系統(tǒng),在線進行升級維護操作,用戶無感知。

    (2)能夠適應(yīng)分布式的環(huán)境,可實現(xiàn)多節(jié)點同時部署。

    (3)能夠完成支持修改方法內(nèi)容、局部變量、類變量,支持新增、刪除類。

    本文設(shè)計并實現(xiàn)了應(yīng)用動態(tài)部署模塊,從整體系統(tǒng)、業(yè)務(wù)系統(tǒng)、基本目標(biāo)、具體細(xì)節(jié)等方面滿足上述需求。

    1 Java類加載機制的原理

    1.1 Java類加載器的體系結(jié)構(gòu)

    從Java虛擬機內(nèi)部的角度來看,主要有3種類加載器。

    1.1.1 啟動類加載器Bootstrap ClassLoader

    啟動類加載器由C++語言編寫。默認(rèn)加載〈JAVA_HOME>lib目錄中的類庫。在啟動JVM的時候,如果啟動參數(shù)中指定了-Xbootclass,啟動類加載器也會加載參數(shù)指定路徑中的類庫。

    1.1.2 擴展類加載器Extension ClassLoader

    擴展類加載器由Java語言編寫。默認(rèn)加載〈JAVA_HOME>libext目錄中的類庫,或者加載被java.ext.dirs系統(tǒng)變量所指定的路徑中的所有類庫[2]。

    1.1.3 應(yīng)用程序類加載器Application ClassLoader

    應(yīng)用程序類加載器由Java語言編寫。默認(rèn)加載用戶類路徑〈CLASSPATH>上所有目錄中的類庫。如果應(yīng)用程序中沒有自定義過類加載器,那么它就是程序中默認(rèn)的類加載器。

    1.2 Java類在JVM中的生命周期

    類的整個生命周期按順序分如圖1所示的7個階段。

    圖1 Java類生命周期的7個階段

    這7個階段各自作用如下:

    (1)加載

    JVM通過類的全限定名來獲取定義此類的二進制字節(jié)流,將此字節(jié)流所代表的靜態(tài)存儲結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu),最后在內(nèi)存中生成一個代表這個類的java.lang.Class對象,作為方法區(qū)這個類的各種數(shù)據(jù)的訪問入口。

    (2)驗證

    驗證是連接階段的第一步,這一階段的目的是為了確保Class文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機的要求,并且不會危害虛擬機自身的安全。

    (3)準(zhǔn)備

    準(zhǔn)備階段是正式為類變量分配內(nèi)存并設(shè)置類變量初始值的階段,這些變量所使用的內(nèi)存都將在方法區(qū)中進行分配。在這一階段中,并不處理實例變量。

    (4)解析

    解析階段是虛擬機將常量池內(nèi)的符號引用替換為直接引用的過程。解析階段主要包括:類和接口的解析、字段解析、類方法解析、接口方法解析。

    (5)初始化

    類初始化階段是類加載過程的最后一步,在這個階段,JVM開始執(zhí)行類中編寫的Java程序代碼。

    (6)使用

    使用階段,程序在JVM中運行,完成代碼邏輯含義。

    (7)卸載

    卸載階段,某個類的對象不再被引用,這個類就會結(jié)束生命周期,其在方法區(qū)內(nèi)的數(shù)據(jù)也會被卸載,從而結(jié)束類的整個生命周期。

    2 設(shè)計與實現(xiàn)

    2.1 設(shè)計原則

    設(shè)計適用于鐵路互聯(lián)網(wǎng)售票系統(tǒng)的應(yīng)用動態(tài)部署模塊,需要考慮兩個方面的因素。

    (1)鐵路互聯(lián)網(wǎng)售票系統(tǒng)的特性。

    鐵路互聯(lián)網(wǎng)售票系統(tǒng)建立在既有的鐵路客票系統(tǒng)之上,整個系統(tǒng)龐大、復(fù)雜,對可靠性和穩(wěn)定性要求極高。

    (2)分布式內(nèi)存數(shù)據(jù)庫集群的構(gòu)成

    鐵路互聯(lián)網(wǎng)售票系統(tǒng)的余票查詢、票價查詢、常用聯(lián)系人查詢、訂單查詢等業(yè)務(wù)運行在分布式內(nèi)存數(shù)據(jù)庫集群中,集群中既做業(yè)務(wù)數(shù)據(jù)的存儲,也做業(yè)務(wù)邏輯的執(zhí)行。

    考慮到以上業(yè)務(wù)和系統(tǒng)層面的因素,在設(shè)計適用于鐵路互聯(lián)網(wǎng)售票系統(tǒng)的應(yīng)用動態(tài)部署模塊時,應(yīng)按照如下原則:

    (1)按照C/S模型設(shè)計,客戶端負(fù)責(zé)讀取即將部署的jar包,并發(fā)送請求到服務(wù)端;服務(wù)端執(zhí)行動態(tài)部署操作。

    (2)多節(jié)點的分布式系統(tǒng)中,所有服務(wù)節(jié)點盡可能同時完成動態(tài)部署,且不能存在遺漏的節(jié)點。

    (3)執(zhí)行動態(tài)部署操作時,按照先清理舊程序,再加載新程序的步驟進行。

    (4)動態(tài)部署操作支持業(yè)務(wù)邏輯以及Listener等代碼。

    (5)程序動態(tài)部署過程的耗時盡可能短,應(yīng)在毫秒級內(nèi)完成,避免對生產(chǎn)應(yīng)用造成較大影響。

    (6)需要動態(tài)部署的程序的數(shù)量不宜過多。大量的程序變化,甚至是架構(gòu)的變化將有可能導(dǎo)致不可預(yù)知的錯誤。

    2.2 實現(xiàn)方法

    2.2.1 實現(xiàn)自定義ClassLoader

    代碼動態(tài)部署模塊的核心是實現(xiàn)自定義的ClassLoader。

    考慮到鐵路客票系統(tǒng)中應(yīng)用分布式內(nèi)存數(shù)據(jù)庫集群的業(yè)務(wù)普遍具有較大的數(shù)據(jù)規(guī)模,需要使模塊的實現(xiàn)方式盡可能簡單可靠,新代碼的部署難度盡可能較低。

    URLClassLoader類加載器用于從指向 JAR 文件和目錄的 URL 的搜索路徑加載類和資源。這里假定任何以 '/' 結(jié)束的 URL 都是指向目錄的。如果不是以該字符結(jié)束,則認(rèn)為該 URL 指向一個將根據(jù)需要打開的 JAR 文件。程序中創(chuàng)建的URLClassLoader實例的AccessControlContext線程將在后續(xù)加載類和資源時使用。為加載的類默認(rèn)授予只能訪問URLClassLoader創(chuàng)建時指定的URL的權(quán)限。

    代碼動態(tài)部署模塊中自定義的ClassLoader需要重寫父類如下方法:findClass(String name)、close()、loadClass(String name, boolean resolve),這樣就實現(xiàn)了尋找指定類、刪除指定類、加載指定類,完成了代碼替換的功能。

    代碼動態(tài)部署模塊把每個單獨的類和接口編譯成單獨的一個.class文件,這些文件對于Java運行環(huán)境來說就是一個個可以動態(tài)加載的單元,這些文件只在需要使用程序代碼時才會被加載。我們可以在不重新編譯其它代碼的情況下,只編譯需要修改的單元,并把修改文件編譯后的.class文件放到Java的路徑當(dāng)中,等到下次該Java虛擬機重新激活時,這個邏輯上的Java應(yīng)用程序就會加載新修改的.class文件,從而更新自己的功能。

    2.2.2 通過唯一標(biāo)識來區(qū)分新舊class

    類的唯一標(biāo)識是代碼版本準(zhǔn)確性的根本。

    代碼動態(tài)部署機制利用“雙親委派機制”來實現(xiàn),在Java中,一個類用其完全匹配類名作為標(biāo)識,這里指的完全匹配類名包括包名和類名。但在JVM中一個類用其全名和一個加載類ClassLoader的實例作為唯一標(biāo)識。

    除此以外,在保證包名、類名一致的前提下,為快速準(zhǔn)確地識別類,在代碼動態(tài)部署模塊中,將jar包轉(zhuǎn)換為字節(jié)數(shù)組,并對此字節(jié)數(shù)組進行MD5編碼,使用MD5碼串作為當(dāng)前這個jar包的唯一標(biāo)識,當(dāng)檢測到新舊jar的MD5碼相同時,則認(rèn)為代碼沒有改變,否則用新jar包中的代碼覆蓋舊代碼。

    2.2.3 采用“C/S模式”實現(xiàn)熱部署功能

    “C/S模式”為完成代碼替換奠定了高效集群部署的基礎(chǔ)。

    對于分布式內(nèi)存數(shù)據(jù)庫集群而言,代碼的動態(tài)部署操作需要在系統(tǒng)的所有節(jié)點上準(zhǔn)確地、快速地進行操作,不能有遺漏的節(jié)點,也不能有不一致的節(jié)點。利用分布式內(nèi)存數(shù)據(jù)庫的特性,創(chuàng)建當(dāng)前集群(多個Server服務(wù)端)的單一Client客戶端,可以有效地完成代碼動態(tài)部署到集群的工作。

    在動態(tài)部署過程中,新代碼以jar包的形式存放在Client客戶端的某一路徑下,并由Client客戶端發(fā)送到各個Server服務(wù)端上經(jīng)過定制的類加載器中。定制的類加載器把class從字節(jié)數(shù)組恢復(fù)成類,實例化并執(zhí)行。

    3 測試與分析

    3.1 測試場景說明

    3.1.1 測試環(huán)境

    分布式內(nèi)存數(shù)據(jù)庫集群服務(wù)器數(shù)量:2臺服務(wù)器,X86平臺。

    每臺服務(wù)器上運行2個內(nèi)存數(shù)據(jù)庫節(jié)點,集群規(guī)模共4個節(jié)點。應(yīng)用的熱部署工作在這4個節(jié)點上進行。

    3.1.2 測試場景

    考慮到集群規(guī)模、業(yè)務(wù)數(shù)據(jù)規(guī)模、業(yè)務(wù)邏輯復(fù)雜度等因素,測試工作選取具有代表性的余票查詢業(yè)務(wù)進行。

    選取的測試用例是2015年10月1日北京到上海的所有車次。在測試過程中,將記錄節(jié)點(JVM進程)的pid和運行時間,以證明沒有重啟節(jié)點。

    3.2 測試過程與結(jié)果分析

    3.2.1 制定程序演化過程

    根據(jù)測試場景,制定如表1所示的程序版本演化過程:

    表1 程序版本演化過程表

    (1)程序1.0版本為基礎(chǔ)版本,即測試環(huán)境中正在運行的代碼,除去支撐功能模塊、服務(wù)模塊等,業(yè)務(wù)邏輯模塊大概有309個Java類型;

    (2)程序1.1版本比上一版本減少一個類型;

    (3)程序1.2版本比上一版本增加一個類型,恢復(fù)至原狀;

    (4)程序1.3版本修改了方法體;

    (5)程序1.4版本修改了類結(jié)構(gòu);

    (6)程序1.5版本同時修改了類結(jié)構(gòu)和方法體。

    按照子邏輯對代碼進行分類,如圖2所示。

    圖2 代碼片段:余票查詢邏輯模塊調(diào)用順序

    在修改代碼、動態(tài)部署之前,先檢查分布式內(nèi)存數(shù)據(jù)庫的節(jié)點數(shù)量,可以看到,在邏輯上,4個節(jié)點是一個整體,進程號分別是:16123、16124、10850、10851。

    選取16123進程,記錄進程信息,如圖3所示。

    圖3 測試過程:原始的16123進程信息

    在測試環(huán)境中,查詢2015年10月1日北京到上海的動車車次(D字頭車次),結(jié)果如圖4所示。

    圖4 測試過程:用例的原始效果

    3.2.2 更新程序版本

    隨后通過對程序版本的更新,實現(xiàn)余票查詢結(jié)果的控制。

    (1)升級程序至1.1版本

    在1.1版本的程序中,刪除“downloadBoardSta tionAssignTickets”子邏輯的對應(yīng)的Java類,動態(tài)部署到集群中,隨后再次進行查詢,結(jié)果如圖5所示,無法查詢余票信息。

    圖5 測試過程:動態(tài)部署程序1.1版本后的效果

    (2)升級程序至1.2版本

    在1.2版本的程序中,恢復(fù)“downloadBoardStati onAssignTickets”子邏輯對應(yīng)的Java類,代碼恢復(fù)至原狀,執(zhí)行查詢,結(jié)果如圖6所示。動態(tài)部署程序后,可以查詢出余票了。嘗試預(yù)訂3張D71次車的一等座,預(yù)訂成功。

    圖6 測試過程:動態(tài)部署程序1.2版本后的效果

    (3)升級程序至1.3版本

    在1.3版本的程序中,修改方法體,注釋以下邏輯,使其不再生效:

    a.downloadBoardStationAssignTickets

    b.shareRuleBean

    隨后進行查詢,結(jié)果與1.1版本類似,同樣無法查詢余票數(shù)量。

    (4)升級程序至1.4版本

    在1.4版本的程序中,修改類結(jié)構(gòu),將類變量logicSequence的類型由LinkedHashSet〈String>改為ArrayList〈String>,隨后進行動態(tài)部署,結(jié)果如圖7所示。與1.1和1.3版本類似,同樣無法查詢余票數(shù)量。可見,修改類結(jié)構(gòu)并沒有產(chǎn)生影響,程序沒有報錯。

    圖7 代碼片段:1.4版本

    (5)升級程序至1.5版本

    在1.5版本的程序中,同時修改了類結(jié)構(gòu)和方法體,將1.4修改的代碼恢復(fù)原狀:

    隨后動態(tài)加載程序,查詢余票,結(jié)果如圖8所示,余票數(shù)量能夠正常查詢,并成功預(yù)訂車票2張。

    圖8 測試過程:動態(tài)部署程序1.5版本后的效果

    3.2.3 結(jié)果分析

    綜合以上測試過程,代碼能夠被動態(tài)加載。從測試開始到結(jié)束,進程id沒有變化,如圖9所示,即沒有重啟集群服務(wù),測試達(dá)到預(yù)期的結(jié)果。

    圖9 測試過程:動態(tài)部署程序1.5版本后的16123進程信息

    4 結(jié)束語

    在生產(chǎn)環(huán)境實踐中,自2014年起,代碼動態(tài)部署模塊已經(jīng)平穩(wěn)可靠的運行在鐵路互聯(lián)網(wǎng)售票余票查詢、票價查詢等業(yè)務(wù)中。應(yīng)用效果理想,實現(xiàn)了模塊需求,提高了程序部署效率,降低了維護成本,增強了應(yīng)用的靈活性和擴展性,為保障應(yīng)急和業(yè)務(wù)更新奠定了穩(wěn)定的基礎(chǔ)。

    隨著社會經(jīng)濟發(fā)展速度的加快,用戶總是不斷的提出新的業(yè)務(wù)需求,軟件系統(tǒng)更新的速度越來越快,同時對軟件靈活性的要求也越來越高,應(yīng)用動態(tài)部署的功能必將得到更加長遠(yuǎn)的發(fā)展,也會更加完善和穩(wěn)定。

    [1]朱建生,周亮瑾,單杏花,王明哲.新一代客票系統(tǒng)總體架構(gòu)研究[J].鐵路技術(shù)創(chuàng)新,2012(4).

    [2]周逸勛. Java程序動態(tài)更新的研究[D]. 上海:上海交通大學(xué),2010.

    責(zé)任編輯 王 浩

    Java class dynamic loading mechanism in Internet Ticketing and Reservation System

    WANG Tuo, YANG Lipeng
    ( 1.Institute of Computing Technologies, China Academy of Railway Sciences, Beijing 100081, China; 2.Beijing Jingwei Information Technology Co., Beijing 100081, China )

    Internet Ticketing and Reservation System has been an important channel that sold railway tickets. Some applications were using distributed in-memory database to solve the concurrent access pressure, such as ticket-queryservice, order-query-service, passenger-query-service, etc. Because some business logic code needed to be modif i ed frequently, all the service nodes had to be restarted to deploy new program, while this operation usually took a long time. To improve the eff i ciency of operation and maintenance, based on Java class dynamic loading mechanism, this paper explained the design and implementation of Java class dynamic loading mechanism which was suitable for Internet Ticketing and Reservation System, tested the system module and analyzed the running results of the modules, given a conclusion and some suggestions.

    Internet Ticketing and Reservation System; distributed in-memory data base; Java class dynamic loading mechanism; Java virtual machine

    U293.22∶TP39

    A

    1005-8451(2015)11-0030-05

    2015-04-10

    王 拓,研究實習(xí)員;楊立鵬,工程師。

    猜你喜歡
    代碼集群部署
    一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
    晉城:安排部署 統(tǒng)防統(tǒng)治
    部署
    海上小型無人機集群的反制裝備需求與應(yīng)對之策研究
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
    電子制作(2018年11期)2018-08-04 03:25:40
    Python與Spark集群在收費數(shù)據(jù)分析中的應(yīng)用
    麻豆国产97在线/欧美| 亚洲国产精品999| 大陆偷拍与自拍| 深夜a级毛片| 午夜激情久久久久久久| 18禁在线播放成人免费| 少妇 在线观看| tube8黄色片| 国产黄片美女视频| 菩萨蛮人人尽说江南好唐韦庄| 久久99热这里只频精品6学生| 精品人妻熟女av久视频| a级一级毛片免费在线观看| 日本免费在线观看一区| 色吧在线观看| 天天躁日日操中文字幕| 久久精品国产鲁丝片午夜精品| 国产一区二区三区综合在线观看 | 欧美日韩在线观看h| 国产精品三级大全| 亚洲欧美一区二区三区国产| 成年女人在线观看亚洲视频 | 少妇熟女欧美另类| 日日摸夜夜添夜夜添av毛片| 亚洲av中文av极速乱| 一边亲一边摸免费视频| 国产精品一区www在线观看| 亚洲人成网站高清观看| www.av在线官网国产| 夜夜看夜夜爽夜夜摸| 亚洲最大成人中文| 人人妻人人看人人澡| 亚洲性久久影院| 黄色配什么色好看| 你懂的网址亚洲精品在线观看| 天天躁夜夜躁狠狠久久av| 国产极品天堂在线| 国产伦精品一区二区三区视频9| 亚洲av福利一区| 99九九线精品视频在线观看视频| 少妇猛男粗大的猛烈进出视频 | 99精国产麻豆久久婷婷| 婷婷色麻豆天堂久久| 99久久精品热视频| 综合色av麻豆| 麻豆精品久久久久久蜜桃| 18+在线观看网站| 亚洲激情五月婷婷啪啪| 欧美一区二区亚洲| 久久久久久久大尺度免费视频| 伦精品一区二区三区| 国产爱豆传媒在线观看| 偷拍熟女少妇极品色| 国产亚洲一区二区精品| 成人高潮视频无遮挡免费网站| 黄片无遮挡物在线观看| 亚洲av电影在线观看一区二区三区 | 国产一区二区三区综合在线观看 | 久久6这里有精品| 免费看日本二区| 亚洲欧美成人精品一区二区| 成人黄色视频免费在线看| 综合色丁香网| 亚洲久久久久久中文字幕| 99久久九九国产精品国产免费| 婷婷色综合大香蕉| 久久久久久久精品精品| 国产在线一区二区三区精| 人人妻人人澡人人爽人人夜夜| 日韩精品有码人妻一区| 亚洲精品国产av成人精品| 老师上课跳d突然被开到最大视频| 三级男女做爰猛烈吃奶摸视频| 九九久久精品国产亚洲av麻豆| 18禁在线无遮挡免费观看视频| 久久久久久久久久久丰满| 黄色日韩在线| 美女国产视频在线观看| 国产淫片久久久久久久久| 成人一区二区视频在线观看| 91aial.com中文字幕在线观看| 亚洲av一区综合| 极品教师在线视频| 美女脱内裤让男人舔精品视频| 一级毛片 在线播放| 插阴视频在线观看视频| 国产精品麻豆人妻色哟哟久久| 日本-黄色视频高清免费观看| 国产成年人精品一区二区| 99久国产av精品国产电影| 国产免费又黄又爽又色| 日本与韩国留学比较| 欧美日韩视频高清一区二区三区二| 成人鲁丝片一二三区免费| 国产精品99久久久久久久久| 少妇人妻 视频| 一二三四中文在线观看免费高清| 伊人久久国产一区二区| 国产成人精品久久久久久| 国产成人精品婷婷| 欧美丝袜亚洲另类| av天堂中文字幕网| 国产成人福利小说| 国产精品久久久久久久久免| 精品国产露脸久久av麻豆| 精品午夜福利在线看| 男人爽女人下面视频在线观看| 一级毛片aaaaaa免费看小| 久久精品人妻少妇| 欧美成人a在线观看| 尤物成人国产欧美一区二区三区| 久久热精品热| 国产免费视频播放在线视频| 欧美一级a爱片免费观看看| 欧美精品一区二区大全| av国产精品久久久久影院| 免费黄网站久久成人精品| 国产老妇女一区| 亚洲自偷自拍三级| 久久久久性生活片| 免费大片黄手机在线观看| 国产精品久久久久久精品电影| 婷婷色综合www| 联通29元200g的流量卡| 亚洲熟女精品中文字幕| 日本欧美国产在线视频| 欧美老熟妇乱子伦牲交| 久久久成人免费电影| 男插女下体视频免费在线播放| 欧美97在线视频| av网站免费在线观看视频| 在线观看国产h片| 国产v大片淫在线免费观看| 免费观看在线日韩| 亚洲精品国产成人久久av| 性色av一级| 国产精品.久久久| 亚洲av.av天堂| 男人爽女人下面视频在线观看| 亚洲精品一二三| av播播在线观看一区| 久久精品久久精品一区二区三区| 国产成人精品一,二区| 午夜日本视频在线| 好男人视频免费观看在线| 精品久久久噜噜| 亚洲精品亚洲一区二区| 丰满少妇做爰视频| 欧美潮喷喷水| 99热国产这里只有精品6| 成人无遮挡网站| 亚洲在线观看片| 亚洲av中文av极速乱| 亚洲欧美日韩卡通动漫| 国产淫语在线视频| 成人国产麻豆网| 春色校园在线视频观看| 欧美+日韩+精品| 一区二区av电影网| 国产成人aa在线观看| 久久精品国产亚洲av涩爱| 亚洲国产av新网站| 久久久久国产精品人妻一区二区| 久久久久久久久久久免费av| 男女国产视频网站| 午夜精品国产一区二区电影 | 69av精品久久久久久| 最近最新中文字幕大全电影3| 亚洲精品乱码久久久久久按摩| 国产高清有码在线观看视频| 一级毛片aaaaaa免费看小| 国产精品福利在线免费观看| 六月丁香七月| 久久久精品免费免费高清| 国产真实伦视频高清在线观看| 丰满少妇做爰视频| 精品少妇黑人巨大在线播放| 午夜激情久久久久久久| 别揉我奶头 嗯啊视频| av在线蜜桃| 亚洲av一区综合| 亚洲天堂国产精品一区在线| 亚洲成人精品中文字幕电影| 男人爽女人下面视频在线观看| 在线精品无人区一区二区三 | 一本久久精品| 亚洲精华国产精华液的使用体验| 亚洲av免费在线观看| 韩国av在线不卡| av福利片在线观看| 美女xxoo啪啪120秒动态图| 又爽又黄a免费视频| 国内少妇人妻偷人精品xxx网站| 最近中文字幕高清免费大全6| 观看免费一级毛片| 黄片wwwwww| 亚洲四区av| 91狼人影院| 久久久久久久久大av| 秋霞在线观看毛片| av在线蜜桃| 精品少妇久久久久久888优播| av在线老鸭窝| 少妇人妻 视频| 久久久久国产精品人妻一区二区| 亚洲第一区二区三区不卡| 综合色av麻豆| 欧美一级a爱片免费观看看| 国产精品无大码| 亚洲最大成人手机在线| h日本视频在线播放| 国产亚洲午夜精品一区二区久久 | 在线观看三级黄色| 热re99久久精品国产66热6| 欧美日韩综合久久久久久| 嫩草影院精品99| 久久精品国产a三级三级三级| 午夜福利高清视频| 一本久久精品| 国产白丝娇喘喷水9色精品| 久久精品综合一区二区三区| 国产 一区 欧美 日韩| 亚洲欧美精品专区久久| 午夜爱爱视频在线播放| 99视频精品全部免费 在线| 一级二级三级毛片免费看| av在线app专区| 日日啪夜夜撸| 久久久色成人| 99视频精品全部免费 在线| 国产精品精品国产色婷婷| 免费黄频网站在线观看国产| 亚洲美女视频黄频| 超碰97精品在线观看| 亚洲第一区二区三区不卡| 69人妻影院| 最近最新中文字幕大全电影3| 亚洲成人精品中文字幕电影| 在线免费观看不下载黄p国产| 久久久久国产网址| av在线天堂中文字幕| 国产 一区 欧美 日韩| 欧美日韩视频精品一区| 在线免费十八禁| 白带黄色成豆腐渣| 听说在线观看完整版免费高清| 国产精品麻豆人妻色哟哟久久| 亚洲精品日韩av片在线观看| 少妇熟女欧美另类| 久久热精品热| 亚洲精品日本国产第一区| 国产精品.久久久| 国产视频首页在线观看| 亚洲三级黄色毛片| 高清日韩中文字幕在线| 极品教师在线视频| 亚洲自拍偷在线| av女优亚洲男人天堂| 白带黄色成豆腐渣| 国产黄片视频在线免费观看| 日韩在线高清观看一区二区三区| 九色成人免费人妻av| 99久久人妻综合| 蜜臀久久99精品久久宅男| 99久国产av精品国产电影| 99久久九九国产精品国产免费| 精品一区在线观看国产| 免费人成在线观看视频色| 视频区图区小说| 午夜激情福利司机影院| 国产高潮美女av| 性插视频无遮挡在线免费观看| 国产精品不卡视频一区二区| 国产精品三级大全| 日韩电影二区| 啦啦啦在线观看免费高清www| 成人亚洲精品av一区二区| 日日啪夜夜撸| 亚洲精品第二区| 你懂的网址亚洲精品在线观看| 久久97久久精品| 国产精品国产av在线观看| 国产欧美另类精品又又久久亚洲欧美| 久久精品国产鲁丝片午夜精品| 成人黄色视频免费在线看| 亚洲欧美一区二区三区国产| 纵有疾风起免费观看全集完整版| 久久久久九九精品影院| 成人亚洲欧美一区二区av| 最近中文字幕高清免费大全6| 少妇的逼水好多| 国产精品人妻久久久影院| 精品99又大又爽又粗少妇毛片| 自拍偷自拍亚洲精品老妇| 色婷婷久久久亚洲欧美| 国产免费福利视频在线观看| 婷婷色综合www| videos熟女内射| 看非洲黑人一级黄片| 99热6这里只有精品| 国产精品一区二区性色av| 97热精品久久久久久| 黄色一级大片看看| 69人妻影院| 欧美日本视频| 麻豆国产97在线/欧美| 国产色爽女视频免费观看| 日本wwww免费看| 成人鲁丝片一二三区免费| 亚洲精品亚洲一区二区| 午夜激情福利司机影院| 亚洲av中文av极速乱| 国产淫片久久久久久久久| 国产av码专区亚洲av| av卡一久久| 日韩国内少妇激情av| 18禁在线播放成人免费| 人人妻人人爽人人添夜夜欢视频 | 天天躁夜夜躁狠狠久久av| 2021少妇久久久久久久久久久| 久久久久久久久久人人人人人人| 性插视频无遮挡在线免费观看| 一个人看视频在线观看www免费| 亚洲精品国产成人久久av| 精品视频人人做人人爽| 亚洲内射少妇av| 日本一本二区三区精品| 亚洲av福利一区| 国产 一区 欧美 日韩| 久久久成人免费电影| 免费黄网站久久成人精品| 精华霜和精华液先用哪个| 热re99久久精品国产66热6| 婷婷色麻豆天堂久久| 亚洲欧美一区二区三区国产| 亚洲精品自拍成人| 在线免费观看不下载黄p国产| 欧美精品一区二区大全| 亚洲人与动物交配视频| 国产乱人视频| 国产中年淑女户外野战色| 在线观看av片永久免费下载| 水蜜桃什么品种好| 亚洲av国产av综合av卡| 99热6这里只有精品| 久久精品人妻少妇| 国产精品国产三级国产专区5o| 中文字幕av成人在线电影| 男人爽女人下面视频在线观看| 一级毛片黄色毛片免费观看视频| 国产亚洲av嫩草精品影院| 熟女电影av网| 一本一本综合久久| 麻豆久久精品国产亚洲av| 高清欧美精品videossex| 全区人妻精品视频| 国内精品宾馆在线| 亚洲av欧美aⅴ国产| 高清欧美精品videossex| 国产有黄有色有爽视频| 国产亚洲精品久久久com| 肉色欧美久久久久久久蜜桃 | 欧美亚洲 丝袜 人妻 在线| 午夜激情福利司机影院| 国产精品偷伦视频观看了| 国产亚洲一区二区精品| 日本色播在线视频| 中文字幕免费在线视频6| 日本午夜av视频| 欧美 日韩 精品 国产| 久久久亚洲精品成人影院| 久久影院123| 赤兔流量卡办理| 91久久精品国产一区二区三区| 久热这里只有精品99| 亚洲内射少妇av| 成人一区二区视频在线观看| 亚洲精品国产成人久久av| 国产又色又爽无遮挡免| 亚洲av一区综合| 内射极品少妇av片p| 青青草视频在线视频观看| 人妻一区二区av| 在线观看国产h片| 尾随美女入室| 午夜免费鲁丝| 精品酒店卫生间| 69av精品久久久久久| 国产白丝娇喘喷水9色精品| 天天躁日日操中文字幕| 肉色欧美久久久久久久蜜桃 | 亚洲精品自拍成人| 成人鲁丝片一二三区免费| 免费观看a级毛片全部| 国产精品蜜桃在线观看| www.色视频.com| 老师上课跳d突然被开到最大视频| 免费电影在线观看免费观看| 免费人成在线观看视频色| 久久久久久国产a免费观看| 成人一区二区视频在线观看| 久久久久久国产a免费观看| 午夜免费男女啪啪视频观看| 一级毛片久久久久久久久女| 大香蕉久久网| 好男人视频免费观看在线| 国产男女超爽视频在线观看| 男插女下体视频免费在线播放| 国产免费福利视频在线观看| 狂野欧美白嫩少妇大欣赏| 亚洲一区二区三区欧美精品 | 国产伦精品一区二区三区视频9| 尤物成人国产欧美一区二区三区| 777米奇影视久久| 免费人成在线观看视频色| 欧美另类一区| 伦精品一区二区三区| 亚洲色图综合在线观看| 99精国产麻豆久久婷婷| 在线免费十八禁| freevideosex欧美| 欧美 日韩 精品 国产| 搡女人真爽免费视频火全软件| 国产日韩欧美亚洲二区| 97超视频在线观看视频| 青春草视频在线免费观看| 亚洲欧洲日产国产| 欧美激情国产日韩精品一区| 一区二区三区四区激情视频| 欧美日韩综合久久久久久| 亚洲av免费高清在线观看| 在线观看av片永久免费下载| 成人二区视频| 国产成人91sexporn| 国产日韩欧美在线精品| 综合色av麻豆| 国产欧美亚洲国产| 日本一二三区视频观看| 亚洲精品视频女| 人妻少妇偷人精品九色| 日韩av不卡免费在线播放| 韩国高清视频一区二区三区| 亚洲欧美成人综合另类久久久| 99久久精品热视频| 午夜亚洲福利在线播放| 简卡轻食公司| 亚洲精品,欧美精品| 美女视频免费永久观看网站| 日日撸夜夜添| 精品久久久久久久人妻蜜臀av| 欧美性感艳星| 亚洲经典国产精华液单| 在线 av 中文字幕| 街头女战士在线观看网站| 亚洲国产成人一精品久久久| 亚洲精品色激情综合| 国产伦精品一区二区三区四那| 国产精品女同一区二区软件| 波野结衣二区三区在线| 好男人在线观看高清免费视频| 亚洲精品日韩在线中文字幕| 超碰97精品在线观看| 亚洲欧美成人综合另类久久久| 国产精品麻豆人妻色哟哟久久| 国产一区二区亚洲精品在线观看| 国产一区二区三区综合在线观看 | 啦啦啦啦在线视频资源| 亚洲综合色惰| 波多野结衣巨乳人妻| av在线天堂中文字幕| 白带黄色成豆腐渣| 免费观看的影片在线观看| 边亲边吃奶的免费视频| 亚洲精品456在线播放app| 亚洲怡红院男人天堂| 大又大粗又爽又黄少妇毛片口| 精品一区在线观看国产| 亚洲色图av天堂| 国产精品嫩草影院av在线观看| 男女啪啪激烈高潮av片| 在线亚洲精品国产二区图片欧美 | 成人美女网站在线观看视频| 亚洲av福利一区| 亚洲国产精品999| 亚洲高清免费不卡视频| 91久久精品电影网| 亚洲精品中文字幕在线视频 | 日本免费在线观看一区| 国产精品国产三级国产专区5o| 成人国产麻豆网| 中文字幕久久专区| 一级毛片久久久久久久久女| 高清午夜精品一区二区三区| 久久人人爽人人片av| 男女下面进入的视频免费午夜| 国产精品麻豆人妻色哟哟久久| 国产高清国产精品国产三级 | 日本wwww免费看| 久久精品熟女亚洲av麻豆精品| 一级毛片久久久久久久久女| 国产熟女欧美一区二区| 欧美xxxx性猛交bbbb| 久久国产乱子免费精品| 男女那种视频在线观看| 久久久久久国产a免费观看| 日韩国内少妇激情av| 婷婷色综合www| 国产黄色免费在线视频| 亚洲av在线观看美女高潮| 777米奇影视久久| 国产伦精品一区二区三区四那| 免费大片18禁| 在线天堂最新版资源| 国产成人aa在线观看| 26uuu在线亚洲综合色| 国产日韩欧美在线精品| 日本av手机在线免费观看| 欧美区成人在线视频| 最近的中文字幕免费完整| 亚洲精品成人久久久久久| 亚洲av在线观看美女高潮| 国产成人精品婷婷| 免费看光身美女| 大香蕉97超碰在线| 黄片无遮挡物在线观看| 久久久久久久亚洲中文字幕| 日韩成人av中文字幕在线观看| 高清午夜精品一区二区三区| 成年免费大片在线观看| 国产精品久久久久久精品电影| 在线观看一区二区三区激情| 亚洲av电影在线观看一区二区三区 | 日本猛色少妇xxxxx猛交久久| 岛国毛片在线播放| 国内精品宾馆在线| 精华霜和精华液先用哪个| 国产色婷婷99| 嫩草影院新地址| 亚洲av日韩在线播放| 如何舔出高潮| 日本猛色少妇xxxxx猛交久久| 五月开心婷婷网| 国产成人aa在线观看| 亚洲美女视频黄频| 欧美高清成人免费视频www| 一区二区三区免费毛片| 国产亚洲5aaaaa淫片| 老女人水多毛片| 青春草亚洲视频在线观看| 国产熟女欧美一区二区| 成人二区视频| 2018国产大陆天天弄谢| 黄色一级大片看看| 51国产日韩欧美| 国产精品秋霞免费鲁丝片| 看黄色毛片网站| 一级毛片我不卡| 欧美亚洲 丝袜 人妻 在线| 观看免费一级毛片| 嫩草影院新地址| 国产高潮美女av| 高清毛片免费看| 噜噜噜噜噜久久久久久91| 国产高清不卡午夜福利| 久久久久性生活片| 黑人高潮一二区| 人妻制服诱惑在线中文字幕| 乱系列少妇在线播放| 搡女人真爽免费视频火全软件| 国产成人午夜福利电影在线观看| 久久久久九九精品影院| 哪个播放器可以免费观看大片| 精品视频人人做人人爽| 嫩草影院入口| 国产黄频视频在线观看| 欧美一级a爱片免费观看看| 日日摸夜夜添夜夜爱| 亚洲一区二区三区欧美精品 | 久久影院123| 天堂中文最新版在线下载 | 久久99精品国语久久久| 真实男女啪啪啪动态图| 亚洲欧美日韩卡通动漫| 亚洲精品视频女| 国产色爽女视频免费观看| 久久精品久久精品一区二区三区| 久久热精品热| 中文在线观看免费www的网站| 午夜免费鲁丝| 久久热精品热| 国产综合懂色| 久久97久久精品| 亚洲精品日韩在线中文字幕| av在线老鸭窝| 国产成人免费无遮挡视频| 午夜福利在线在线| 亚洲在线观看片| 欧美成人a在线观看| 日本与韩国留学比较| 日韩电影二区| 国模一区二区三区四区视频| 国产真实伦视频高清在线观看| 国产欧美日韩精品一区二区| 亚洲婷婷狠狠爱综合网| 亚洲欧美日韩无卡精品| a级一级毛片免费在线观看| 亚洲va在线va天堂va国产| 日本与韩国留学比较| 精品视频人人做人人爽| 午夜老司机福利剧场| 精品久久久久久久久亚洲| 午夜视频国产福利| 2021少妇久久久久久久久久久| 视频区图区小说| 伦精品一区二区三区|