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

如何設計一個高并發的超時關單系統?

開發 架構
時間輪是一種高效的、批量處理定時任務的算法思想。可以把它想象成一個鐘表,鐘表上有很多格子(槽),每個格子代表一個時間間隔(比如1秒)。指針每隔一個單位時間就跳動一格,指向當前格子,并處理該格子的所有任務。

想象一下“雙十一”零點的場景:海量用戶瞬間涌入,下單、搶購。但總有一部分用戶下單后忘記支付,或者僅僅是抱著試試看的心態。如果這些訂單一直占著庫存,對商家和其他真實想購買的用戶都是不公平的。因此,一個穩定可靠的“下單后15分鐘未支付則自動關閉訂單”的系統,是電商平臺不可或缺的基礎設施。

這個需求聽起來簡單,但要在高并發下做到精準、可靠、高效,卻面臨著不少挑戰:

1. 高并發寫入:每秒可能產生數萬甚至數十萬的新訂單,每個訂單都需要被納入超時監管。

2. 定時精度:理論上,15分鐘后關單,不希望有太大的時間誤差。

3. 高性能與低延遲:關單檢查本身不能對數據庫等核心組件造成巨大壓力。

4. 可靠性:不能因為某個服務節點宕機,就導致大量訂單無法關閉。

5. 可擴展性:系統應該能夠隨著訂單量的增長而平滑擴展。

下面,我們由淺入深,探討幾種主流的設計方案。

方案一:傳統數據庫輪詢(最簡單,但性能最差)

這是最直觀的思路:啟動一個定時任務,每隔一段時間(比如1分鐘)去掃描數據庫,找出所有status = ‘待支付’create_time超過15分鐘的訂單,然后執行關單邏輯。

SELECT * FROM orders WHERE status = 'PENDING' AND created_time < NOW() - INTERVAL 15 MINUTE;

缺點顯而易見:

? 低效的掃描:隨著訂單表越來越大,這個SELECT查詢會越來越慢,即使有索引,頻繁的全索引掃描也是巨大的負擔。

? 時間不精確:最壞情況下,一個訂單可能是在第15分59秒被掃描到,實際關單時間接近29分鐘,誤差很大。

? 數據庫壓力:在高峰期,這個定時任務會成為壓垮數據庫的“最后一根稻草”。

結論:此方案不適用于高并發場景,僅適用于業務量非常小的初創項目。

方案二:JDK延遲隊列(單機內存,風險高)

Java提供了DelayQueue,它是一個無界的阻塞隊列,只有在延遲期滿時才能從中獲取元素。

實現思路:

1. 用戶下單后,將訂單信息(如訂單ID)放入DelayQueue,并設置15分鐘的延遲。

2. 啟動一個單獨的線程,不斷地從隊列中取出到期的訂單ID。

3. 執行關單邏輯(檢查狀態、釋放庫存、更新訂單狀態等)。

// 1. 定義延遲任務元素
public class DelayOrderTask implements Delayed {
    private final String orderId;
    private final long expireTime; // 到期時間戳

    public DelayOrderTask(String orderId, long delayMilliseconds) {
        this.orderId = orderId;
        this.expireTime = System.currentTimeMillis() + delayMilliseconds;
    }

    @Override
    public long getDelay(TimeUnit unit) {
        return unit.convert(expireTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
    }

    @Override
    public int compareTo(Delayed o) {
        return Long.compare(this.expireTime, ((DelayOrderTask) o).expireTime);
    }
    // ... getter
}

// 2. 使用延遲隊列
public class DelayOrderService {
    private static final DelayQueue<DelayOrderTask> QUEUE = new DelayQueue<>();

    // 下單后調用
    public void addOrderForCancel(String orderId, long delay) {
        QUEUE.put(new DelayOrderTask(orderId, delay));
    }

