日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

seata 如何开启tcc事物_分布式事务Seata-TCC源码分析

發(fā)布時間:2024/8/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 seata 如何开启tcc事物_分布式事务Seata-TCC源码分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為了更好理解分布式事務,首先提出一個問題:

假設數(shù)據(jù)庫中有兩個表ta,tb,我們要分別更改ta表中的ra記錄和tb表中的rb記錄,但要求ra和rb記錄都修改成功,才認為此次操作時成功,或者需要失敗回滾。針對這種情況處理方式很簡單,只需要使用個事務就好了。

但假如ta和tb不在一個數(shù)據(jù)庫中或者不在一個數(shù)據(jù)庫實例上,此時數(shù)據(jù)庫的事務這兩個表也是無法同時管理的,針對這種情況要如何解決了?如何保證對ta和tb操作的一致性?

此時可以通過TCC來解決上述問題,TCC通過實現(xiàn)兩階段協(xié)議,將服務流程抽象為Try-Confirm-Cancel 三個操作:

第一階段:try,主要用于對資源的預留

第二階段:comfirm/cancel,comfirm用于對預留資源的使用,對業(yè)務進行提交,cancel是對預留資源的釋放,對業(yè)務進行回滾操作

下面從三個方面介紹TCC

seata中TCC的源碼實現(xiàn)

寫好TCC實現(xiàn)的注意點

seata中TCC模式如何做到高可用的

1. seata中TCC的實現(xiàn)

seata主要由三個模塊組成

TC (Transaction Coordinator) - 事務協(xié)調者維護全局和分支事務的狀態(tài),驅動全局事務提交或回滾。

TM (Transaction Manager) - 事務管理器定義全局事務的范圍:開始全局事務、提交或回滾全局事務。

RM (Resource Manager) - 資源管理器管理分支事務處理的資源,與TC交談以注冊分支事務和報告分支事務的狀態(tài),并驅動分支事務提交或回滾。

public interface TccActionOne {

@TwoPhaseBusinessAction(name = "DubboTccActionOne" , commitMethod = "commit", rollbackMethod = "rollback")

public boolean prepare(BusinessActionContext actionContext, int a);

public boolean commit(BusinessActionContext actionContext);

public boolean rollback(BusinessActionContext actionContext);

}

public interface TccActionTwo {

@TwoPhaseBusinessAction(name = "DubboTccActionTwo" , commitMethod = "commit", rollbackMethod = "rollback")

public boolean prepare(BusinessActionContext actionContext, String b);

public boolean commit(BusinessActionContext actionContext);

public boolean rollback(BusinessActionContext actionContext);

}

同時在provider和consumer端都要引入具體的GlobalTransactionScanner,該類會對TM和RM進行初始化和注冊:

具體調用如圖:

image.jpeg

以上是簡單的使用方式,有了上面基本使用流程的介紹后,現(xiàn)在開始分析下具體的代碼實現(xiàn),首先重點關注下以下的類和注解:

GlobalTransactionScanner,用于掃描是否開啟了分布式事務,并對加了分布式事務注解的方法注入代理,如TwoPhaseBusinessAction和GlobalTransactional

注解TwoPhaseBusinessAction,表示該方法使用的TCC模式,并同時制定commit和cancel方法

注解GlobalTransactional,用于表示被修飾的方法會開啟分布式事務來進行處理

GlobalTransactionScanner通過AbstractAutoProxyCreator類,來為被分布式相關注解修飾的方法添加動態(tài)代理,所以在服務啟動時,會執(zhí)行GlobalTransactionScanner類中相關方法,

主要涉及的方法有:

GlobalTransactionScanner#initClient,初始化TM和RM客戶端

GlobalTransactionScanner#wrapIfNecessary,為添加了TwoPhaseBusinessAction和GlobalTransactional注解的方法添加代理,同時分別為修飾的方法注入TccActionInterceptor和GlobalTransactionalInterceptor代理類,同時會將本地服務作為RM客戶端注冊到TC服務端中

1.1 客戶端初始化

所以GlobalTransactionScanner是Seata客戶端的啟動類,首先看下TM和RM客戶端的初始化

TM和RM會分別初始化TmNettyRemotingClient和RmNettyRemotingClient,這個兩個類的父類都是AbstractNettyRemotingClient,在該類的init方法中,會啟動一個定時來檢查TC的channel是否存活,同時會發(fā)送注冊信息到TC中,最后會啟動netty客戶端

public void init() {

timerExecutor.scheduleAtFixedRate(new Runnable() {

@Override

public void run() {

//檢測連接TC的channel是否存活,若不存在對應channel或者channel已關閉,則會重新連接到TC,同時發(fā)送注冊信息到TC服務中

clientChannelManager.reconnect(getTransactionServiceGroup());

}

}, SCHEDULE_DELAY_MILLS, SCHEDULE_INTERVAL_MILLS, TimeUnit.MILLISECONDS);

if (NettyClientConfig.isEnableClientBatchSendRequest()) {

mergeSendExecutorService = new ThreadPoolExecutor(MAX_MERGE_SEND_THREAD,

MAX_MERGE_SEND_THREAD,

KEEP_ALIVE_TIME, TimeUnit.MILLISECONDS,

new LinkedBlockingQueue<>(),

new NamedThreadFactory(getThreadPrefix(), MAX_MERGE_SEND_THREAD));

mergeSendExecutorService.submit(new MergedSendRunnable());

}

super.init();

clientBootstrap.start();

}

在NettyClientChannelManager#reconnect方法中,會通過獲取所有注冊到注冊中心的TC服務地址,然后判斷當前緩存NettyClientChannelManager#channels中是否存在對應地址且存活狀態(tài)的channel,若不存在,則會為該TC地址創(chuàng)建channel,同時向改地址發(fā)送注冊信息,TmNettyRemotingClient和RmNettyRemotingClient注冊信息分別為RegisterTMRequest和RegisterRMRequest,主要方法步驟是在netty.NettyClientChannelManager#doConnect中創(chuàng)建channel,然后在NettyPoolableFactory#makeObject方法中發(fā)送對應的注冊消息

