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

引入了 Disruptor 后,系統(tǒng)性能大幅提升!

開發(fā) 前端
Disruptor 是一個很受歡迎的內(nèi)存消息隊列,它源于 LMAX 對并發(fā)、性能和非阻塞算法的研究。今天一起來學(xué)習(xí)一下這個消息隊列。

大家好,我是君哥。

Disruptor 是一個很受歡迎的內(nèi)存消息隊列,它源于 LMAX 對并發(fā)、性能和非阻塞算法的研究。今天一起來學(xué)習(xí)一下這個消息隊列。

簡介

對于主流的分布式消息隊列來說,一般會包含 Producer、Broker、Consumer、注冊中心等模塊。比如 RocketMQ 架構(gòu)如下:

圖片圖片

Disruptor 并不是分布式消息隊列,它是一款內(nèi)存消息隊列,因此架構(gòu)上跟分布式消息隊列有很大差別。下面是一張 LMAX 使用 Disruptor 的案例圖:

圖片圖片

我們介紹一下 Disruptor 架構(gòu)中的核心概念。

1.1 Ring Buffer

Ring Buffer 通常被認為是 Disruptor 的最主要的設(shè)計,但是從 3.0 版本開始,Ring Buffer 只負責(zé)存儲和更新經(jīng)過 Disruptor 的數(shù)據(jù)。在一些高級的使用場景,它甚至完全可以被用戶替換。

1.2 Sequence

Disruptor 使用 Sequence 來識別特定組件的位置。每個 Consumer(也就是事件處理器)都像 Disruptor 一樣持有一個 Sequence。并發(fā)相關(guān)的核心代碼依賴 Sequence 的自增值,因此 Sequence 具有跟 AtomicLong 相似的特性,事實上唯一的不同就是不同的 Sequence 之間不存在偽共享問題。

偽共享:CPU 緩存是以緩存行為單位進行加載和存儲,CPU 每次從主存中拉取數(shù)據(jù)時,會把相鄰的數(shù)據(jù)也存入同一個緩存行。即使多個線程操作的是同一緩存行中不同的變量,只要有一個線程修改了緩存行中的某一個變量值,該緩存行就會被標記為無效,需要重新從主從中加載。在多線程環(huán)境下,頻繁地重新加載緩存行,會嚴重影響了程序執(zhí)行效率。

1.3 Sequencer

Sequencer 是 Disrupter 的真正核心,有單個生產(chǎn)者和多個生產(chǎn)者兩種實現(xiàn)(SingleProducerSequencer 和 MultiProducerSequencer)。為了讓數(shù)據(jù)在生產(chǎn)者和消費者之間快速、準確地傳輸,它們都實現(xiàn)了所有并發(fā)算法。

1.4 Sequence Barrier

Sequencer 生成一個 Sequence Barrier,它包含由 Sequencer 生成的 Sequence 和消費者擁有的 Sequence 的引用。Sequence Barrier 決定是否有事件給消費者處理。

1.5 Wait Strategy

消費者怎樣等待事件的到來。

1.6 Event Processor

主要負責(zé)循環(huán)處理來自 Disruptor 事件,它擁有消費者 Sequence 的所有權(quán)。有一個單獨的實現(xiàn)類 BatchEventProcessor,這個類擁有高效的事件循環(huán)處理能力并且處理完成后可以回調(diào)實現(xiàn) EventHandler 接口的用戶。

1.7 Event Handler

由用戶來實現(xiàn)并且代表 Disruptor 消費者的接口。

2 Disruptor 特性

2.1 多播事件

多播事件是 Disruptor 區(qū)別于其他隊列的最大差異。其他隊列都是一個事件消息只能被單個消費者消費,而 Disruptor 如果有多個消費者監(jiān)聽,則可以將所有事件消息發(fā)送給所有消費者。

在前面 LMAX 使用 Disruptor 的案例圖中,有 JournalConsumer、ReplicationConsumer 和 ApplicationConsumer 三個消費者監(jiān)聽了 Disruptor,這三個消費者將收到來了 Disruptor 的所有消息。

2.2 消費者依賴關(guān)系圖