    // 在應用啟動時,啟動一個守護線程處理到期訂單
    @PostConstruct
    public void init() {
        new Thread(() -> {
            while (true) {
                try {
                    DelayOrderTask task = QUEUE.take(); // 阻塞直到有到期任務
                    cancelOrder(task.getOrderId()); // 執行關單邏輯
                } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
                    break;
                }
            }
        }).start();
    }

    private void cancelOrder(String orderId) {
        // 1. 查詢訂單當前狀態
        // 2. 如果仍是待支付,則執行關單(注意冪等性)
        System.out.println("關閉訂單: " + orderId);
    }
}

優點:

? 高精度、低延遲:任務到期后幾乎能被立即執行,精度非常高。

致命缺點:

? 內存限制:所有訂單信息都存放在JVM內存中,一旦訂單量巨大,可能導致內存溢出(OOM)。

? 單點故障:隊列數據在內存中,如果服務重啟或宕機,所有待處理的延遲任務都會丟失,造成嚴重故障。

? 集群擴展問題:在分布式集群環境下,無法保證一個訂單的延遲任務被同一臺機器處理,可能造成混亂。

結論:此方案僅適用于單機、低數據量、可接受數據丟失的非核心業務,絕對不能用于關單。

方案三:時間輪算法(Netty & Kafka的智慧)

時間輪是一種高效的、批量處理定時任務的算法思想??梢园阉胂蟪梢粋€鐘表,鐘表上有很多格子(槽),每個格子代表一個時間間隔(比如1秒)。指針每隔一個單位時間就跳動一格,指向當前格子,并處理該格子的所有任務。

為什么它高效?

? 任務的插入和刪除操作的時間復雜度是O(1)。

? 它通過“批處理”來平攤操作成本,而不是像延遲隊列那樣每個任務都有自己的計時器。

實現思路(單機版):
我們可以利用Netty提供的HashedWheelTimer

// 1. 創建時間輪, tickDuration=1秒, ticksPerWheel=60, 相當于一個60秒的輪盤
HashedWheelTimer timer = new HashedWheelTimer(1, TimeUnit.SECONDS, 60);

// 2. 下單后添加延遲任務
public void addOrderForCancel(String orderId) {
    TimerTask task = new TimerTask() {
        @Override
        public void run(Timeout timeout) {
            cancelOrder(orderId);
        }
    };
    // 延遲15分鐘執行
    timer.newTimeout(task, 15, TimeUnit.MINUTES);
}

優點:

  • ? 性能極高:遠超DelayQueue,是許多高性能框架(如Netty、RocketMQ)內部處理心跳檢測、超時請求的首選。
  • 缺點:
  • ? 和DelayQueue一樣,存在內存和單點故障的問題。

那么,如何解決單點故障問題呢?答案是將時間輪的思想與可靠的持久化存儲結合。

方案四:Redis過期鍵監聽 + 持久化(分布式、高可用方案)

這是目前最主流、最成熟的方案之一。其核心是利用Redis的兩個特性:

1. 自動過期:可以給Redis的Key設置一個TTL(生存時間),到期后Redis會自動刪除它。

2. 鍵空間通知:可以配置Redis,當某個Key因為過期而被刪除時,發布一個事件到特定的頻道。

架構設計:

1. 寫入任務(下單時):

// 用戶下單成功,向Redis寫入一個Key,并設置15分鐘后過期
// Key的格式: order_cancel:{orderId}, Value: 訂單狀態(或直接存訂單信息JSON)
String key = "order_cancel:" + orderId;
redisTemplate.opsForValue().set(key, orderInfo, Duration.ofMinutes(15));

2. 監聽過期事件(關單服務):

? 我們需要一個獨立的“關單服務”,它訂閱Redis的__keyevent@0__:expired頻道(0代表數據庫編號)。

? 當15分鐘后,Redis自動刪除了order_cancel:123這個Key,就會發布一個消息到該頻道,內容就是被刪除的Key名。

? 關單服務收到消息,解析出訂單ID 123。

3. 執行關單邏輯:

@Component
public class RedisKeyExpirationListener {

    @Autowired
    private OrderService orderService;

    // 使用RedisMessageListenerContainer訂閱過期事件
    @EventListener
    public void handleRedisMessage(RedisMessage message) {
        String expiredKey = message.getMessage();
        if (expiredKey.startsWith("order_cancel:")) {
            String orderId = expiredKey.substring("order_cancel:".length());
            // 非常重要:異步處理,避免阻塞消息監聽線程
            orderService.cancelOrderAsync(orderId);
        }
    }
}

關鍵細節與優化:

? 可靠性保障:Redis的過期事件發布是至少一次(at-least-once) 的,可能在網絡抖動等情況下重復發送。因此,關單邏輯必須是冪等的。即在cancelOrder方法中,要先檢查訂單當前狀態,如果已經是“已關閉”或“已支付”,則直接返回,不做任何操作。

public void cancelOrder(String orderId) {
    Order order = orderDao.findById(orderId);
    if (order.getStatus() == OrderStatus.PENDING) {
        // 執行關單:釋放庫存、更新狀態為“已關閉”
        order.setStatus(OrderStatus.CANCELLED);
        orderDao.update(order);
        inventoryService.releaseStock(order.getItems());
    } else if (order.getStatus() == OrderStatus.PAID) {
        logger.info("訂單已支付,無需關單: {}", orderId);
    } else {
        logger.info("訂單已處理: {}", orderId);
    }
}

? 性能優化:直接監聽Redis過期事件可能在大流量下成為瓶頸。因為所有過期Key都會走同一個頻道。我們可以引入消息隊列(如RocketMQ/Kafka)進行削峰填谷。
升級版架構:
下單服務 -> Redis(設置過期Key) -> Redis過期事件 -> 關單服務(作為生產者) -> 消息隊列(MQ) -> 多個關單消費者 -> 執行關單

關單服務監聽到過期事件后,不直接處理業務,而是將訂單ID發送到一個MQ。

由下游的多個消費者服務從MQ中消費,執行關單邏輯。這樣可以將壓力分散,避免關單服務被壓垮。

  ? Redis配置:需要確保Redis服務器的notify-keyspace-events配置項已啟用Ex(過期事件):notify-keyspace-events Ex。

優點:

? 解耦:下單和關單完全異步。

? 高性能:利用Redis的高性能和處理過期機制。

? 高可靠:即使關單服務短暫宕機,只要Redis里的Key過期事件最終被發布,就能被重新處理(結合MQ的重試機制)。

? 可擴展:可以通過增加關單消費者來水平擴展處理能力。

缺點:

? 時間誤差:Redis過期事件的發布可能會有少量延遲(秒級),但對于15分鐘的關單場景,這是完全可以接受的。

? Redis壓力:海量Key的TTL設置會對Redis內存造成壓力,需要合理規劃Redis容量。

方案五:消息隊列延遲消息(RocketMQ版)

一些高級的消息隊列中間件,如RocketMQ和RabbitMQ(通過插件),本身就支持延遲消息。這為我們提供了另一種“開箱即用”的選擇。

實現思路:

1. 用戶下單后,下單服務向RocketMQ發送一條延遲級別為15分鐘的消息。

2. RocketMQ服務端會將此消息暫存,等到15分鐘后才會投遞給消費者。

3. 關單服務作為消費者,收到消息后執行關單邏輯。

// 生產者(下單服務)
Message message = new Message("ORDER_DELAY_TOPIC", 
                             orderId.getBytes());
// 設置延遲級別, RocketMQ預設了1s, 5s, 10s, 30s, 1m, 2m... 30m, 1h等18個級別
// 假設第10個級別對應15分鐘
message.setDelayTimeLevel(10);
producer.send(message);

// 消費者(關單服務)
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CANCEL_ORDER_CONSUMER_GROUP");
consumer.subscribe("ORDER_DELAY_TOPIC", "*");
consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> {
    for (MessageExt msg : msgs) {
        String orderId = new String(msg.getBody());
        cancelOrder(orderId);
    }
    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
});
consumer.start();

