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

基于springboot的mysql實(shí)現(xiàn)讀寫分離

共 7913字,需瀏覽 16分鐘

 ·

2021-10-27 15:34

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

作者|Yrion

cnblogs.com/wyq178/p/13352707.html

目錄

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

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

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

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

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

/**
* 主從配置
*
* @author wyq
* @date 2020年07月24日01:24:42
*/

@Configuration
@MapperScan(basePackages = "com.wyq.mysqlreadwriteseparate.mapper", sqlSessionTemplateRef = "sqlTemplate")
public class DataSourceConfig {

/**
* 主庫(kù)
*/

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

/**
* 從庫(kù)
*/

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


/**
* 實(shí)例化數(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);
}


/**
* 事務(wù)配置
*
* @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ī)則選擇當(dāng)前的數(shù)據(jù)源,作用就是在執(zhí)行查詢之前,設(shè)置使用的數(shù)據(jù)源,實(shí)現(xiàn)動(dòng)態(tài)路由的數(shù)據(jù)源,在每次數(shù)據(jù)庫(kù)查詢操作前執(zhí)行它的抽象方法 determineCurrentLookupKey() 決定使用哪個(gè)數(shù)據(jù)源,為了能有一個(gè)全局的數(shù)據(jù)源管理器,此時(shí)我們需要引入DataSourceContextHolder這個(gè)數(shù)據(jù)庫(kù)上下文管理器,可以理解為全局的變量,隨時(shí)可取(見下面詳細(xì)介紹),它的主要作用就是保存當(dāng)前的數(shù)據(jù)源;

public class DataSourceRouter extends AbstractRoutingDataSource {

/**
* 最終的determineCurrentLookupKey返回的是從DataSourceContextHolder中拿到的,因此在動(dòng)態(tài)切換數(shù)據(jù)源的時(shí)候注解
* 應(yīng)該給DataSourceContextHolder設(shè)值
*
* @return
*/

@Override
protected Object determineCurrentLookupKey() {
return DataSourceContextHolder.get();

}
}

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

數(shù)據(jù)源上下文保存器,便于程序中可以隨時(shí)取到當(dāng)前的數(shù)據(jù)源,它主要利用ThreadLocal封裝,因?yàn)門hreadLocal是線程隔離的,天然具有線程安全的優(yōu)勢(shì)。這里暴露了set和get、clear方法,set方法用于賦值當(dāng)前的數(shù)據(jù)源名,get方法用于獲取當(dāng)前的數(shù)據(jù)源名稱,clear方法用于清除ThreadLocal中的內(nèi)容,因?yàn)門hreadLocal的key是weakReference是有內(nèi)存泄漏風(fēng)險(xiǎn)的,通過(guò)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配置

首先我們來(lái)定義一個(gè)@DataSourceSwitcher注解,擁有兩個(gè)屬性①當(dāng)前的數(shù)據(jù)源②是否清除當(dāng)前的數(shù)據(jù)源,并且只能放在方法上,(不可以放在類上,也沒(méi)必要放在類上,因?yàn)槲覀冊(cè)谶M(jìn)行數(shù)據(jù)源切換的時(shí)候肯定是方法操作),該注解的主要作用就是進(jìn)行數(shù)據(jù)源的切換,在dao層進(jìn)行操作數(shù)據(jù)庫(kù)的時(shí)候,可以在方法上注明表示的是當(dāng)前使用哪個(gè)數(shù)據(jù)源;

