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

高并發場景:訂單號生成策略及代碼實現

開發 架構
在電商、支付、物流等業務領域,訂單號是標識業務流程、追蹤數據流轉的核心標識。尤其在高并發場景下(如秒殺、大促活動),訂單號的生成不僅需要保證唯一性,還需滿足高性能、高可用、可追溯等要求。

引言

在電商、支付、物流等業務領域,訂單號是標識業務流程、追蹤數據流轉的核心標識。尤其在高并發場景下(如秒殺、大促活動),訂單號的生成不僅需要保證唯一性,還需滿足高性能、高可用、可追溯等要求。

核心需求

  • 唯一性(最核心):無論并發量多大,絕對不能出現重復的訂單號,否則會導致訂單數據關聯錯誤、支付對賬失敗等嚴重問題。
  • 高性能:生成過程需輕量、低延遲,避免成為業務接口的性能瓶頸(高并發場景下,單接口QPS可能達數千甚至數萬,訂單號生成耗時需控制在毫秒級以內)。
  • 高可用:生成服務需具備容錯能力,即使部分組件(如數據庫、緩存)故障,也能臨時降級生成有效訂單號,避免業務中斷。
  • 可追溯性:訂單號中可包含業務標識(如業務線、區域)、時間戳等信息,便于問題排查(如通過訂單號快速定位生成時間、業務來源)。
  • 有序性(可選):部分業務需訂單號按時間有序排列,便于數據查詢(如按訂單號范圍查詢某時間段訂單)。

高并發下的核心挑戰

  • 分布式環境下的唯一性保障:多服務節點、多數據庫實例場景下,傳統單機自增方案失效,需跨節點協同。
  • 性能與一致性的平衡:若依賴分布式鎖、數據庫事務等強一致性機制,會降低生成性能;若采用弱一致性方案,需額外保障唯一性。
  • 峰值壓力應對:大促期間訂單生成請求突發增長,需避免因生成策略耗時過長導致的接口超時或線程池耗盡。

常見訂單號生成策略與實現

UUID/GUID(本地生成)

UUIDUniversally Unique Identifier)是128位的全局唯一標識符,通過MAC地址、時間戳、隨機數等信息生成,常見格式為32位十六進制數(含4個連接符,如550e8400-e29b-41d4-a716-446655440000)。GUID是微軟對UUID的實現,本質相同。

/**
 * UUID訂單號生成器
 */
@Component
public class UuidOrderIdGenerator {

    /**
     * 生成UUID訂單號(去除連接符,轉為32位字符串)
     * @return 32位唯一訂單號
     */
    public String generateOrderId() {
        // 生成標準UUID,去除"-"符號(避免訂單號中包含特殊字符)
        return UUID.randomUUID().toString().replace("-", "");
    }
}

優點:

  • 本地生成,無網絡開銷,性能極高(單線程生成QPS可達10萬 +);
  • 無需依賴外部組件(如數據庫、Redis),可用性高;
  • 實現簡單,無需額外開發。

缺點:

  • 無序性:UUID基于隨機數生成,無法按時間排序,不便于按訂單號范圍查詢數據;
  • 過長:32位字符串占用存儲空間較大,且可讀性差(不利于人工排查問題);
  • 潛在重復風險:理論上UUID存在重復概率(約1/10^36),但實際業務中可忽略(需避免使- 用版本1UUID,因其依賴MAC地址存在安全風險)。

適用場景

  • 適用于并發量高、無需有序性、對可讀性要求低的場景,如日志標識、臨時數據標識等;不適用于訂單號(因無序性和可讀性差,不符合業務追溯需求)。

數據庫自增 ID

基于數據庫的AUTO_INCREMENTMySQL)或SERIALPostgreSQL)特性,通過創建獨立的訂單號生成表,每次生成訂單號時向表中插入一條記錄,獲取自增ID作為訂單號。若為分布式數據庫(如分庫分表),需通過分段自增(如每個數據庫節點分配不同的ID段,如節點1生成1-10000,節點2生成10001-20000)避免重復。

-- 訂單號生成表(獨立表,避免與業務表耦合)
CREATE TABLE `order_id_generator` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增ID(作為訂單號)',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='訂單號生成表';
public interface OrderIdGeneratorMapper {

