日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Seata如何實(shí)現(xiàn)兩階段提交(2PC)分布式事務(wù)

來源: 責(zé)編: 時(shí)間:2024-01-26 17:08:09 340觀看
導(dǎo)讀介紹2PC,全稱為兩階段提交(Two-Phase Commit),是一種在分布式系統(tǒng)中用來保證事務(wù)原子性和一致性的協(xié)議。它主要用于協(xié)調(diào)分布式數(shù)據(jù)庫或分布式事務(wù)環(huán)境中的多個(gè)參與者,確保所有參與者要么一起成功提交事務(wù),要么一起回滾事務(wù),

介紹

2PC,全稱為兩階段提交(Two-Phase Commit),是一種在分布式系統(tǒng)中用來保證事務(wù)原子性和一致性的協(xié)議。它主要用于協(xié)調(diào)分布式數(shù)據(jù)庫或分布式事務(wù)環(huán)境中的多個(gè)參與者,確保所有參與者要么一起成功提交事務(wù),要么一起回滾事務(wù),以保持?jǐn)?shù)據(jù)的一致性。f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

在2PC協(xié)議中有兩個(gè)主要階段:f9428資訊網(wǎng)——每日最新資訊28at.com

  1. 準(zhǔn)備階段(Prepare Phase):

事務(wù)協(xié)調(diào)器接收到發(fā)起事務(wù)的客戶端請求后,向所有參與該事務(wù)的資源管理器(例如數(shù)據(jù)庫、服務(wù)節(jié)點(diǎn)等)發(fā)送“準(zhǔn)備提交”請求。f9428資訊網(wǎng)——每日最新資訊28at.com

每個(gè)資源管理器執(zhí)行事務(wù)操作,并將事務(wù)相關(guān)的更改鎖定但不提交,然后回復(fù)事務(wù)協(xié)調(diào)器它們是否準(zhǔn)備好提交事務(wù)(根據(jù)各自是否能夠成功完成事務(wù)而定)。f9428資訊網(wǎng)——每日最新資訊28at.com

  1. 提交階段(Commit Phase):
  • 如果事務(wù)協(xié)調(diào)器收到了所有資源管理器的肯定答復(fù),即所有參與者都準(zhǔn)備好提交事務(wù),則向所有參與者發(fā)出“正式提交”指令。f9428資訊網(wǎng)——每日最新資訊28at.com

  • 若協(xié)調(diào)器收到任何一個(gè)參與者的否定響應(yīng),或者在等待超時(shí)后仍有參與者未響應(yīng),則向所有參與者發(fā)出“回滾事務(wù)”的指令。f9428資訊網(wǎng)——每日最新資訊28at.com

通過這種方式,2PC確保了所有節(jié)點(diǎn)要么全部完成事務(wù),要么全部撤銷事務(wù),從而維護(hù)了分布式環(huán)境下的事務(wù)原子性。然而,2PC也存在一些缺點(diǎn),比如單點(diǎn)故障問題(即事務(wù)協(xié)調(diào)器宕機(jī)可能導(dǎo)致事務(wù)長期阻塞)、網(wǎng)絡(luò)分區(qū)情況下的不確定性以及性能上的潛在瓶頸。f9428資訊網(wǎng)——每日最新資訊28at.com

Seata把一個(gè)分布式事務(wù)理解成一個(gè)包含了若干分支事務(wù)的全局事務(wù)。全局事務(wù)的職責(zé)是協(xié)調(diào)其下管轄的分支事務(wù) 達(dá)成一致,要么一起成功提交,要么一起失敗回滾。此外,通常分支事務(wù)本身就是一個(gè)關(guān)系數(shù)據(jù)庫的本地事務(wù),下圖是全局事務(wù)與分支事務(wù)的關(guān)系圖:f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

與 傳統(tǒng)2PC 的模型類似,Seata定義了3個(gè)組件來協(xié)議分布式事務(wù)的處理過程f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

  • Transaction Coordinator (TC):事務(wù)協(xié)調(diào)器,它是獨(dú)立的中間件,需要獨(dú)立部署運(yùn)行,它維護(hù)全局事務(wù)的運(yùn)行狀態(tài),接收TM指令發(fā)起全局事務(wù)的提交與回滾,負(fù)責(zé)與RM通信協(xié)調(diào)各各分支事務(wù)的提交或回滾。
  • Transaction Manager (TM):事務(wù)管理器,TM需要嵌入應(yīng)用程序中工作,它負(fù)責(zé)開啟一個(gè)全局事務(wù),并最終向TC發(fā)起全局提交或全局回滾的指令。
  • Resource Manager (RM):控制分支事務(wù),負(fù)責(zé)分支注冊、狀態(tài)匯報(bào),并接收事務(wù)協(xié)調(diào)器TC的指令,驅(qū)動(dòng)分支(本地)事務(wù)的提交和回滾。

