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

基于 springboot 的 mysql 實現(xiàn)讀寫分離,寫得太好了 !

共 13804字,需瀏覽 28分鐘

 ·

2021-09-14 21:08

點擊上方藍色字體,選擇“標星公眾號”

優(yōu)質(zhì)文章,第一時間送達

前言:   首先思考一個問題:在高并發(fā)的場景中,關(guān)于數(shù)據(jù)庫都有哪些優(yōu)化的手段?常用的有以下的實現(xiàn)方法:讀寫分離、加緩存、主從架構(gòu)集群、分庫分表等,在互聯(lián)網(wǎng)應用中,大部分都是讀多寫少的場景,設(shè)置兩個庫,主庫和讀庫,主庫的職能是負責寫,從庫主要是負責讀,可以建立讀庫集群,通過讀寫職能在數(shù)據(jù)源上的隔離達到減少讀寫沖突、釋壓數(shù)據(jù)庫負載、保護數(shù)據(jù)庫的目的。在實際的使用中,凡是涉及到寫的部分直接切換到主庫,讀的部分直接切換到讀庫,這就是典型的讀寫分離技術(shù)。本篇博文將聚焦讀寫分離,探討如何實現(xiàn)它。


主從同步的局限性:這里分為主數(shù)據(jù)庫和從數(shù)據(jù)庫,主數(shù)據(jù)庫和從數(shù)據(jù)庫保持數(shù)據(jù)庫結(jié)構(gòu)的一致,主庫負責寫,當寫入數(shù)據(jù)的時候,會自動同步數(shù)據(jù)到從數(shù)據(jù)庫;從數(shù)據(jù)庫負責讀,當讀請求來的時候,直接從讀庫讀取數(shù)據(jù),主數(shù)據(jù)庫會自動進行數(shù)據(jù)復制到從數(shù)據(jù)庫中。不過本篇博客不介紹這部分配置的知識,因為它更偏運維工作一點。這里涉及到一個問題:主從復制的延遲問題,當寫入到主數(shù)據(jù)庫的過程中,突然來了一個讀請求,而此時數(shù)據(jù)還沒有完全同步,就會出現(xiàn)讀請求的數(shù)據(jù)讀不到或者讀出的數(shù)據(jù)比原始值少的情況。具體的解決方法最簡單的就是將讀請求暫時指向主庫,但是同時也失去了主從分離的部分意義。也就是說在嚴格意義上的數(shù)據(jù)一致性場景中,讀寫分離并非是完全適合的,注意更新的時效性是讀寫分離使用的缺點。

好了,這部分只是了解,接下來我們看下具體如何通過java代碼來實現(xiàn)讀寫分離:

該項目需要引入如下依賴:springBoot、spring-aop、spring-jdbc、aspectjweaver等

一: 主從數(shù)據(jù)源的配置

  我們需要配置主從數(shù)據(jù)庫,主從數(shù)據(jù)庫的配置一般都是寫在配置文件里面。通過@ConfigurationProperties注解,可以將配置文件(一般命名為:application.Properties)里的屬性映射到具體的類屬性上,從而讀取到寫入的值注入到具體的代碼配置中,按照習慣大于約定的原則,主庫我們都是注為master,從庫注為slave,本項目采用了阿里的druid數(shù)據(jù)庫連接池,使用build建造者模式創(chuàng)建DataSource對象,DataSource就是代碼層面抽象出來的數(shù)據(jù)源,接著需要配置sessionFactory、sqlTemplate、事務管理器等

/**
 * 主從配置
 *
 * @author wyq
 * @date 2020年07月24日01:24:42
 */
@Configuration
@MapperScan(basePackages = "com.wyq.mysqlreadwriteseparate.mapper", sqlSessionTemplateRef = "sqlTemplate")
public class DataSourceConfig {

    /**
     * 主庫
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.master")
    public DataSource master() {
        return DruidDataSourceBuilder.create().build();
    }

    /**
     * 從庫
     */
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.slave")
    public DataSource slaver() {
        return DruidDataSourceBuilder.create().build();
    }


    /**
     * 實例化數(shù)據(jù)源路由
     */
    @Bean
    public DataSourceRouter dynamicDB(@Qualifier("master") DataSource masterDataSource,
                                      @Autowired(required = false) @Qualifier("slaver") DataSource slaveDataSource) {
        DataSourceRouter dynamicDataSource = new DataSourceRouter();
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(DataSourceEnum.MASTER.getDataSourceName(), masterDataSource);
        if (slaveDataSource != null) {
            targetDataSources.put(DataSourceEnum.SLAVE.getDataSourceName(), slaveDataSource);
        }
        dynamicDataSource.setTargetDataSources(targetDataSources);
        dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
        return dynamicDataSource;
    }