    /**
     * 插入記錄并返回自增ID
     * @return 自增ID(訂單號)
     */
    @Insert("INSERT INTO order_id_generator (create_time) VALUES (NOW())")
    @SelectKey(
        statement = "SELECT LAST_INSERT_ID()", // MySQL獲取自增ID的函數
        keyProperty = "id", // 映射到實體類的id字段
        before = false, // 插入后獲取ID
        resultType = Long.class
    )
    Long generateOrderId();
}

優點:

  • 絕對唯一:數據庫自增機制保障ID不重復;
  • 有序性:按時間遞增,便于數據查詢和排序;
  • 實現簡單:依賴數據庫原生特性,無需復雜邏輯。

缺點:

  • 性能瓶頸:高并發下,數據庫寫入成為瓶頸(單表寫入QPS通常不超過1000),需分庫分表優化;
  • 可用性風險:數據庫故障時,無法生成訂單號,需引入主從復制、讀寫分離等架構保障高可用;
  • 分布式擴展復雜:分庫分表時需協調ID段,避免重復(如使用Sharding-JDBC的分布式自增策略)

適用場景

  • 適用于并發量較低(QPS<1000)、需有序性的場景,如傳統電商的非大促時段;高并發場景需結合分庫分表或其他策略優化。

Redis 自增

利用RedisINCR(原子自增)命令,將訂單號作為RedisKey,每次生成時通過INCR key獲取自增ID。為避免Redis單點故障,可部署Redis 集群(主從 + 哨兵或Redis Cluster);為避免Key過期導致ID重復,可將Key設置為永久有效,并定期備份。

/**
 * Redis自增訂單號生成器(含日期前綴,增強可讀性)
 */
@Component
public class RedisIncrementOrderIdGenerator {

    // Redis中存儲自增ID的Key(按日期區分,避免ID過長)
    private static final String ORDER_ID_REDIS_KEY_PREFIX = "order:id:generator:";
    // 日期格式化器(yyyyMMdd,如20240520)
    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");

    @Resource
    private RedissonClient redissonClient;

    /**
     * 生成Redis自增訂單號(格式:yyyyMMdd + 6位自增ID,如20240520000001)
     * @return 帶日期前綴的訂單號
     */
    public String generateOrderId() {
        // 1. 按日期生成Redis Key(每天一個Key,避免ID無限增長)
        String currentDate = LocalDate.now().format(DATE_FORMATTER);
        String redisKey = ORDER_ID_REDIS_KEY_PREFIX + currentDate;

        // 2. 獲取Redis原子自增對象(不存在則自動創建,初始值為0)
        RAtomicLong atomicLong = redissonClient.getAtomicLong(redisKey);

        // 3. 原子自增(每次+1),并設置過期時間(2天后過期,避免Redis內存占用過大)
        long incrementId = atomicLong.incrementAndGet();
        atomicLong.expire(2, java.util.concurrent.TimeUnit.DAYS);

        // 4. 格式化訂單號(日期+6位自增ID,不足6位補零)
        return currentDate + String.format("%06d", incrementId);
    }
}

優點:

  • 高性能:Redis 基于內存操作,INCR命令耗時極短(單節點QPS可達10萬 +),支持高并發;
  • 有序性:自增ID按時間遞增,結合日期前綴便于追溯;
  • 分布式友好:Redis集群可保障高可用,支持多服務節點共享自增ID
  • 靈活擴展:可通過Key的設計(如按日期、業務線分區)控制ID長度。

缺點:

  • 依賴 RedisRedis集群故障時,需降級方案(如本地緩存臨時生成ID);
  • 數據一致性風險:若Redis主從同步延遲,主節點故障后從節點提升為主節點,可能導致ID 重復(需開啟RedisAOF持久化和主從同步確認機制)。

適用場景

  • 適用于高并發(QPS<10 萬)、需有序性和可追溯性的場景,如電商大促、秒殺活動的訂單號生成,是目前工業界應用最廣泛的方案之一。

雪花算法