@DataSourceSwitcher注解的定義:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface DataSourceSwitcher {
/**
* 默認(rèn)數(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中,就實(shí)現(xiàn)了將當(dāng)前方法上配置的數(shù)據(jù)源注入到全局作用域當(dāng)中;

@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();
}

}

五:用法以及測(cè)試

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

@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é)

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


怎么接私活?這個(gè)渠道你100%有用!請(qǐng)收藏!


,點(diǎn)個(gè)在看 
瀏覽 52
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 俺来也官网欧美久久精品| 国产人妖AV| 黃色毛片A片AAAA级20| 操逼基地| 午夜成人福利视频在线观看| 国产精品久久久久久久久免费无码 | 日韩无码AV一区二区| 日本免费无码| 一区二区三区四区五区| 日本色区| 无码一区二区黑人猛烈视频网站 | 国产不卡一区| 无码窝在线观看| 一级黄色操逼视频| 亚洲无吗在线观看| 嫩草入口| 久热免费视频在线观看| 草草影院CCYYCOM屁屁影院合集限制影院 | 91精品酒店视频| 黑人干亚洲人| 国产色天使| h片在线观看| 九九九国产| 中文字幕+乱码+中文乱码91| 免费国产黄色| 少妇搡BBBB搡BBB搡澳门| 久久视频免费观看| 亚洲无码成人网站| 成人欧美大片黄18| 国产美女自慰网站| 动漫3d啪啪成人h动漫| 男人的天堂2019| 中文字幕网址在线| 亚洲丁香五月| 欧美成人一级A片| 国产最新视频| 无码AV大香线蕉伊人| 青青超碰| 中文在线字幕免费观看电视剧大全| 人人操久久| 天堂在线无码| 久久这里都是精品| 激情五月天网| 国产欧美精品一区二区| 今天成全在线观看高清| 黄色av免费在线观看| 国产久久久久久久| 亚洲天堂免费| 天天做天天爱天天高潮| 亚洲成人高清| 日韩欧美一级片| 国产精品一二| 日韩三级视频| 日韩三级| 国产三级日本三级国产三级| 欧美精品无码久久久精品酒店| 激情另类| 黑人中文字幕| 在线观看中文字幕视频| 亚洲精品乱码在线| 在线免费看A| 青娱乐亚洲视频在线| 日本久久久久| 亚洲无码免费网站| 国产91白丝在线播放| 国产最新av| 青青操成人在线视频| 国产一级a毛一级a毛视频在线网站?| 国产精品无码在线播放| 高清无码视频在线| 欧美九九九| 亚洲成人性爱| 亚洲无码久久久| 国产大奶一区二区| 波多野结衣无码流出| 久久黄色毛片| 美女在线扣穴| 久久久偷拍视频| 亚洲精品在线观看免费| 岛国AV免费在线| 亚洲乱码一区二区三区| 国产一区二区电影| 午夜骚影| 亚洲小视频在线| www.超碰在线| 无码免费看| 亚洲成人在线播放| 成人三级电影网| 国产乱伦精品视频| 人妻少妇精品视频一区二区三区| 男人的天堂一区| 欧美后门菊门交3p、| 翔田千里| 欧美丰满美乳XXⅩ高潮www| 日韩日屄视频| 99这里只有精品视频| 国产免费一区二区三区最新不卡| 亚洲无码久久久| 奶头和荫蒂添的好舒服囗交漫画 | 青青草娱乐视频| 日韩啪啪啪网站| 亚洲男人天堂AV| 中文字幕在线观看不卡| 97资源超碰| 亚洲国产成人精品女人| 精品无码一区二区三区四区久久久软件 | 婷婷五月天丁香网| 韩国三级HD久久精品HD| 张柏芝BBw搡BBBB槡BBBBHDfree| 久久嫩草精品久久久久| 欧美狠狠| 激情淫荡少妇| 伊人婷婷久久| 清清草在线视频| 亚洲精品一区二区三区无码电影| 黄色片视频| 午夜av福利| 国产成人网| 操碰在线视频| 蜜桃视频网站在线观看| 97人人爽人人爽人人爽| 日韩无码av电影| 人人操人人搞| 草草网站| 三级片在线看| 欧美激情无码炮击| 夜夜操夜夜撸| 97国产精品视频人人做人人爱| 91狠狠色丁香婷婷综合久久精品| 91免费| 天天射日日干| 插插插插网| 五月丁香亚洲综合| 欧美成人网站免费在线观看| 欧美成人高清视频| 国产XXXXX| 日韩A级片| 久草一区二区三区| 18性XXXXX性猛交| 91丨九色丨熟女泻火| 俺去俺来也WWW色老板| 国产精品无码白浆高潮| 国产第1页| 美女啪啪网站| 全国男人的天堂网站| 大香蕉老师| 你懂的在线网站| 国产激情网站| 少妇无码中文| 久久久久女人精品毛片九一| 国产农村妇女精品一二区| 久久成人小电影| 插吧插吧网| 亚洲日本三级片| 国产aaaaaaaaaaaaa| japanese在线观看| 亚洲电影无码| 国产做受91一片二片老头| 激情片AAA| 蜜芽成人在线视频| 亚洲日韩欧美中在线| 亚洲国产精品成人久久蜜臀| 亚洲少妇视频| 99精品视频北条麻妃国产版 | 日韩伊人网| 欧美一级婬片A片免费软件| 男女日皮视频| 国产精品色婷婷| 亚洲AV无码成人精品一区| AV无码中文| 在线第一页| 九九视屏| 91妻人人澡人人爽人人精品| 麻豆国产91在线播放| 亚洲口爆| 成人免费区一区二区三区| 日韩一区二区三区四区久久久精品有吗 | 日韩精品视频一区二区三区 | 精品九九| 大香蕉AV电影| 大香蕉AV在线观看| 日韩在线观看免费| 一级日韩一级欧美| 丁香五月激情在线| 二区三区在线| 91亚洲视频| 青青草原视频在线免费观看| 成人网站www污污污网站公司 | 在线国产小视频| 福利一区二区视频网| 亚洲操操操操| 中国国产乱子伦| 久久久久三级片| 翔田千里高潮90分钟| 亚洲伊人影院| 亚洲无码成人网| 久久密| 亚洲无码午夜| 欧美日韩在线视频免费观看 | AV免费激情影院| 人人操人人上| 国产v视频| 激情视频网站| av操操操| 水蜜桃网站在线观看| 97人妻无码一区二区| 一区二区三区视屏| 国产精品av在线播放| 91精品久久久久久粉嫩| 无码视频在线观看| 高圆圆一区二区三区| 操在线视频| 亚洲高清无码在线| 日本一区二区三区四区在线观看| 天天视频国产| 高清无码在线观看视频| 69亚洲视频| 黄色片网站免费观看| 日本黄网站| 欧美不卡在线视频| 小明成人免费视频| 国产区av| 农村一级婬片A片| 国产AV无码精品| 日韩狠狠| 熟女456| 国产一区二三区| 免费AA片| 操逼日韩欧美| 亚洲AV无码国产精品久久不卡| 中文字幕无码高清| 天天噜噜色| 青青草原在线视频免费观看| 97超碰在| 亚洲性爱手机版| 西西4444大胆无码视频| 久久久久久免费视频| 亚洲黄色视频免费| 少妇4p| 亚洲免费三级片| 精品成人Av一区二区三区| 婷婷丁香六月天| 国产一区二区av| 国产AV无码影院| 欧美激情片| 91人妻人人澡人人爽| 欧美色图狠狠干| 三级黄色毛片| 欧美footjob高跟脚交| 天天操婷婷| 亚洲欧美日韩一区二区| 午夜精品久久久久久久久无码99热 | 免费观看日韩无码视频| 亚洲成人AV无码| 天天日天天干天天射| 欧美视频久久| 99re在线视频观看| 精品国产乱子伦一区二区三区,小小扐 | 无码人妻av黄色一区二区三区| 老妇bbw| 精品日韩一区二区三区| 亚洲色情网站| 操BBB操BBB| 国产一区二区三区免费视频| 激情五月天小说网| 无码欧美成人| 国产AV影院| 51妺妺嘿嘿午夜成人| 一级在线| 最新中文字幕在线播放| 国产精品二| 五月丁香久久| 91爱爱·com| 中文字幕亞洲高清手機版第617| YOUjiZZ欧美大全| 韩国精品无码| 免费看日P视频| 免费在线观看黄片视频| 婷婷三区| 国产精品视频色| 日韩精品电影| 爱爱天堂| 91色在线| 亚洲黄色无码视频| 欧美激情视频一区二区| 午夜黄色视频| 老太老熟女城中层露脸60| 51黄片库| 538在线观看| 国产AⅤ爽aV久久久久成人| 无码精品人妻一区二区| 国产精品免费一区二区三区都可以| 欧美日韩国产尤物主播精品| 高清无码爱爱| 欧美日韩黄片| 免费日比视频| 国产亚洲色婷婷| 国产精品一区二区三区不卡| 久久少妇视频| 伊人影院在线免费观看| 国产足交| 爱爱免费视频| 激情黄色视频| 亚洲一级二级片| 国产福利91| 亚洲国产精品成人va在线观看| a毛片| 久操播放器| 日韩啪啪啪网站| 免费看无码网站成人A片| 性爱免费视频网站| 操中国老女人| 91亚洲国产成人久久精品网站| 97人妻人人澡| 久久青草免费视频| 亚洲AV第二区国产精品| 99久久久精品久久久久久| 草久在线视频| 91人人妻人人妻人人澡| 91小仙女jK白丝袜呻吟| 久久青青草在线视频| 成人在线精品视频| 看A片在线| av免费播放| 青娱乐亚洲视频在线| 大香蕉999| 欧美日韩色视频| 97人人爽| 在线h网站| 一级aa片| 国产精品在线免费观看| 一区二区三区视频在线观看| 婷婷色中文网| 无码视频网站| 成人视频18+在线观看| 91成人片| 亚洲大片免费看| 无码一区二区三区四季| 99热在线观看免费精品| 91丨牛牛丨国产人妻| 婷婷深爱五月| 呦呦av| www.99视频| 欧美日韩视频免费观看| 影音先锋日韩资源| 好好日视频| 江苏妇搡BBBB搡BBBB小说| 亚洲偷拍视频| 女毛片| 久久九九热| 乱码中文字幕日韩欧美在线| 久久午夜福利电影| av少妇| 人人操人人草| 亚洲高清无码一区二区| 黄片久久| 日本精品在线播放| 91精品视频在线| 欧美一级在线免费观看| 波多野无码| wwwxxx18| 99操逼视频| 婷婷精品| 激情久久AV一区AV二区AV三区| 国产亚洲久一区二区| 先锋资源av在线| 国产一级免费在线观看| 亚洲精品国产精品国自产曰本| 狼人综合视频| 爱视频福利| 吹潮喷水高潮HD| 福利视频网亚洲| 日韩毛片中文字幕| 亚洲狼人久久久精品| 爱草视频| 青青草原成人在线视频| 亚洲人气无码AV| 91人妻人人澡人人爽人人精品乱| 国产av影音| 免费视频| 久操视频免费看| 91大神在线免费看| 超碰在线观看99| 亚洲砖区免费| 伊人网址| 午夜福利视频网| 国产在线观看97| 欧美性爱一区二区三区| 深夜福利一区二区| 日AV在线无| 精品国产污污免费网站入口| 欧美日韩免费观看视频| 免费黄色在线视频| 特黄av| 人人草人人看人人摸| 亚洲第一页在线观看| 国内视频一区| 2015中文字幕黄色视频| 99热热久久| 日皮视频| 黄色在线| A国产| 一区二区三区四区在线视频| 最新中文字幕777私人在线| 国产精品福利导航| 免费av一区二区| 日韩拍拍| 99精品国自产在线| 激情久久五月天| 三级成人无码| 九色PORNY国产成人| 免费无码视频一区二区| 人人澡人人爽人人精品| 天天日少妇| 91亚洲精品久久久久蜜桃| 久久骚| 国产高清第一页| 详情:绿帽夫妻多人运动开淫啪-91n| 午夜性爱网站| 精品免费一区二区三区四区 | 午夜婷婷| 大香蕉超碰在线| 婷婷五月色播| 北条麻妃无码视频| 欧美不卡一区二区三区| 操逼短视频| 亚洲第一网无码性色| 欧美日韩一区在线观看| 中文字幕在线看| 无码人妻精品一区二区三区蜜桃91 | 亚洲精品一区二区三区四区五区六区 | 欧美三级欧美一级| 激情久久AV一区AV二区AV三区| 丁香婷婷久久久综合精品国产| 婷婷五月av| 国产亚洲三级| 日日騒av无码| 中文字幕三级片| 国内自拍av| 免费一级网站| 日韩免费在线视频观看| 国产视频你懂的| 亚洲AV无码成人专区| 波多野结衣99| 亚洲一区视频| 搡中国东北老女人视频| 高清无码不卡视频| 操极品美女| 国产精品国产成人国产三级| 欧美sesese| 大香蕉综合闲人| 一区二区三区av| 午夜电影无码| 中文字幕第72页| 久久99无码| 99久久综合| 人妻天天干| 日韩不卡一区二区三区| 国产三级国产三级国产普通话| 男女无码| jzzijzzij亚洲成熟少妇在线播放 黑人猛躁白人BBBBBBBBB | 五月天婷婷色播| 国产激情小视频| 日韩欧美精品一区二区| 国产大屌| 91人妻一区| 插插视频| 2025av天堂网| 91乱| 能看的黄色视频| 99热这里只有精品9| 日韩AV免费电影| 天堂在线网| 成人视频观看| 黄色电影免费在线观看| 日本熟妇一区二区三区| 黄色在线视频观看| 青草在线视频| 国产av资源| 婷婷五月在线观看| 69欧美| 黄色片视频日韩| 久久精品国产亚洲AV麻豆痴男| 在线观看高清无码视频| 亚洲视频免费在线播放| 色播av| 日韩欧美性爱网站| 男女日皮视频| 东方成人av| av在线免费观看网址| 精品国内视频| 操一操干一干| 久久精品99| 自拍偷拍中文字幕| 久久免费在线视频| 69av网站| 久久澡| 亚洲免费视频在线观看| AAA免费视频| 搡女人视频国产一级午夜片| 久久永久免费| 高清无码片| 国产熟妇码视频户外直播| AV女人天堂| 骚妇大战黑人15P| 91精品国产成人做爰观看奶头 | 国产高清无码视频在线观看| 国产精品夜夜爽7777777| 一插菊花综合| 国产无码一二三区| 天堂在线视频免费| 国产无码免费| 亚洲第一页在线观看| 欧美级毛片一进一出夜本色| 亚洲人免费视频| 国产精品免费人成网站酒店| 国产剧情一区二区av在线观看| 少妇搡BBBB搡BBB搡澳门| 豆花视频logo| 亚洲国产久久| 亚洲AV秘无码不卡在线观看| 444444在线观看免费高清电视剧木瓜一 | 无码高清视频| 婷婷日韩中文字幕| 三根一起进菊眼| 欧美AⅤ在线| 4438成人网站| 国产又粗又猛又黄又爽无遮挡| 狼人色影院| 秋霞午夜福利| 国产毛片基地| 牛牛免费视频| 成人免费精品| 中文字幕日韩AV| 无码主播| 天天撸天天干天天日| 91嫩草欧美久久久九九九| 高清无码一区二区三区四区| AV黄色网址| 一本大道东京热AV| 国产高清第一页| 国精品无码一区二区三区在线| 一品国精和二品国精的文化意义 | 蜜桃一区二区三区| 天天做天天爱天天爽| 欧美日韩视频在线播放| 亚洲精品成人无码AV在线| 国产1级a毛a毛1级a毛1级| 特级黄色A片| 色老板免费精品无码免费视频| 日韩一级A片| 国产高清无码免费| 内射无码专区久久亚洲| 有码一区二区三区| 国产老熟女久久久| 国产在线视频网站| 人人妻人人躁人人DVD| 国产精品国内自产| 亚洲AV无码久| 久久九九99| 免费看无码一级A片放24小时| 极品无码| 波多野成人无码精品视频| 黄色国产免费| 天天干无码| 精品国产女人| 亚洲精品白浆高清久久久久久 | 超碰a片| 最新免费毛片| 三级乱伦86丝袜无码| 亚洲影音| 香蕉久草| 白浆av| 久久视频免费| 国产精品免费观看视频| 丁香婷婷激情| 日日躁夜夜躁| 亚洲第一色| 另类TS人妖一区二区三区| 日韩成人性爱网站| 按摩性高湖婬AAA片A片中国| 长腿女神打扫偷懒被主人猛操惩罚| 强伦人妻一区二区三区| 久久精品一区二区| 久久久三级| 国模精品无码一区二区免费蜜桃| 一本色道久久综合无码人妻 | 九色自拍视频| 人人操比| 亚洲AV免费电影| 久草免费在线观看视频| 黄总AV| 亚洲69v久久久无码精品| 亚洲伊人影院| 东北老女人性爱视频| 丰满人妻一区二区三区精品高清 | 99成人电影| 丁香四月婷婷| 久久嫩草精品久久久久精| 国产精品久久久久久久久久| AV资源在线| 欧美一区二区在线| 久久人妻中文字幕| 中文字幕1区| a天堂视频| 狠狠操综合| 人人澡人人干| 中文字幕AV播放| 中文字幕在线观看高清| 国产一级A片久久久免费看快餐 | 婷婷伊人大香蕉| 国产色色色色| 亚洲五月天在线| 免费视频一区二区三区四区 | 九九九九九九精品视频| 豆花视频在线播放| 色国产视频| jizz在线视频| 国产欧美第一页| 一级aa视频| 国产狼友| 亚洲日韩在线a成| a在线| 国产乱伦视屏| 国产成人69免费看| 久草网在线观看| 一级A毛片| 影音先锋男人天堂| 欧美一区在线视频| 夜夜爽夜夜| 亚洲天堂视频网站| 粉嫩99精品99久久久久久特污 | 五月婷婷中文| 蜜桃Av噜噜一区二区| 中文字幕av无码| 蜜桃av秘无码一区二区| 中文视频在线观看| 亚洲AV成人无码精在线| 在线观看黄色视频网站| 欧美四区| 婷婷五月天影院| 四虎网站| 免费黄色小视频| 精品人妻一区二区三区四区不卡在 | 青榴社区| 国产人人色| 国产一级A片久久久免费看快餐| 永久免费看片视频| 十八禁在线播放| 婷婷五月天在线播放| 波多野吉衣毛片| 中文字幕人妻无码| 亚洲日本在线观看| 亚洲第一视频| 欧美日韩在线免费观看| 黄色大片AV在线| 91熊猫视频| 亚洲日韩中文无码| AA片免费| 凸凹翔田千里无码| 亚洲AV一级| 青青草视频免费| 天堂a√在线8| 亚洲视频在线视频| 久久在线精品| 中文在线高清字幕| av天堂亚洲| 特级西西人体WWWww| 午夜精品秘一区二区三区| 久色视频| 性视频人人| 午夜精品久久久久久久久无码99热| 国产成人小视频在线观看| 伊人网视频在线播放| 97人妻一区| 在线视频A| 大炕上公让我高潮了六次| 99热最新国产| 黄色视频在线网站| 美女91视频网站| 少妇搡BBBB搡BBB搡视频一级| 日本成人中文字幕| 免费无码毛片一区二区A片小说| 亚洲福利女神成人福利| 亚洲色视频在线观看| 狼人综合影院| 五月激情久久| 水蜜桃成人网| 亚洲AV永久无码成人| 韩国无码片| 操天天操| www.51av| 高清无码免费在线观看| a亚洲天堂| 国产卡一卡二在线观看| 性爱A级视频| 国产免费av网站| 亚洲婷婷五月天| 依人综合网| av无码中文字幕| 大香蕉久久草| 91视频在线观看| 在线免费小黄片| 中文字幕av网站| 亚洲精品影视| A黄色视频| 黄色视频网站在线免费观看| 99久视频| 操逼网站视频| 大香蕉伊人在线手机网| 欧洲精品在线视频| 日韩人妻系列| 精品中文字幕在线| 久草视频首页| 九九成人电影| 嫩草视频在线观看| 精品无码免费看专区| 国产精品99久久免费黑人人妻| 日韩成人不卡| 欧美婬乱片A片AAA毛片地址| 青娱乐国产视频| 日韩高清一区二区| 18禁免费网站| a在线观看免费| 蜜桃无码在线| 韩国免费一级a一片在线播放| 视频一区18| 97超碰在| 久热免费视频| 日韩精品你懂的| 丁香操逼| 国产精品美女毛片j酒店| 欧美日韩国产成人在线| 人人操在线观看| 日日碰狠狠| 囯产精品久久久久久久久久久久久久 | 免费看欧美日黄片| 91精品国产一区二区三区四区大| 动漫无码视频| 国产欧美在线看| 靠逼免费视频| 熟女中文字幕| 成人禁区| 色情综合| 91精品无码一区二区| 再深点灬好爽灬轻点久久国产 | 波多野结衣成人网站| AV电影在线免费观看| 中文字幕黄色| 国产女同性系列| 毛片一区二区三区| 嫩草av在线| 91白丝喷水自慰网站| 国产乱伦AV网站| 拍真实国产伦偷精品| 99自拍视频| 老师机性爱视频在线播放| 婷婷五月天免费视频| 在线视频久| 怮交小拗女小嫩苞视频| 特级特黄AAAAAAAA片| 91爱爱com| 一本久道视频一本久道| 91AV免费在线观看| 麻豆视频在线| 91亚洲国产| 黄片毛片| 特级西西人体444www高清| 亚州av| 精品大香蕉| 亚洲AV无码久| 人妻丰满精品一区二区| 久久久久一区| 亚洲丁香五月| 肏亚洲美女| 欧美男女交配视频| 91亚洲精选| 一区二区免费看| 成人自拍视频| 成人久久大香蕉| 各种BBwBBwBBwBBw| 国产AV不卡| 91成人免费视频| 色五月婷婷视频| 国产美女一区| 亚洲成av人无码| 黄色A级片| 爱爱免费视频| 国产日本在线观看| 国产无码在线看| 91视频导航| 福利视频导航自拍| 亚洲色欲av| A视频在线观看| 国产成人电影免费在线观看| 国产一区二区不卡视频| 求欧美精品网址| 无码人妻一区二区三区线花季传件| www伦理片-韩国三级三级三级a三级-成人AV | 黄色A毛片| 国产8区| 精品国产久久久| 特级西西444WWW高清大视频 | 四虎影院在线| 波多野结衣无码AV在线| 国产91探花系列在线观看| 国语一区| 欧美XXX黑人XYX性爽| 久久久久久亚洲| 最新日韩中文字幕| 毛茸茸BBBBBB毛茸茸| 黄色一级片网站| 伊人色女操穴综合网| 北岛玲丝袜办公室高跟| 黄色视频在线网站| 色五月丁香婷婷| 操大逼视频免费国产| 操美女视频网站| 五月激情啪啪| 视色视频在线观看| 操BBB操BBB| 亚洲AV成人无码精品直播在线| 亚洲高清中文字幕| 中文在线第一页| 亚洲av毛片| 久久久久国产一区二区三区| 国产福利美女网站| 51AV在线| 日韩人妻一区二区三区| 久久911| 无码一二| 欧美一级婬片A片免费软件| 亚洲永久在线| 中文字幕中文| 国产成人午夜福利在线| 蜜桃精品一区二区三区美女| 密桃视频网站| 壁特壁视频在线观看| 国产av一区二区三区| 高清无码视频免费看| 伊人狠狠蜜桃亚洲综合| 亚洲天堂影院| 无码不卡在线播放| 成人av中文字幕| 内射视频网站| 亚洲综合一区二区三区| 凹凸熟女凹凸BBWBBW| 久久大香蕉视频| 黑人aV| 色综合一区二区三区| 日韩人妻无码一区二区三区七区 | 乱伦99| 免费观看高清无码| 久久成人片| 天堂无吗| 亚洲无码91| 俺去俺来也www色视频| 干少妇视频| 各国熟女HD合集| 免费播放片色情A片| 老女人肏屄视频| 国产日韩在线观看视频| 色情一级A片成人片| 99爱爱视频| 一本色道久久综合无码人妻 | 影音先锋中文字幕资源| 亚洲一区翔田千里无码| 亚洲一级在线观看| 又粗又硬又爽18级A片| 大香蕉AV在线观看| 国产成人视频在线观看| 日韩在线综合网| 色婷婷日韩精品一区二区三区| 成人网站在线免费观看| 五月天福利影院| 午夜无码人妻AV| 国产免费成人在线观看| 五月天高清无码| 午夜免费视频| 九一成人网| 成人三级电影在线观看| 日韩人妻午夜| 粗长哭叫打桩H体育生| 女人的天堂AV| xxxx日韩| 波多野结衣在线网站| 欧美一区二区三区激情| 先锋影音资源AV| 国产A片免费看| 久久久精品一区| 亚洲av| 亚洲人成免费网站| 久久艹久久| 91人妻人人澡人人爽| 久久久久久久久久久久高清毛片一级| 日本高潮视频| 干日本少妇| 久久精品视频网站| 日韩在线不卡| 99久久婷婷国产综合精品|