為了支持并發(fā)處理在實際業(yè)務(wù)場景中的需要,有時消費者直接需要做協(xié)調(diào)。再回到前面 LMAX 使用 Disruptor 的案例,在 journalling 和 replication 這兩個消費者處理完成之前,有必要阻止業(yè)務(wù)邏輯消費者開始處理。我們稱這個特征為“gating”(或者更準確地說,該特征是“gating”的一種形式)。

首先,確保生產(chǎn)者數(shù)量不會超過消費者。這通過調(diào)用 RingBuffer.addGatingConsumers()來將相關(guān)消費者添加到 Disruptor。其次,消費者依賴關(guān)系的實現(xiàn)是通過構(gòu)建一個 SequenceBarrier,SequenceBarrier 擁有需要在它前面完成處理邏輯的消費者的 Sequence。

就拿前面 LMAX 使用 Disruptor 的案例來說,ApplicationConsumer 的 SequenceBarrier 擁有 JournalConsumer 和 ReplicationConsumer 這 2 個消費者的 Sequence,所以 ApplicationConsumer 對 JournalConsumer 和 ReplicationConsumer 的依賴關(guān)系可以從 SequenceBarrier 到 Sequence 的連接中看到。

Sequencer 和下游消費者的關(guān)系也需要注意。Sequencer 的一個角色就是發(fā)布的事件消息不能超出 Ring Buffer。這就要求下游消費者的 Sequence 不能小于 Ring Buffer 的 Sequence,也不能小于 Ring Buffer 的大小。

上面圖中,因為 ApplicationConsumer 的 Sequence 必須要保證小于等于 JournalConsumer 和 ReplicationConsumer 的 Sequence,因此 Sequencer 只需要關(guān)心 ApplicationConsumer 的 Sequence。

2.3 內(nèi)存預(yù)分配

Disruptor 的目標是低延遲,因此減少或者去除內(nèi)存分配是必要的。在基于 Java 的系統(tǒng)中,目標是減少 STW 次數(shù)。

為了支持這一點,用戶可以在 Disruptor 中預(yù)分配事件所需的內(nèi)存。在預(yù)分配內(nèi)存時,用戶提供的 EventFactory 將對 Ring Buffer 的所有元素進行調(diào)用。當(dāng)生產(chǎn)者向 Disruptor 發(fā)送新的事件消息時,Disruptor 的 API 允許用戶使用構(gòu)造好的對象,他們可以調(diào)用對象的方法或者更新對象的字段。Disruptor 需要確保并發(fā)安全。

2.4 無鎖并發(fā)

Disruptor 實現(xiàn)低延遲的另一個關(guān)鍵方法時使用無鎖算法,通過使用內(nèi)存屏障和 CAS 來實現(xiàn)內(nèi)存可見性和正確性。Disruptor 唯一使用鎖的地方就是在 BlockingWaitStrategy。

3 調(diào)優(yōu)選項

雖然大多數(shù)場景下 Disruptor 可以表現(xiàn)出優(yōu)秀的性能,但是仍然有一些調(diào)優(yōu)參數(shù)可以改進 Disruptor 的性能。

3.1 單個/多個生產(chǎn)者

Disruptor<LongEvent> disruptor = new Disruptor(
 factory,
 bufferSize,
 DaemonThreadFactory.INSTANCE,
 ProducerType.SINGLE, 
 new BlockingWaitStrategy() 
);

上面是 disruptor 的構(gòu)造函數(shù),ProducerType.SINGLE 表示創(chuàng)建單生產(chǎn)者的 Sequencer,ProducerType.MULTI  表示創(chuàng)建多生產(chǎn)者的 Sequencer。

在并發(fā)系統(tǒng)中提高系統(tǒng)性能的最好方式是遵循單寫原則。下面是官方的一個 disruptor 吞吐量測試結(jié)果,測試環(huán)境是 i7 Sandy Bridge MacBook Air。

單生產(chǎn)者:

圖片圖片

多生產(chǎn)者:

圖片圖片

3.2 等待策略

  • BlockingWaitStrategy

disruptor 的默認等待策略是 BlockingWaitStrategy,這種策略使用鎖和喚醒鎖的 Condition 變量。

  • SleepingWaitStrategy

跟 BlockingWaitStrategy 策略類似,他是通過 LockSupport.parkNanos(1) 方法來實現(xiàn)等待,不需要給 Condition 變量發(fā)送信號來喚醒等待。

主要適用于對延時要求不高的場景,比如異步打印日志。

  • YieldingWaitStrategy