    /**
     * 配置sessionFactory
     * @param dynamicDataSource
     * @return
     * @throws Exception
     */
    @Bean
    public SqlSessionFactory sessionFactory(@Qualifier("dynamicDB") DataSource dynamicDataSource) throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/*Mapper.xml"));
        bean.setDataSource(dynamicDataSource);
        return bean.getObject();
    }


    /**
     * 創(chuàng)建sqlTemplate
     * @param sqlSessionFactory
     * @return
     */
    @Bean
    public SqlSessionTemplate sqlTemplate(@Qualifier("sessionFactory") SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }


    /**
     * 事務配置
     *
     * @param dynamicDataSource
     * @return
     */
    @Bean(name = "dataSourceTx")
    public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("dynamicDB") DataSource dynamicDataSource) {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(dynamicDataSource);
        return dataSourceTransactionManager;
    }
}

 

二: 數(shù)據(jù)源路由的配置

路由在主從分離是非常重要的,基本是讀寫切換的核心。Spring提供了AbstractRoutingDataSource 根據(jù)用戶定義的規(guī)則選擇當前的數(shù)據(jù)源,作用就是在執(zhí)行查詢之前,設(shè)置使用的數(shù)據(jù)源,實現(xiàn)動態(tài)路由的數(shù)據(jù)源,在每次數(shù)據(jù)庫查詢操作前執(zhí)行它的抽象方法 determineCurrentLookupKey() 決定使用哪個數(shù)據(jù)源,為了能有一個全局的數(shù)據(jù)源管理器,此時我們需要引入DataSourceContextHolder這個數(shù)據(jù)庫上下文管理器,可以理解為全局的變量,隨時可取(見下面詳細介紹),它的主要作用就是保存當前的數(shù)據(jù)源;

public class DataSourceRouter extends AbstractRoutingDataSource {

    /**
     * 最終的determineCurrentLookupKey返回的是從DataSourceContextHolder中拿到的,因此在動態(tài)切換數(shù)據(jù)源的時候注解
     * 應該給DataSourceContextHolder設(shè)值
     *
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceContextHolder.get();

    }
}

三:數(shù)據(jù)源上下文環(huán)境

數(shù)據(jù)源上下文保存器,便于程序中可以隨時取到當前的數(shù)據(jù)源,它主要利用ThreadLocal封裝,因為ThreadLocal是線程隔離的,天然具有線程安全的優(yōu)勢。這里暴露了set和get、clear方法,set方法用于賦值當前的數(shù)據(jù)源名,get方法用于獲取當前的數(shù)據(jù)源名稱,clear方法用于清除ThreadLocal中的內(nèi)容,因為ThreadLocal的key是weakReference是有內(nèi)存泄漏風險的,通過remove方法防止內(nèi)存泄漏;

/**
 * 利用ThreadLocal封裝的保存數(shù)據(jù)源上線的上下文context
 */
public class DataSourceContextHolder {

    private static final ThreadLocal<String> context = new ThreadLocal<>();

    /**
     * 賦值
     *
     * @param datasourceType
     */
    public static void set(String datasourceType) {
        context.set(datasourceType);
    }

    /**
     * 獲取值
     * @return
     */
    public static String get() {
        return context.get();
    }

    public static void clear() {
        context.remove();
    }
}

 

四:切換注解和Aop配置

首先我們來定義一個@DataSourceSwitcher注解,擁有兩個屬性①當前的數(shù)據(jù)源②是否清除當前的數(shù)據(jù)源,并且只能放在方法上,(不可以放在類上,也沒必要放在類上,因為我們在進行數(shù)據(jù)源切換的時候肯定是方法操作),該注解的主要作用就是進行數(shù)據(jù)源的切換,在dao層進行操作數(shù)據(jù)庫的時候,可以在方法上注明表示的是當前使用哪個數(shù)據(jù)源;

 @DataSourceSwitcher注解的定義:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface DataSourceSwitcher {
    /**
     * 默認數(shù)據(jù)源
     * @return
     */
    DataSourceEnum value() default DataSourceEnum.MASTER;
    /**
     * 清除
     * @return
     */
    boolean clear() default true;

}

DataSourceAop配置

為了賦予@DataSourceSwitcher注解能夠切換數(shù)據(jù)源的能力,我們需要使用AOP,然后使用@Aroud注解找到方法上有@DataSourceSwitcher.class的方法,然后取注解上配置的數(shù)據(jù)源的值,設(shè)置到DataSourceContextHolder中,就實現(xiàn)了將當前方法上配置的數(shù)據(jù)源注入到全局作用域當中;

@Slf4j
@Aspect
@Order(value = 1)
@Component
public class DataSourceContextAop {