雪花算法(Snowflake)是Twitter開源的分布式ID生成算法,核心是生成一個64位的LongID,結構如下(從高位到低位):

  • 1 位符號位:固定為 0(確保 ID 為正數);
  • 41 位時間戳:記錄生成時間(精確到毫秒),可使用約 69 年(41 位二進制數最大值為 2^41-1,約等于 69 年);
  • 10 位機器位:分為 5 位數據中心 ID 和 5 位機器 ID,支持 32 個數據中心、每個數據中心 32 臺機器(共 1024 臺機器);
  • 12 位序列號:同一毫秒內同一機器可生成 4096 個唯一 ID(2^12=4096)。

通過時間戳 + 機器位 + 序列號的組合,雪花算法可保障分布式環境下的ID唯一性和有序性。

/**
 * 雪花算法訂單號生成器(完整實現,含時鐘回撥處理)
 */
@Component
public class SnowflakeOrderIdGenerator {
    // 1. 雪花算法核心參數配置
    private static final long EPOCH = 1714521600000L; // 起始時間戳(2024-05-01 00:00:00,可自定義)
    private static final int DATA_CENTER_BITS = 5;    // 數據中心ID位數(最大支持31個數據中心)
    private static final int MACHINE_BITS = 5;        // 機器ID位數(最大支持31臺機器/數據中心)
    private static final int SEQUENCE_BITS = 12;      // 序列號位數(每毫秒最大生成4096個ID)

    // 2. 位移計算(用于拼接各字段)
    private static final long DATA_CENTER_SHIFT = SEQUENCE_BITS + MACHINE_BITS;
    private static final long MACHINE_SHIFT = SEQUENCE_BITS;
    private static final long TIMESTAMP_SHIFT = DATA_CENTER_BITS + MACHINE_BITS + SEQUENCE_BITS;

    // 3. 最大值限制(避免溢出)
    private static final long MAX_DATA_CENTER_ID = (1L << DATA_CENTER_BITS) - 1;
    private static final long MAX_MACHINE_ID = (1L << MACHINE_BITS) - 1;
    private static final long MAX_SEQUENCE = (1L << SEQUENCE_BITS) - 1;

    // 4. 全局狀態變量(線程安全)
    private long dataCenterId;          // 數據中心ID(從配置/環境變量獲取)
    private long machineId;             // 機器ID(從配置/環境變量獲取)
    private long lastTimestamp = -1L;   // 上一次生成ID的時間戳(毫秒)
    private final AtomicInteger sequence = new AtomicInteger(0); // 序列號(原子遞增)

    /**
     * 初始化:從環境變量加載數據中心ID和機器ID(生產環境建議用配置中心)
     */
    @PostConstruct
    public void init() {
        this.dataCenterId = getEnvConfig("SNOWFLAKE_DATA_CENTER_ID", 1L);
        this.machineId = getEnvConfig("SNOWFLAKE_MACHINE_ID", 1L);
        
        // 校驗ID合法性(避免超出位數限制)
        if (dataCenterId < 0 || dataCenterId > MAX_DATA_CENTER_ID) {
            throw new IllegalArgumentException(
                String.format("Data center ID must be between 0 and %d", MAX_DATA_CENTER_ID)
            );
        }
        if (machineId < 0 || machineId > MAX_MACHINE_ID) {
            throw new IllegalArgumentException(
                String.format("Machine ID must be between 0 and %d", MAX_MACHINE_ID)
            );
        }
    }