優點:

? 架構簡單:無需自己維護Redis和監聽機制,直接利用MQ的成熟功能。

? 高可靠:具備消息隊列固有的高可靠性和重試機制。

? 性能好:RocketMQ為海量消息堆積和延遲投遞做了專門優化。

缺點:

? 延遲級別不靈活:RocketMQ的延遲級別是預設的,無法支持任意時間的延遲(比如16分鐘)。如果需要更靈活的時間控制,此方案不適用。

總結與方案選型

方案

優點

缺點

適用場景

數據庫輪詢

實現簡單

性能極差,精度低,數據庫壓力大

絕對不推薦用于高并發

JDK延遲隊列

精度高,實現簡單

內存OOM風險,單點故障

單機、低流量、可丟失任務

時間輪算法

性能極高

單機內存問題(需自行解決分布式)

高性能中間件內部、單機定時任務

Redis過期監聽

高可靠、高性能、可擴展

有秒級誤差,需保證冪等性

主流推薦方案,適用于絕大多數高并發場景

MQ延遲消息

架構簡單,高可靠

延遲時間不靈活

延遲時間固定的業務場景

最終建議:

對于高并發的超時關單系統,方案四(Redis過期鍵監聽 + 消息隊列削峰) 是綜合來看最佳的選擇。它在可靠性、性能、擴展性和實現復雜度之間取得了很好的平衡。

其核心設計思想可以提煉為:

1. 異步化:將關單操作與下單操作解耦,提升下單接口的性能和用戶體驗。

2. 分散決策:利用Redis的過期機制作為“定時觸發器”,避免集中式的掃描。

3. 最終一致:承認分布式環境下可能存在延遲和重復,通過冪等性設計來保證最終結果的正確性。

4. 削峰填谷:引入消息隊列,將瞬間的關單壓力平滑分散到多個消費者服務實例上,保證系統整體的穩定性。

希望這篇詳細的剖析能幫助你不僅理解如何“關單”,更能掌握設計高并發、分布式系統的核心方法論。

責任編輯:武曉燕 來源: 程序員秋天
相關推薦

2023-09-08 08:10:48

2023-09-08 08:22:30

2021-04-28 08:52:22

高并發架構設高并發系統

2019-07-31 07:36:12

架構運維技術

2025-06-04 03:15:00

高并發短鏈系統

2025-11-14 01:20:00

2023-11-10 16:18:59

2025-04-30 08:56:34

2019-08-01 08:36:51

緩存系統并發

2025-04-29 02:00:00

高并發系統場景

2020-07-27 07:53:36

高并發流量系統

2018-09-18 09:38:11

RPC遠程調用網絡通信

2024-11-20 13:18:21

2024-04-24 10:38:22

2020-09-02 07:22:17

JavaScript插件框架

2025-02-20 00:01:00

2024-08-27 12:49:20

2013-08-14 10:48:23

實時計算流計算

2015-07-28 14:35:40

2021-05-24 09:28:41

軟件開發 技術
點贊
收藏

51CTO技術棧公眾號