    @Around("@annotation(com.wyq.mysqlreadwriteseparate.annotation.DataSourceSwitcher)")
    public Object setDynamicDataSource(ProceedingJoinPoint pjp) throws Throwable {
        boolean clear = false;
        try {
            Method method = this.getMethod(pjp);
            DataSourceSwitcher dataSourceSwitcher = method.getAnnotation(DataSourceSwitcher.class);
            clear = dataSourceSwitcher.clear();
            DataSourceContextHolder.set(dataSourceSwitcher.value().getDataSourceName());
            log.info("數(shù)據(jù)源切換至:{}", dataSourceSwitcher.value().getDataSourceName());
            return pjp.proceed();
        } finally {
            if (clear) {
                DataSourceContextHolder.clear();
            }

        }
    }

    private Method getMethod(JoinPoint pjp) {
        MethodSignature signature = (MethodSignature) pjp.getSignature();
        return signature.getMethod();
    }

}

 五:用法以及測試 

 在配置好了讀寫分離之后,就可以在代碼中使用了,一般而言我們使用在service層或者dao層,在需要查詢的方法上添加@DataSourceSwitcher(DataSourceEnum.SLAVE),它表示該方法下所有的操作都走的是讀庫;在需要update或者insert的時候使用@DataSourceSwitcher(DataSourceEnum.MASTER)表示接下來將會走寫庫。其實還有一種更為自動的寫法,可以根據(jù)方法的前綴來配置AOP自動切換數(shù)據(jù)源,比如update、insert、fresh等前綴的方法名一律自動設(shè)置為寫庫,select、get、query等前綴的方法名一律配置為讀庫,這是一種更為自動的配置寫法。缺點就是方法名需要按照aop配置的嚴格來定義,否則就會失效

@Service
public class OrderService {

    @Resource
    private OrderMapper orderMapper;


    /**
     * 讀操作
     *
     * @param orderId
     * @return
     */
    @DataSourceSwitcher(DataSourceEnum.SLAVE)
    public List<Order> getOrder(String orderId) {
        return orderMapper.listOrders(orderId);

    }

    /**
     * 寫操作
     *
     * @param orderId
     * @return
     */
    @DataSourceSwitcher(DataSourceEnum.MASTER)
    public List<Order> insertOrder(Long orderId) {
        Order order = new Order();
        order.setOrderId(orderId);
        return orderMapper.saveOrder(order);
    }
}

 六:總結(jié)

 上面是基本流程簡圖,本篇博客介紹了如何實現(xiàn)數(shù)據(jù)庫讀寫分離,注意讀寫分離的核心點就是數(shù)據(jù)路由,需要繼承AbstractRoutingDataSource,復寫它的determineCurrentLookupKey方法,同時需要注意全局的上下文管理器DataSourceContextHolder,它是保存數(shù)據(jù)源上下文的主要類,也是路由方法中尋找的數(shù)據(jù)源取值,相當于數(shù)據(jù)源的中轉(zhuǎn)站.再結(jié)合jdbc-Template的底層去創(chuàng)建和管理數(shù)據(jù)源、事務等,我們的數(shù)據(jù)庫讀寫分離就完美實現(xiàn)了。