    /**
     * 生成雪花算法訂單號(64位Long轉字符串,避免前端處理大數精度丟失)
     * @return 唯一訂單號(如:1715000000000123456)
     */
    public synchronized String generateOrderId() {
        long currentTimestamp = System.currentTimeMillis();

        // 1. 處理時鐘回撥(核心邏輯)
        if (currentTimestamp < lastTimestamp) {
            // 情況1:回撥時間較短(<5ms),等待時鐘追趕(避免頻繁拋出異常)
            long waitMs = lastTimestamp - currentTimestamp;
            if (waitMs <= 5) {
                try {
                    Thread.sleep(waitMs);
                    currentTimestamp = System.currentTimeMillis();
                } catch (InterruptedException e) {
                    throw new RuntimeException("Snowflake ID generate failed: interrupted while waiting for clock", e);
                }
            } 
            // 情況2:回撥時間較長,直接拋出異常(避免生成重復ID)
            else {
                throw new RuntimeException(
                    String.format("Clock moved backwards: lastTimestamp=%d, currentTimestamp=%d", 
                    lastTimestamp, currentTimestamp)
                );
            }
        }

        // 2. 處理同一毫秒內的序列號
        if (currentTimestamp == lastTimestamp) {
            // 同一毫秒:序列號自增(超出最大值則等待下一毫秒)
            sequence.compareAndSet((int) MAX_SEQUENCE, 0);
            int currentSequence = sequence.incrementAndGet();
            if (currentSequence > MAX_SEQUENCE) {
                // 序列號耗盡,等待下一毫秒
                while (System.currentTimeMillis() == currentTimestamp) {
                    Thread.yield(); // 讓出CPU,減少空輪詢消耗
                }
                return generateOrderId(); // 遞歸生成下一毫秒的ID
            }
        } else {
            // 不同毫秒:重置序列號為0
            sequence.set(0);
        }

        // 3. 更新最后生成時間戳
        lastTimestamp = currentTimestamp;

        // 4. 拼接雪花ID(64位):時間戳 + 數據中心ID + 機器ID + 序列號
        long snowflakeId = (currentTimestamp - EPOCH) << TIMESTAMP_SHIFT
                | (dataCenterId << DATA_CENTER_SHIFT)
                | (machineId << MACHINE_SHIFT)
                | sequence.get();

        return String.valueOf(snowflakeId);
    }

    /**
     * 工具方法:從環境變量獲取配置,無配置則用默認值
     * @param key 環境變量鍵
     * @param defaultValue 默認值
     * @return 配置值或默認值
     */
    private long getEnvConfig(String key, long defaultValue) {
        String value = System.getenv(key);
        if (value == null || value.trim().isEmpty()) {
            return defaultValue;
        }
        try {
            return Long.parseLong(value.trim());
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException(
                String.format("Invalid config for %s: %s (must be a number)", key, value), e
            );
        }
    }
}

優點:

  • 高性能:本地生成無網絡開銷,單機器 QPS 可達百萬級(每毫秒 4096 個 ID)
  • 分布式友好:支持 1024 臺機器(32 數據中心 ×32 機器),擴展靈活
  • 有序性:按時間戳遞增,支持按 ID 范圍查詢訂單
  • 無外部依賴:不依賴數據庫 / Redis,部署簡單

缺點:

  • 時鐘依賴強:服務器時鐘回撥可能導致 ID 重復,需額外處理
  • 機器 ID 配置復雜:需手動分配數據中心 / 機器 ID,避免重復(需結合注冊中心優化)
  • ID 長度固定:64 位 Long 型,若需更短 ID 需自定義字段位數(如減少時間戳位數)
  • 起始時間固定:EPOCH 一旦確定不可修改,否則會導致 ID 重復

?

適用場景

  • 超高并發場景:QPS超過 10 萬、對性能要求極高的業務(如秒殺系統、直播帶貨訂單);
  • 純分布式架構:無Redis / 數據庫依賴、需輕量化生成方案的場景(如邊緣計算節點);
  • 有序性要求高:需按訂單號排序、范圍查詢的業務(如物流訂單跟蹤)。

總結

高并發場景下的訂單號生成,核心是在唯一性、性能、可用性之間找到平衡:

  • 若追求極致簡單且無有序性要求,可短期使用 UUID,但不推薦作為核心訂單號;
  • 中小并發(QPS<1000)且依賴數據庫的場景,數據庫自增是最優選擇,實現成本最低;
  • 中高并發(QPS10 萬 +)且需靈活擴展,Redis 自增是工業界主流方案,兼顧性能與可讀性;
  • 超高并發(QPS100 萬 +)且無外部依賴,雪花算法是最佳選擇,但需做好時鐘與機器 ID 管理。
責任編輯:武曉燕 來源: 一安未來
相關推薦

2021-07-01 06:58:12

高并發訂單號SCM

2019-08-23 08:09:18

訂單號生成數據庫ID

2019-08-15 11:11:38

Java數據庫設計

2025-01-02 09:06:43

2024-10-14 12:05:56

2025-04-23 07:31:14

2024-08-06 08:13:26

2020-10-21 12:10:30

訂單號Java代碼

2025-05-08 07:03:11

2021-12-28 06:55:09

事故訂單號績效

2024-09-04 08:55:56

