精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

百萬(wàn)級(jí)任務(wù)重試框架 Fast-Retry,太香了!

開(kāi)發(fā) 前端
用了這么多重試方案,F(xiàn)ast-Retry 給我的感覺(jué)就是:專業(yè)的事就該交給專業(yè)的工具。它解決了重試場(chǎng)景中的核心痛點(diǎn):高并發(fā)處理、靈活策略、可靠存儲(chǔ)、全面監(jiān)控。而且用起來(lái)特別簡(jiǎn)單,學(xué)習(xí)成本低,這對(duì)于咱們開(kāi)發(fā)者來(lái)說(shuō)太重要了。

兄弟們,今天咱們來(lái)聊個(gè)扎心的話題 —— 任務(wù)重試。你是不是也遇到過(guò)這種情況:調(diào)用第三方接口突然超時(shí),推送消息莫名其妙失敗,支付回調(diào)半天沒(méi)響應(yīng)... 這時(shí)候老板拍著桌子讓你保證數(shù)據(jù)一致性,產(chǎn)品經(jīng)理追著問(wèn)為什么訂單狀態(tài)不同步。

沒(méi)辦法,只能重試唄。但手動(dòng)重試像打地鼠,寫個(gè)簡(jiǎn)單的循環(huán)重試又 hold 不住高并發(fā),用 Spring 的 Retry 注解又顯得不夠靈活。尤其是面對(duì)幾十萬(wàn)、上百萬(wàn)的任務(wù)量時(shí),重試邏輯簡(jiǎn)直能把人逼瘋。

直到我遇到了 Fast-Retry,才算真正解脫。這框架是真的香,今天必須給你們好好嘮嘮。

一、為啥我們需要專門的重試框架?

先說(shuō)說(shuō)咱們平時(shí)寫重試邏輯會(huì)踩的坑,看看你中了幾個(gè):

  1. 重試策略太死板:大多數(shù)人就寫個(gè)固定間隔重試,要么重試太頻繁把對(duì)方服務(wù)器打崩,要么間隔太長(zhǎng)導(dǎo)致數(shù)據(jù)延遲
  2. 沒(méi)考慮并發(fā)問(wèn)題:上千個(gè)任務(wù)同時(shí)失敗,一股腦全重試,直接把自己服務(wù)搞 OOM
  3. 缺乏持久化:服務(wù)一重啟,沒(méi)重試完的任務(wù)全丟了,哭都來(lái)不及
  4. 監(jiān)控一片空白:不知道多少任務(wù)重試成功,多少?gòu)氐资?,出了?wèn)題兩眼一抹黑

舉個(gè)真實(shí)案例:去年雙十一,朋友公司的支付回調(diào)處理服務(wù)因?yàn)榫W(wǎng)絡(luò)波動(dòng),積累了 50 多萬(wàn)條待重試任務(wù)。他們自己寫的重試邏輯直接扛不住,重試線程池滿了不說(shuō),數(shù)據(jù)庫(kù)連接也被耗盡,最后整個(gè)支付鏈路全崩了,損失慘重。

這就是為什么我們需要一個(gè)專業(yè)的重試框架 —— 它不僅要能重試,還要重試得聰明、高效、可靠。

二、Fast-Retry 到底是個(gè)啥?

Fast-Retry 是一個(gè)專為高并發(fā)場(chǎng)景設(shè)計(jì)的任務(wù)重試框架,聽(tīng)名字就知道,主打一個(gè) "快" 字。但它的優(yōu)點(diǎn)可不止快:

  • 支持每秒處理 10 萬(wàn) + 重試任務(wù),輕松應(yīng)對(duì)百萬(wàn)級(jí)積壓
  • 內(nèi)置 8 種重試策略,從簡(jiǎn)單到復(fù)雜全覆蓋
  • 自帶持久化機(jī)制,服務(wù)重啟也不怕任務(wù)丟失
  • 分布式環(huán)境下也能玩得轉(zhuǎn),不會(huì)重復(fù)重試
  • 監(jiān)控指標(biāo)一應(yīng)俱全,失敗任務(wù)一目了然

最關(guān)鍵的是,這框架用起來(lái)賊簡(jiǎn)單,基本上是開(kāi)箱即用。你別以為功能強(qiáng)的框架就一定復(fù)雜,F(xiàn)ast-Retry 的設(shè)計(jì)理念就是 "復(fù)雜的事情框架做,簡(jiǎn)單的事情留給開(kāi)發(fā)者"。

