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

    基于Spring Boot與MyBatis框架構(gòu)建動(dòng)態(tài)讀寫分離模型

    2021-03-17 07:32:48張旭剛張昕高若寒
    微型電腦應(yīng)用 2021年2期
    關(guān)鍵詞:數(shù)據(jù)源線程調(diào)用

    張旭剛, 張昕, 高若寒

    (國電南瑞科技股份有限公司 信息系統(tǒng)集成分公司, 江蘇 南京 210000)

    0 引言

    讀寫分離集群,不僅提高了系統(tǒng)的健壯性和可靠性,以及系統(tǒng)的吞吐量和性能,保障了系統(tǒng)業(yè)務(wù)的連續(xù)性,而且也實(shí)現(xiàn)了資源的最大利用率。當(dāng)前的實(shí)現(xiàn)方法主要通過靜態(tài)方式配置,主要有中間件方式,如amoeba和mysql-proxy,分業(yè)務(wù)方式,對(duì)讀寫操作配置url。靜態(tài)方式缺乏靈活性,無法根據(jù)系統(tǒng)負(fù)載、用戶需求等情況,實(shí)現(xiàn)資源的快速動(dòng)態(tài)收縮,難以滿足在不停機(jī)的條件下進(jìn)行數(shù)據(jù)源切換,無法保證業(yè)務(wù)的連續(xù)性。

    利用Spring Boot和MyBatis框架提供的優(yōu)勢(shì),通過面向切面編程AOP,實(shí)現(xiàn)一種對(duì)應(yīng)用透明、數(shù)據(jù)源可以動(dòng)態(tài)收縮與切換的模型。

    1 Spring Boot架構(gòu)

    Spring Boot是由Pivotal團(tuán)隊(duì)提供,簡化Spring開發(fā)的微服務(wù)框架。通過約定優(yōu)于配置和起步依賴,簡化復(fù)雜的依賴關(guān)系,大量減少XML配置文件,基本實(shí)現(xiàn)自動(dòng)化位置,能夠快速創(chuàng)建獨(dú)立運(yùn)行的Spring項(xiàng)目,并且集成了主流框架,如AOP和MyBatis。為實(shí)現(xiàn)動(dòng)態(tài)讀寫分離模型,主要利用面向切面編程技術(shù)AOP、MyBatis映射、SpringBoot的類Abstract Routing Data Source和Thread Local實(shí)現(xiàn)不同線程間的數(shù)據(jù)隔離[1]。

    1.1 Spring AOP

    Spring AOP(Aspect-Oriented Programming,面向切面編程),是一種稱為“橫切”的技術(shù),把與業(yè)務(wù)無關(guān)邏輯,但為業(yè)務(wù)模塊共同調(diào)用的邏輯或功能封裝起來,將其命名為“Aspect”,即方面,減少系統(tǒng)的重復(fù)代碼,降低模塊間的耦合度,便于后期的操作和維護(hù)。在論文中,主要使用AOP的前置通知,攔截MyBatis映射的SQL語句,動(dòng)態(tài)選擇數(shù)據(jù)源。

    1.2 MyBatis映射

    Mybatis是一個(gè)支持普通SQL查詢、存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架,在持久層映射關(guān)系的開發(fā)中,可以不用寫實(shí)現(xiàn)類,能以代理方式自動(dòng)生成實(shí)現(xiàn)代碼,同時(shí)SQL語句寫在映射XML文件中,實(shí)現(xiàn)了代碼與SQL分離,降低耦合度。在映射XML文件中,通過id標(biāo)識(shí)不同類型的SQL語句,對(duì)查詢、插入、刪除和更新語句進(jìn)行區(qū)分,如查詢語句的id前綴為query,刪除語句的id前綴為delete,通過甄別判斷為不同SQL語句選擇對(duì)應(yīng)的數(shù)據(jù)源,實(shí)現(xiàn)動(dòng)態(tài)的讀寫分離。

    1.3 Abstract Routing Data Source

    Spring Boot提供了Abstract Routing Data Source根據(jù)用戶定義的規(guī)則選擇當(dāng)前的數(shù)據(jù)源,可以在執(zhí)行SQL操作前,設(shè)置使用的數(shù)據(jù)源,實(shí)現(xiàn)動(dòng)態(tài)路由數(shù)據(jù)源的模型,它的方法determine Target Data Source()返回一個(gè)數(shù)據(jù)源,在該方法內(nèi)部會(huì)調(diào)用抽象方法determine Current Lookup Key()決定使用哪個(gè)數(shù)據(jù)源,lookup key鍵通常是通過Thread Local綁定的上下文來實(shí)現(xiàn)。

    1.4 Thread Local

    Thread Local作用是提供線程內(nèi)的局部變量,維護(hù)變量時(shí)Thread Local為每個(gè)使用該變量的線程提供獨(dú)立的變量副本。

    在面向切面編程AOP的前置通知中通過Thread Local設(shè)置線程的數(shù)據(jù)源類型,是讀數(shù)據(jù)源還是寫數(shù)據(jù)源。在返回?cái)?shù)據(jù)源的時(shí)候,通過determine Current Lookup Key()調(diào)用Thread Local取得線程的數(shù)據(jù)源類型,從而為本次訪問指定具體的數(shù)據(jù)源,是訪問讀庫還是寫庫[2]。

    2 動(dòng)態(tài)讀寫分離設(shè)計(jì)與實(shí)現(xiàn)

    2.1 總體架構(gòu)

    程序?qū)崿F(xiàn)基于Spring Boot框架,通過Maven進(jìn)行編譯、測試和打包。Spring Boot基于Spring,減少了配置,簡化了編碼,使開發(fā)更高效便捷[3]。整體實(shí)現(xiàn)分五層,第一層客戶端即應(yīng)用程序,發(fā)起數(shù)據(jù)訪問;第二層訪問到DAO(數(shù)據(jù)訪問對(duì)象),訪問的sql語句配置在MyBatis的映射文件里,與程序的DAO接口形成映射關(guān)系,由MyBatis自動(dòng)實(shí)現(xiàn)接口的文件,對(duì)數(shù)據(jù)庫進(jìn)行訪問;第三層,AOP,即面向切面編程層,在DAO訪問數(shù)據(jù)庫之前,進(jìn)行攔截,根據(jù)訪問id進(jìn)行動(dòng)態(tài)選擇數(shù)據(jù)源,如果是查詢語句則訪問讀庫,如果是修改語句,則指向到主數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)的讀寫分離,主要功能有負(fù)載均衡、高可用性、SQL過濾、讀寫分離和數(shù)據(jù)庫路由等;第四層,創(chuàng)建和封裝兩個(gè)數(shù)據(jù)源,每個(gè)數(shù)據(jù)源創(chuàng)建一個(gè)數(shù)據(jù)庫資源池,分別指向?qū)憯?shù)據(jù)庫和讀數(shù)據(jù)庫;第五層,主備數(shù)據(jù)庫之間,通過binlog進(jìn)行數(shù)據(jù)實(shí)時(shí)同步,并進(jìn)行故障切換[4]。

    通過上面五層,與Spring Boot和MyBatis架構(gòu)構(gòu)建程序一致,對(duì)原有程序透明,無任何侵入,原程序不需要任何改造,簡單便捷地實(shí)現(xiàn)了動(dòng)態(tài)的數(shù)據(jù)庫讀寫分離[5]。

    同時(shí),這種結(jié)構(gòu)可以進(jìn)行橫向擴(kuò)展,當(dāng)性能無法滿足需求時(shí),添加數(shù)據(jù)源,添加數(shù)據(jù)庫,進(jìn)行負(fù)載分擔(dān),對(duì)應(yīng)用透明,如圖1所示。

    2.2 讀寫分離的實(shí)現(xiàn)

    實(shí)現(xiàn)MySQL數(shù)據(jù)庫的動(dòng)態(tài)讀寫分離,讀寫分離的實(shí)現(xiàn)類圖,如圖2所示。

    主要由四個(gè)類實(shí)現(xiàn),Dynamic Data Source動(dòng)態(tài)的根據(jù)數(shù)據(jù)源的值返回?cái)?shù)據(jù)源;Data Source Context Holder封裝了Thread Local,用于設(shè)置和獲取本次訪問的數(shù)據(jù)源的值;Dynamic Data Source Aspect實(shí)現(xiàn)AOP的前置通知,攔截和解析SQL的id,根據(jù)id判斷是讀操作還是寫操作,通過Data Source Context Holder動(dòng)態(tài)設(shè)置數(shù)據(jù)源的值,然后Dynamic Data Source獲取到要訪問的數(shù)據(jù)源;Multi Data Source Con-fig配置多個(gè)數(shù)據(jù)源,在應(yīng)用啟動(dòng)后有多個(gè)數(shù)據(jù)源可以選擇。

    圖1 總體結(jié)構(gòu)圖

    圖2 讀寫分離的實(shí)現(xiàn)類圖

    Dynamic Data Source,用于獲取數(shù)據(jù)庫訪問的數(shù)據(jù)源,如果是查詢操作,返回只讀庫數(shù)據(jù)源,如果是增刪改則訪問寫庫。繼承Abstract Routing Data Source并重寫其中的方法determine Current Lookup Key(),該方法調(diào)用封裝了Thread Local的Database Context Holder,獲取當(dāng)前線程的Database Type。

    Data Source Context Holder,用戶設(shè)置數(shù)據(jù)庫訪問的數(shù)據(jù)源,具體設(shè)置通過切面攔截調(diào)用該類的方法set Data Source Type。該類擁有一個(gè)Thread Local的靜態(tài)常量私有屬性private static final Thread Local〈String〉 CONTEXT_HOLDER = new Thread Local〈String〉(),靜態(tài)方法set Data Source Type(String data Source Key)和get Data Source Type()通過CONTEXT_HOLDER屬性,用于標(biāo)識(shí)數(shù)據(jù)源,給每個(gè)訪問數(shù)據(jù)庫的線程返回要訪問的數(shù)據(jù)源。

    Dynamic Data Source Aspect用于定義要攔截的SQL操作,通過前置通知解析MyBatis中配置的id,根據(jù)id判斷SQL操作是讀操作還是增刪改,并利用Data Source Context Holder的靜態(tài)方法設(shè)置當(dāng)前線程的數(shù)據(jù)源類型。在進(jìn)行數(shù)據(jù)源選擇時(shí),Dynamic Data Source返回設(shè)置的當(dāng)前線程的數(shù)據(jù)源類型,當(dāng)前線程準(zhǔn)確地找到需要訪問的數(shù)據(jù)源。它的主要實(shí)現(xiàn)方法如下。

    @Pointcut("execution( * com.sboot.dao.*.*(..))")

    public void daoAspect() {

    }

    @Before("daoAspect()")

    public void switchDataSource(JoinPoint point) {

    System.out.println("Begin to execute "+point.getSignature().getName());

    Boolean isQueryMethod = isQueryMethod(point.getSignature().getName());

    if (isQueryMethod) {

    DataSourceContextHolder.setDataSourceType("slave");

    System.out.println("Slave DataSource begin to execute "+point.getSignature().getName());

    }

    }

    Multi Data Source Config,是一個(gè)基于注解的配置,主要封裝了寫和讀兩個(gè)數(shù)據(jù)源,實(shí)現(xiàn)多數(shù)據(jù)源,需要取消Spring Boot的自動(dòng)數(shù)據(jù)源配置,主要實(shí)現(xiàn)方法如下。

    @Bean("dynamicDataSource")

    public DataSource dynamicDataSource() {

    Map〈Object, Object〉 targetDataSources = new HashMap〈Object, Object〉();

    targetDataSources.put("master", masterDataSource());

    targetDataSources.put("slave", slaveDataSource());

    DynamicDataSource dataSource = new DynamicDataSource();

    dataSource.setTargetDataSources(targetDataSources);

    dataSource.setDefaultTargetDataSource(masterDataSource());

    return dataSource;

    }

    2.3 配置多數(shù)據(jù)源

    在application.yml中添加兩個(gè)數(shù)據(jù)源[6]:

    pring:

    datasource:

    master://寫數(shù)據(jù)源的配置

    url:

    jdbc:mysql://192.168.10.12:3306/masterdb?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

    username: studba

    password: stuDba1

    driverClassName: com.mysql.cj.jdbc.Driver

    slave://讀數(shù)據(jù)源的配置

    url:

    jdbc:mysql://192.168.10.13:3306/slavedb?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

    username: studba

    password: stuDba1

    driverClassName: com.mysql.cj.jdbc.Driver

    然后在類DataSourceConfig中,利用注解的方式生成數(shù)據(jù)源:

    @Primary

    @Bean("masterDataSource")

    @ConfigurationProperties(prefix = "spring.datasource.master")

    public DataSource masterDataSource() {

    return DataSourceBuilder.create().build();

    }

    通過@ConfigurationProperties注解把在配置文件的配置自動(dòng)的匹配配置數(shù)據(jù)源需要的值,生成數(shù)據(jù)源。備數(shù)據(jù)源的原理與上面一致。

    2.4 數(shù)據(jù)訪問流程

    數(shù)據(jù)訪問流程,如圖3所示。

    圖3 數(shù)據(jù)訪問流程

    (1) 客戶端訪問數(shù)據(jù)庫,正常流程走到DAO層,MyBatis進(jìn)行映射接口,取得映射的sql語句,如findStudentById。

    (2) 取得sql語句訪問數(shù)據(jù)庫。

    (3) 通過@Before("daoAspect()")攔截訪問,并檢查是查詢語句,設(shè)置數(shù)據(jù)源為讀數(shù)據(jù)庫。

    判斷出是find開頭的sql語句,設(shè)置讀數(shù)據(jù)源DataSourceContextHolder.setDataSourceType("slave")。

    (4) MultiDynamicDataSource

    在方法determineCurrentLookupKey()中返回?cái)?shù)據(jù)源類型return DataSourceContextHolder.getDataSourceType()。

    (5) MultiDynamicDataSource的方法

    determineTargetDataSource()根據(jù)上面determineCurrentLookupKey()函數(shù)返回的key值選擇一個(gè)指定的數(shù)據(jù)源。

    (6) 返回要訪問的數(shù)據(jù)源,本次訪問返回的是讀數(shù)據(jù)源。

    (7) 根據(jù)返回的讀數(shù)據(jù)源,訪問讀數(shù)據(jù)庫。

    2.5 應(yīng)用驗(yàn)證

    通過學(xué)生ID查詢學(xué)生信息進(jìn)行驗(yàn)證,查詢操作到讀庫進(jìn)行操作。查詢學(xué)生信息的MyBatis SQL id是findStudent ById,在瀏覽器輸入http://192.168.1.10:8080/stuInfo,進(jìn)行查詢,日志輸出信息,如圖4所示。

    圖4 測試驗(yàn)證

    日志打印出執(zhí)行sql語句findStudentById,動(dòng)態(tài)選擇讀數(shù)據(jù)源Slave DataSource執(zhí)行。

    3 總結(jié)

    本文基于Spring Boot和MyBatis框架,實(shí)現(xiàn)了動(dòng)態(tài)的MySQL讀寫分離模型,方法簡單、便捷,對(duì)應(yīng)用透明,低耦合,無侵入性,安裝和拆卸對(duì)現(xiàn)有程序無任何影響,沒有額外的成本。后續(xù)可加入多數(shù)據(jù)源,通過zookeeper進(jìn)行狀態(tài)監(jiān)控和管理,實(shí)現(xiàn)更智能和動(dòng)態(tài)的數(shù)據(jù)庫的橫向擴(kuò)展和收縮,滿足云計(jì)算場景需求。

    猜你喜歡
    數(shù)據(jù)源線程調(diào)用
    核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
    基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
    淺談linux多線程協(xié)作
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
    分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)
    利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
    Linux線程實(shí)現(xiàn)技術(shù)研究
    日日干狠狠操夜夜爽| 中文资源天堂在线| 精品久久久久久成人av| 可以在线观看的亚洲视频| 色综合欧美亚洲国产小说| 欧美日韩福利视频一区二区| 国产视频内射| 啦啦啦韩国在线观看视频| 无限看片的www在线观看| 国产成人av激情在线播放| 亚洲avbb在线观看| 久久这里只有精品19| 中文在线观看免费www的网站 | 日韩国内少妇激情av| 欧美成人午夜精品| 午夜a级毛片| 国产亚洲欧美在线一区二区| 99在线人妻在线中文字幕| 亚洲精华国产精华精| 国产69精品久久久久777片 | 色在线成人网| 国产黄色小视频在线观看| 无人区码免费观看不卡| 日日摸夜夜添夜夜添小说| 精品少妇一区二区三区视频日本电影| 18禁黄网站禁片免费观看直播| 欧美一区二区国产精品久久精品 | 成年版毛片免费区| 18禁黄网站禁片免费观看直播| or卡值多少钱| 国产视频内射| 天天一区二区日本电影三级| 三级男女做爰猛烈吃奶摸视频| 巨乳人妻的诱惑在线观看| 亚洲精品国产精品久久久不卡| 色综合站精品国产| 久热爱精品视频在线9| 99久久无色码亚洲精品果冻| 久久久久久久午夜电影| 伊人久久大香线蕉亚洲五| 身体一侧抽搐| 国产成+人综合+亚洲专区| 在线观看免费日韩欧美大片| 亚洲欧美日韩高清专用| 我要搜黄色片| 国产精品九九99| 国产黄片美女视频| 国产成+人综合+亚洲专区| 正在播放国产对白刺激| 中出人妻视频一区二区| 这个男人来自地球电影免费观看| 1024视频免费在线观看| 嫩草影院精品99| 久久久国产精品麻豆| 91成年电影在线观看| 91成年电影在线观看| 性色av乱码一区二区三区2| 日本a在线网址| 一级作爱视频免费观看| 在线观看午夜福利视频| 看片在线看免费视频| 日本 欧美在线| 久久久国产精品麻豆| 国内毛片毛片毛片毛片毛片| 男女下面进入的视频免费午夜| 亚洲精品在线观看二区| 久久久国产欧美日韩av| 国产精品98久久久久久宅男小说| 中文字幕久久专区| 国产视频内射| 欧美日韩福利视频一区二区| 最近在线观看免费完整版| 欧美日韩福利视频一区二区| 琪琪午夜伦伦电影理论片6080| 久久久久久久午夜电影| 90打野战视频偷拍视频| 欧美日韩乱码在线| 久久久久精品国产欧美久久久| 国产精品免费视频内射| 国产91精品成人一区二区三区| 这个男人来自地球电影免费观看| 国产av麻豆久久久久久久| 999久久久国产精品视频| 亚洲中文av在线| 午夜激情福利司机影院| 岛国在线观看网站| 1024香蕉在线观看| 桃红色精品国产亚洲av| 亚洲av中文字字幕乱码综合| 成人三级黄色视频| 69av精品久久久久久| 日本三级黄在线观看| 久久香蕉精品热| 国产成年人精品一区二区| 最近在线观看免费完整版| 国产1区2区3区精品| 欧美又色又爽又黄视频| 日日干狠狠操夜夜爽| √禁漫天堂资源中文www| 小说图片视频综合网站| 亚洲av成人av| 欧美色欧美亚洲另类二区| 老司机深夜福利视频在线观看| 神马国产精品三级电影在线观看 | 看黄色毛片网站| 女人高潮潮喷娇喘18禁视频| 免费看十八禁软件| 男男h啪啪无遮挡| 国产男靠女视频免费网站| 男女之事视频高清在线观看| 一本精品99久久精品77| 免费在线观看影片大全网站| 91av网站免费观看| www.熟女人妻精品国产| 999精品在线视频| 五月玫瑰六月丁香| 亚洲成a人片在线一区二区| 久久精品亚洲精品国产色婷小说| 国产精品久久久av美女十八| 日韩大码丰满熟妇| 国产激情偷乱视频一区二区| 村上凉子中文字幕在线| 日本 欧美在线| 淫妇啪啪啪对白视频| 国产精品综合久久久久久久免费| 狠狠狠狠99中文字幕| 精品久久久久久成人av| 亚洲成人久久性| 亚洲狠狠婷婷综合久久图片| 欧美另类亚洲清纯唯美| 12—13女人毛片做爰片一| 亚洲人成77777在线视频| 久久草成人影院| 国产精品一区二区精品视频观看| 亚洲国产欧洲综合997久久,| 欧美中文日本在线观看视频| 精品少妇一区二区三区视频日本电影| 亚洲性夜色夜夜综合| 欧美成人免费av一区二区三区| 国产精品免费视频内射| 天天添夜夜摸| 观看免费一级毛片| 大型黄色视频在线免费观看| 人成视频在线观看免费观看| 一级毛片高清免费大全| 国产精品久久久人人做人人爽| 亚洲色图 男人天堂 中文字幕| 在线国产一区二区在线| 午夜a级毛片| 午夜精品在线福利| 一本综合久久免费| 久久精品aⅴ一区二区三区四区| 午夜福利视频1000在线观看| 老司机深夜福利视频在线观看| 国产亚洲欧美98| 搞女人的毛片| 黄片小视频在线播放| 成人av在线播放网站| 中文资源天堂在线| 国产成年人精品一区二区| x7x7x7水蜜桃| 激情在线观看视频在线高清| av有码第一页| 亚洲第一电影网av| 村上凉子中文字幕在线| 午夜免费激情av| 波多野结衣巨乳人妻| 精华霜和精华液先用哪个| 国模一区二区三区四区视频 | 12—13女人毛片做爰片一| 欧美日韩亚洲综合一区二区三区_| 国产成人啪精品午夜网站| 人妻夜夜爽99麻豆av| 听说在线观看完整版免费高清| 国产激情久久老熟女| 亚洲中文字幕一区二区三区有码在线看 | 精品国产亚洲在线| 久久中文字幕一级| 夜夜躁狠狠躁天天躁| 人人妻人人澡欧美一区二区| 好男人在线观看高清免费视频| 亚洲成av人片在线播放无| 久久婷婷人人爽人人干人人爱| 麻豆国产av国片精品| 好看av亚洲va欧美ⅴa在| 久久这里只有精品中国| 久久久久性生活片| 免费无遮挡裸体视频| 欧美av亚洲av综合av国产av| 女生性感内裤真人,穿戴方法视频| 99精品欧美一区二区三区四区| 亚洲九九香蕉| 99久久精品国产亚洲精品| 中文字幕久久专区| 特级一级黄色大片| 亚洲人成网站在线播放欧美日韩| 欧美+亚洲+日韩+国产| 久久人人精品亚洲av| 美女高潮喷水抽搐中文字幕| 亚洲精品美女久久久久99蜜臀| 国产精品自产拍在线观看55亚洲| cao死你这个sao货| 后天国语完整版免费观看| 高清毛片免费观看视频网站| 狂野欧美激情性xxxx| 国产探花在线观看一区二区| 欧美精品啪啪一区二区三区| 国产精品永久免费网站| 色尼玛亚洲综合影院| 亚洲成人免费电影在线观看| 18禁国产床啪视频网站| 日韩高清综合在线| 色综合婷婷激情| 国产蜜桃级精品一区二区三区| 无人区码免费观看不卡| 精品国产超薄肉色丝袜足j| 日韩欧美免费精品| 日日爽夜夜爽网站| 国产精品免费一区二区三区在线| 欧美黄色淫秽网站| 999久久久精品免费观看国产| 亚洲九九香蕉| 精品久久久久久久人妻蜜臀av| 久久国产乱子伦精品免费另类| 亚洲av电影在线进入| 国产午夜福利久久久久久| 男人舔奶头视频| 亚洲av成人不卡在线观看播放网| 91成年电影在线观看| 国产视频内射| 超碰成人久久| 色噜噜av男人的天堂激情| 欧美zozozo另类| 亚洲国产中文字幕在线视频| 99国产精品一区二区三区| 啦啦啦免费观看视频1| 欧美黑人巨大hd| 欧美中文综合在线视频| 黄色成人免费大全| 国产精品,欧美在线| 香蕉国产在线看| 99精品在免费线老司机午夜| av中文乱码字幕在线| 不卡一级毛片| 99久久99久久久精品蜜桃| 夜夜夜夜夜久久久久| 日日夜夜操网爽| 妹子高潮喷水视频| 日本 av在线| 国产一区二区三区在线臀色熟女| 婷婷亚洲欧美| 老熟妇乱子伦视频在线观看| 日本五十路高清| 99精品欧美一区二区三区四区| 人成视频在线观看免费观看| 中文字幕精品亚洲无线码一区| 国产69精品久久久久777片 | 首页视频小说图片口味搜索| 两个人看的免费小视频| 久久精品国产综合久久久| 妹子高潮喷水视频| 三级男女做爰猛烈吃奶摸视频| 亚洲精品久久成人aⅴ小说| 色综合站精品国产| 国产精品亚洲av一区麻豆| 又黄又爽又免费观看的视频| 岛国视频午夜一区免费看| 久久草成人影院| 大型黄色视频在线免费观看| 1024手机看黄色片| 一区二区三区激情视频| 中亚洲国语对白在线视频| 国产熟女xx| 中文字幕人妻丝袜一区二区| 精品久久久久久久久久久久久| 成人三级黄色视频| 亚洲一区高清亚洲精品| 亚洲真实伦在线观看| 后天国语完整版免费观看| av免费在线观看网站| 叶爱在线成人免费视频播放| 亚洲成av人片在线播放无| 十八禁网站免费在线| 国产久久久一区二区三区| 天天躁夜夜躁狠狠躁躁| 精品久久久久久久人妻蜜臀av| 久久中文看片网| 国产成人欧美在线观看| 亚洲av成人不卡在线观看播放网| 国产熟女午夜一区二区三区| 女同久久另类99精品国产91| 免费看美女性在线毛片视频| 亚洲av片天天在线观看| 亚洲中文av在线| 亚洲人成网站高清观看| 精品国产美女av久久久久小说| 99久久综合精品五月天人人| 亚洲成人精品中文字幕电影| 欧美色欧美亚洲另类二区| 国产爱豆传媒在线观看 | 国产精品久久久久久亚洲av鲁大| 国产av又大| 好看av亚洲va欧美ⅴa在| 91麻豆精品激情在线观看国产| 欧美成狂野欧美在线观看| 午夜久久久久精精品| 全区人妻精品视频| 日本精品一区二区三区蜜桃| 黄频高清免费视频| 成人亚洲精品av一区二区| 国语自产精品视频在线第100页| 一区福利在线观看| 视频区欧美日本亚洲| 两人在一起打扑克的视频| 免费一级毛片在线播放高清视频| 国产亚洲精品第一综合不卡| 在线观看美女被高潮喷水网站 | 美女扒开内裤让男人捅视频| 777久久人妻少妇嫩草av网站| 国产免费av片在线观看野外av| cao死你这个sao货| 国产成人精品久久二区二区免费| 久久精品aⅴ一区二区三区四区| 成人av在线播放网站| 男女午夜视频在线观看| 久久久国产精品麻豆| 女警被强在线播放| 欧美乱色亚洲激情| 18禁国产床啪视频网站| tocl精华| 国产亚洲精品av在线| 大型黄色视频在线免费观看| 九色成人免费人妻av| 在线观看免费午夜福利视频| 可以在线观看毛片的网站| 欧美激情久久久久久爽电影| 此物有八面人人有两片| 狠狠狠狠99中文字幕| 99热这里只有是精品50| 国产精品久久久久久久电影 | 搡老熟女国产l中国老女人| 日韩欧美一区二区三区在线观看| 国产av一区在线观看免费| 国产又色又爽无遮挡免费看| 国产成人啪精品午夜网站| av在线播放免费不卡| 性欧美人与动物交配| 午夜影院日韩av| x7x7x7水蜜桃| 99国产极品粉嫩在线观看| 国产真实乱freesex| 色哟哟哟哟哟哟| 久久九九热精品免费| 国产精品亚洲一级av第二区| 黄片大片在线免费观看| 身体一侧抽搐| 亚洲成人久久爱视频| 12—13女人毛片做爰片一| 亚洲欧美日韩高清专用| 精品电影一区二区在线| 久久久精品国产亚洲av高清涩受| 成人国产一区最新在线观看| av片东京热男人的天堂| 村上凉子中文字幕在线| 色综合欧美亚洲国产小说| 亚洲成人中文字幕在线播放| 蜜桃久久精品国产亚洲av| 五月伊人婷婷丁香| 欧美日韩亚洲国产一区二区在线观看| 国产主播在线观看一区二区| 日韩欧美国产在线观看| 男女床上黄色一级片免费看| 亚洲av成人精品一区久久| 亚洲18禁久久av| 50天的宝宝边吃奶边哭怎么回事| 国产精品九九99| 精品久久久久久久人妻蜜臀av| 国产亚洲欧美在线一区二区| 亚洲成av人片在线播放无| 天天添夜夜摸| 亚洲欧美日韩东京热| 久久精品国产亚洲av高清一级| 亚洲专区字幕在线| 国产成人精品无人区| 国产精品国产高清国产av| 国产精品久久久久久人妻精品电影| 亚洲一区中文字幕在线| 久久精品成人免费网站| 动漫黄色视频在线观看| 在线观看免费午夜福利视频| 男人舔奶头视频| xxxwww97欧美| 国产一区二区在线观看日韩 | 欧美在线一区亚洲| 又紧又爽又黄一区二区| 久久午夜亚洲精品久久| 精品电影一区二区在线| 国产区一区二久久| 一a级毛片在线观看| 欧美另类亚洲清纯唯美| 免费电影在线观看免费观看| 亚洲 欧美一区二区三区| 变态另类丝袜制服| 久久精品国产综合久久久| 精品国产乱码久久久久久男人| 亚洲va日本ⅴa欧美va伊人久久| 亚洲七黄色美女视频| 国产精品国产高清国产av| 老鸭窝网址在线观看| 一边摸一边做爽爽视频免费| 真人一进一出gif抽搐免费| 国产爱豆传媒在线观看 | 欧美黑人精品巨大| 国产又黄又爽又无遮挡在线| 国产av不卡久久| 精品久久久久久久人妻蜜臀av| 久久久精品欧美日韩精品| 国产成+人综合+亚洲专区| 成人午夜高清在线视频| 又紧又爽又黄一区二区| 国产熟女午夜一区二区三区| 女人高潮潮喷娇喘18禁视频| 亚洲avbb在线观看| 亚洲av美国av| 国产精品野战在线观看| 国产亚洲精品久久久久5区| 欧美激情久久久久久爽电影| 午夜免费激情av| 两个人的视频大全免费| 在线看三级毛片| 丁香欧美五月| 高清在线国产一区| 亚洲精品美女久久av网站| 成人精品一区二区免费| 俄罗斯特黄特色一大片| 国语自产精品视频在线第100页| 高清在线国产一区| 一区二区三区高清视频在线| 欧美成人一区二区免费高清观看 | 无遮挡黄片免费观看| 人妻久久中文字幕网| 国产欧美日韩一区二区三| 国产又黄又爽又无遮挡在线| 国产亚洲欧美在线一区二区| 不卡av一区二区三区| 男女视频在线观看网站免费 | 欧美日韩福利视频一区二区| 亚洲自拍偷在线| 校园春色视频在线观看| 岛国视频午夜一区免费看| 黄色毛片三级朝国网站| 亚洲七黄色美女视频| 日本成人三级电影网站| 成人av在线播放网站| 国产野战对白在线观看| 亚洲国产精品久久男人天堂| 国产av不卡久久| 中文资源天堂在线| 亚洲五月天丁香| 色老头精品视频在线观看| 国产精品自产拍在线观看55亚洲| 国产精品永久免费网站| 国产av一区在线观看免费| 国产野战对白在线观看| 别揉我奶头~嗯~啊~动态视频| 亚洲午夜精品一区,二区,三区| 国产精品av久久久久免费| 免费一级毛片在线播放高清视频| 免费高清视频大片| 久久人妻av系列| 国产精品久久久久久精品电影| 亚洲男人的天堂狠狠| 美女大奶头视频| 国产97色在线日韩免费| 波多野结衣高清无吗| 麻豆成人午夜福利视频| 欧美三级亚洲精品| 一本久久中文字幕| 国产精品亚洲一级av第二区| 中亚洲国语对白在线视频| 手机成人av网站| 69av精品久久久久久| 成人高潮视频无遮挡免费网站| 日本免费a在线| 国产成+人综合+亚洲专区| 成在线人永久免费视频| 黑人操中国人逼视频| 天天添夜夜摸| 韩国av一区二区三区四区| 午夜福利免费观看在线| 一级毛片高清免费大全| 亚洲性夜色夜夜综合| 欧美zozozo另类| 久久国产精品影院| bbb黄色大片| www日本黄色视频网| 久久国产精品人妻蜜桃| av在线天堂中文字幕| 一二三四在线观看免费中文在| 久9热在线精品视频| 日韩欧美精品v在线| 正在播放国产对白刺激| 亚洲av电影在线进入| 777久久人妻少妇嫩草av网站| 久久久国产成人免费| 亚洲国产精品999在线| 国产又黄又爽又无遮挡在线| 欧美性猛交╳xxx乱大交人| 久久国产精品影院| 精品一区二区三区四区五区乱码| 久久精品国产亚洲av香蕉五月| 欧美最黄视频在线播放免费| 两个人视频免费观看高清| 999久久久精品免费观看国产| 国产亚洲欧美98| 欧美午夜高清在线| 欧美日本视频| 十八禁人妻一区二区| 欧美+亚洲+日韩+国产| www.精华液| 哪里可以看免费的av片| 欧美激情久久久久久爽电影| 别揉我奶头~嗯~啊~动态视频| 亚洲精品一区av在线观看| 久久久久国产一级毛片高清牌| 久久精品夜夜夜夜夜久久蜜豆 | 成人亚洲精品av一区二区| 变态另类成人亚洲欧美熟女| 欧美日韩乱码在线| 一本大道久久a久久精品| 国产精品久久久久久人妻精品电影| 全区人妻精品视频| 亚洲成人久久爱视频| 少妇人妻一区二区三区视频| 欧洲精品卡2卡3卡4卡5卡区| 丰满人妻一区二区三区视频av | 在线免费观看的www视频| 一级毛片精品| 黄色视频,在线免费观看| 无限看片的www在线观看| 亚洲欧美一区二区三区黑人| 日韩精品中文字幕看吧| 中国美女看黄片| 日韩欧美 国产精品| 亚洲成a人片在线一区二区| 99re在线观看精品视频| 久久午夜综合久久蜜桃| 琪琪午夜伦伦电影理论片6080| 欧美绝顶高潮抽搐喷水| 亚洲一码二码三码区别大吗| 一二三四在线观看免费中文在| 成年人黄色毛片网站| 国产精品综合久久久久久久免费| 久久久久久亚洲精品国产蜜桃av| 国产精品香港三级国产av潘金莲| 国产人伦9x9x在线观看| 天堂动漫精品| 一级毛片精品| 免费观看人在逋| 变态另类成人亚洲欧美熟女| 久久九九热精品免费| 精品人妻1区二区| 夜夜夜夜夜久久久久| 亚洲精品久久成人aⅴ小说| 亚洲天堂国产精品一区在线| 床上黄色一级片| 香蕉久久夜色| 国产精品久久久久久人妻精品电影| 精品不卡国产一区二区三区| 日韩有码中文字幕| 欧美又色又爽又黄视频| 欧美中文日本在线观看视频| 久久精品夜夜夜夜夜久久蜜豆 | 久久香蕉精品热| 麻豆国产av国片精品| 人人妻,人人澡人人爽秒播| 夜夜夜夜夜久久久久| 少妇人妻一区二区三区视频| 亚洲成a人片在线一区二区| 色噜噜av男人的天堂激情| 黄色丝袜av网址大全| 在线观看一区二区三区| 91av网站免费观看| www日本在线高清视频| 日韩高清综合在线| 欧美又色又爽又黄视频| 亚洲男人的天堂狠狠| 亚洲精品美女久久av网站| 特级一级黄色大片| 99riav亚洲国产免费| 精品不卡国产一区二区三区| 99久久国产精品久久久| 男人舔女人下体高潮全视频| 一级毛片女人18水好多| 免费观看人在逋| 在线观看66精品国产| 国产麻豆成人av免费视频| 日韩欧美精品v在线| 午夜久久久久精精品| 国产一区二区激情短视频| 又黄又粗又硬又大视频| 18禁裸乳无遮挡免费网站照片| 男人舔奶头视频| 成人亚洲精品av一区二区| 亚洲av成人av| 亚洲专区字幕在线| 夜夜爽天天搞| 全区人妻精品视频| 欧美丝袜亚洲另类 | 一边摸一边做爽爽视频免费| 久久久精品国产亚洲av高清涩受| 婷婷六月久久综合丁香| 日日摸夜夜添夜夜添小说| 亚洲九九香蕉| 中文亚洲av片在线观看爽|