YieldingWaitStrategy 策略使用 Busy spin(不釋放 CPU 資源,通過循環(huán)檢查條件直到條件滿足為止)技術(shù)來等待 sequence 增長到一個合適的值。在循環(huán)內(nèi)部會調(diào)用 Thread#yield() 方法允許其他排隊線程去執(zhí)行。

這種策略主要用于通過消耗 CPU 來實現(xiàn)低延遲的場景。當(dāng) EventHandler 數(shù)量消息邏輯 CPU 核數(shù)并且對延遲要求較高時,可以考慮這種等待策略。

  • BusySpinWaitStrategy

BusySpinWaitStrategy 是性能最高的等待策略,它適用于低延遲系統(tǒng),但是對部署環(huán)境要求很高。

這種等待策略的唯一適用場景是當(dāng) EventHandler 數(shù)量消息邏輯 CPU 核數(shù)并且超線程被禁用。

4 官方示例

下面是一個官方示例。這個例子比較簡單,就是生產(chǎn)者向消費者發(fā)送一個 long 類型的值。

  • 首先定義一個 Event。
public class LongEvent
{
    private long value;

    public void set(long value)
    {
        this.value = value;
    }

    @Override
    public String toString()
    {
        return "LongEvent{" + "value=" + value + '}';
    }
}
  • 為了能讓 Disruptor 預(yù)分配內(nèi)存,這里定義一個 LongEventFactory。
public class LongEventFactory implements EventFactory<LongEvent>
{
    @Override
    public LongEvent newInstance()
    {
        return new LongEvent();
    }
}
  • 創(chuàng)建一個消費者來處理事件
public class LongEventHandler implements EventHandler<LongEvent>
{
    @Override
    public void onEvent(LongEvent event, long sequence, boolean endOfBatch)
    {
        System.out.println("Event: " + event);
    }
}
  • 編寫發(fā)送事件消息的邏輯
import com.lmax.disruptor.dsl.Disruptor;
import com.lmax.disruptor.RingBuffer;
import com.lmax.disruptor.examples.longevent.LongEvent;
import com.lmax.disruptor.util.DaemonThreadFactory;
import java.nio.ByteBuffer;

public class LongEventMain
{
    public static void main(String[] args) throws Exception
    {
        int bufferSize = 1024; 

        Disruptor<LongEvent> disruptor = 
                new Disruptor<>(LongEvent::new, bufferSize, DaemonThreadFactory.INSTANCE);

        disruptor.handleEventsWith((event, sequence, endOfBatch) ->
                System.out.println("Event: " + event)); 
        disruptor.start(); 


        RingBuffer<LongEvent> ringBuffer = disruptor.getRingBuffer(); 
        ByteBuffer bb = ByteBuffer.allocate(8);
        for (long l = 0; true; l++)
        {
            bb.putLong(0, l);
            ringBuffer.publishEvent((event, sequence, buffer) -> event.set(buffer.getLong(0)), bb);
            Thread.sleep(1000);
        }
    }
}

5 總結(jié)

作為一款高性能的內(nèi)存隊列,Disruptor 有不少優(yōu)秀的設(shè)計思想值得我們學(xué)習(xí),比如內(nèi)存預(yù)分配、無鎖并發(fā)。同時它的使用非常簡單,推薦大家使用。


責(zé)任編輯:武曉燕 來源: 君哥聊技術(shù)
相關(guān)推薦

2024-11-08 14:27:52

系統(tǒng)設(shè)計數(shù)據(jù)庫

2015-10-14 20:04:28

T-Force太一星晨

2023-04-10 09:15:25

Vite 4.3SWC 插件

2023-11-09 08:46:24

2009-02-18 20:27:24

組策略提升Windows性能

2018-12-10 15:13:06

緩存系統(tǒng)性能數(shù)據(jù)

2009-03-22 19:19:15

多核多核服務(wù)器多核歷史

2016-09-26 13:50:52

Linux系統(tǒng)性能

2015-07-28 09:19:10

Linux內(nèi)核

2011-08-09 17:15:45

注冊表注冊表編輯器

2023-10-26 08:33:16

Redis管道技術(shù)

2023-06-12 00:22:50

操作系統(tǒng)應(yīng)用程序內(nèi)核鎖

2023-11-26 09:04:10

Vue性能

2023-10-23 08:23:16