三、核心設(shè)計(jì)思路:為啥它能這么快?

咱們得先明白一個(gè)道理:重試不是簡(jiǎn)單地把失敗的任務(wù)再跑一遍。當(dāng)任務(wù)量達(dá)到百萬(wàn)級(jí)時(shí),重試本身就成了一個(gè)需要精心設(shè)計(jì)的分布式系統(tǒng)問(wèn)題。

Fast-Retry 的核心設(shè)計(jì)思路可以總結(jié)為 "三板斧":

1. 分級(jí)存儲(chǔ):冷熱數(shù)據(jù)分離

就像咱們家里的冰箱,常用的東西放冷藏室,不常用的放冷凍室。Fast-Retry 把任務(wù)分成了三級(jí):

  • 熱任務(wù):剛失敗,需要馬上重試的任務(wù),存在內(nèi)存隊(duì)列里,速度最快
  • 溫任務(wù):重試過(guò)幾次還沒(méi)成功的,存到本地磁盤的 RockDB 里
  • 冷任務(wù):需要長(zhǎng)時(shí)間等待后再重試的(比如幾小時(shí)后),存到分布式存儲(chǔ)里

這樣一來(lái),既保證了高頻重試任務(wù)的處理速度,又不會(huì)讓內(nèi)存被大量長(zhǎng)期任務(wù)占滿。

2. 智能調(diào)度:不做無(wú)用功

很多人寫重試邏輯就像瞎貓碰死耗子,不管三七二十一先重試了再說(shuō)。Fast-Retry 搞了個(gè)智能調(diào)度器:

  • 能根據(jù)任務(wù)的失敗原因動(dòng)態(tài)調(diào)整重試策略(比如網(wǎng)絡(luò)超時(shí)可能需要等久一點(diǎn),而數(shù)據(jù)庫(kù)死鎖可能馬上重試就好)
  • 會(huì)自動(dòng)避開(kāi)系統(tǒng)高峰期,比如檢測(cè)到當(dāng)前 CPU 使用率超過(guò) 80%,就會(huì)暫時(shí)放緩重試
  • 支持給不同優(yōu)先級(jí)的任務(wù)排隊(duì),核心業(yè)務(wù)先重試

這就好比醫(yī)院的急診室,不是先來(lái)后到,而是根據(jù)病情緊急程度安排就診。

3. 異步化 + 批量處理:效率拉滿

Fast-Retry 內(nèi)部用了 - eventloop 模型,就像餐廳里的傳菜員,一個(gè)人能服務(wù)好幾桌客人。所有重試操作都是異步的,不會(huì)阻塞業(yè)務(wù)線程。

同時(shí)它還會(huì)把時(shí)間相近的重試任務(wù)批量處理,比如 100 個(gè)任務(wù)都設(shè)置了 10 分鐘后重試,框架會(huì)攢到一起處理,減少 IO 開(kāi)銷。這就像外賣小哥一次多帶幾單,效率自然高。

四、功能特性:這些亮點(diǎn)讓我直呼真香

光說(shuō)理念太空泛,咱們來(lái)看看 Fast-Retry 具體有哪些讓人眼前一亮的功能:

1. 靈活到變態(tài)的重試策略

內(nèi)置 8 種重試策略,覆蓋你能想到的所有場(chǎng)景:

  • 固定間隔重試:比如每隔 30 秒重試一次
  • 指數(shù)退避重試:每次間隔翻倍,1 秒、2 秒、4 秒... 適合網(wǎng)絡(luò)問(wèn)題
  • 隨機(jī)延遲重試:在指定范圍內(nèi)隨機(jī)間隔,避免驚群效應(yīng)
  • 斐波那契重試:間隔按照 1、1、2、3、5 的規(guī)律增長(zhǎng),更科學(xué)
  • 失敗次數(shù)遞增間隔:失敗次數(shù)越多,間隔越長(zhǎng)
  • cron 表達(dá)式重試:精確到分秒的定時(shí)重試,比如每天凌晨 3 點(diǎn)重試
  • 回調(diào)通知重試:直到收到特定回調(diào)才停止重試
  • 自定義腳本重試:用 Groovy 腳本寫重試條件,想多復(fù)雜就多復(fù)雜

最牛的是,這些策略還能組合使用。比如可以先指數(shù)退避重試 5 次,再轉(zhuǎn)成每天凌晨重試,簡(jiǎn)直不要太靈活。

2. 分布式環(huán)境下的一致性保障