具體實(shí)現(xiàn)

案例分析:兩個(gè)賬戶在不同的銀行(張三在bank1、李四在bank2),bank1和bank2是兩個(gè)微服務(wù)。交易過程是,張三給李四轉(zhuǎn)賬指定金額。f9428資訊網(wǎng)——每日最新資訊28at.com

上述交易步驟,要么一起成功,要么一起失敗,必須是一個(gè)整體性的事務(wù)。f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

為了簡化環(huán)境搭建,小編這里采用file啟動(dòng)seata,項(xiàng)目搭建也只是兩個(gè)普通的SpringBoot項(xiàng)目,未使用微服務(wù)。f9428資訊網(wǎng)——每日最新資訊28at.com

下載seata服務(wù)器

官方下載地址:https://github.com/seata/seata/releasesf9428資訊網(wǎng)——每日最新資訊28at.com

  1. registry.type=file:

registry.type=file 其類型設(shè)置為 file 時(shí),意味著 Seata 的服務(wù)注冊中心不依賴于外部的如 Nacos、Eureka、Zookeeper 等第三方注冊中心,而是使用本地文件的方式來存儲和管理服務(wù)節(jié)點(diǎn)信息。這種模式主要用于快速測試或簡單的單機(jī)部署場景,因?yàn)樵谶@種模式下無法自動(dòng)發(fā)現(xiàn)和管理集群環(huán)境中的其他 Seata Server 節(jié)點(diǎn),不具備高可用性。f9428資訊網(wǎng)——每日最新資訊28at.com

  1. config.type=file:
  • config.type=file 表示 Seata 使用本地文件作為配置源。這意味著 Seata 會(huì)從指定的本地文件中讀取全局事務(wù)協(xié)調(diào)器(TC)、事務(wù)管理器(TM)和資源管理器(RM)等組件所需的配置信息,而不是通過Nacos、Apollo或其他遠(yuǎn)程配置中心獲取配置。這種方式同樣適用于快速驗(yàn)證和簡單部署情況,實(shí)際生產(chǎn)環(huán)境中可能需要結(jié)合分布式配置中心來動(dòng)態(tài)更新和管理配置。f9428資訊網(wǎng)——每日最新資訊28at.com

  • seata安裝初始化參考《SpringCloud Alibaba微服務(wù)實(shí)戰(zhàn)之環(huán)境準(zhǔn)備》,注意本次啟動(dòng)是采用file方式啟動(dòng)
  • seata啟動(dòng):/bin/seata-server.bat -m file

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

  • bank-1 和 bank-2啟動(dòng):

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

bank-1 和 bank-2服務(wù)搭建

庫表建立

CREATE DATABASE `bank1` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';CREATE TABLE `account_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`account_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '戶主姓名',`account_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '銀行卡號',`account_password` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '帳戶密碼',`account_balance` double NULL DEFAULT NULL COMMENT '帳戶余額',PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;INSERT INTO `account_info` VALUES (2, '張三的賬戶', '1', '', 10000);
CREATE DATABASE `bank2` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';CREATE TABLE `account_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`account_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '戶主姓名',`account_no` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '銀行卡號',`account_password` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '帳戶密碼',`account_balance` double NULL DEFAULT NULL COMMENT '帳戶余額',PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;INSERT INTO `account_info` VALUES (3, '李四的賬戶', '2', NULL, 0);

備注:分別在bank1、bank2庫中創(chuàng)建undo_log表,此表為seata框架使用f9428資訊網(wǎng)——每日最新資訊28at.com

依賴引入

<dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-web</artifactId>        </dependency>        <dependency>            <groupId>io.seata</groupId>            <artifactId>seata-spring-boot-starter</artifactId>            <version>1.4.2</version>        </dependency>        <dependency>            <groupId>com.baomidou</groupId>            <artifactId>mybatis-plus-boot-starter</artifactId>            <version>3.4.1</version>        </dependency>        <!--mysql-->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.47</version>        </dependency>        <dependency>            <groupId>org.projectlombok</groupId>            <artifactId>lombok</artifactId>        </dependency>        <!--bank-2 不需要-->        <dependency>            <groupId>org.apache.httpcomponents</groupId>            <artifactId>httpclient</artifactId>        </dependency>    </dependencies>