而在GlobalTransactionScanner#wrapIfNecessary方法中,會為TwoPhaseBusinessAction和GlobalTransactional修飾的方法添加代理實現(xiàn)

@Override

protected Object wrapIfNecessary(Object bean, String beanName, Object cacheKey) {

try {

synchronized (PROXYED_SET) {

if (PROXYED_SET.contains(beanName)) {

return bean;

}

interceptor = null;

//check TCC proxy

if (TCCBeanParserUtils.isTccAutoProxy(bean, beanName, applicationContext)) {

//TCC interceptor, proxy bean of sofa:reference/dubbo:reference, and LocalTCC

interceptor = new TccActionInterceptor(TCCBeanParserUtils.getRemotingDesc(beanName));

ConfigurationCache.addConfigListener(ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION,

(ConfigurationChangeListener)interceptor);

} else {

Class> serviceInterface = SpringProxyUtils.findTargetClass(bean);

Class>[] interfacesIfJdk = SpringProxyUtils.findInterfaces(bean);

if (!existsAnnotation(new Class[]{serviceInterface})

&& !existsAnnotation(interfacesIfJdk)) {

return bean;

}

if (interceptor == null) {

if (globalTransactionalInterceptor == null) {

globalTransactionalInterceptor = new GlobalTransactionalInterceptor(failureHandlerHook);

ConfigurationCache.addConfigListener(

ConfigurationKeys.DISABLE_GLOBAL_TRANSACTION,

(ConfigurationChangeListener)globalTransactionalInterceptor);

}

interceptor = globalTransactionalInterceptor;

}

}

LOGGER.info("Bean[{}] with name [{}] would use interceptor [{}]", bean.getClass().getName(), beanName, interceptor.getClass().getName());

if (!AopUtils.isAopProxy(bean)) {

bean = super.wrapIfNecessary(bean, beanName, cacheKey);

} else {

AdvisedSupport advised = SpringProxyUtils.getAdvisedSupport(bean);

Advisor[] advisor = buildAdvisors(beanName, getAdvicesAndAdvisorsForBean(null, null, null));

for (Advisor avr : advisor) {

advised.addAdvisor(0, avr);

}

}

PROXYED_SET.add(beanName);

return bean;

}

} catch (Exception exx) {

throw new RuntimeException(exx);

}

}

方法中會為TwoPhaseBusinessAction注解修飾的方法生成TccActionInterceptor代理,為GlobalTransactional生成GlobalTransactionalInterceptor代理。

但在TCCBeanParserUtils#isTccAutoProxy方法中若存在TwoPhaseBusinessAction注解,會通過RmNettyRemotingClient#registerResource發(fā)送注冊信息,具體方法在DefaultRemotingParser#parserRemotingServiceInfo中,個人覺得這個步驟可以去掉了有點冗余

1.2 服務端初始化

TC服務端啟動類io.seata.server.Server#main,該方法中會初始化DefaultCoordinator類,這個類是所有消息的處理類,DefaultCoordinator主要屬性如下

//各種定時任務,用來重試

private ScheduledThreadPoolExecutor retryRollbacking = new ScheduledThreadPoolExecutor(1,new NamedThreadFactory("RetryRollbacking", 1));

private ScheduledThreadPoolExecutor retryCommitting = new ScheduledThreadPoolExecutor(1,new NamedThreadFactory("RetryCommitting", 1));

private ScheduledThreadPoolExecutor asyncCommitting = new ScheduledThreadPoolExecutor(1,new NamedThreadFactory("AsyncCommitting", 1));

private ScheduledThreadPoolExecutor timeoutCheck = new ScheduledThreadPoolExecutor(1,new NamedThreadFactory("TxTimeoutCheck", 1));

private ScheduledThreadPoolExecutor undoLogDelete = new ScheduledThreadPoolExecutor(1,new NamedThreadFactory("UndoLogDelete", 1));

private RemotingServer remotingServer; //消息通信服務端

private DefaultCore core; //主要的事務處理

針對消息的處理流程,具體方法在NettyRemotingServer#registerProcessor:

private void registerProcessor() {

// 1. registry on request message processor

ServerOnRequestProcessor onRequestProcessor =

new ServerOnRequestProcessor(this, getHandler());

//處理事務提交回滾等消息

super.registerProcessor(MessageType.TYPE_BRANCH_REGISTER, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_BRANCH_STATUS_REPORT, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_BEGIN, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_COMMIT, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_LOCK_QUERY, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_REPORT, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_ROLLBACK, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_GLOBAL_STATUS, onRequestProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_SEATA_MERGE, onRequestProcessor, messageExecutor);

// 2. registry on response message processor,對分支事務提交和回滾響應結果的處理

ServerOnResponseProcessor onResponseProcessor =

new ServerOnResponseProcessor(getHandler(), getFutures());

super.registerProcessor(MessageType.TYPE_BRANCH_COMMIT_RESULT, onResponseProcessor, messageExecutor);

super.registerProcessor(MessageType.TYPE_BRANCH_ROLLBACK_RESULT, onResponseProcessor, messageExecutor);

// 3. registry rm message processor,處理RM客戶端的注冊消息

RegRmProcessor regRmProcessor = new RegRmProcessor(this);

super.registerProcessor(MessageType.TYPE_REG_RM, regRmProcessor, messageExecutor);

// 4. registry tm message processor,處理TM客戶端的注冊消息

RegTmProcessor regTmProcessor = new RegTmProcessor(this);

super.registerProcessor(MessageType.TYPE_REG_CLT, regTmProcessor, null);

// 5. registry heartbeat message processor,處理客戶端的心跳消息

ServerHeartbeatProcessor heartbeatMessageProcessor = new ServerHeartbeatProcessor(this);

super.registerProcessor(MessageType.TYPE_HEARTBEAT_MSG, heartbeatMessageProcessor, null);

}

從上圖可以看出注冊消息是在RegRmProcessor和RegTmProcessor中進行處理。

1.3 TCC消息處理分析