在微服務(wù)架構(gòu)里,分布式重試是個(gè)大難題。你怕不怕這樣的情況:

  • 兩個(gè)服務(wù)節(jié)點(diǎn)同時(shí)重試同一個(gè)任務(wù),導(dǎo)致數(shù)據(jù)重復(fù)處理?
  • 任務(wù)存在本地,某個(gè)節(jié)點(diǎn)掛了,任務(wù)就永遠(yuǎn)丟了?

Fast-Retry 用了這幾招解決分布式問(wèn)題:

  • 基于 Redis 實(shí)現(xiàn)分布式鎖,確保一個(gè)任務(wù)同一時(shí)間只有一個(gè)節(jié)點(diǎn)在處理
  • 支持把任務(wù)存到 MongoDB/MySQL 等分布式存儲(chǔ),節(jié)點(diǎn)掛了其他節(jié)點(diǎn)能接著來(lái)
  • 內(nèi)置冪等性檢查,就算不小心重復(fù)重試了,也不會(huì)產(chǎn)生副作用

3. 全方位監(jiān)控:一切盡在掌握

用重試框架最怕的就是 "黑箱操作",不知道任務(wù)重試得怎么樣了。Fast-Retry 在監(jiān)控這塊做得是真到位:

  • 實(shí)時(shí)統(tǒng)計(jì):成功數(shù)、失敗數(shù)、重試中、平均重試次數(shù)等核心指標(biāo)
  • 可視化面板:用 Spring Boot Admin 就能看各種曲線圖
  • 告警機(jī)制:可以配置當(dāng)失敗率超過(guò)閾值時(shí)發(fā)郵件 / 釘釘
  • 任務(wù)追蹤:每個(gè)任務(wù)的每次重試記錄都能查到,包括失敗原因、耗時(shí)等

有了這些,老板再問(wèn)你 "那個(gè)任務(wù)到底怎么樣了",你就能胸有成竹地給他看數(shù)據(jù)了。

4. 無(wú)縫集成:不侵入業(yè)務(wù)代碼

這一點(diǎn)必須夸!Fast-Retry 采用了 AOP 思想,幾乎不用改業(yè)務(wù)代碼就能接入。

比如原來(lái)的支付回調(diào)方法:

public void handlePaymentCallback(String orderId) {
    // 處理邏輯
}

想加重試?只需要加個(gè)注解:

@Retryable(
    strategy = "exponential",  // 指數(shù)退避策略
    maxAttempts = 10,           // 最多重試10次
    retryFor = {NetworkException.class, TimeoutException.class}  // 哪些異常需要重試
)
public void handlePaymentCallback(String orderId) {
    // 處理邏輯不變
}

這就完了?對(duì),就這么簡(jiǎn)單!完全符合 "開(kāi)閉原則",業(yè)務(wù)代碼干干凈凈。

五、實(shí)戰(zhàn)演練:手把手教你用起來(lái)

光說(shuō)不練假把式,咱們來(lái)實(shí)際操作一下,看看 Fast-Retry 到底怎么用。

第一步:引入依賴

Maven 項(xiàng)目加這個(gè):

<dependency>
    <groupId>com.fastretry</groupId>
    <artifactId>fast-retry-spring-boot-starter</artifactId>
    <version>1.2.0</version>
</dependency>

Spring Boot 項(xiàng)目會(huì)自動(dòng)裝配,零配置啟動(dòng)。

第二步:配置重試策略

在 application.yml 里配置全局默認(rèn)策略:

fast-retry:
  default-strategy: exponential  # 默認(rèn)指數(shù)退避
  max-attempts: 5               # 默認(rèn)最多5次
  initial-interval: 1000        # 初始間隔1秒
  max-interval: 60000           # 最大間隔60秒
  storage:
    type: redis                 # 用Redis存儲(chǔ)任務(wù)
    redis:
      host: localhost
      port: 6379
  monitor:
    enabled: true               # 開(kāi)啟監(jiān)控

也可以在注解里單獨(dú)配置,覆蓋全局設(shè)置,非常靈活。

第三步:給需要重試的方法加注解

剛才已經(jīng)舉過(guò)例子了,再補(bǔ)充一個(gè)帶回調(diào)的:

@Retryable(
    strategy = "fixed",
    interval = 5000,
    maxAttempts = 3
)
public void syncOrderToWarehouse(String orderId) {
    // 調(diào)用倉(cāng)庫(kù)系統(tǒng)API
}
// 重試全部失敗后會(huì)調(diào)用這個(gè)方法
@Recover
public void recoverSyncOrder(String orderId, Exception e) {
    log.error("訂單{}同步倉(cāng)庫(kù)最終失敗", orderId, e);
    // 記錄到人工處理隊(duì)列
    manualProcessQueue.add(orderId);
}

@Recover 注解指定了最終失敗后的處理方法,一般用來(lái)記錄日志或者轉(zhuǎn)人工處理。

第四步:手動(dòng)提交重試任務(wù)

有時(shí)候我們需要在代碼里手動(dòng)觸發(fā)重試,比如捕獲異常后:

@Autowired
private RetryTemplate retryTemplate;
public void processMessage(Message msg) {
    try {
        // 處理消息
        doProcess(msg);
    } catch (Exception e) {
        // 手動(dòng)提交重試
        retryTemplate.submit(
            RetryTask.builder()
                .taskId(msg.getId())  // 唯一標(biāo)識(shí)
                .targetMethod("processMessage")  // 要重試的方法
                .params(new Object[]{msg})  // 參數(shù)
                .strategy("fibonacci")  // 斐波那契策略
                .maxAttempts(5)
                .build()
        );
    }
}

這樣就把失敗的消息提交到重試隊(duì)列了。

第五步:查看監(jiān)控面板

啟動(dòng)項(xiàng)目后,訪問(wèn)http://localhost:8080/fast-retry/dashboard,就能看到酷炫的監(jiān)控面板:

  • 左側(cè)是實(shí)時(shí)統(tǒng)計(jì):總?cè)蝿?wù)數(shù)、成功數(shù)、失敗數(shù)
  • 中間是重試趨勢(shì)圖:每小時(shí)重試次數(shù)變化
  • 右側(cè)是異常分布:各種失敗原因的占比
  • 下面是待重試任務(wù)列表:可以手動(dòng)觸發(fā)或取消

有了這個(gè)面板,重試情況一目了然,心里踏實(shí)多了。

六、壓測(cè)數(shù)據(jù):是騾子是馬拉出來(lái)遛遛

光說(shuō)好用不行,得用數(shù)據(jù)說(shuō)話。我們?cè)跍y(cè)試環(huán)境做了個(gè)壓測(cè):

  • 服務(wù)器配置:4 核 8G 的云服務(wù)器
  • 測(cè)試場(chǎng)景:模擬 100 萬(wàn)條需要重試的任務(wù),每條任務(wù)重試 3 次
  • 對(duì)比框架:Spring Retry、Guava Retry、自己寫的重試邏輯

結(jié)果如下:

框架

總處理時(shí)間

峰值內(nèi)存

成功率

Fast-Retry

8 分 23 秒

1.2G

99.8%

Spring Retry

35 分 11 秒

3.8G

97.2%

Guava Retry

42 分 05 秒

4.2G

96.5%

自研邏輯

超時(shí)未完成

內(nèi)存溢出

-

差距是不是很明顯?Fast-Retry 處理百萬(wàn)級(jí)任務(wù)居然只用了 8 分鐘,而且內(nèi)存占用很低。這得益于它的分級(jí)存儲(chǔ)和異步處理機(jī)制,把系統(tǒng)資源用到了刀刃上。

更關(guān)鍵的是成功率,F(xiàn)ast-Retry 因?yàn)橛兄悄苤卦嚥呗?,比其他框架高出不少。別小看這 2-3 個(gè)百分點(diǎn),在百萬(wàn)級(jí)任務(wù)里就是幾千條數(shù)據(jù),能幫公司減少不少損失。

七、高級(jí)玩法:這些技巧讓你用得更溜

如果你已經(jīng)上手了 Fast-Retry,想玩得更高級(jí),可以試試這些技巧:

1. 自定義重試策略

如果內(nèi)置的 8 種策略還滿足不了你,可以自己寫:

public class MyRetryStrategy implements RetryStrategy {
    @Override
    public long calculateNextDelay(int attemptNumber, Throwable lastException) {
        // 自定義邏輯:根據(jù)異常類型動(dòng)態(tài)調(diào)整間隔
        if (lastException instanceof DatabaseException) {
            return 1000 * attemptNumber;
        } else if (lastException instanceof NetworkException) {
            return 5000 * (attemptNumber * 2);
        }
        return 3000;
    }
}
// 注冊(cè)到Spring容器
@Bean
public MyRetryStrategy myRetryStrategy() {
    return new MyRetryStrategy();
}