  作者 |  Yrion

來源 |  cnblogs.com/wyq178/p/13352707.html

加鋒哥微信: java1239  
圍觀鋒哥朋友圈,每天推送Java干貨!

瀏覽 27
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩一级黄色毛片| 日韩在线观看中文字幕| 欧美国产精品一二三产品在哪买| 18禁成人A∨片| 中日韩免费视频| 火淫玖玖免费精品| 一区二区三区四区五区无码| 亚洲激情视频| 高清无码爱爱| 国产亚洲AV| 91综合久久| 男女日逼| 国产精品乱子伦| 少妇精品无码一区二区免费视频| 五月天久久久久| 黄片AV| 天天拍天天射| 91麻豆精品成人一区二区| 日韩在线观看网址| 日韩小视频| 国产美女精品视频| 亚洲视频在线免费观看| 免费看黄的网站在线观看| 日韩一级视频| 91成人在线播放| 99精品视频播放| 超碰97在线免费| 欧美成人社区| 午夜福利10000| 草逼免费看| 国产熟妇婬乱A片免费看牛牛| 蜜桃无码视频小说网站| 91久久国产综合| 欧美一级黃色A片免费看蜜桃熟了| 一区二区毛片| 黄色一级片免费| 91成人在线观看学生和老师| 亚洲AA| 91双飞会所双飞在线| 91色综合| 六月婷婷七月丁香| 熟女网址| 亚洲自拍中文字幕| A片观看视频| 肏逼视频网站| 成人色视| 日韩欧美中文字幕在线观看| 男女av免费| 人人操人人爱人人拍| 国产美女啪啪视频| 色婷婷7777| 久久久九九九| 日韩欧美成人在线观看| 亚洲乱码国产乱码精品天美传媒 | 亚洲性夜夜天天天天天天| 再深点灬好爽灬轻点久久国产| 亚洲精品久久久久毛片A级牛奶 | 日韩在线小电影| 亚洲女与黑人正在播放| av中文无码| 国产欧美二区综合中文字幕精品一| av黄色在线观看| 欧美熟妇另类久久久久久不卡| 久热在线| 福利视频一区二区三区| 西西西444www无码视频| 国产真人一级a爱做片| 午夜福利大香蕉| 加勒比一区二区| 久草手机在线| 欧美大香蕉伊人| 日韩中文字幕永久| 中文字幕第五页| 亚洲无码图片| 国产精品自拍一区| 丁香五月激情视频| 爱搞国产| 天天干夜夜操| 国产精品美女| 日韩在线成人| 激情视频综合网| 亚洲中文字幕人妻。| 老婆被黑人杂交呻吟视频| 亚洲图片中文字幕| 国产一级内射| 不卡的av在线| 国产小视频在线免费观看| 91愛爱| 日韩五月天| 亚洲人妻影院| 国产资源网| 久久AV电影| 羞羞视频com.入口| 99免费在线视频| 99色播| 无码人妻一区二区三区| 99er在线视频| 欧美成人手机在线观看| 91视频爱爱| 三级黄色视频| 中国免费一级无码成人片| 国产九九热| 亚洲丁香五月激情| 天天日天天舔| 国产娇小13videos糟蹋| 亚洲无码婷婷| 久久天堂av| 成人免费观看的毛视频| 日韩国产中文字幕| 国产TS在线| 免费观看黄色成人网站| 亚洲第一网无码性色| 国产高清无码一区二区| 中文字幕人妻在线中文乱码怎么解决| 久久天堂| 肏逼网站| www.高清无码| 北条麻妃无码| 有码一区二区三区| 伊人蕉久| 国产无码小视频| 一个人看的www日本高清视频| 成人区123| 天天做天天干| 大香蕉中文在线| 黄色一级片视频| AV在线资源网| 精品久久一区| 久久艹免费视频| 天天爽天天爽夜夜爽毛片| 狼色AV| 欧美最猛黑A片黑人猛交蜜桃视频 色噜噜狠狠一区二区三区300部 | 熟女探花| 嫩草在线精品| 婷婷日韩中文字幕| 久在线观看| 国产成人AV在线播放| 亚洲日韩成人电影| 思思在线视频| 91久热| 少妇人妻精品| 日韩欧美成人在线观看| 豆花视频久久| 国产精品天天狠天天看| 美女久久久久| 日本黄色视频大全| 99国产免费| 久久久精品中文字幕麻豆发布 | 在线天堂9| 野花av| 韩国无码精品| 亚洲天堂在线免费观看| 欧美老妇性猛交| 无码人妻视频| 在线免费无码| 水蜜桃视频网站| 东京热高清无码| 无码人妻一区二区三区| 激情91| 91精品国产综合久久久蜜臀酒店 | 天天干人人干| 人人爽人人操人人| 人成免费在线视频| 四个熟妇搡BBBB搡BBBB| 淫荡人妻视频| av黄页| 婷婷九九| 91啪啪视频| 国产性爱在线观看| 亚洲一级黄色| 国产激情在线视频| 熟女一区| 欧美亚洲国产精品| AAA三级视频| 欧美喷水视频| 操b视频免费| 国内自拍欧美| 国产成人777777精品综合 | 北条麻妃视频在线播放| 久草大香蕉在线视频| 久久久久久亚洲AV黄床| 欧美成人免费观看| av手机天堂| 黄色成人视频免费看| 91青青草在线| 五月天成人网址| 无码人妻精品一区二区三区99仓| 干欧美| 亚洲色逼| 日韩黄色视频| 北条麻妃无码精品AV怎么看| 天天日夜| 国产一级婬乱片免费| 五月天婷婷网站| 中国特级毛片| 大地影院资源官网| 五月天av在线| 美日韩毛片| 青青草五月天色婷婷丁香| 伊人久久大综合中文无码| 日韩人妻精品一区二区| 无码不卡在线播放| 97大香蕉在线视频| 嫰BBB槡BBBB槡BBBB| 男女69视频| 五月丁香欧美| 99热精品在线观看| 天天爽天天爽夜夜爽| 国产一级操逼片| 国产无码AV成在线| 亚洲不卡中文字幕| 日韩高清av| h网站在线观看| 久久天堂| 亚洲视频99| 中文字幕乱码中文乱码图片| 精品女人| 台湾成人视频| 大香蕉福利视频| 色色色色色欧美| 二区三区在线观看| 国产免费www| 一级性爱| 黄片大全在线观看| 六月丁香欧美综合| 久久久午夜| 色视频国产| 亚欧洲精品在线视频免费观看| 蜜臀导航| 国产区在线观看| 毛片黄色片| 地表最强网红八月未央道具大秀| 国产h在线| 男女视频网站| 精品视频在线观看| 中文字幕无码综合| 四虎成人电影| 日韩中出| 五月天婷婷乱伦| 亚洲日韩网站| 精品人妻一区二区三区阅读全文| 免费内射视频| 在线人妻| 成人黄色在线看| 大香蕉色伊人| 无码精品人妻一区二区三区漫画| 久久国产精品视频| 韩国一区二区在线观看| 乱子伦日B视频| 亚洲天堂无码在线观看| 无码字幕| 国产综合久久久777777色胡同 | 中文字幕成人在线播放| 亚洲三级片无码| 欧美a在线观看| 中文字幕永久在线| av视屏| 久草视频网| 嫩BBB嫩BBB嫩BBB| 黄色电影天堂网站| 天干天干天夜夜| 91成人小电影| 中文字幕中文字幕一区| 人成在线视频| 人人摸人人色| 激情片AAA| 91精品视频在线免费观看| 牛牛精品视频| 久久AV电影| 538在线观看| 久久国产激情| 一道本在线| 五月天婷婷在线视频| 国产成人免费做爰视频| 亚洲一区二区三区无码| AV操逼网| 可以在线观看的av| 久久久一区二区三区四曲免费听| 翔田千里无码一区| 激情视频国产| 88海外华人免费一区| 人人干视频| 无码一区三区| 免费AV网站观看| 在线看亚洲| 成人在线一区二区| 久久黄色成人视频| 黄片无码免费观看| 成人精品视频| 国产三级精品三级在线观看| 亚洲成人日韩| 成人无码欧美大片免费看| 无码av一区二区| 久久xxx| 天堂中文资源在线观看| 黄色一级在线观看| 欧美色交| 国产精品久久一区二区三区影音先锋| 午夜高清视频| 成人操B视频在线观看| 91久久电影| 精品无码人妻| 国产福利电影在线| 日韩成人网址| 黄色成人毛片| 日本黄色片在线播放| 久久99久久99久久99| 亚洲男人天堂av| 法国《少女日记》电影| 一区二区人妻| 日韩黄色片网站| 午夜天堂| 日本中文字幕视频| 国产色情在线观看| 人妻少妇一区二区| 亚洲第一无码| 91精品久久久久| 成人动漫一区| 国产成人精品123区免费视频| 日韩www| 91久久婷婷亚洲精品成人| 亚洲五月丁香| 欧美在线观看视频一区| 天天免费视频| 在线观看欧美日韩视频| 日本aaaa片| 欧美9999| 大香蕉久在线| 国产高清无码一区二区三区 | 好吊视频一区二区三区| www.xxx国产| 婷婷成人电影| 无码人妻av一区| 亚洲欧美日本在线观看| 久久91人妻无码精品蜜桃HD| 黑人精品欧美一区二区蜜桃| 91成人视频在线观看| 日本一级黄| 成人免费观看视频| 久久久久女人精品毛片九一| 亚洲国产精品久久| 国模无码在线| 97热热| 国产亚洲综合无码| 色色色网站| 中文亚洲精品字幕电影| 91ThePorn国产在线观看| 欧洲三级片网站| 俺来也在线视频| 青娱乐在线成人| 久久九九综合| 韩国三级HD中文字幕2019年| 黄色激情五月| 色色加勒比综合| 69式荫蒂被添全过程| 亚洲AV成人片色在线观看麻豆| 九九自拍视频| 92午夜福利天堂视频2019| 成人小视频在线| 日韩中文字幕无码| 我要操影院| 色青草影院久久综合| 新版欧美内射大全| 国产成人AV免费观看| www五月天| 国产又大又粗又爽| 精品国产污污免费网站入口| 黄色网址五月天| 免费看一区二区三区| 加勒比一区二区| 日韩欧美成人在线| 猛男大粗猛爽h男人味| 国产精品久久久久野外| 一本色道综合久久欧美日韩精品 | 国产性猛交╳XXX乱大交| 国产三级毛片| 日韩大香蕉网| 最新日韩在线| 亚洲中文娱乐| 九九re精品视频在线观看 | 一级欧美视频| 99色天堂| 人人操人人操人人| 肏屄视频在线播放| 九九九九九九国产| 国产精品一区二| 97人妻人人澡人人| 九哥草逼网| 色片免费| 水蜜桃在线视频| 91无码秘蜜桃一区二区三区-百度 精品人妻一区二区三区在线视频不卡 | 91国内产香蕉| 日韩在线视频观看| 毛片黄色视频| 日本家庭乱伦视频| 五月天福利视频| 免费黄片在线| 九九久久影院| 天天操夜夜撸| 亚洲AV成人片色在线观看高潮| 看毛片网站| 日本天天操| 热热热热色| 99热视| ThePorn-成人网站入口| 男女草逼视频| 一级A片| 影音先锋黄色资源| 久久亚洲无码| 久久久人妻| 少妇的屄| 女人18特级毛片。| 亚洲无码999| 丁香激情视频| 超碰成人在线观看| 韩日一区二区三区| 亚洲超级高清无码第一在线视频观看 | 亚洲成人网在线| 天堂网中文字幕| 伊人网在线视频| 毛片小说| 一区免费在线| 日韩中文久久| 91中文字幕在线| 欧美性BBB槡BBB槡BBB| 欧美色图视频在线观看| 国产精品激情| 熟女18p| 可以免费观看的毛片| 拍拍AV| 怡春院国产| 西西444WWW无码精品| 俺也去网av| 草比网| 操欧美老女人| 囯产精品久久久久久久久免费无码| 16一17女人毛片| 99热这里有精品| 色婷婷AV一区二区三区软件| 国产一区2区| 在线播放亚洲| 免费看黄A级毛片成人片| 国产精品日韩无码| jzzijzzij亚洲成熟少妇在线观看 九色蝌蚪9l视频蝌蚪9l视频成人熟妇 | 鸡巴在线观看| 五月激情综合网| 欧美成人性爱图片| 国产精品久久7777777精品无码| 久热综合| 亚洲视频A| 亚洲天堂无码在线| 人妻熟女88AⅤ| 韩剧《邻居的妻子》电视剧| 亚洲天堂国产| www黄色视频| 青草国产视频| 熟女高潮| 国产日皮| 黄色福利网站| 被黑人猛躁10次高潮视频| 99欧美精品| 日韩AV无码网站| 精品中文字幕在线观看| 蜜臀久久99精品久久久兰草影视| 激情国产精品| 91麻豆精品91久久久久同性| 国产精品777| 日韩有码在线观看| 日韩欧美国产综合| 国产在线观看mv免费全集电视剧大全 | va色婷婷亚洲在线| 91国产爽黄在线相亲| 日本精品在线视频| 欧美伊人久久| 99热官方网站| 欧美激情性爱网站| 四房婷婷| 人妻无码在线视频| 青娱乐在线视频精品| 玖玖精品视频| 777国产盗摄偷窥精品0000| 日本在线免费| 国产三级91| 日韩免费中文字幕| 六月婷婷五月| 日韩无码波多野结衣| 大香蕉av一区二区三区在线观看| 日韩人妻一区二区三区| 麻豆性爱视频| 成人无码免费毛片| 伊人大香焦网| 正在播放无码| 美妇肥臀一区二区三区-久久99精品国 | 中午字幕在线观看| 日韩免费AV| 精品人妻一区二区三区-国产精品 无码人妻av黄色一区二区三区 | 国产熟女一区二区视频网站| 蜜桃精品视频| 国产成人av在线| 台湾一区二区| 777超碰| 日韩中文字幕视频在线观看| 狼友免费视频| 蜜臀99| 人人操在线公开| 中文字幕亚洲有码| 人人妻人人爽人人操| 亚洲午夜福利在线| 久久久久久婷婷| 粉嫩小泬BBBBBB免费看| 狠狠ri| 久久国产日韩| 骚视频网站| 蜜桃av秘无码一区二区三| 熟女一区| 91免费视频网站| 麻豆av在线| 激情动态视频| 精品码一区二在线观看| 午夜成人鲁丝片午夜精品| av无码免费观看| 免费操逼电影| 国产青草| 日韩免费成人视频| 一级a一级a免费观看免免黄‘/| 四虎午夜福利| av日韩在线播放| 黄色视频日韩| 不卡一二三区| 佳佳女王footjob超级爽| 中文无码在线观看| 亚洲网站在线观看| 国产黄色免费看| 欧美做爱网站| 中文字幕无码av| 国产午夜视频在线观看| 五月丁香影院| 色色五月婷婷| 国产成人AV在线| 黄色视频网站免费在线观看| 陈冠希和张柏芝mv| 日本AⅤ在线| 亚洲中文字幕在线免费观看视频| 黄色动态视频| aaa黄片| 国产美女操逼| 你懂的视频| 国产天堂| 狠狠干狠狠操| 日韩三级AV在线观看| 中文视频免费播放| 久久国产黄色一级片| 欧美日韩视频一区二区三区| 久久久久久国际四虎免费精品视频 | 91免费成人视频| 91高潮久久久久久久| 国产成人精品久久二区二区91 | 四虎麻豆| 亚洲激情一区| 欧美性猛交XXXX乱大交| 亚洲一级AV| 日本精品在线| 天天摸天天操| 日韩天天操| 超碰91在线| 国精久久久久| 91最新国产| 思思热在线视频精品| 亚洲AV无码成人精品区www| 五月天综合在线| 天天爆操| 亚洲精品69| 69网站| 大鸡吧在线视频| 日本一区二区在线| 免费v片| 日韩av三级在线观看| 成年人性生活免费视频| XX熟女HD| 91一起草高清资源| 亚洲无码专区视频| 国产精品国三级国产a11| 熟女18p| 伊人东京热| 欧美成人在线观看| 熟妇人妻久久中文字幕| 中国熟睡妇BBwBBw| 一级看片免费视频| 91无码秘蜜桃一区二区三区-百度| 中文字幕Av在线| 日本爱爱免费视频| 天天综合视频| 国产精品9999久久久久仙踪林 | 爱视频福利网| 亚洲区在线播放| 撸一撸在线观看| 久草新视频| 一区二区三区四区无码视频| 国产激情在线视频| 欧美性猛交XXXX乱大交| 国产精品在线免费| 九九精品在线视频| 91人人在线| 91探花足浴店少妇在线| 色999在线播放视频| AV电影天堂网| 中文字幕牛牛婷婷| 精品欧美视频| 青草视频在线播放| 欧美综合国产| 国产成人电影免费在线观看| 2024av在线| 久久综合久| 99久在线精品99re8热| 欧美激情在线| 操逼电影免费| 国产一级自拍| 一道本一区二区三区| 人妻互换一二三区免费| 国产欧美日韩综合| 一区二区三区福利| 激情五月婷婷五月| 色婷婷18| 波多野结衣AV无码| 日韩网站在线| 91污视频在线观看| A毛片| 中文字幕成人| 在线成年人视频| 免费无码婬片AAAA片老婦| 成人午夜无码视频| 欧美城综合在线观看网| 蜜臀久久99久久久久久宅男 | 一级黄色A片视频| 欧美成人福利在线观看| 欧美三级精品| 日韩视频播放在线综合| 91精品人妻一区二区三区四区| 久久福利社| 亚洲三级免费| 秋霞网一区二区| 男女无套在线观看免费| 婷婷伊人綜合中文字幕| 亚洲欧美在线综合| 在线黄色视频网站| 91九色视频| 欧美日逼小视频| XXXX国产| 国产午夜无码视频在线观看| 翔田千里无码| 香蕉在线观看| 99福利视频| 北条麻妃无码视频| 丁香五月天激情视频| 高清无码激情| 色逼高清| 真实白嫖91探花无码| 91无码精品国产| 免费操b视频| 国产在线观看91| 特级西西人体WWWww| 欧美色图网址| XXXXⅩHD亚洲人HD| 91操B| 国产又黄又大又粗| 奇米影视77777| 欧美日皮视频| 俺也去网av| 老熟女一区二区三区| 污污的网站18| 69人妻人人澡人人爽久久| 成人黄色电影在线观看| 男人天堂亚洲| 日本伊人大香蕉| 婷婷色色五月天图片| 国产美女精品视频| 成人性爱在线观看| 精品免费囯产| 三级AV网站| 四房婷婷| 欧美做受高潮白| 婷婷成人电影| 老熟女--91XX| 国产免费a| 四川少妇搡bbbb搡bbbb | 在线免费观看成人视频| 欧美一级片在线| 成人精品二区| 免费黄片视频在线观看| 无码精品黄色片| 99热国产在线观看| 欧美性爱网址| 青青久热| 俺来也俺去也| 99久久国产精| 欧美一卡二卡三卡| 无码人妻AⅤ一区二区三区| 成人乱无码AV在线观看| 好逼天天操| 中文字幕精品无码一区二区| 日本一本视频| 国产在线视频一区二区| 大香蕉网站在线观看| 北条麻妃人妻中文字幕91影视 | 欧美激情在线| 免费无码毛片一区二区A片| 国产伦子伦一级A片免费看小说 | 午夜国产在线视频| 91精品网站| 91欧美精品成人AAA片| 99久久99九九99九九九| 欧一美一婬一伦一区二区三区自慰国 | 黄片在线视频| 精品国产天线2024| 丁香六月婷婷| 中国老女人性爱视频| 欧美一在线一综合| 色999日韩| 日韩在线视频网| 亚洲无码大全| 亚洲AV秘无码一区在线| A毛片| 小黄片免费看| 国产91在线播放| 人妻在线免费视频| 国产日韩欧美在线观看| 国产三级免费观看| 黄色3A片在线观看| 伊人无码在线| 色五月天激情| av黄色在线观看| 成人小说亚洲一区二区三区| 69视频在线观看| 新版欧美内射大全| 亚洲青草视频| 天天草天天撸| 日韩中文字| 四川少扫搡BBBBB搡B| 大地资源第5页在线| 人人干人人草| 五月天久久精品| 岛国A视频| 老熟女-ThePorn| 亚洲无码av电影| 国产AV影院| 国产三级片在线观看视频| 黄片视频链接| 乱伦三级| 午夜综合在线| 伊人色色综合| 91绿帽人妻-ThePorn| 中文字幕亚洲天堂| 天天影视综合网免费观看电视剧国产 | 乱婬妺妺躁爽A片| 无码水蜜桃一区二区| 亚洲第一香蕉视频| 伊人9999| 精品码A片18| 亚洲国产精品成人va在线观看 | wwwa片| aaa国产精品| 青草免费视频| 亚洲欧美网站| 天堂中文资源在线观看| 操逼网123| 欧美精品第一页| av三级片在线播放| 人人操人人摸人人| 草久免费视频| 亚洲jizzjizz| 嫩BBB嫩BBB嫩BBB| 色色色亚洲| 无码人妻中文| 国产成人免费视频| 国产一区二区三区视频在线观看| 91精品国产一区三一| 日韩黄色免费视频| 黄网在线免费观看| www.18av| 夜夜夜操操操| 91在线无码精品秘国产三年| 亚洲人妻无码视频| 丁香午夜| 国产在线一二三| 精品在线免费观看| 自拍做爱视频| 欧美粗大| 国产精品久久久久久久久久二区三区| 最好看的MV中文字幕国语| 可以免费看的AV| 色哟哟一区| 日本久久久久久久久视频在线观看 | 国产精品乱子伦| 蜜桃无码在线| 污污的网站18| 久久久一区二区三区四区| 天天操天天操天天操天天操| 国产精品美女久久久久久久久| 日韩人妻无码一区二区三区七区| 在线看黄色片| 国产成人无码AⅤ片免费播放| 免费色色网站| 日韩一级无码毛片| 中文人妻第9页| 草久视频| 中文字幕在线不卡视频| 成人欧美一区二区三区在线观看| 大香蕉精品欧美色综合2025 | 无码人妻精品一区二区三区温州| 欧美一级在线观看| 欧美日视频| 日韩性爱区| 国产成人午夜高潮毛片| 中国老少配BBwBBwBBW| 91麻豆精品A片国产在线观看| 天天摸天天操| xxx日韩| 色情一级AA片免费观看| 色婷婷一二三精品A片| 欧美一级电影| 久久久久久97电影院电影院无码| 影音av| aaa在线| 日韩AV小电影| 超碰极品| 免费国产精品视频| 天天色天天干天天| 国产美女自拍| 欧美日韩精品在线观看| 国产成人精品电影| 日韩成人精品在线| 日本牲交| 熟女高潮| 操逼视频看看| 3D动漫精选啪啪一期二期三期| 丝袜制服中文字幕无码专区| 超碰免费在线观看| 欧美精品在线视频| 日本黄色视| 大香久久| 国产乱子伦一区二区三区在线观看 | 新BBWBBWBBWBBW| 奥门毛片| 婷婷丁香五月花| av福利在线观看| 内射午夜福利在线免费观看视频| 西西4444WWW大胆无视频| 国产精品成人AV片| 3D动漫啪啪精品一区二区中文字幕| 日韩免费成人| 国产精品污www在线观看| 亚洲色鬼| 成人一区在线观看| 久久97人妻AⅤ无码一区| 一级一级a免一级a做免费线看内裤| 亚洲Av在线观看| 成人黄色性视频| 日韩在线欧美在线| 女神思瑞精品一区二区三区| 激情婷婷五月天| 欧美视频在线观看| 国产一级a爱做片免费☆观看| 亚洲AV无码| 99精品色| 国产女人18毛片水18精品| 国内不卡一卡二视频| 欧美少妇做爱| 日韩无码人妻一区| 99热在线观看者| 熟妇精品| 国产成人午夜福利视频| 人妻公日日澡久久久| 日韩亚洲中文在线| 久草视频在线播放| 亚洲91视频| 99久久精品国产色欲| 久久ww| 在线观看中文字幕av| 黄色成人在线| 国产性爱在线| 亚洲成人三区| 中文字幕在线一区| 你懂的视频在线观看| 一区二线视频| 伊人大香蕉在线观看| 综合天堂AV久久久久久久| 中文无码熟妇人妻AV在线| 国产传媒自拍| 欧美a视频| 一级操逼| 亚洲AV成人片无码网站| 国产九色91回来了| 国产精品资源| 伊人久久福利视频| 日本少妇电影| 蜜桃久久久久久久| 日韩中文无码一级A片| 超碰自拍97| 亚洲天堂在线免费观看视频| 久久久91人妻无码精品蜜桃ID|