系統(tǒng)性能數(shù)據(jù)庫

2021-02-02 15:38:19

Disruptor緩存Java

2018-08-09 09:00:34

2024-08-12 09:38:33

2012-12-10 13:43:07

固態(tài)硬盤系統(tǒng)性能內(nèi)存

2023-10-17 14:35:22

人工智能AI

2024-04-29 18:55:16

緩存Spring性能
點贊
收藏

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

大桥未久一区二区| 亚洲bt天天射| 日韩黄色中文字幕| 精品国产欧美| 欧美色播在线播放| 樱花www成人免费视频| 成人黄色免费视频| 校园激情久久| 另类天堂视频在线观看| 亚洲国产精品成人综合久久久| 亚洲伦乱视频| 一区二区三区四区在线| 欧美日韩另类丝袜其他| 国产成人av免费看| 久久久综合网| 久久国产加勒比精品无码| 素人fc2av清纯18岁| av一级久久| 在线观看亚洲a| 国产www免费| 麻豆网站视频在线观看| av在线一区二区| 成人在线免费观看视视频| 亚洲天堂日韩av| 欧美国产精品| 精品国产依人香蕉在线精品| 欧美精品黑人猛交高潮| 精品视频一区二区三区| 欧美网站大全在线观看| 欧美性大战久久久久xxx| 中文字幕中文字幕在线十八区| 国产欧美视频在线观看| 久久久久国产精品视频| 精品国产乱码久久久久久蜜臀网站| 日韩不卡免费视频| 2020国产精品视频| 国产乱码久久久久久| 91精品动漫在线观看| 中文字幕在线精品| 国产小视频自拍| 亚洲精华一区二区三区| 精品成人在线观看| 亚洲女人在线观看| 国产精品视频一区二区三区| 欧美日韩中文精品| 亚洲国产精品毛片av不卡在线| 麻豆理论在线观看| 午夜国产不卡在线观看视频| 日本手机在线视频| 啪啪免费视频一区| 亚洲综合色视频| 91传媒免费视频| 麻豆av在线播放| 亚洲网友自拍偷拍| 久久国产精品网| av影视在线| 午夜精品aaa| 欧美 日韩 国产一区| gay欧美网站| 日韩欧美黄色动漫| 妺妺窝人体色www在线观看| 奇米777日韩| 欧美亚洲动漫另类| 污污视频网站在线| 日韩区欧美区| 亚洲国产精品久久久久秋霞不卡| 你懂得在线视频| 免费成人三级| 亚洲欧美一区二区三区久久| 谁有免费的黄色网址| 日韩专区精品| 欧美乱人伦中文字幕在线| 久久久久亚洲AV| 国产精品日韩欧美一区| 青青久久av北条麻妃海外网| 国产一区二区视频网站| 久久99精品久久久久婷婷| 91在线视频一区| 免费看黄色一级视频| 91在线视频网址| 午夜欧美一区二区三区免费观看| 黄网页在线观看| 亚洲二区在线观看| 无码精品国产一区二区三区免费| 成人午夜毛片| 精品国产一区二区三区av性色| 国产精品久久AV无码| 成人aaaa| 久久久久久中文字幕| 国产一区二区视频网站| 国产剧情av麻豆香蕉精品| 国内精品**久久毛片app| 国产一级免费在线观看| 亚洲精品高清在线观看| 人妻熟妇乱又伦精品视频| 国内精品伊人| 亚洲国产精品成人av| 日本午夜精品视频| 狠色狠色综合久久| 国产欧美日韩视频| 手机av在线免费观看| 中文字幕二三区不卡| 国产免费一区二区视频| 久久av日韩| 亚洲精品99999| 免费看一级大片| 老**午夜毛片一区二区三区| 99三级在线| 一本一道波多野毛片中文在线 | 日韩精品视频中文在线观看| 日本美女bbw| 日韩视频一区| 亚洲va欧美va国产综合剧情| 国产视频第一区| 亚洲第一精品在线| www.亚洲自拍| 北条麻妃国产九九九精品小说| 欧美劲爆第一页| 国产免费福利视频| 国产日产亚洲精品系列| 久久久999视频| 成人台湾亚洲精品一区二区| 久久久精品日本| 久久国产香蕉视频| 久久影音资源网| 日韩精品在线观看av| 亚洲人成777| 亚洲最大在线视频| 九九精品免费视频| av一区二区三区四区| 久操手机在线视频| 欧美二区观看| 久久最新资源网| 6—12呦国产精品| 中文字幕欧美三区| 日本新janpanese乱熟| 日韩av资源网| 69久久夜色精品国产7777| 亚洲国产www| 亚洲综合偷拍欧美一区色| 九九九久久久久久久| 午夜激情久久| 成人综合国产精品| a级网站在线播放| 91精品久久久久久久99蜜桃| 91香蕉视频网| 国产在线视频精品一区| 黄瓜视频免费观看在线观看www| 黄色精品视频| 最近免费中文字幕视频2019| 在线观看中文字幕2021| 中文字幕不卡在线观看| 五月婷婷激情久久| 99久久.com| 91久久久久久国产精品| av片在线观看| 欧美成人精品高清在线播放 | 黄色大片在线看| 色狠狠色狠狠综合| 蜜桃视频最新网址| 国产精品99久久久久久宅男| 欧美久久久久久久久久久久久久| 国产精品白丝一区二区三区| 欧美影院在线播放| 国产在线中文字幕| 欧美喷潮久久久xxxxx| 午夜激情福利网| 成人精品免费视频| 欧美成人xxxxx| 日韩欧美在线中字| 亚洲999一在线观看www| 51漫画成人app入口| 亚洲欧美变态国产另类| 中文字幕人妻精品一区| 一区二区在线观看av| 精品中文字幕在线播放| 日日嗨av一区二区三区四区| 色呦呦网站入口| 99久久婷婷国产综合精品青牛牛| 91精品国产九九九久久久亚洲| 你懂得在线网址| 91麻豆精品国产自产在线| 久久久久亚洲AV| 国产香蕉久久精品综合网| 午夜啪啪小视频| 亚洲人成毛片在线播放女女| 天天综合狠狠精品| 精品国产亚洲一区二区三区在线 | 国产在线视频二区| 久久久久国产精品厨房| 免费看的av网站| 久久福利毛片| 日韩精品手机在线观看| 欧美人与牛zoz0性行为| 亚洲xxxx在线| 台湾成人免费视频| 97高清免费视频| 国产原厂视频在线观看| 亚洲老头同性xxxxx| 国产成人毛毛毛片| 欧美亚洲动漫制服丝袜| 国产成人无码精品久在线观看| 中文字幕在线不卡一区| 亚洲自拍偷拍一区二区| 国产成人免费视频网站高清观看视频 | 国产乱淫av麻豆国产免费| 青青草精品视频| 少妇高潮喷水在线观看| 亚州av乱码久久精品蜜桃| 蜜桃传媒视频第一区入口在线看| 久久国际精品| 国产日韩中文字幕在线| 欧美freesex| 7777kkkk成人观看| 免费男女羞羞的视频网站在线观看| 国产一级揄自揄精品视频| 婷婷开心激情网| 日韩一区二区高清| 一级黄色片在线观看| 日韩欧美在线视频免费观看| 国产一级一片免费播放放a| 亚洲视频免费在线| 国产第一页精品| 欧美高清在线一区| 熟女俱乐部一区二区视频在线| 成人精品小蝌蚪| 又黄又爽又色的视频| 国内精品第一页| 少妇网站在线观看| 日本视频一区二区三区| 激情婷婷综合网| 亚洲在线播放| heyzo亚洲| 亚洲福利久久| 99久久国产综合精品五月天喷水| 欧美精选一区| 黄色一级大片免费| 欧美91福利在线观看| 女同性恋一区二区| 亚洲成人三区| 精品一区二区三区毛片| 亚洲午夜精品一区二区国产| 老司机av福利| 久久精品国内一区二区三区水蜜桃| 亚洲日本无吗高清不卡| 久久资源中文字幕| 最新精品视频| 亚洲一区二区| 欧美这里只有精品| 亚洲激情自拍| 国产xxxxx在线观看| 久久国产99| www.天天射.com| 看国产成人h片视频| 九九久久久久久| 国产精选一区二区三区| 亚洲一级Av无码毛片久久精品| 国产99精品国产| 久久久久国产精品无码免费看| yourporn久久国产精品| 三级网站在线免费观看| 欧美国产日韩在线观看| 特一级黄色录像| 亚洲欧美日韩国产手机在线| 国产亚洲精品女人久久久久久| 亚洲二区视频在线| 青青草视频在线观看免费| 欧美日韩国产综合视频在线观看 | 综合在线影院| 国产综合香蕉五月婷在线| 亚洲综合网狠久久| 久久综合九色欧美狠狠| 成人看的视频| 久久www视频| 国产精品日韩欧美一区| 亚洲这里只有精品| 国产传媒欧美日韩成人| 91精品国产自产| 亚洲国产精品精华液ab| 免费在线看黄网址| 欧美性xxxxxx| 99久久精品无免国产免费| 亚洲精美色品网站| 欧美午夜电影一区二区三区| 欧美国产视频日韩| 欧美日韩精品免费观看视欧美高清免费大片| 91精品国产综合久久香蕉的用户体验| 日本精品视频| 日韩av大全| 国产一区久久| 欧美三级理论片| 成人性生交大片免费看中文网站| 亚洲永久精品ww.7491进入| 亚洲色图第一区| 91丝袜一区二区三区| 日韩免费看网站| 成人亚洲综合天堂| 欧美激情一区二区三区成人| 国产精品久久久久久久久免费高清 | 中文字幕一区二区三区四区久久| 欧美另类高清视频在线| 欧美激情成人在线| 日日噜噜噜噜久久久精品毛片| 粉嫩高潮美女一区二区三区| 精品丰满少妇一区二区三区| 黑人精品xxx一区一二区| 国产亲伦免费视频播放| 亚洲欧美日韩国产中文| av午夜在线观看| 亚洲一区二区在线| 久久人人88| 久久精品午夜福利| 94色蜜桃网一区二区三区| 黄色一级视频在线观看| 6080午夜不卡| 2021av在线| 国产成人小视频在线观看| 欧美激情极品| 久久久久久久9| 国产一区二区h| 99热99这里只有精品| 色先锋久久av资源部| 天堂а√在线8种子蜜桃视频| 久久久精品2019中文字幕神马| 亚洲精品.com| 欧美亚洲免费在线| 亚洲自啪免费| 国产精品无码永久免费不卡| 亚洲国产成人91porn| www夜片内射视频日韩精品成人| 久久精品在线视频| 日韩在线电影| 在线国产伦理一区| 麻豆精品一区二区av白丝在线| 亚洲欧美va天堂人熟伦| 色久综合一二码| 日本福利片在线| 日本精品一区二区三区在线播放视频 | 911国产在线| 欧美日韩专区在线| 日本韩国在线视频爽| 国产精品自产拍在线观看| 欧美日韩有码| 亚洲人辣妹窥探嘘嘘| 欧美韩国一区二区| 一级特黄aa大片| 久久久国产视频| 日韩欧美一级| 国产资源在线视频| 91丨九色丨蝌蚪丨老版| 日韩免费av网站| 一区二区三区黄色| 九九久久国产| 中文字幕精品在线播放| 丁香婷婷综合色啪| 91香蕉在线视频| 亚洲欧洲日韩国产| 国产精品4hu.www| 日本在线视频www色| 国产米奇在线777精品观看| 九九在线观看视频| 亚洲国产又黄又爽女人高潮的| 少妇在线看www| 色视频一区二区三区| 精品亚洲免费视频| 久久久.www| 日韩精品在线免费观看视频| jizzjizz少妇亚洲水多| 国产精品无码乱伦| 99久久精品免费| 国产男人搡女人免费视频| 超碰91人人草人人干| 国产精品15p| 日本中文字幕高清| 亚洲精品一二三区| 欧美日韩影视| 成人福利视频在线观看| 99精品视频免费观看视频| 成人黄色免费网址| 日韩欧美一级特黄在线播放| 色是在线视频| 一本一生久久a久久精品综合蜜| 高清在线不卡av| 亚洲精品久久久久久久蜜桃| 欧美成人激情视频| 外国成人在线视频| 91欧美一区二区三区| 福利精品视频在线| 国产在线高潮| 欧美日韩国产精品一区二区| 国产一区二区三区四区五区入口 | 亚洲女同同性videoxma| av片在线免费看| 日韩av中文在线| 亚洲精品tv| 99色精品视频| 亚洲激情图片一区| 8888四色奇米在线观看| 国内视频一区二区| 激情六月婷婷综合|