然后在注解里直接用:

@Retryable(strategy = "myRetryStrategy")

2. 任務(wù)優(yōu)先級(jí)

給重要的任務(wù)設(shè)置高優(yōu)先級(jí),讓它們先被處理:

@Retryable(
    strategy = "fixed",
    interval = 3000,
    priority = 1  // 數(shù)字越小優(yōu)先級(jí)越高,默認(rèn)是5
)
public void processVipOrder(String orderId) {
    // VIP訂單處理,優(yōu)先級(jí)高
}

3. 動(dòng)態(tài)調(diào)整重試參數(shù)

在運(yùn)行中可以動(dòng)態(tài)修改重試參數(shù),比如發(fā)現(xiàn)某個(gè)接口特別不穩(wěn)定:

@Autowired
private RetryAdminService retryAdminService;

public void adjustStrategy() {
    // 動(dòng)態(tài)修改策略參數(shù)
    retryAdminService.updateStrategyConfig(
        "exponential", 
        Collections.singletonMap("maxInterval", 120000) // 最大間隔改為120秒
    );
}

不用重啟服務(wù),實(shí)時(shí)生效,生產(chǎn)環(huán)境必備技能。

4. 與消息隊(duì)列配合

把 Fast-Retry 和 Kafka/RabbitMQ 結(jié)合起來(lái),威力更大:

  • 消費(fèi)消息失敗時(shí),提交到 Fast-Retry 而不是直接 nack
  • 重試成功后,再 ack 消息
  • 徹底失敗的任務(wù),發(fā)送到死信隊(duì)列

這樣既利用了消息隊(duì)列的可靠性,又發(fā)揮了 Fast-Retry 的智能重試能力。

八、踩坑指南:這些坑我已經(jīng)替你踩過(guò)了

用了大半年 Fast-Retry,踩過(guò)不少坑,分享給你們避避坑:

  1. 任務(wù) ID 必須唯一:如果兩個(gè)任務(wù)用了同一個(gè) taskId,會(huì)被認(rèn)為是同一個(gè)任務(wù),導(dǎo)致重試混亂。最好用 UUID 或者業(yè)務(wù)唯一標(biāo)識(shí)(如訂單號(hào))。
  2. 別濫用重試:不是所有失敗都需要重試,比如參數(shù)錯(cuò)誤這種問(wèn)題,重試一萬(wàn)次也沒(méi)用,只會(huì)浪費(fèi)資源。
  3. 注意冪等性:重試的方法一定要保證冪等,不然可能出現(xiàn)重復(fù)扣款、重復(fù)下單等嚴(yán)重問(wèn)題。
  4. 初始間隔別設(shè)太近:有些接口對(duì) QPS 有限制,重試間隔太短容易觸發(fā)限流,反而適得其反。
  5. 持久化配置要做好:生產(chǎn)環(huán)境一定要用分布式存儲(chǔ)(Redis/MongoDB),別用內(nèi)存存儲(chǔ),不然服務(wù)重啟任務(wù)就丟了。
  6. 監(jiān)控告警不能少:一定要配置告警,不然大量任務(wù)失敗了你都不知道,等用戶投訴就晚了。

總結(jié):為什么說(shuō)它真香?

用了這么多重試方案,F(xiàn)ast-Retry 給我的感覺(jué)就是:專業(yè)的事就該交給專業(yè)的工具。

它解決了重試場(chǎng)景中的核心痛點(diǎn):高并發(fā)處理、靈活策略、可靠存儲(chǔ)、全面監(jiān)控。而且用起來(lái)特別簡(jiǎn)單,學(xué)習(xí)成本低,這對(duì)于咱們開(kāi)發(fā)者來(lái)說(shuō)太重要了。

自從用上它,我再也不用為任務(wù)重試頭疼了,晚上睡得都香了。老板再也不用擔(dān)心數(shù)據(jù)不一致,產(chǎn)品經(jīng)理也不天天追著問(wèn)進(jìn)度了。

責(zé)任編輯:武曉燕 來(lái)源: 石杉的架構(gòu)筆記
相關(guān)推薦

2024-01-05 13:26:00

KafkaTopicSpring

2024-01-26 07:48:10

SpringKafka提升

2024-08-05 11:34:49

2025-08-15 12:19:08

2021-04-26 07:31:22

SpringMVCweb框架

2020-10-10 11:07:38

Java開(kāi)發(fā)代碼

2025-08-29 00:00:00