首先還是看下一開始的示例代碼:

@GlobalTransactional

public String doTransactionCommit(){

//第一個TCC 事務參與者

boolean result = tccActionOne.prepare(null, 1);

if(!result){

throw new RuntimeException("TccActionOne failed.");

}

List list = new ArrayList();

list.add("c1");

list.add("c2");

result = tccActionTwo.prepare(null, "two", list);

if(!result){

throw new RuntimeException("TccActionTwo failed.");

}

return RootContext.getXID();

}

在調用doTransactionCommit方法時,會進入到代理類GlobalTransactionalInterceptor中,最終會執(zhí)行到TransactionalTemplate#execute方法,該方法的主要邏輯如下:

beginTransaction(txInfo, tx);//開始事務

rs = business.execute(); //執(zhí)行業(yè)務代碼,即執(zhí)行doTransactionCommit方法

commitTransaction(tx); //提交事務

在開始事務beginTransaction方法中,會向TC服務發(fā)送GlobalBeginRequest消息,來獲取事務xid,該消息最終會在服務端DefaultCore#begin方法中得到處理:

通過雪花算法產生一個隨機數(shù)作為transactionId.根據(jù)transactionId生成xid,具體規(guī)則是ipAddress + ":" + port + ,":" + transactionId,ipAddress為本機ip,port為當前服務的端口

將全局事務記錄寫入global_table表中,同時返回xid,表中xid為主鍵,transactionId為索引

執(zhí)行業(yè)務代碼,業(yè)務代碼會調用遠端服務,如tccActionOne.prepare方法,由于該方法被TwoPhaseBusinessAction修飾,會執(zhí)行代理類TccActionInterceptor,在TccActionInterceptor類中的invoke方法主要邏輯如下:

String branchId = doTccActionLogStore(method, arguments, businessAction, actionContext); //注冊分支事務,同時獲取分支事務id

.....

ret.put(Constants.TCC_METHOD_RESULT, targetCallback.execute()); #執(zhí)行實際的分支事務的業(yè)務代碼,如tccActionOne.prepare方法

其中在doTccActionLogStore方法中客戶端通過發(fā)送BranchRegisterRequest消息,其中clientId和lockKeys都是null,resourceId為TwoPhaseBusinessAction中name名稱該消息最終會在服務端AbstractCore#branchRegister:

通過隨機算法生成branchId

生成一個分支記錄,將記錄插入到branch_table表中,其中branchId為主鍵

doTransactionCommit所有業(yè)務邏輯執(zhí)行成功后,GlobalTransactionalInterceptor代理類會執(zhí)行到commitTransaction方法,進行全局事務的提交,客戶端會通過DefaultTransactionManager#commit方法發(fā)送GlobalCommitRequest事務提交消息,此時服務端接收到該消息后,會通過DefaultCore#doGlobalCommit方法進行全局事務的提交,該方法的主要邏輯如下:

從存儲中獲取全局事務xid下所有分支事務記錄,為每個分支事務調用AbstractCore#branchCommitSend方法,發(fā)送BranchCommitRequest消息到對應的分支事務客戶端,來進行分支事務的commit,客戶端接收到消息后,會執(zhí)行TwoPhaseBusinessAction注解中填寫的commit方法來完成分支事務的提交

當有任何一個分支服務調用失敗時,如tccActionOne.prepare調用失敗,會回滾全局事務,然后TC服務端會回滾所有的分支事務

2. 寫好TCC實現(xiàn)的注意點

寫好一個完備的TCC的實現(xiàn)是有一定的要求,需要解決空回滾,冪等操作和懸掛問題。

空回滾

即全局事務回滾時,有可能分支事務try接口由于網絡問題并沒有被觸發(fā)或者還在處于try階段,此時TC已經觸發(fā)了分支事務的cancel,此時需要分支事務服務需要返回成功,不然會有重試,即分支事務要支持空回滾

冪登性

由于網絡抖動問題,分支事務中的try方法可能會被執(zhí)行多次,所以要保證資源不會被重復消耗,解決辦法可以通過為每一個請求維護一個唯一id,如分支事務id,來過濾重復的請求

懸掛問題

當全局事務回滾時,由于分支事務try方法執(zhí)行了較長時間,導致分支事務執(zhí)行cancel方法后,try方法才執(zhí)行成功,這樣導致被try鎖定的資源得不到釋放,解決辦法是將每個分支事務的請求記錄下來,所以當執(zhí)行try方法后,發(fā)現(xiàn)已經存在cancel的執(zhí)行記錄后,則回滾當前的try操作

3. seata中TCC模式如何做到高可用的

要做到高可用,要做到服務的無狀態(tài),為了做到這點seata做了如下工作:

存儲,TC中事務數(shù)據(jù)的存儲避免使用本地存儲,可以使用mysql等

服務發(fā)現(xiàn)與注冊,

從上文實現(xiàn)分析中,我們可以看出TC服務會將本服務的ip注冊到注冊中心,如zk,etcd等,TM和RM客戶端會拉取所有TC服務端的地址,同時將客戶端服務的ip注冊到所有TC服務中,這樣保證了每個TC服務都有所有客戶端的鏈接信息

總結

以上是生活随笔為你收集整理的seata 如何开启tcc事物_分布式事务Seata-TCC源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