定義配置

server:  port: 8081  #port: 8082spring:  application:    name: bank-1    #name: bank-2  datasource:    url: jdbc:mysql://localhost:3306/bank1?characterEncoding=utf8&useSSL=false    #url: jdbc:mysql://localhost:3306/bank2?characterEncoding=utf8&useSSL=false    driver-class-name: com.mysql.jdbc.Driver    username: root    password: rootseata:  tx-service-group: order_tx_group #自定義事務(wù)組名稱需要與seata-server中的對應(yīng)  service:    vgroup-mapping:      order_tx_group: default # TC 集群(必須與seata-server保持一致)

定義mapper

# bank-1@Update("update account_info set account_balance = account_balance + #{amount} where account_no = #{accountNo}")int updateAccountBalance(@Param("accountNo") String accountNo, @Param("amount") Double amount);# bank-2@Update("UPDATE account_info SET account_balance = account_balance + #{amount} WHERE account_no = #{accountNo}")int updateAccountBalance(@Param("accountNo") String accountNo, @Param("amount") Double amount);

服務(wù)調(diào)用

bank-1:f9428資訊網(wǎng)——每日最新資訊28at.com

@GlobalTransactional    @Override    public void updateAccountBalance(String accountNo, Double amount) {        log.info("******** Bank1 Service Begin ... xid: {}" , RootContext.getXID());        //張三扣減金額        baseMapper.updateAccountBalance(accountNo,amount * -1);        //向李四轉(zhuǎn)賬        CloseableHttpClient httpclient = HttpClients.createDefault();        HttpGet httpget = new HttpGet("http://localhost:8082/bank2/transfer?amount="+amount);        httpget.addHeader(RootContext.KEY_XID,RootContext.getXID());        try{            CloseableHttpResponse response = httpclient.execute(httpget);            HttpEntity entity = response.getEntity();            String result = EntityUtils.toString(entity);            log.info("bank2 服務(wù)返回結(jié)果:"+result);        }catch (Exception e){            throw new RuntimeException("bank2 服務(wù)異常");        }        //人為制造錯(cuò)誤        if(amount > 100){            throw new RuntimeException("bank1 make exception amount > 100");        }    }

當(dāng)業(yè)務(wù)方法開啟全局異常處理器后,TM注冊到TC獲取到一個(gè)XID,此時(shí)在業(yè)務(wù)中,服務(wù)遠(yuǎn)程訪問時(shí),此XID會(huì)被下面分支業(yè)務(wù)方法RM接收到,當(dāng)各個(gè)方法處理完成后RM會(huì)向TC直接交互把結(jié)果通過XID通知給TC,最后業(yè)務(wù)方法結(jié)束后,TM會(huì)通知TC業(yè)務(wù)已經(jīng)完成,TC會(huì)根據(jù)RM通知的結(jié)果來通知各個(gè)RM提交或者回滾。但是在分布式事務(wù)中,入口TM傳出時(shí)不會(huì)將XID放入請求頭中向其他服務(wù)傳遞,這樣就導(dǎo)致全局異常捕獲失效,因此需要手動(dòng)將XID設(shè)置到請求頭中,攜帶給各分支業(yè)務(wù)來避免事務(wù)失效問題。f9428資訊網(wǎng)——每日最新資訊28at.com

bank-2:f9428資訊網(wǎng)——每日最新資訊28at.com

@Transactional    @Override    public void updateAccountBalance(String accountNo, Double amount) {        log.info("******** Bank2 Service Begin ... xid: {}" , RootContext.getXID());        //李四增加金額        baseMapper.updateAccountBalance(accountNo,amount);        //制造異常        if(amount < 100){            throw new RuntimeException("bank1 make exception amount < 100");        }    }

服務(wù)配置seata

file.conf:f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

registry.conf:f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

執(zhí)行流程

正常流程:f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

回滾流程:f9428資訊網(wǎng)——每日最新資訊28at.com

圖片圖片f9428資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-69008-0.htmlSeata如何實(shí)現(xiàn)兩階段提交(2PC)分布式事務(wù)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: React 19 即將推出的四個(gè)全新 Hooks,很實(shí)用!

下一篇: 聊聊什么是JSX以及在React中的使用

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 鴻蒙OS 4.0公測機(jī)型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統(tǒng)將于今天下午正式登場,官方在發(fā)布會(huì)之前也已經(jīng)正式給出了可升級的機(jī)型產(chǎn)品,這意味著這些機(jī)型會(huì)率先支持升級享用。這次的HarmonyOS 4.0支持
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價(jià)

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會(huì)補(bǔ)貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機(jī)在停產(chǎn)之后
  • vivo TWS Air開箱體驗(yàn):真輕 臻好聽

    在vivo S15系列新機(jī)的發(fā)布會(huì)上,vivo的最新款真無線藍(lán)牙耳機(jī)vivo TWS Air也一同發(fā)布,本次就這款耳機(jī)新品給大家?guī)硪粋€(gè)簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產(chǎn)
  • 得物效率前端微應(yīng)用推進(jìn)過程與思考

    一、背景效率工程隨著業(yè)務(wù)的發(fā)展,組織規(guī)模的擴(kuò)大,越來越多的企業(yè)開始意識到協(xié)作效率對于企業(yè)團(tuán)隊(duì)的重要性,甚至是決定其在某個(gè)行業(yè)競爭中突圍的關(guān)鍵,是企業(yè)長久生存的根本。得物
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業(yè) 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機(jī)生活界面。壹覽商業(yè)發(fā)現(xiàn),該界面目前主要
  • 認(rèn)真聊聊東方甄選:如何告別低垂的果實(shí)

    來源:山核桃作者:財(cái)經(jīng)無忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關(guān)心的&ldquo;網(wǎng)紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內(nèi)直播,
  • 支持aptX Lossless無損傳輸 iQOO TWS 1賽道版發(fā)布限時(shí)優(yōu)惠價(jià)369元

    2023年7月4日,“無損音質(zhì),聲動(dòng)人心”iQOO TWS 1正式發(fā)布,支持aptX Lossless無損傳輸,限時(shí)優(yōu)惠價(jià)369元。iQOO TWS 1耳機(jī)率先支持端到端aptX Lossless無
  • 世界人工智能大會(huì)國際日開幕式活動(dòng)在世博展覽館開啟

    30日上午,世界人工智能大會(huì)國際日開幕式活動(dòng)在世博展覽館開啟,聚集國際城市代表、重量級院士專家、國際創(chuàng)新企業(yè)代表,共同打造人工智能交流平臺。上海市副市
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報(bào) 記者 王春   □ 本報(bào)通訊員 胡佳麗  2020年初,還在上大學(xué)的小東加入了一個(gè)大學(xué)生兼職QQ群。群主&ldquo;七王&rdquo;在群里介紹一些刷單賺
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲精选在线| 在线不卡中文字幕| 国产精品va在线播放| 国产精品久久久久久久久久免费 | 国产一区二区三区四区| 国内精品久久久久久| 亚洲人妖在线| 亚洲一区二区三区久久| 欧美专区一区二区三区| 欧美高清视频免费观看| 国产精品久久久久久亚洲毛片| 国产真实精品久久二三区| 亚洲伦理中文字幕| 亚洲——在线| 欧美h视频在线| 国产日韩精品一区观看| 亚洲激情成人网| 午夜精品久久久| 欧美国产精品久久| 国产欧美日韩高清| 日韩视频在线观看一区二区| 欧美在线啊v| 欧美另类99xxxxx| 国产一区二区精品久久91| 日韩一级二级三级| 久久久91精品国产一区二区精品| 欧美日韩国产精品一区二区亚洲| 国产一区二区三区网站| 亚洲午夜久久久久久尤物 | 性色av一区二区三区| 欧美激情精品久久久久久蜜臀 | 欧美性大战久久久久久久蜜臀| 影音先锋亚洲电影| 亚洲免费在线视频| 欧美激情亚洲视频| 国产一区二区三区久久久| 中文网丁香综合网| 欧美成人性网| 黄色一区二区三区| 亚洲午夜伦理| 欧美日本国产一区| 在线观看欧美精品| 欧美一区二区精美| 欧美日韩情趣电影| 亚洲国产一区二区三区在线播 | 午夜国产精品影院在线观看| 欧美美女bbbb| 亚洲成人资源| 久久久久久999| 国产婷婷精品| 亚洲尤物在线视频观看| 欧美日韩高清在线| 亚洲欧洲在线视频| 老色批av在线精品| 国产一区二区中文| 欧美在线观看一区二区| 国产精品美女在线| 亚洲一级影院| 欧美日韩中文字幕| 亚洲精品在线观| 免费在线日韩av| 精品99一区二区三区| 欧美一区二区私人影院日本| 国产精品一区二区三区久久久| 国产精品99久久不卡二区| 欧美理论在线| 亚洲美女av网站| 欧美精品亚洲精品| 亚洲精品欧洲精品| 欧美黑人多人双交| 亚洲第一精品夜夜躁人人爽| 久久一综合视频| 久久精品二区三区| 国产九区一区在线| 午夜国产精品影院在线观看| 国产精品网站在线播放| 午夜亚洲一区| 国产欧美精品一区| 欧美在线国产| 国产一区二区三区久久 | 免费在线亚洲欧美| 亚洲高清在线观看| 你懂的网址国产 欧美| 亚洲激情网站| 欧美精品一区二区在线播放| 亚洲精品一区二区三| 欧美久久影院| 在线亚洲免费视频| 国产精品老牛| 欧美一二区视频| 国产亚洲一二三区| 久久视频在线看| 亚洲二区精品| 欧美激情一区二区三区成人| 一区二区三区四区在线| 国产精品久久99| 欧美一区永久视频免费观看| 国户精品久久久久久久久久久不卡| 久久久在线视频| 亚洲人成网站777色婷婷| 欧美日韩国产电影| 亚洲一区免费网站| 国产日韩在线看| 久久一区视频| 一卡二卡3卡四卡高清精品视频| 国产精品伦理| 久久久www| 亚洲人成艺术| 国产精品二区影院| 欧美一区免费| 亚洲国产高清在线观看视频| 欧美日韩国产成人| 午夜激情综合网| 伊人激情综合| 夜夜精品视频一区二区| 国产精品素人视频| 久久亚洲综合色| 亚洲美女av电影| 国产精品无码永久免费888| 久久久www成人免费毛片麻豆| 亚洲人在线视频| 国产精品综合不卡av| 毛片基地黄久久久久久天堂| 这里只有精品电影| 狠狠入ady亚洲精品经典电影| 欧美顶级艳妇交换群宴| 亚洲欧美日韩国产成人精品影院| 激情丁香综合| 欧美日韩在线免费观看| 久久久99国产精品免费| 一区二区久久久久| 韩国一区二区在线观看| 欧美日韩国产色站一区二区三区| 欧美一级大片在线免费观看| 亚洲欧洲偷拍精品| 国产欧美不卡| 欧美黄色一级视频| 欧美中文字幕不卡| 日韩视频久久| 国产一区在线播放| 欧美日韩免费看| 久久精品亚洲热| 艳女tv在线观看国产一区| 国产一区二区日韩精品| 欧美另类在线播放| 久久久91精品国产一区二区三区 | 麻豆精品传媒视频| 亚洲男人的天堂在线观看| 亚洲国产综合在线| 国产一区二区三区电影在线观看| 欧美裸体一区二区三区| 久久久亚洲综合| 亚洲欧美制服中文字幕| 日韩午夜三级在线| 一区在线观看视频| 国产精品久久久久久影视| 欧美成人免费全部| 久久精品国产一区二区三| 亚洲天堂成人| 亚洲日本久久| 黄色资源网久久资源365| 国产精品美女黄网| 欧美日韩国产首页| 麻豆精品在线视频| 欧美伊人久久久久久午夜久久久久| 夜夜精品视频一区二区| 亚洲电影免费观看高清完整版| 国产精品视频一区二区高潮| 欧美日本中文| 女同性一区二区三区人了人一 | 性欧美激情精品| 一区二区欧美日韩视频| 亚洲国产精品久久久| 国语自产精品视频在线看| 国产精品影音先锋| 国产精品进线69影院| 欧美美女日韩| 欧美国产日韩免费| 免费高清在线一区| 久久久久**毛片大全| 欧美在线观看一区二区| 亚洲欧美在线视频观看| 亚洲一区二区免费看| 亚洲视频在线观看网站| 99视频精品在线| 日韩一级欧洲| 艳女tv在线观看国产一区| 亚洲裸体视频| 亚洲裸体俱乐部裸体舞表演av| 亚洲国产精品成人一区二区| 在线精品在线| 玉米视频成人免费看| 国产亚洲欧洲一区高清在线观看| 国产精品一区二区视频| 国产精品美腿一区在线看| 国产精品视频xxxx| 国产精品初高中精品久久| 欧美系列一区| 国产精品成人观看视频国产奇米| 欧美日韩在线另类| 国产精品久久久一区二区三区| 欧美亚洲成人免费| 国产精品视频| 国产欧美一区二区精品性|