2025-05-26 02:11:00

2024-06-20 07:59:49

2020-09-03 06:33:35

高并發場景分布式鎖

2025-09-19 11:30:23

2023-08-16 11:39:19

高并發調優

2023-11-27 08:15:26

Spring訂單取消

2023-11-20 08:39:24

Spring定時任務

2024-10-31 09:04:20

Spring高并發

2025-02-26 03:00:00

點贊
收藏

51CTO技術棧公眾號

国产精品国产亚洲伊人久久| 精品亚洲va在线va天堂资源站| 永久域名在线精品| 国产裸体无遮挡| 亚洲精品影院在线观看| 国产亚洲欧美日韩一区二区| 一级黄色高清视频| 美女网站在线看| 中文字幕av不卡| 福利视频久久| 中文字幕日韩经典| 精品国产白色丝袜高跟鞋| 韩国av一区二区| 91精品国产99| 我要看黄色一级片| 欧洲亚洲视频| 欧美一级在线视频| 欧美一区二区三区爽大粗免费| 日本网站在线免费观看视频| av成人免费在线观看| 成人免费午夜电影| 7799精品视频天天看| 欧美 日韩 国产 一区| 亚洲区在线播放| 妖精视频一区二区| 在线观看欧美| 欧美性videosxxxxx| 亚洲 欧美 综合 另类 中字| 日本免费视频在线观看| 91免费版在线看| 成人黄色片视频网站| 国产精品一区二区三区在线免费观看| 午夜在线播放视频欧美| 久久久久久久久久国产精品| 北条麻妃在线观看视频| 国产精品一区2区3区| 亚洲成色www8888| 又大又长粗又爽又黄少妇视频| 黄色成人在线观看网站| 欧美最猛性xxxxx直播| 大陆极品少妇内射aaaaa| 欧美videos另类精品| 亚洲免费在线观看视频| 亚洲免费不卡| 在线日本中文字幕| 国产午夜精品一区二区三区嫩草 | 糖心vlog精品一区二区| 国产精品毛片| 97超级碰在线看视频免费在线看 | 亚洲最大成人网站| 牛牛视频精品一区二区不卡| 亚洲大胆美女视频| 日韩av无码一区二区三区不卡| 一区二区免费| 精品福利一区二区三区| 国产精品99久久久精品无码| a看欧美黄色女同性恋| 精品乱码亚洲一区二区不卡| 18深夜在线观看免费视频| 国产精品免费精品自在线观看| 欧美日韩精品一区视频| 美女在线视频一区二区| 亚洲a成人v| 91精品国产综合久久国产大片| 国产三级精品三级在线| 国产精品3区| 欧美成人精精品一区二区频| 污污内射在线观看一区二区少妇| 欧美巨大xxxx| 亚洲人在线观看| 亚洲a∨无码无在线观看| 亚洲精品国产偷自在线观看| 久久99亚洲热视| 日韩av在线播| 亚洲欧美日韩在线观看a三区| 国产成人aa精品一区在线播放 | 欧美一区二区视频在线观看2022| 天堂网成人在线| 51亚洲精品| 亚洲精品午夜精品| 男女男精品视频网站| 欧美va天堂| 91av视频在线| 一个人看的www日本高清视频| 国产曰批免费观看久久久| 高清国产一区| 国产精品视频一区二区久久| 亚洲日本一区二区| 男人的天堂狠狠干| 成人黄色在线| 精品久久久久久久久久久久久久久久久| jlzzjizz在线播放观看| 久久资源中文字幕| 午夜精品在线视频| 国产乱码在线观看| 国产91丝袜在线播放九色| 欧美日韩另类丝袜其他| 大地资源网3页在线观看| 天天色天天操综合| 中文字幕成人免费视频| 极品国产人妖chinesets亚洲人妖| 亚洲欧洲黄色网| 激情五月少妇a| 日韩国产高清在线| 国产精品免费一区二区三区| 国产高清自拍视频在线观看| 亚洲国产精品久久一线不卡| 在线免费观看视频黄| 国产精品色在线网站| 最好看的2019年中文视频| 国产无套在线观看| 国产一区在线精品| 日本一区二区三区免费观看 | 亚洲成人av中文| 色综合色综合色综合色综合| 国产成人精品亚洲线观看| 日韩在线观看网址| 日韩精品久久久久久免费| 国产美女精品在线| 亚洲国产精品久久久久婷婷老年| 国产污视频在线播放| 91精品国产综合久久久久| 人人人妻人人澡人人爽欧美一区| 亚洲一本视频| 91亚洲精品一区二区| 懂色一区二区三区| 欧美色视频日本版| 涩视频在线观看| 综合国产在线| 成人精品久久久| 中文日本在线观看| 91福利在线播放| 日本丰满少妇裸体自慰| 伊人影院久久| 成人欧美一区二区| 污污视频在线看| 在线成人av网站| 999精品在线视频| 蜜桃av一区二区在线观看| 欧美18视频| 在线观看特色大片免费视频| 亚洲成人精品av| 精品少妇一二三区| 丁香桃色午夜亚洲一区二区三区| 91精品国产吴梦梦| 精品视频一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 在线中文字幕网站| 中文字幕中文字幕一区| av亚洲天堂网| **女人18毛片一区二区| 91久久久精品| 亚洲夜夜综合| 欧美成va人片在线观看| 精品无码m3u8在线观看| 成人网页在线观看| 久久99中文字幕| 亚州综合一区| 国产99在线|中文| 二区在线视频| 欧美区视频在线观看| 搜索黄色一级片| 国产suv精品一区二区6| 免费在线观看视频a| 蜜桃一区av| 国产成人午夜视频网址| av在线资源站| 91麻豆精品国产91久久久更新时间| 成人自拍小视频| 国产精品18久久久久久久久久久久| 伊人再见免费在线观看高清版 | 亚洲黄色成人网| 国产免费av一区| 国产精品毛片高清在线完整版| 992kp免费看片| 亚洲精品影视| 亚洲看片网站| 99久久婷婷国产综合精品青牛牛 | 久青草视频在线播放| 国产香蕉精品| 国产精品久久中文| 51xtv成人影院| 亚洲人成网站999久久久综合| 一炮成瘾1v1高h| 午夜久久久久久久久久一区二区| 蜜乳av中文字幕| 国产福利精品一区| 青青草原av在线播放| 国产精品久久天天影视| 国产免费一区二区| 国产原创一区| 久久久久久久久久久成人| 国产高清视频在线观看| 日韩视频在线观看一区二区| 免费av网站在线| 亚洲精品第1页| 欧美 日韩 成人| 国产成人精品在线看| 精品免费国产一区二区| 午夜久久影院| 亚洲精品影院| 秋霞影院一区二区三区| 91美女福利视频高清| 亚洲妇女成熟| 欧美俄罗斯性视频| 在线激情免费视频| 精品偷拍各种wc美女嘘嘘| 国产伦理吴梦梦伦理| 色婷婷综合激情| 亚洲国产精品成人无久久精品| 欧美国产日韩精品免费观看| 波多野结衣影院| 国产经典欧美精品| 国产野外作爱视频播放| 99国产精品久久久久久久成人热| 中文字幕免费在线不卡| 久久综合色占| 精品亚洲第一| 88久久精品| 成人在线一区二区| 欧美色片在线观看| 欧美在线亚洲一区| 国产极品人妖在线观看| 久久夜色精品国产欧美乱| 韩日视频在线| 亚洲美女激情视频| 少妇人妻一区二区| 日韩美女天天操| 国产免费不卡av| 欧美男女性生活在线直播观看| 无码人妻av一区二区三区波多野| 亚洲777理论| 日韩av电影网| 亚洲成a人v欧美综合天堂| 激情综合网五月天| 一区二区三区免费网站| www日韩在线| ...中文天堂在线一区| 欧美xxxx精品| 国产精品免费免费| 手机看片国产日韩| 国产女人水真多18毛片18精品视频| 精品无码在线视频| 久久精品一区二区三区四区| 91av在线免费| 久久免费精品国产久精品久久久久| 久久久国产精品无码| 91欧美一区二区| 三级黄色片网站| 久久综合中文字幕| 中文字幕被公侵犯的漂亮人妻| 久久精品人人做人人爽97| a级片在线观看| 国产精品丝袜久久久久久app| 少妇愉情理伦三级| 中文字幕日韩一区| www.99re7| 亚洲国产成人av网| 久久青青草视频| 欧美专区日韩专区| 亚洲综合精品视频| 日韩一区二区在线播放| 你懂的网站在线| 亚洲精品久久在线| 国产福利在线看| 久久精品影视伊人网| 中文字幕在线观看网站| 国外色69视频在线观看| 中文字幕高清在线播放| 国产成人97精品免费看片| 91成人福利社区| 动漫精品视频| 精品影片在线观看的网站| 天堂资源在线亚洲视频| 一个色综合网| 国产91美女视频| 麻豆精品在线看| 911亚洲精选| 久久久久久久久久久久久夜| 三上悠亚作品在线观看| 五月婷婷激情综合网| jizz国产在线| 日韩精品一区二区三区蜜臀| 青青草免费在线| 欧美成人国产va精品日本一级| а√天堂中文资源在线bt| 国产精品久久久久久一区二区| 国产精品久久久久久久久久久久久久久 | 国产精品午夜一区二区三区| 成人在线免费观看网址| 亚洲久久一区| 亚洲综合激情视频| 99re这里只有精品视频首页| 后入内射无码人妻一区| 精品国产福利视频| 91禁在线观看| 亚洲美女视频网| 性网站在线观看| 国产精品久久久久9999| 国产香蕉精品| 在线免费一区| 日精品一区二区| 97人妻精品一区二区三区免费| 亚洲欧洲性图库| 久久精品无码av| 精品国精品自拍自在线| 思思99re6国产在线播放| 97精品国产97久久久久久| 一区在线不卡| 亚洲成人av动漫| 国产美女一区| 中文字幕 日本| 亚洲精品五月天| 中文字字幕在线观看| 日韩高清有码在线| 女子免费在线观看视频www| 国产精品最新在线观看| 女人丝袜激情亚洲| 日本www在线视频| 懂色av中文一区二区三区| 久久精品亚洲a| 欧美午夜电影网| 国产网站在线播放| 91高清视频免费观看| 高清欧美性猛交xxxx黑人猛| 欧美日韩午夜爽爽| 韩国成人在线视频| 俄罗斯毛片基地| 欧美又粗又大又爽| 国产在线视频福利| 日本高清久久天堂| 色狼人综合干| 乱妇乱女熟妇熟女网站| 99精品欧美一区二区三区综合在线| 中文字幕影音先锋| 欧美大片拔萝卜| 青草影视电视剧免费播放在线观看| 成人午夜小视频| 亚洲成人三区| 香蕉视频xxxx| 亚洲精品国产视频| 亚洲第一大网站| 欧美激情久久久| 卡一精品卡二卡三网站乱码| 蜜臀av色欲a片无码精品一区| 国产成a人亚洲| 日本亚洲色大成网站www久久| 精品成人一区二区三区| 精品精品导航| 精品不卡一区二区三区| 国产一区二区你懂的| 手机免费看av| 欧美视频在线播放| 毛片在线视频| www.久久草| 亚洲激情av| 久久精品一区二区免费播放| 色婷婷av一区| 麻豆免费在线观看| 99re在线| 国产精品综合| 长河落日免费高清观看| 91精品国产综合久久蜜臀| 尤物在线网址| 久久精品欧美| 日本在线播放一区二区三区| 91香蕉视频污在线观看| 欧美一区二区大片| 欧美伦理91| 日韩欧美一区二区在线观看| 精品一区二区免费在线观看| 精品少妇久久久| 亚洲视频自拍偷拍| 国产精品一级在线观看| 国产高清av在线播放| 久久精品一区四区| 国产农村妇女毛片精品| 午夜精品福利视频| 成人精品天堂一区二区三区| 日韩成人av免费| 欧美日韩在线观看视频| 在线日本中文字幕| 国产欧美亚洲日本| 免费观看成人av| 精品无码久久久久久久久| 亚洲丝袜一区在线| 日本成人手机在线| 成年人免费大片| 亚洲欧美国产77777| 青青草超碰在线| 91在线看网站| 日本va欧美va精品发布| 九九热视频精品| 中文字幕亚洲二区| 国产精品视频3p| 亚洲天堂网站在线| 日本精品视频一区二区三区| xxx性欧美| 青少年xxxxx性开放hg| 91麻豆免费观看|