成人久久网站| 精品人妻一区二区三区日产乱码 | 东方aⅴ免费观看久久av| 久久精品中文字幕电影| 亚洲综合激情视频| 黄色网址在线免费观看| 美女网站色91| 久久成人av网站| 波多野结衣电影免费观看| 欧美videos另类精品| 国产91丝袜在线观看| 97香蕉久久夜色精品国产| 国产精品无码久久久久一区二区| 色成人免费网站| 国产精品毛片无遮挡高清| 欧美在线xxx| 国产精品视频在| 亚洲精品影片| 日本精品一区二区三区高清| 在线观看免费91| 风流少妇一区二区三区91| 夜夜精品视频| 中国china体内裑精亚洲片| 五月天婷婷在线观看视频| 美女91在线| 久久久久久免费网| 亚洲www在线| 在线观看日韩中文字幕| 日韩精品水蜜桃| 精品少妇一区二区三区日产乱码 | 成人在线播放网址| 国产高清在线| 大陆成人av片| 国产精品久久激情| 九九免费精品视频| 成人影院天天5g天天爽无毒影院| 日韩欧美一区中文| 女人另类性混交zo| 99视频在线观看地址| 成人小视频免费观看| 国产精品色悠悠| 亚州国产精品视频| 国产99精品| 精品国精品国产| 亚洲va综合va国产va中文| free性护士videos欧美| 亚洲视频资源在线| 欧美日本韩国国产| 性色av蜜臀av| 视频一区在线视频| 青青a在线精品免费观看| 亚洲视频电影| 五月婷婷久久久| 国产91精品入口| 7777精品伊久久久大香线蕉语言 | 午夜亚洲视频| 久久久久久国产精品美女| 国产大学生自拍| 欧美成人久久| 欧美日韩爱爱视频| 好吊色视频在线观看| 欧美伊人久久| 欧美激情精品久久久久久黑人| 伊人在线视频观看| 亚洲精品一区二区妖精| 麻豆国产精品va在线观看不卡| 亚洲女人毛茸茸高潮| 欧美激情偷拍自拍| 久久激情视频免费观看| 欧美精品久久久久久久久46p| 97精品中文字幕| 久久亚洲一区二区三区四区五区高| 免费黄色激情视频| 亚洲五月综合| 欧美激情亚洲精品| 国产69精品久久久久久久久久| 一区二区毛片| 国产精品69久久| 在线播放一级片| 激情偷乱视频一区二区三区| 亚洲自拍偷拍网址| 天天操天天插天天射| 久久久亚洲欧洲日产国码αv| 日韩女优中文字幕| 国产秀色在线www免费观看| 亚洲精品欧美综合四区| 日韩专区第三页| 欧美aa一级| 欧美性高清videossexo| 永久免费黄色片| 美女网站色精品尤物极品姐弟| 亚洲人成网在线播放| 日本成人免费在线观看 | 欧美日韩午夜电影网| 欧美精品一区二区三| 国产jk精品白丝av在线观看| 久久久久亚洲| 亚洲97在线观看| 亚洲天堂网视频| 粉嫩一区二区三区在线看| 欧美日韩免费高清| а天堂中文在线官网| 午夜视频久久久久久| 91在线视频观看免费| 亚洲国产精品免费视频| 日韩精品视频在线观看网址| youjizz亚洲女人| 一区精品久久| 国产玖玖精品视频| 天堂中文在线观看视频| 国产精品不卡一区| 久久涩涩网站| 香蕉视频在线免费看| 亚洲一区二区四区蜜桃| 色综合天天色综合| 另类图片第一页| 久久九九热免费视频| 在线观看日本视频| 99亚洲一区二区| 国产精品人成电影| 神马久久久久久久久久| 亚洲素人一区二区| 爱情岛论坛亚洲首页入口章节| 6080成人| 久久久极品av| 中文字幕乱码视频| 99久久久精品| av 日韩 人妻 黑人 综合 无码| 日韩欧美一区二区三区免费观看 | 亚洲国产视频在线| 一级黄色录像在线观看| 少妇精品久久久| 68精品久久久久久欧美| 国产不卡精品视频| 国产精品久久久久9999吃药| 黄色片一级视频| 久久香蕉精品香蕉| 久久久免费在线观看| 国产手机视频在线| 国产精品免费看片| 在线视频日韩一区| 中文字幕精品影院| 91成人性视频| 午夜性色福利视频| 亚洲成在人线在线播放| 美国黄色一级视频| 欧美jjzz| 国产精品一区二区免费看| 日本高清在线观看视频| 欧美一区午夜视频在线观看| 韩国一级黄色录像| 麻豆久久久久久久| 一区二区三区我不卡| 成人不卡视频| 日韩有码在线视频| 国产精品探花视频| 亚洲欧洲综合另类在线| 黄色片子免费看| 欧美在线首页| www.久久艹| 国产网红在线观看| 亚洲国产成人精品一区二区| 精品在线免费观看视频| 成人国产精品免费观看视频| 18禁裸男晨勃露j毛免费观看| 中文字幕视频精品一区二区三区| 欧美劲爆第一页| 搡老岳熟女国产熟妇| 欧美午夜激情小视频| xxxx日本免费| 蜜臀a∨国产成人精品| 波多野结衣三级在线| 精品视频在线一区| 久久久久中文字幕2018| 婷婷亚洲一区二区三区| 色哟哟国产精品| 激情五月深爱五月| 国产一区不卡在线| 国产一二三在线视频| 综合国产视频| 国产精品视频在线播放| 中日韩高清电影网| 亚洲精品aⅴ中文字幕乱码| 国内自拍视频在线播放| 国产精品每日更新| 最新中文字幕日本| 久久人人超碰| 好色先生视频污| 红杏视频成人| 国产精品手机播放| 日本乱理伦在线| 国产一区二区动漫| 精品国产无码一区二区| 欧美日韩精品中文字幕| 日本免费网站视频| 成人高清伦理免费影院在线观看| 大香煮伊手机一区| 中文字幕乱码亚洲无线精品一区| 精品午夜一区二区三区| 亚洲色图图片| 57pao成人永久免费视频| 色影视在线观看| 亚洲激情视频在线| 一区二区三区黄| 黄色精品一区二区| 黄色香蕉视频在线观看| 99re8在线精品视频免费播放| 天天干天天综合| 国产一区91| 最新视频 - x88av| 蜜乳av综合| 超碰97在线资源| 精品自拍视频| 91爱视频在线| 欧洲黄色一区| 日韩中文在线视频| 男人天堂网在线观看| 精品国产乱码91久久久久久网站| 波多野结衣理论片| 精品国产91久久久| 妺妺窝人体色www聚色窝仙踪| 亚洲国产精品成人综合色在线婷婷| 国产午夜在线一区二区三区| 久久电影网电视剧免费观看| 中文字幕乱码人妻综合二区三区 | 国产婷婷一区二区三区| 午夜激情久久| 日韩欧美亚洲v片| 奇米777国产一区国产二区| 亚洲一区亚洲二区| 亚洲成人高清| 日韩在线免费视频观看| 天堂av2024| 337p亚洲精品色噜噜噜| 亚洲精品国产欧美在线观看| 欧美日韩国产精品一区| 久久精品国产亚洲av麻豆色欲 | 日本少妇性生活| 亚洲黄网站在线观看| 99久久精品久久亚洲精品| 久久精品免费在线观看| 欧美黑人欧美精品刺激| 成人精品电影在线观看| 欧美图片自拍偷拍| 国产一区二区伦理片| 天天干天天av| 精品综合免费视频观看| www午夜视频| 裸体一区二区三区| 黄色手机在线视频| 开心九九激情九九欧美日韩精美视频电影 | 欧美丰满日韩| 一本久久a久久精品vr综合 | 成人在线观看毛片| 亚洲影视一区| 成人免费看片视频在线观看| 综合国产在线| 999一区二区三区| 激情欧美一区| 成人中文字幕在线播放| 性色av一区二区怡红| 黑鬼大战白妞高潮喷白浆| 三级一区在线视频先锋| 亚洲精品高清无码视频| 美女性感视频久久| 亚洲第一区第二区第三区| 国产主播一区二区三区| 波多野结衣网页| 成人免费毛片片v| 国产高清成人久久| 久久一二三国产| 性猛交娇小69hd| 国产精品国产三级国产普通话99| 2025国产精品自拍| 亚洲午夜羞羞片| 欧美日韩乱国产| 欧美午夜精品理论片a级按摩| 国产一区二区三区成人| 欧美大黄免费观看| 天堂√在线中文官网在线| 亚洲最新中文字幕| 欧美成人xxx| 欧美激情一区二区三级高清视频| free性m.freesex欧美| 国产精品久久久999| 精品一区91| 欧美精品一区二区三区在线看午夜 | 欧美一卡二卡在线观看| 天天色综合久久| 在线播放日韩av| 日本aa在线| 国产成人精品久久二区二区91| 欧洲亚洲精品久久久久| 成人三级在线| 欧美视频免费| 男人插女人视频在线观看| 免费久久99精品国产| 国产综合内射日韩久| 国产亚洲精品超碰| 黄色一级片在线| 色老头久久综合| 亚洲AV无码精品自拍| 国产亚洲美女久久| 欧美一卡二卡| 国产精品久久久久久久久粉嫩av| 亚洲国产aⅴ精品一区二区| 四虎影院一区二区三区| 在线欧美一区| 国产精品探花在线播放| 久久久不卡网国产精品二区| 久艹视频在线观看| 欧美亚洲自拍偷拍| 人妻91麻豆一区二区三区| 久久精品青青大伊人av| 日韩毛片免费观看| 不卡一区二区三区视频| 欧美aaaaaaaaaaaa| 99蜜桃臀久久久欧美精品网站| 国产黄色精品网站| 免费观看特级毛片| 欧美网站在线观看| 人妻丰满熟妇av无码区hd| 久久精品国产久精国产思思| 国产成人精品123区免费视频| 国产偷国产偷亚洲高清97cao| 亚洲精品成人| 男操女免费网站| 国产亚洲va综合人人澡精品| 成人免费区一区二区三区| 日韩一二三区不卡| 91精品国产91久久久久游泳池| 欧美一级在线播放| 久久久久观看| www插插插无码免费视频网站| 国产真实精品久久二三区| 中国女人特级毛片| 色偷偷成人一区二区三区91| 天天操天天干天天插| 欧美激情欧美激情| 国产在线不卡一区二区三区| 一级日韩一区在线观看| 蜜桃视频一区二区三区| 精品无码国产污污污免费网站| 精品久久久国产| 凸凹人妻人人澡人人添| 久久人人爽人人爽人人片av高清| av在线亚洲色图| 香港三级日本三级a视频| 国产福利一区二区三区视频| 熟女av一区二区| 911精品国产一区二区在线| 尤物网址在线观看| 国产专区欧美专区| 91精品国产调教在线观看| 日韩va在线观看| 亚洲视频一二三区| 精品久久久免费视频| 欧美成人午夜剧场免费观看| 欧美二区观看| 久久综合久久网| 99久久久精品| 神马久久久久久久 | 电影午夜精品一区二区三区 | 欧美日韩国产va另类| 亚洲亚洲一区二区三区| 国产在线播放观看| 91免费看视频| 中文字幕手机在线视频| 中文字幕亚洲欧美日韩2019| 91麻豆精品国产综合久久久| 中国黄色录像片| 成人av电影在线网| 天堂网中文字幕| 中文字幕视频一区二区在线有码 | 久久国产高清| 天堂网中文在线观看| 91精品国产免费| eeuss鲁一区二区三区| 日韩欧美激情一区二区| 精品一区二区成人精品| 免费毛片在线播放免费| 日韩精品视频在线| 欧美美女被草| av网站大全免费| 国产日韩欧美一区二区三区综合| 91国内精品视频| 国内精久久久久久久久久人| 精品大片一区二区| 在线视频一二区| 午夜天堂影视香蕉久久| 中国日本在线视频中文字幕| av色综合网| 日本美女一区二区| 久久高清无码视频| 中文字幕av日韩| 国产福利一区二区精品秒拍| 杨幂毛片午夜性生毛片| 亚洲综合色婷婷| www亚洲人| 国产精品久久国产三级国电话系列|