精品国产伦一区二区三区观看方式 | 欧美精品一区二区在线播放 | 国产不卡网站 | 特及黄色片 | 婷婷丁香激情综合 | 成人丁香花 | 国产视频亚洲精品 | 久久天天躁夜夜躁狠狠85麻豆 | 91成人精品在线 | 91私密视频 | 99色视频在线 | 色综合天天狠天天透天天伊人 | 99精品视频精品精品视频 | 久久精品福利视频 | 麻豆成人网 | 日韩欧美国产视频 | 91看片成人 | 中文字幕在线不卡国产视频 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 久久久久久久久久久影院 | 国产v在线观看 | 免费在线看成人av | 日韩av二区 | 久久综合爱| 在线亚洲成人 | 五月婷网 | 亚洲性xxxx| 在线观看免费高清视频大全追剧 | 一区二区三区四区五区六区 | 97视频网址 | 超碰在线97国产 | 国产精品久久久一区二区三区网站 | 亚洲开心激情 | 在线观看福利网站 | 国产超碰97 | 日日夜夜精品免费观看 | 五月天开心 | 国产亚洲免费的视频看 | 黄色网址a| 99成人免费视频 | 97视频在线 | 日韩欧美国产精品 | 99国产一区二区三精品乱码 | 中文字幕频道 | 欧美精品久久久久 | 91在线播放综合 | 在线成人一区 | 香蕉网站在线观看 | 日日夜夜天天人人 | 五月婷色 | 国产视频午夜 | 国产精品一区二区三区在线 | www.香蕉视频在线观看 | 精品999在线 | 少妇精品久久久一区二区免费 | 欧美aaa大片 | 69视频网站| 欧美一性一交一乱 | 最近日本韩国中文字幕 | 丁香婷婷综合网 | 成人国产精品免费 | 日操操 | 日日干 天天干 | 在线看黄色av | 亚洲永久国产精品 | 日韩理论电影在线观看 | 在线观看中文字幕一区 | 91高清完整版在线观看 | 国产最新视频在线观看 | 91.麻豆视频| 在线免费高清一区二区三区 | 免费在线观看成人 | 久久久久久久久福利 | 五月婷丁香| 婷婷六月天综合 | 国产伦理久久精品久久久久_ | 成人永久视频 | 久久人人爽人人人人片 | 久爱精品在线 | 久草在线综合 | 中文字幕黄色网址 | 人人爱天天操 | 久爱综合 | 一本到视频在线观看 | 国产香蕉在线 | 9热精品| 国产精品18久久久久久久 | 国产亚洲婷婷 | 黄色av一区二区 | 日韩精品在线免费观看 | 午夜精品三区 | 在线香蕉视频 | 久草在线免费播放 | 久久黄色免费视频 | 蜜臀久久99精品久久久无需会员 | 国产精品一区二区美女视频免费看 | 国产精品原创av片国产免费 | www.天天干.com | 在线观看福利网站 | 亚洲精品一区二区三区新线路 | 日韩av三区 | 国产网红在线观看 | 成人在线视频免费观看 | 久久国产精品99久久久久久老狼 | 久久国产精品成人免费浪潮 | 亚洲永久精品视频 | 91精品国产91热久久久做人人 | 亚洲一级电影视频 | 亚洲精品a区 | 成人全视频免费观看在线看 | 久久久久草 | 亚洲精品91天天久久人人 | 深夜免费福利 | 欧美精品在线观看免费 | 欧美韩日精品 | 精品毛片一区二区免费看 | 免费视频黄 | 激情综合亚洲 | 深爱婷婷网 | 深夜精品福利 | 日韩欧美综合在线视频 | 米奇狠狠狠888 | 国产一级片直播 | 国产黄在线免费观看 | 欧美日韩视频在线观看一区二区 | 91桃色国产在线播放 | 在线黄网站 | se视频网址 | 亚洲精品综合一二三区在线观看 | 999久久久国产精品 高清av免费观看 | 欧美国产一区二区 | 国产91亚洲 | 久久久精品电影 | 色偷偷中文字幕 | 天天综合网 天天综合色 | 在线欧美最极品的av | 亚洲精品久久在线 | 国产精品丝袜 | 亚洲午夜久久久久久久久久久 | 欧美福利片在线观看 | 九月婷婷综合网 | 日韩欧美在线中文字幕 | 久热免费在线 | 一级a性色生活片久久毛片波多野 | 亚洲在线综合 | av在线播放一区二区三区 | 99麻豆久久久国产精品免费 | 久久看免费视频 | 中文字幕一区二区三区乱码不卡 | 国产精品96久久久久久吹潮 | 亚洲精品在线一区二区三区 | 欧美精彩视频在线观看 | 91精品国产91热久久久做人人 | 99色99| 日韩综合一区二区三区 | 日韩美一区二区三区 | 日本性生活免费看 | 99久久久久久久久 | 黄色小网站免费看 | 91精品国产高清自在线观看 | 国产永久免费观看 | 久久99久国产精品黄毛片入口 | 麻豆久久久 | 人人爽人人干 | 欧美日韩视频网站 | 成人一级在线 | 久久久久一区二区三区 | 婷婷在线视频 | 亚洲黄色一级大片 | 一级性av| 一区二区理论片 | 成人毛片一区二区三区 | 综合激情网| 人人干97| 中日韩三级视频 | 亚洲精品色 | 狠狠躁日日躁狂躁夜夜躁av | 亚洲精品一区二区三区新线路 | 一区二区视频欧美 | 狠狠狠狠干 | 国产在线免费 | 精品无人国产偷自产在线 | 五月天六月丁香 | 亚洲激情p | 久久老司机精品视频 | 成人一级电影在线观看 | 色一级片 | 久久优 | 四虎影视国产精品免费久久 | 久久久精品成人 | 免费看黄在线看 | 性色av一区二区三区在线观看 | 亚洲色图 校园春色 | 国产资源免费 | 四川妇女搡bbbb搡bbbb搡 | 超薄丝袜一二三区 | 日本三级国产 | 日韩午夜大片 | 91视频3p | 成人av免费电影 | 婷婷久久综合九色综合 | 91精品国产一区二区三区 | 808电影免费观看三年 | 人人藻人人澡人人爽 | 91精品国产高清自在线观看 | 亚洲国产成人精品电影在线观看 | 青春草免费在线视频 | 麻花豆传媒一二三产区 | 91试看 | 亚洲人成免费网站 | 国产精品美女久久 | 中文字幕二区在线观看 | 国产一级二级在线观看 | 国产精品 国内视频 | 欧美整片sss | 免费看v片网站 | 亚洲国产人午在线一二区 | 九九免费在线看完整版 | 久久视频在线视频 | 人人澡超碰碰97碰碰碰软件 | 国产一区视频免费在线观看 | 麻豆成人小视频 | 91精品在线麻豆 | 视频一区在线播放 | 成年人免费在线看 | 久久视频一区二区 | 99国内精品久久久久久久 | 日韩激情视频 | 手机看片1042 | 日韩一区二区三 | 久久天堂网站 | 黄色一级网 | 色婷婷亚洲 | 91综合久久一区二区 | 草久在线播放 | 久久九九九九 | 国产精品毛片久久久久久久久久99999999 | 天天做日日爱夜夜爽 | 久久久www成人免费毛片 | 久久久影院一区二区三区 | 中文字幕欧美日韩va免费视频 | 91精品国产一区 | 97精品超碰一区二区三区 | 粉嫩一区二区三区粉嫩91 | 97成人免费视频 | 精品久久久久久久久中文字幕 | 99视频免费看 | 久久资源总站 | 久草在线一免费新视频 | 国产成人av一区二区三区在线观看 | 日本成址在线观看 | 久久一二区 | 精品资源在线 | 操操操人人 | 久久激情久久 | 国产精品色婷婷视频 | 国产护士在线 | 久久久在线视频 | 国产一区成人在线 | 91成品人影院 | a级免费观看 | 亚洲一区二区高潮无套美女 | 久久免费在线观看视频 | 国产精品久久久久久久久婷婷 | 天天曰天天干 | 亚洲成人精品在线观看 | 欧美日韩国产在线一区 | 人人澡人人草 | 色婷婷狠狠五月综合天色拍 | 黄色大片免费播放 | 91视视频在线直接观看在线看网页在线看 | 五月开心激情 | 日韩精品五月天 | 成人黄色在线 | 精品欧美一区二区精品久久 | 三级午夜片 | 91精品在线观看入口 | 国产精品毛片一区二区在线 | 日韩理论片在线观看 | 色婷婷在线观看视频 | 中文字幕视频网 | 99精品久久只有精品 | 黄色天堂在线观看 | 日韩av片免费在线观看 | 在线免费观看的av网站 | 在线亚洲欧美视频 | 蜜臀一区二区三区精品免费视频 | 中文字幕在线一区二区三区 | 日韩av在线不卡 | 欧美吞精| 久久精品国产成人精品 | wwxxx日本 | 久久av网 | 国产亚洲欧美在线视频 | 亚洲a在线观看 | 黄色91在线 | 成人教育av| 欧美-第1页-屁屁影院 | 日韩理论片 | 成人免费观看视频网站 | 亚洲春色奇米影视 | 欧美日本一二三 | 国产永久免费高清在线观看视频 | 涩涩资源网 | 一区二区久久久久 | 日韩在线视频观看免费 | 久久网址 | 欧美日韩不卡在线观看 | 免费不卡中文字幕视频 | 91麻豆传媒 | 超级碰视频 | 亚洲欧美日韩国产一区二区 | 国产一级高清视频 | 在线观看麻豆av | 日韩国产精品久久久久久亚洲 | 久久精品一二三区白丝高潮 | 黄色福利网站 | 免费成人在线网站 | 日韩免费播放 | 最新国产精品拍自在线播放 | 久久精品欧美一区 | 欧美一级欧美一级 | 国产精品久久久久久久久久三级 | 久久久久电影 | 91视频在线免费看 | 国产精品免费av | 日韩在线视频看看 | 久久国产福利 | 91av片| 国产1区2 | 亚洲国产影院av久久久久 | 免费在线观看污网站 | 日韩视频一二三区 | 成人精品一区二区三区电影免费 | 一级片黄色片网站 | 国产免费亚洲高清 | 色婷婷成人网 | 成人免费视频网 | 黄色毛片视频 | 91九色精品女同系列 | 亚洲精品中文字幕视频 | 最新色视频 | 一级黄色片在线免费看 | 国产精品白丝jk白祙 | 伊人电影天堂 | 日本少妇视频 | 日韩精品一二三 | 国产精品视频地址 | 中文成人字幕 | 四虎永久精品在线 | 午夜在线观看一区 | 免费色婷婷 | 久久伦理网 | 黄色www免费 | 国产激情免费 | 91精品久久久久久久久久久久久 | 91精品专区 | 97超碰网 | 综合网中文字幕 | 国产91精品高清一区二区三区 | 精品福利av| 成人黄在线观看 | 国产精品久久久久毛片大屁完整版 | 久久久久亚洲精品男人的天堂 | 亚洲一级二级 | 国产精品久久久一区二区 | 日本3级在线观看 | 一区二区三区四区五区六区 | 久久久国产一区 | 亚洲成人精品av | 精品视频免费观看 | 依人成人综合网 | 日韩中文字幕网站 | 香蕉成人在线视频 | a级免费观看 | 亚洲精品男人的天堂 | 日韩精品久久久久久久电影竹菊 | 高潮久久久久久 | 国产 视频 高清 免费 | 久久久久国产免费免费 | 最近中文字幕大全中文字幕免费 | 色999视频 | 国产精品免费一区二区三区在线观看 | 欧美大香线蕉线伊人久久 | 精品免费久久久久 | 精品毛片一区二区免费看 | 国产69精品久久久久久久久久 | 天天射综合网视频 | 日韩在线看片 | 国产日韩视频在线观看 | 99久久www | 精品国产成人在线影院 | 午夜神马福利 | 国产精国产精品 | 国产999精品久久久久久麻豆 | 亚洲一一在线 | 成人av资源网 | 五月婷婷亚洲 | 日韩一区二区三区观看 | 色综合天天视频在线观看 | 国产精品久久久久久久午夜片 | 麻豆手机在线 | 欧美了一区在线观看 | 成人久久精品视频 | 久久国产区 | 国产区网址 | 深夜成人av | av中文字幕亚洲 | 国产精品美女久久久久久久网站 | 国产亚洲精品bv在线观看 | 国产剧情在线一区 | 国产伦精品一区二区三区四区视频 | 在线国产99 | 成人小视频在线观看免费 | 亚洲精选99 | 国产99一区视频免费 | 久久久99久久| 免费黄色在线网站 | 黄色毛片视频免费 | 欧美日韩久久久 | 国产亲近乱来精品 | 免费av黄色 | 国产成人久久av977小说 | 日本三级不卡视频 | 人人干天天射 | 久久在线精品视频 | 亚洲精品玖玖玖av在线看 | av888.com| 91av网站在线观看 | 日韩天天干 | 欧美韩日视频 | 久久www免费人成看片高清 | www.99在线观看| 久久爱影视i | 精品一二三四在线 | 日韩在线播放av | 亚洲五月六月 | 手机在线日韩视频 | 国产视频一区二区在线观看 | 免费观看的av网站 | 精品在线视频观看 | av网站手机在线观看 | 91香蕉久久 | 五月天天天操 | 国产 亚洲 欧美 在线 | 久久久久久久18 | 日本三级大片 | 国产亚洲精品久久久网站好莱 | 国产高清在线a视频大全 | 欧美一级久久 | 狠狠色丁香久久婷婷综合五月 | 日韩久久久久久久久久久久 | 奇人奇案qvod | 国产免费黄视频在线观看 | 国产精品黄网站在线观看 | 国产大陆亚洲精品国产 | 国产五月天婷婷 | a在线观看免费视频 | 久久国产系列 | 超碰99人人 | 色婷婷综合久久久久 | 久久国产高清视频 | 日日夜夜av | 婷婷激情站 | 日韩精品久久久久久久电影99爱 | 激情五月在线观看 | 91大片网站 | 97人人模人人爽人人喊网 | 国产精品一区二区视频 | 久久久久久久久久久成人 | 亚洲成人av在线电影 | 在线观看色网 | 亚洲丝袜一区二区 | 黄色av成人在线 | 国产精品丝袜久久久久久久不卡 | 国产精品人人做人人爽人人添 | 久久毛片网 | 在线免费观看涩涩 | 最近高清中文在线字幕在线观看 | 91麻豆产精品久久久久久 | 久久久九色精品国产一区二区三区 | 国产精品免费一区二区三区 | av一级网站 | 中文字幕免费中文 | 久久av不卡 | 在线免费观看麻豆视频 | 草免费视频 | 91精品网站在线观看 | 国产精品久久久久影视 | 国产高清av在线播放 | 91精品国产电影 | 久精品一区 | 欧美成人xxx | 8x8x在线观看视频 | 精品国产一区二区三区久久久蜜臀 | 最新黄色av网址 | 一级黄色大片在线观看 | 最新91在线视频 | 色综合天天色 | 国产美女视频免费 | 99视频网址 | 久久精品视频免费观看 | 99精品免费久久久久久久久日本 | 97超在线 | 午夜精品一区二区三区视频免费看 | 欧美最猛性xxxxx(亚洲精品) | 免费又黄又爽的视频 | 777奇米四色| 亚洲亚洲精品在线观看 | 91av原创 | 久久刺激视频 | 在线观看亚洲视频 | 91av在线免费播放 | 五月婷婷丁香六月 | 日日干夜夜骑 | 视频福利在线观看 | 日韩欧美一区二区三区免费观看 | 在线观看视频一区二区三区 | 一级黄色在线免费观看 | 97精品伊人| 欧美精品国产综合久久 | www.夜夜骑.com | av中文天堂在线 | 成年人在线观看网站 | 国产v在线观看 | 亚洲精品久久久久久久不卡四虎 | 国产999精品久久久影片官网 | 亚洲欧美激情插 | av综合在线观看 | 五月天激情在线 | 久久草网 | 一区二区在线不卡 | 免费在线观看av片 | 狠狠ri | 中文字幕精品一区二区精品 | 久久夜色精品国产欧美乱 | 国产剧情一区二区在线观看 | 在线观看国产区 | 成人黄色免费观看 | 91九色视频国产 | 伊人色**天天综合婷婷 | 色偷偷网站视频 | 国产精品久久久久久久久久免费 | 日韩精品一区二区在线视频 | 97碰碰视频| 一级片视频在线 | 欧美a在线看 | 这里有精品在线视频 | 热热热热热色 | 久久免费视频99 | 欧洲一区精品 | 在线中文字幕电影 | 在线日本看片免费人成视久网 | 亚洲国产精品久久久久婷婷884 | 91在线观看欧美日韩 | 在线免费观看一区二区三区 | 久久午夜影视 | 视频二区在线 | 国产精品h在线观看 | 在线视频a| 久久免费视频2 | 九九精品视频在线观看 | 一本一道波多野毛片中文在线 | 久久久久国产精品厨房 | 91亚洲视频在线观看 | 成人资源站 | av日韩国产| 免费在线观看污网站 | 久久夜av| 国产午夜在线观看 | 97色视频在线 | 奇米影音四色 | 亚洲撸撸 | 国内精品视频一区二区三区八戒 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 成人黄色大片 | 国产精品久99 | 久久久久久久久久国产精品 | 国产精品免费观看久久 | 91九色在线视频观看 | 欧美一进一出抽搐大尺度视频 | 69久久久| 日韩av在线小说 | 亚洲乱码精品 | 永久黄网站色视频免费观看w | 国产精品一区在线 | 五月天婷婷免费视频 | 波多野结衣小视频 | 久久激五月天综合精品 | av在线观| 美女黄久久| 亚州精品在线视频 | 久精品视频在线 | 黄色官网在线观看 | 久久久.com | 免费网址你懂的 | 色在线免费观看 | 日本久久综合网 | 黄色免费观看视频 | 一区二区免费不卡在线 | 99免费在线视频观看 | 国产精品美女久久久久aⅴ 干干夜夜 | 国产中文视频 | www.夜色321.com| 丝袜美腿亚洲综合 | 久久伦理电影 | 91丨九色丨国产在线观看 | 91亚洲精品久久久蜜桃网站 | 亚洲精品乱码久久久久 | 91少妇精拍在线播放 | 国产精品午夜8888 | 久久久黄色免费网站 | 手机看片久久 | 在线亚洲高清视频 | 久久久国产精品成人免费 | 亚洲 成人 一区 | 免费a v在线 | 免费视频在线观看网站 | 四虎5151久久欧美毛片 | 天天操天天操天天操天天 | 国产无吗一区二区三区在线欢 | 久久精品视频在线免费观看 | 激情久久久久久久久久久久久久久久 | 日韩欧美久久 | 久久国产成人午夜av影院宅 | 欧美激情精品久久久久久 | 久久精品亚洲精品国产欧美 | 中文字幕中文 | 毛片网站在线观看 | 最近日本mv字幕免费观看 | 特级毛片网 | 91麻豆精品国产91久久久使用方法 | aaawww| 国产精品国产三级国产aⅴ9色 | 人人玩人人添人人澡超碰 | 午夜视频在线观看欧美 | 91网免费看 | 免费黄色在线网站 | 91麻豆精品 | 久久久久久久99 | 最近日韩中文字幕中文 | 亚洲日本一区二区在线 | 天天插日日射 | 欧美日韩一区二区三区不卡 | 一本一道久久a久久精品 | 91精品一区二区三区蜜桃 | 午夜精品福利一区二区三区蜜桃 | 夜色资源站国产www在线视频 | 视频国产在线观看18 | 午夜久久美女 | 欧美性猛片 | 免费看亚洲毛片 | 国模视频一区二区 | 天天干天天干天天干 | 2023天天干| 日日爱视频 | 欧美日韩高清国产 | 91成人网在线 | 在线视频国产区 | 久久天天躁夜夜躁狠狠85麻豆 | 在线国产激情视频 | 久久国产精品久久w女人spa | 日韩精品一区二区三区第95 | 久久久精品在线观看 | 高潮毛片无遮挡高清免费 | 日韩3区| 日韩欧美一区二区不卡 | 日本中文字幕免费观看 | av黄色成人 | 国产精品地址 | 亚洲精品久久久久久久蜜桃 | 天天天综合网 | 成人av资源网 | 波多野结衣视频一区二区三区 | 国产成人一区二区三区在线观看 | 国产黄色免费观看 | 伊人手机在线 | 91污视频在线观看 | 麻花豆传媒一二三产区 | 国产精品一区二区无线 | 亚洲欧美国产精品va在线观看 | 国产麻豆果冻传媒在线观看 | 91字幕| 日韩精品欧美专区 | 五月天婷婷在线播放 | 国产色在线 | 久久九九影视 | 国产人成看黄久久久久久久久 | 国产福利一区二区三区视频 | 欧美日韩中文字幕在线视频 | 青青河边草观看完整版高清 | 91av播放| 久久久国产成人 | 91av视频在线观看 | 中文字幕在线免费看 | 精品一二三四视频 | 超碰在线免费97 | 夜夜爽www | 国产小视频免费在线观看 | 天天爱天天射天天干天天 | 国产精品av免费在线观看 | 99久久这里只有精品 | 久久精品三 | 久久九九久久 | 久草综合视频 | 成人av电影在线 | 国产123av | 在线观看av中文字幕 | 久久人人97超碰com | 国产一区成人在线 | 天天色欧美 | 国产一区免费在线观看 | 国产精品网站一区二区三区 | 日韩一区正在播放 | 欧洲亚洲国产视频 | 日韩美精品视频 | 在线亚洲人成电影网站色www | 99精品国产高清在线观看 | 九色视频网 | 五月综合激情婷婷 | 99精品国产在热久久下载 | 国产精品人人做人人爽人人添 | 免费观看性生交 | 久久久精品网站 | 国产一线二线三线在线观看 | 在线观看中文字幕 | 在线观看免费91 | 麻豆影视在线播放 | 丁香花在线视频观看免费 | 日韩精品一区二区三区水蜜桃 | 中文字幕一区在线观看视频 | 在线中文字幕网站 | 福利一区二区三区四区 | 天天操天天舔天天爽 | 婷婷中文字幕 | 国产日韩欧美视频在线观看 | 中文字幕免费高清av | 国产精品 中文字幕 亚洲 欧美 | 国产精品二区三区 | 天天艹天天干天天 | 伊人五月婷 | 国产精品扒开做爽爽的视频 | 免费观看十分钟 | 亚洲精品黄 | 国产精品国产三级国产专区53 | 免费一级片观看 | 国产一卡在线 | 欧美精品亚洲精品 | 狠狠操导航 | 99久久久久久国产精品 | 久久久久免费网站 | 久久黄色成人 | 91九色视频导航 | 国产视频黄 | 国产一级黄色片免费看 | 日韩综合一区二区三区 | 狠狠狠色丁香综合久久天下网 | 国产在线一区二区三区播放 | 99精品在线播放 | 免费 在线 中文 日本 | 探花视频在线观看免费版 | 天天激情 | 国产成人免费av电影 | 日韩精品一区二区不卡 | 国产在线观看你懂得 | 伊人亚洲综合 | 日本爱爱片| 永久免费毛片在线观看 | 精品日韩在线一区 | 综合久久2023 | 久久影视一区二区 | 91探花国产综合在线精品 | 国产又黄又爽又猛视频日本 | 日本中文乱码卡一卡二新区 | 国产伦理精品一区二区 | 国产精品免费久久久久影院仙踪林 | 又色又爽又黄高潮的免费视频 | 欧美成人精品在线 | 不卡的av在线 | 久草在线手机观看 | 免费欧美精品 | 成人一级黄色片 | 亚洲va欧洲va国产va不卡 | 日韩欧美在线一区二区 | 九色精品免费永久在线 | 99久久国产免费,99久久国产免费大片 | 久久avav| 久久不卡免费视频 | 91天天操| 久久香蕉国产精品麻豆粉嫩av | 亚洲闷骚少妇在线观看网站 | 国产91亚洲 | 国产精品网红直播 | 国产黄色特级片 | 在线观看精品一区 | 久草视频免费在线播放 | 国产三级精品在线 | 天天干 天天摸 天天操 | 国产在线精品一区二区不卡了 | 欧美日韩久久久 | 在线日韩视频 | 黄色成品视频 | 久久婷婷国产色一区二区三区 | 国产玖玖精品视频 | 在线91网 | 黄色成人影院 | 国产精品欧美久久 | 国产理论一区二区三区 | 日批网站在线观看 | 日韩av电影网站在线观看 | 国产成人一区二区精品非洲 | 亚洲欧美日韩精品久久奇米一区 | 亚洲小视频在线观看 | 国产精品久久久久久久久久尿 | 国产一区免费看 | 国产黄色精品在线观看 | 视频在线亚洲 | 久香蕉| 激情综合色综合久久综合 | 五月婷婷黄色 | 久久婷五月| 精品久久99 | 免费观看一级视频 | 91精品久久香蕉国产线看观看 | 免费看国产精品 | 精品影院一区二区久久久 | 国产女人免费看a级丨片 | 中文视频一区二区 | 91成品视频| 久久久精品电影 | 久久艹影院 | 色无五月 | 天天综合色 | a级成人毛片 | 伊人五月天 | 国产亚洲久久 | 亚洲 中文 欧美 日韩vr 在线 | 2022久久国产露脸精品国产 | 婷色在线 | 中文亚洲欧美日韩 | 成人资源在线观看 | 四虎在线免费 | 亚洲视频在线免费看 | 亚洲精品午夜视频 | 亚洲aⅴ在线 | av中文字幕网 | av中文字幕av | 成人一区二区三区在线观看 | 激情五月婷婷丁香 | 国产精品av在线免费观看 | 成人免费视频网站在线观看 | 国产999精品久久久影片官网 | 亚洲一区久久久 | 免费看污污视频的网站 | 黄色片免费看 | 黄网站色成年免费观看 | 丁香激情综合久久伊人久久 | av在线电影网站 | 日韩av资源在线观看 | 国产在线精品国自产拍影院 | 免费在线观看av的网站 | 国产高清在线免费 | 国产精品成久久久久三级 | 免费一级片在线 | 成人污视频在线观看 | 亚洲九九九| 成人午夜黄色影院 | 国产高清视频在线免费观看 | 日韩一区二区三区视频在线 | 久久久久久久网 | 香蕉视频在线播放 | 免费黄色看片 | 欧美日韩69 | 亚洲高清资源 | 精品国产一区二区在线 | 国产 中文 日韩 欧美 | 99免费看片 | 日韩在线视频精品 | 激情久久久久久久久久久久久久久久 | 久久久久久久久久久久久久免费看 | 日韩在线视频在线观看 | 欧美91片| 亚洲综合色av | 99理论片 | 天天草天天干天天射 | 深夜福利视频在线观看 | 免费在线观看一级片 | 天堂av免费观看 | 人人爽人人爽人人片av免 | 热久久免费视频 | 久久久久久高潮国产精品视 | 中文字幕在线有码 | 不卡av在线免费观看 | 色网站免费在线看 | 久久不卡电影 | 国产极品尤物在线 | 久久久久国产精品免费网站 | 久久视频在线观看 | 夜夜操夜夜干 | 国产精品99爱 | 国产黄色免费在线观看 | 在线午夜电影神马影院 | 九九热精品视频在线观看 | av在线a| 日韩欧美一区二区在线观看 | 啪嗒啪嗒免费观看完整版 | 西西444www大胆高清视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 中文字幕久久精品 | 久久久久久国产一区二区三区 | 国产精品女同一区二区三区久久夜 | 91精品视频免费 | 亚洲精品系列 | 91福利视频免费观看 | 国产在线观看h | 欧美日韩超碰 | 日韩精品一区二区三区丰满 | 免费国产一区二区视频 | 四虎永久视频 | 久久国产91 | 中文字幕久久久精品 | 亚洲经典中文字幕 | 在线观看mv的中文字幕网站 | 97在线观视频免费观看 | 久精品在线观看 | 曰本三级在线 | 菠萝菠萝在线精品视频 | 天天色天天综合网 | 国产精品1区2区3区 久久免费视频7 | 久久精品之 | 国产精品自在欧美一区 | 亚洲丁香久久久 | 欧美作爱视频 | 91精品伦理 | 天天综合久久 | 亚洲成人国产精品 | 在线免费观看的av网站 | 黄色特一级 | 亚洲精品大片www | 色综合久久88色综合天天 | 国产一区二区三精品久久久无广告 | 亚洲午夜久久久久久久久 | 性色xxxxhd | 久久久久久免费 | 国产精品18久久久久久久久久久久 | 久久综合九色综合97婷婷女人 | 中文字幕高清av | 成人v| 天天干,天天干 | 97人人网| 欧洲视频一区 | 国产淫片| 精品一区二区在线免费观看 | 九草视频在线 | 久久人人做 | 中文字幕黄色 | 亚洲永久字幕 | 午夜在线资源 | 特黄特色特刺激视频免费播放 | 久久精品视频网 | 欧美精品久久久久久 | 免费在线色| 精品人人爽| 91九色蝌蚪视频网站 | 国产精品乱码久久 | 黄网站app在线观看免费视频 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久精品欧美视频 | 在线电影av | 欧美日韩高清一区二区 | 日本三级不卡视频 | 亚洲欧美在线视频免费 | 欧美日韩中文字幕在线视频 | 粉嫩av一区二区三区四区五区 | 在线免费黄色av | 欧美日韩伦理一区 | 亚洲综合激情小说 | 日本中文字幕系列 | 免费成人黄色av | 国产一级免费在线 | 日韩在线高清 | 伊人狠狠干| 久久99久久99精品 | 久久久国产精品免费 | 美女在线黄 | 日韩理论电影在线观看 | 日本精品中文字幕 | 精品一区在线看 | 美女久久视频 | 亚洲精品午夜一区人人爽 | a视频在线观看 | 亚洲精品在线免费看 | 永久中文字幕 | 狠狠狠色狠狠色综合 | 夜夜澡人模人人添人人看 | 亚洲精品裸体 | 久久国产电影 | 一性一交视频 |