2023-11-07 10:36:37

2021-07-28 14:20:13

正則PythonFlashText

2024-04-02 09:32:08

Spring@Retry開(kāi)發(fā)者

2020-12-21 07:36:15

緩存數(shù)據(jù)庫(kù)緩存層

2023-11-09 08:01:41

Spring緩存注解

2023-11-13 22:47:58

PythonPathlib

2025-01-09 11:24:59

線程池美團(tuán)動(dòng)態(tài)配置中心

2025-09-04 09:13:22

2025-02-28 09:47:36

2020-03-12 18:34:30

Windows 10Windows任務(wù)管理器

2024-08-09 08:55:43

if執(zhí)行器版本

2021-08-03 05:22:49

微信借條騰訊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲综合网中心| 日韩av电影手机在线| 又黄又爽又色的视频| 亚洲羞羞网站| 久久婷婷久久一区二区三区| 国产精品久久久久国产a级| 久艹在线观看视频| 精品女人视频| 欧美日韩国产乱码电影| 国产自产在线视频| 快射av在线播放一区| 播五月开心婷婷综合| 国产精品丝袜白浆摸在线 | 国产一级不卡毛片| 中文国产字幕在线观看| 久久久久国产精品麻豆| 97超级碰碰| 国内av在线播放| 99国产精品久久久久久久| 精品国产一区二区三区久久狼黑人| 女同性αv亚洲女同志| 欧美日韩五区| 婷婷久久综合九色综合绿巨人 | 国产视频999| 影音先锋在线国产| 欧美三区不卡| 日韩一区二区三区xxxx| 日韩在线免费观看av| 亚洲精品a区| 51午夜精品国产| 久久精品香蕉视频| 国产亚洲成av人片在线观看 | 亚洲精品1区2区3区| 国产精品国产三级国产在线观看| 亚洲精品网站在线播放gif| 在线成人免费av| 久久人体av| 欧美性猛交xxxx免费看久久久| 国产一区二区三区播放| 欧美一级二级三级区| 欧美激情一二三区| 欧美婷婷久久| 你懂的在线观看视频网站| 成人动漫一区二区| 国产精品免费视频一区二区| 91尤物国产福利在线观看| 日本欧美一区二区在线观看| 欧美亚洲成人免费| 五月婷婷开心网| 亚洲国产激情| 久久久久久久久久久91| 18岁成人毛片| 亚洲经典一区| 久久亚洲私人国产精品va| 一级免费黄色录像| 日韩理论电影大全| 久久综合色天天久久综合图片| 亚洲自拍av在线| 99精品久久久久久中文字幕 | 国产精品日韩久久久久| 亚洲无码精品一区二区三区| 蘑菇福利视频一区播放| 日本sm极度另类视频| 无码人妻丰满熟妇精品区| 久久不射中文字幕| 国产精品大片wwwwww| 欧美性受xxx黑人xyx性爽| 日本麻豆一区二区三区视频| 国产精品美女免费视频| 97在线播放免费观看| 久88久久88久久久| 99国产在线视频| 亚洲精品97久久中文字幕无码| 国产成人在线看| 国产日韩亚洲精品| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产日韩精品一区二区三区| 一区不卡字幕| 亚洲婷婷噜噜| 偷窥少妇高潮呻吟av久久免费| 欧美国产激情视频| 欧美激情啪啪| 精品国产亚洲在线| 李宗瑞91在线正在播放| 欧美呦呦网站| 色综合老司机第九色激情| 黄网站免费在线| 久久午夜影视| 成人激情综合网| 四虎免费在线观看| 中文字幕精品在线不卡| 中文字幕の友人北条麻妃| www.综合| 欧美美女网站色| 男人网站在线观看| 精品视频黄色| 欧美精品久久久久a| 无码一区二区三区| 国产成人综合网| 午夜精品一区二区三区四区| 在线看福利影| 欧美专区日韩专区| 日本女人性视频| 国产尤物久久久| 欧美高跟鞋交xxxxhd| 波多野结衣啪啪| 国产一区二区三区在线观看免费视频 | 99久在线精品99re8热| 麻豆成人91精品二区三区| 91嫩草免费看| www.视频在线.com| 亚洲国产欧美一区二区三区丁香婷| 99视频免费播放| 91精品啪在线观看国产爱臀 | 中中文字幕av在线| 91福利在线导航| 黄色在线免费播放| 亚洲精品网址| 国产精品视频网| 免费在线视频一级不卡| 一个色综合网站| 亚洲一级免费在线观看| 中文字幕亚洲影视| 国产做受69高潮| 国产av一区二区三区精品| 国产欧美精品一区二区色综合| 香港三级日本三级a视频| 日韩成人一区| 伊人久久久久久久久久久久久| 精品无码人妻一区二区三区品| 韩日精品视频一区| 午夜精品一区二区三区四区| 中文字幕在线中文字幕在线中三区| 日韩精品一区二区在线| 熟女少妇a性色生活片毛片| 久久一区视频| 久久艳妇乳肉豪妇荡乳av| 丰乳肥臀在线| 日韩精品在线一区二区| 麻豆国产尤物av尤物在线观看| 蜜桃久久av一区| 日日骚一区二区网站| 欧美黑人粗大| 亚洲性无码av在线| 日本一区二区免费电影| 97久久超碰精品国产| 日韩人妻无码精品久久久不卡| 免费一区二区三区在线视频| 久久色在线播放| 国产精品久久久久久无人区| 国产精品护士白丝一区av| 日本超碰在线观看| 图片区亚洲欧美小说区| 91久久夜色精品国产网站| 麻豆传媒在线免费看| 欧美二区三区91| 懂色av懂色av粉嫩av| 国产一区日韩二区欧美三区| 九九久久九九久久| 国产美女撒尿一区二区| 91精品国产777在线观看| 熟妇人妻一区二区三区四区| 欧美日韩国产综合视频在线观看中文| 一级欧美一级日韩片| 国产欧美大片| 日本一区二区视频| 久久人体av| 欧美精品做受xxx性少妇| 懂色av一区二区三区四区| 亚洲午夜av在线| 特级西西人体wwwww| 久久一区中文字幕| 成年人黄色在线观看| 一区二区三区视频播放| 91极品女神在线| 国产经典自拍视频在线观看| 欧美日韩高清一区二区| 激情四射综合网| www.66久久| 亚洲天堂网一区| 一区二区三区中文| 国产精品成人一区二区三区| 蜜桃视频动漫在线播放| 中文字幕成人精品久久不卡| 国产美女裸体无遮挡免费视频 | 亚洲自拍一区在线观看| 国产精品美女视频| 日本wwwwwww| 丝袜亚洲另类欧美综合| 欧美 日韩 国产 在线观看| 91蜜桃臀久久一区二区| 全球成人中文在线| 91香蕉在线观看| 精品一区二区三区三区| 97人妻精品一区二区三区软件| 亚洲国产色一区| 日本污视频网站| 成人免费高清在线观看| 一区二区xxx| 亚洲午夜91| 五月天国产一区| 成人午夜三级| 国产欧美在线观看| 久久男人天堂| 理论片在线不卡免费观看| 日韩a在线看| 日韩美女视频在线| 亚洲中文一区二区三区| 午夜视频一区二区三区| 97精品在线播放| 久久久精品天堂| 亚洲欧美日韩偷拍| 国产尤物一区二区| 特级丰满少妇一级| 性欧美暴力猛交另类hd| 日韩精品免费一区| 日韩精品电影| 看欧美日韩国产| 在线观看视频一区二区三区| 国产精品影院在线观看| 欧美大片高清| 91精品国产91久久久久久吃药| 成人在线直播| 在线亚洲欧美视频| 黄色在线免费观看大全| 亚洲国产一区二区三区四区| 国产婷婷在线视频| 欧美美女视频在线观看| 欧美亚洲另类小说| 色综合久久综合中文综合网| 日韩av一二三区| 亚洲国产精品一区二区久久恐怖片 | 国产女优在线播放| 欧美色欧美亚洲高清在线视频| 免费无遮挡无码永久在线观看视频| 中日韩av电影| 黄色片网站免费| 99精品国产福利在线观看免费| 正在播放国产精品| 麻豆精品国产传媒av| 色综合久久中文| 丁香五月网久久综合| 国产视频一区二| 国产综合香蕉五月婷在线| 国产精品4hu.www| 国产精品久久久久不卡| 国产精品videossex撒尿| 国产91精品最新在线播放| 中文字幕在线高清| 热re91久久精品国99热蜜臀| 筱崎爱全乳无删减在线观看| 97国产精品免费视频| 九色porny自拍视频在线观看| 久久久久久久成人| 大桥未久在线视频| 欧美一级免费看| 在线能看的av网址| 国产成人精品在线观看| 国产第一精品| 成人免费视频97| 视频一区视频二区欧美| 成人女人免费毛片| 青草久久视频| 色一情一区二区三区四区| 99久久亚洲精品蜜臀| 日韩视频一二三| 亚洲激情另类| 精品国产成人av在线免| 美女国产一区二区| 超碰人人cao| www.色精品| 午夜理伦三级做爰电影| 国产精品毛片无遮挡高清| 精品无码久久久久成人漫画| 亚洲综合久久久久| 亚洲GV成人无码久久精品| 在线亚洲一区二区| 国产视频第一页| 成人午夜av电影| 国产精品永久免费观看| 青青热久免费精品视频在线18| 国产美女久久精品香蕉69| 日韩欧美高清一区二区三区| 精品蜜桃传媒| 日韩精品影视| 免费看欧美一级片| 久久久国产精品一区二区中文| 91福利国产成人精品播放| 国产精品自拍在线| 日本一区二区三区网站| 国产精品久久免费看| 国产午夜精品无码| 欧美视频日韩视频在线观看| 国产精品毛片一区视频播 | 国产成人影院| 国产经典久久久| 免费看黄裸体一级大秀欧美| 成人综合久久网| 91在线观看下载| 国产wwwwxxxx| 红桃av永久久久| 国产三级漂亮女教师| 亚洲欧美激情一区| 伊人影院蕉久影院在线播放| 538国产精品一区二区免费视频 | 欧美日韩亚洲综合一区二区三区| 精品国产av一区二区三区| 亚洲精品在线观看www| 91短视频版在线观看www免费| 高清在线视频日韩欧美| 亚洲国产91视频| 欧洲久久久久久| 今天的高清视频免费播放成人| 日本超碰在线观看| 久久久久久电影| 日本亚洲色大成网站www久久| 欧美精品日韩精品| av国产在线观看| 2019中文字幕在线观看| 视频一区国产| 国产日产欧美一区二区| 美女视频网站黄色亚洲| 色婷婷av777| 欧美日韩午夜剧场| 人妻精品一区二区三区| 欧美成人在线免费| 国产精品一区二区精品| 亚洲国产精品一区二区第四页av| 一本久久综合| 国产精品久久久久久久无码| 亚洲综合精品久久| www.com欧美| 久久亚洲欧美日韩精品专区| 国产原创一区| 亚洲v欧美v另类v综合v日韩v| 老司机午夜精品视频| 亚洲AV无码国产精品| 天天射综合影视| 五月婷婷开心中文字幕| 91av在线免费观看视频| 欧美三级电影在线| av之家在线观看| 成人听书哪个软件好| 国产在线视频二区| 日韩欧美精品在线视频| 羞羞电影在线观看www| 97中文在线| 亚洲私人影院| 免费不卡的av| 欧美日韩国产一区二区三区| 日本高清视频免费看| 91精品成人久久| 伊人久久大香线蕉综合网蜜芽| 久久精品99国产| 国产欧美一区二区三区鸳鸯浴| 久久午夜鲁丝片| 色悠悠国产精品| 国产人与zoxxxx另类91| 蜜臀av.com| 成人国产精品免费| 国产 日韩 欧美 在线| 亚洲欧美日本另类| 草莓视频成人appios| 杨幂一区欧美专区| 国产99一区视频免费| 日韩av在线播| 在线观看视频99| 动漫一区二区三区| www..com日韩| 久久久久9999亚洲精品| 最新在线中文字幕| 欧美超级乱淫片喷水| 国产厕拍一区| 成人中文字幕av| 亚洲蜜臀av乱码久久精品蜜桃| 丰满人妻一区二区三区无码av| 91精品国产乱码久久久久久蜜臀| 自拍偷拍欧美一区| 肉色超薄丝袜脚交| 性欧美疯狂xxxxbbbb| 国产网站在线播放| 96pao国产成视频永久免费| 在线 亚洲欧美在线综合一区| 欧美成人午夜精品免费| 欧美日韩aaa| 17videosex性欧美| 色噜噜一区二区| 国产成人av一区| 人人妻人人爽人人澡人人精品| 久久精品国产亚洲精品2020| 国产精品任我爽爆在线播放| 欧美日韩在线免费播放| 悠悠色在线精品| 男女视频在线观看免费| 成人欧美一区二区三区黑人孕妇 | 情侣黄网站免费看| 一区二区三区日韩精品视频| 欧洲一级在线观看| 亚洲最大激情中文字幕| 视频一区欧美精品|