日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ad09只在一定范围内查找相似对象_kafka日志段中的二分查找

發布時間:2024/4/13 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ad09只在一定范围内查找相似对象_kafka日志段中的二分查找 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二分查找

Kafka 中直接接觸索引或索引文件的場景可能不是很多。索引是一個很神秘的組件,Kafka 官方文檔也沒有怎么提過它。索引這個組件的源碼還有一個亮點,那就是它應用了耳熟能詳的二分查找算法來快速定位索引項。而且社區還針對 Kafka 自身的特點對其進行了改良。

1. 索引類圖及源文件組織架構

在 Kafka 源碼中,跟索引相關的源碼文件有 5 個,它們都位于 core 包的 /src/main/scala/kafka/log 路徑下。

  • AbstractIndex.scala:它定義了最頂層的抽象類,這個類封裝了所有索引類型的公共操作。
  • LazyIndex.scala:它定義了 AbstractIndex 上的一個包裝類,實現索引項延遲加載。這個類主要是為了提高性能。
  • OffsetIndex.scala:定義位移索引,保存“< 位移值,文件磁盤物理位置 >”對。
  • TimeIndex.scala:定義時間戳索引,保存“< 時間戳,位移值 >”對。
  • TransactionIndex.scala:定義事務索引,為已中止事務(Aborted Transcation)保存重要的元數據信息。只有啟用 Kafka 事務后,這個索引才有可能出現。

這些類的繼承關系如下圖所示:

其中,OffsetIndex、TimeIndex 和 TransactionIndex 都繼承了 AbstractIndex 類,而上層的 LazyIndex 僅僅是包裝了一個 AbstractIndex 的實現類,用于延遲加載。

2. AbstractIndex 代碼結構

abstract class AbstractIndex(@volatile var file: File, val baseOffset: Long, val maxIndexSize: Int = -1, val writable: Boolean) extends Closeable { ...... }

AbstractIndex 定義了 4 個屬性字段。由于是一個抽象基類,它的所有子類自動地繼承了這 4 個字段。也就是說,Kafka 所有類型的索引對象都定義了這些屬性。

  • 索引文件(file)。每個索引對象在磁盤上都對應了一個索引文件。這個字段是 var 型,說明它是可以被修改的。難道索引對象還能動態更換底層的索引文件嗎?自 1.1.0 版本之后,Kafka 允許遷移底層的日志路徑,所以,索引文件自然要是可以更換的。
  • 起始位移值(baseOffset)。索引對象對應日志段對象的起始位移值。舉個例子,如果你查看 Kafka 日志路徑的話,就會發現,日志文件和索引文件都是成組出現的。比如說,如果日志文件是 00000000000000000123.log,正常情況下,一定還有一組索引文件 00000000000000000123.index、00000000000000000123.timeindex 等。這里的“123”就是這組文件的起始位移值,也就是 baseOffset 值。
  • 索引文件最大字節數(maxIndexSize)。它控制索引文件的最大長度。Kafka 源碼傳入該參數的值是 Broker 端參數 segment.index.bytes 的值,即 10MB。這就是在默認情況下,所有 Kafka 索引文件大小都是 10MB 的原因。
  • 索引文件打開方式(writable)。“True”表示以“讀寫”方式打開,“False”表示以“只讀”方式打開。
  • AbstractIndex 是抽象的索引對象類。可以說,它是承載索引項的容器,而每個繼承它的子類負責定義具體的索引項結構。

    比如,OffsetIndex 的索引項是 < 位移值,物理磁盤位置 > 對,TimeIndex 的索引項是 < 時間戳,位移值 > 對。基于這樣的設計理念,AbstractIndex 類中定義了一個抽象方法 entrySize 來表示不同索引項的大小,如下所示:

    protected def entrySize: Int

    子類實現該方法時需要給定自己索引項的大小,對于 OffsetIndex 而言,該值就是 8;對于 TimeIndex 而言,該值是 12。

    // OffsetIndex override def entrySize = 8 // TimeIndex override def entrySize = 12

    8和12具體什么含義呢?

    在 OffsetIndex 中,位移值用 4 個字節來表示,物理磁盤位置也用 4 個字節來表示,所以總共是 8 個字節。位移值不是長整型,應該是 8 個字節才對。上面提到 AbstractIndex 已經保存了 baseOffset 了,這里的位移值,實際上是相對于 baseOffset 的相對位移值,即真實位移值減去 baseOffset 的值,使用相對位移值能夠有效地節省磁盤空間。而 Broker 端參數 log.segment.bytes 是整型,這說明,Kafka 中每個日志段文件的大小不會超過 2^32,即 4GB,這就說明同一個日志段文件上的位移值減去 baseOffset 的差值一定在整數范圍內。因此,源碼只需要 4 個字節保存就行了。

    同理,TimeIndex 中的時間戳類型是長整型,占用 8 個字節,位移依然使用相對位移值,占用 4 個字節,因此總共需要 12 個字節。

    Kafka 中的索引底層的實現原理是 Java 中的 MappedByteBuffer。使用內存映射文件的主要優勢在于,它有很高的 I/O 性能,特別是對于索引這樣的小文件來說,由于文件內存被直接映射到一段虛擬內存上,訪問內存映射文件的速度要快于普通的讀寫文件速度。

    在 AbstractIndex 中,這個 MappedByteBuffer 就是名為 mmap 的變量。看下源碼:

    @volatile protected var mmap: MappedByteBuffer = { // 第1步:創建索引文件 val newlyCreated = file.createNewFile() // 第2步:以writable指定的方式(讀寫方式或只讀方式)打開索引文件 val raf = if (writable) new RandomAccessFile(file, "rw") else new RandomAccessFile(file, "r") try { if(newlyCreated) { if(maxIndexSize < entrySize) // 預設的索引文件大小不能太小,如果連一個索引項都保存不了,直接拋出異常 throw new IllegalArgumentException("Invalid max index size: " + maxIndexSize) // 第3步:設置索引文件長度,roundDownToExactMultiple計算的是不超過maxIndexSize的最大整數倍entrySize // 比如maxIndexSize=1234567,entrySize=8,那么調整后的文件長度為1234560 raf.setLength(roundDownToExactMultiple(maxIndexSize, entrySize)) } // 第4步:更新索引長度字段_length _length = raf.length() // 第5步:創建MappedByteBuffer對象 val idx = { if (writable) raf.getChannel.map(FileChannel.MapMode.READ_WRITE, 0, _length) else raf.getChannel.map(FileChannel.MapMode.READ_ONLY, 0, _length) } /* set the position in the index for the next entry */ // 第6步:如果是新創建的索引文件,將MappedByteBuffer對象的當前位置置成0 // 如果索引文件已存在,將MappedByteBuffer對象的當前位置設置成最后一個索引項所在的位置 if(newlyCreated) idx.position(0) else idx.position(roundDownToExactMultiple(idx.limit(), entrySize)) // 第7步:返回創建的MappedByteBuffer對象 idx } finally { CoreUtils.swallow(raf.close(), AbstractIndex) // 關閉打開索引文件句柄 } }

    這些代碼最主要的作用就是創建 mmap 對象,AbstractIndex 其他大部分的操作都是和 mmap 相關。

    比如:

    // 如果我們要計算索引對象中當前有多少個索引項,只需要執行下列計算:protected var _entries: Int = mmap.position() / entrySize // 如果我們要計算索引文件最多能容納多少個索引項,只要定義下面的變量就行了:private[this] var _maxEntries: Int = mmap.limit() / entrySize // 再進一步,有了這兩個變量,我們就能夠很容易地編寫一個方法,來判斷當前索引文件是否已經寫滿:def isFull: Boolean = _entries >= _maxEntries

    3. 寫入索引項

    下面這段代碼是 OffsetIndex 的 append 方法,用于向索引文件中寫入新索引項。

    def append(offset: Long, position: Int): Unit = { inLock(lock) { // 第1步:判斷索引文件未寫滿 require(!isFull, "Attempt to append to a full index (size = " + _entries + ").") // 第2步:必須滿足以下條件之一才允許寫入索引項: // 條件1:當前索引文件為空 // 條件2:要寫入的位移大于當前所有已寫入的索引項的位移——Kafka規定索引項中的位移值必須是單調增加的 if (_entries == 0 || offset > _lastOffset) { trace(s"Adding index entry $offset => $position to ${file.getAbsolutePath}") mmap.putInt(relativeOffset(offset)) // 第3步A:向mmap中寫入相對位移值 mmap.putInt(position) // 第3步B:向mmap中寫入物理位置信息 // 第4步:更新其他元數據統計信息,如當前索引項計數器_entries和當前索引項最新位移值_lastOffset _entries += 1 _lastOffset = offset // 第5步:執行校驗。寫入的索引項格式必須符合要求,即索引項個數*單個索引項占用字節數匹配當前文件物理大小,否則說明文件已損壞 require(_entries * entrySize == mmap.position(), entries + " entries but file position in index is " + mmap.position() + ".") } else { // 如果第2步中兩個條件都不滿足,不能執行寫入索引項操作,拋出異常 throw new InvalidOffsetException(s"Attempt to append an offset ($offset) to position $entries no larger than" + s" the last offset appended (${_lastOffset}) to ${file.getAbsolutePath}.") } } }

    4. 查找索引項

    索引項的寫入邏輯并不復雜,難點在于如何查找索引項。AbstractIndex 定義了抽象方法 parseEntry 用于查找給定的索引項,如下所示:

    protected def parseEntry(buffer: ByteBuffer, n: Int): IndexEntry

    這里的 “n” 表示要查找給定 ByteBuffer 中保存的第 n 個索引項, IndexEntry 是源碼定義的一個接口,里面有兩個方法:indexKey 和 indexValue,分別返回不同類型索引的對。

    OffsetIndex 實現 parseEntry 的邏輯如下:

    override protected def parseEntry(buffer: ByteBuffer, n: Int): OffsetPosition = { OffsetPosition(baseOffset + relativeOffset(buffer, n), physical(buffer, n)) }

    OffsetPosition 是 IndexEntry 的實現類,Key 就是之前說的位移值,而 Value 就是物理磁盤位置值。所以,這里你能看到代碼調用了 relativeOffset(buffer, n) + baseOffset 計算出絕對位移值,之后調用 physical(buffer, n) 計算物理磁盤位置,最后將它們封裝到一起作為一個獨立的索引項返回。

    有了 parseEntry 方法,我們就能夠根據給定的 n 來查找索引項了。但是,這里還有個問題需要解決,那就是,我們如何確定要找的索引項在第 n 個槽中呢?也就是如何從一組已排序的數中快速定位符合條件的那個數,二分查找登場。

    5. 二分查找算法

    到目前為止,從已排序數組中尋找某個數字最快速的算法就是二分查找了,它能做到 O(lgN) 的時間復雜度。Kafka 的索引組件就應用了二分查找算法。

    原版的實現代碼:

    private def indexSlotRangeFor(idx: ByteBuffer, target: Long, searchEntity: IndexSearchEntity): (Int, Int) = { // 第1步:如果當前索引為空,直接返回對 if(_entries == 0) return (-1, -1) // 第2步:要查找的位移值不能小于當前最小位移值 if(compareIndexEntry(parseEntry(idx, 0), target, searchEntity) > 0) return (-1, 0) // binary search for the entry // 第3步:執行二分查找算法 var lo = 0 var hi = _entries - 1 while(lo < hi) { val mid = ceil(hi/2.0 + lo/2.0).toInt val found = parseEntry(idx, mid) val compareResult = compareIndexEntry(found, target, searchEntity) if(compareResult > 0) hi = mid - 1 else if(compareResult < 0) lo = mid else return (mid, mid) } (lo, if (lo == _entries - 1) -1 else lo + 1)

    這段代碼的核心是,第 3 步的二分查找算法。常刷算法題的朋友,再熟悉不過了。

    6. 改進版二分查找算法

    大多數操作系統使用頁緩存來實現內存映射,而目前幾乎所有的操作系統都使用 LRU(Least Recently Used)或類似于 LRU 的機制來管理頁緩存。Kafka 寫入索引文件的方式是在文件末尾追加寫入,而幾乎所有的索引查詢都集中在索引的尾部。這么來看的話,LRU 機制是非常適合 Kafka 的索引訪問場景的。

    但,這里有個問題是,當 Kafka 在查詢索引的時候,原版的二分查找算法并沒有考慮到緩存的問題,因此很可能會導致一些不必要的缺頁中斷(Page Fault)。此時,Kafka 線程會被阻塞,等待對應的索引項從物理磁盤中讀出并放入到頁緩存中。

    下面舉個例子來說明一下這個情況。假設 Kafka 的某個索引占用了操作系統頁緩存 13 個頁(Page),如果待查找的位移值位于最后一個頁上,也就是 Page 12,那么標準的二分查找算法會依次讀取頁號 0、6、9、11 和 12,具體的流程不過多敘述。

    接下來是重點:

    通常來說,一個頁上保存了成百上千的索引項數據。隨著索引文件不斷被寫入,Page 12 不斷地被填充新的索引項。如果此時索引查詢方都來自 ISR 副本或 Lag 很小的消費者,那么這些查詢大多集中在對 Page 12 的查詢,因此,Page 0、6、9、11、12 一定經常性地被源碼訪問。也就是說,這些頁一定保存在頁緩存上。

    后面當新的索引項填滿了 Page 12,頁緩存就會申請一個新的 Page 來保存索引項,即 Page 13。現在,最新索引項保存在 Page 13 中。如果要查找最新索引項,原版二分查找算法將會依次訪問 Page 0、7、10、12 和 13。此時,問題來了:Page 7 和 10 已經很久沒有被訪問過了,它們大概率不在頁緩存中,因此,一旦索引開始征用 Page 13,就會發生 Page Fault,等待那些冷頁數據從磁盤中加載到頁緩存。根據資料查詢,這種加載過程可能長達 1 秒。顯然,這是一個普遍的問題,即每當索引文件占用 Page 數發生變化時,就會強行變更二分查找的搜索路徑,從而出現不在頁緩存的冷數據必須要加載到頁緩存的情形,而這種加載過程是非常耗時的。

    基于這個問題,社區提出了改進版的二分查找策略,也就是緩存友好的搜索算法。總體的思路是,代碼將所有索引項分成兩個部分:熱區(Warm Area)和冷區(Cold Area),然后分別在這兩個區域內執行二分查找算法,如下圖所示:

    同樣是查詢最熱的那部分數據,一旦索引占用了更多的 Page,要遍歷的 Page 組合就會發生變化。這是導致性能下降的主要原因。這個改進版算法的最大好處在于,查詢最熱那部分數據所遍歷的 Page 永遠是固定的,因此大概率在頁緩存中,從而避免無意義的 Page Fault。

    看到這個設計時,我真的感覺到算法的精妙以及commiter的NB。

    看下實際的代碼:

    private def indexSlotRangeFor(idx: ByteBuffer, target: Long, searchEntity: IndexSearchEntity): (Int, Int) = { // 第1步:如果索引為空,直接返回對 if(_entries == 0) return (-1, -1) // 封裝原版的二分查找算法 def binarySearch(begin: Int, end: Int) : (Int, Int) = { // binary search for the entry var lo = begin var hi = end while(lo < hi) { val mid = (lo + hi + 1) >>> 1 val found = parseEntry(idx, mid) val compareResult = compareIndexEntry(found, target, searchEntity) if(compareResult > 0) hi = mid - 1 else if(compareResult < 0) lo = mid else return (mid, mid) } (lo, if (lo == _entries - 1) -1 else lo + 1) } // 第3步:確認熱區首個索引項位于哪個槽。_warmEntries就是所謂的分割線,目前固定為8192字節處 // 如果是OffsetIndex,_warmEntries = 8192 / 8 = 1024,即第1024個槽 // 如果是TimeIndex,_warmEntries = 8192 / 12 = 682,即第682個槽 val firstHotEntry = Math.max(0, _entries - 1 - _warmEntries) // 第4步:判斷target位移值在熱區還是冷區 if(compareIndexEntry(parseEntry(idx, firstHotEntry), target, searchEntity) < 0) { return binarySearch(firstHotEntry, _entries - 1) // 如果在熱區,搜索熱區 } // 第5步:確保target位移值不能小于當前最小位移值 if(compareIndexEntry(parseEntry(idx, 0), target, searchEntity) > 0) return (-1, 0) // 第6步:如果在冷區,搜索冷區 binarySearch(0, firstHotEntry)

    最后來張兩個算法的總結:

    7. 空間與時間的互換

    到二分查找還沒完,日志段有個參數 indexIntervalBytes, 可以理解為插了多少條消息之后再建一個索引,由此看出kafka的索引其實是稀疏索引,這樣可以避免索引文件占用過多的內存,從而可以在內存中保存更多的索引。對應Broker端參數就是 log.index.interval.bytes 值,默認4kb。

    實際的通過索引查找消息的過程是通過offset找到索引所在的文件,然后通過二分法找到離目標最近的索引,再順序遍歷消息文件找到目標文件。復雜度為 O(log2n)+O(m), n是索引文件里索引的個數,m為稀疏程度。

    這就是時間和空間的互換,數據結構和算法的平衡。

    總結

    以上是生活随笔為你收集整理的ad09只在一定范围内查找相似对象_kafka日志段中的二分查找的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    天天色天天综合 | 五月开心激情 | 国产成人精品久久久 | 国产精品久久久久久一二三四五 | 亚洲人成在线观看 | 精品久久久影院 | 啪啪肉肉污av国网站 | 婷婷午夜激情 | 欧美最猛性xxx | 超碰在线最新地址 | 91看毛片 | 麻豆一精品传二传媒短视频 | 在线观看免费av片 | 日日日日 | 99在线免费观看 | 天天综合导航 | 日韩色高清 | 日韩精品一区电影 | 日日爱av| 夜夜嗨av色一区二区不卡 | 国内久久精品视频 | 午夜18视频在线观看 | 天天爱天天色 | 在线看片中文字幕 | 欧美性生活免费看 | 国产欧美精品在线观看 | 公与妇乱理三级xxx 在线观看视频在线观看 | 亚洲伊人网在线观看 | 在线成人一区 | 日韩伦理一区二区三区av在线 | 成人在线一区二区三区 | 国产999久久久 | 99在线观看视频网站 | 国产一级片播放 | 欧美日本高清视频 | 在线观看麻豆av | 欧美美女视频在线观看 | 99精品在线直播 | 在线观看免费视频 | 99久久精品一区二区成人 | 欧美日韩亚洲在线观看 | 五月天久久狠狠 | 日韩理论在线 | 日本在线中文 | 天天操天天干天天插 | 日韩性色 | 欧美激情综合色综合啪啪五月 | 久久手机免费观看 | 开心激情五月婷婷 | 国产精品高 | 成年人网站免费观看 | www最近高清中文国语在线观看 | 91九色国产视频 | 久草观看 | 91麻豆精品国产自产在线游戏 | 午夜少妇一区二区三区 | 国产又粗又猛又黄又爽视频 | 成人啪啪18免费游戏链接 | 91网站在线视频 | 二区三区中文字幕 | 色婷婷午夜 | 国产午夜精品一区二区三区在线观看 | 3d黄动漫免费看 | 丝袜美腿一区 | 欧美日韩精品二区第二页 | 亚洲一区二区三区毛片 | 国产小视频在线免费观看 | 成人在线观看av | 国产又黄又爽又猛视频日本 | 久久九九国产视频 | 国产在线精品一区二区三区 | 91禁看片| 免费开视频 | 成人一区二区三区在线 | 五月天中文字幕mv在线 | 亚洲精品视频在线播放 | 亚洲精品66| 精品国产99国产精品 | 日韩aⅴ视频 | 黄色毛片视频免费 | 91人人爱| 亚洲精品在线一区二区 | 一级a性色生活片久久毛片波多野 | 久久神马影院 | 操高跟美女 | 色天天天 | 波多野结衣动态图 | 美女久久精品 | 91福利视频免费观看 | 狠狠的操狠狠的干 | 久久天天操 | 久草在线资源观看 | 最近高清中文在线字幕在线观看 | 狠狠躁夜夜躁人人爽超碰91 | 久久国内免费视频 | 精品国产一区在线观看 | 91福利影院在线观看 | 91爱看片| 91精品一区二区三区久久久久久 | 免费人做人爱www的视 | 亚洲视频 一区 | 婷婷激情小说网 | www.国产在线 | 久草在线在线精品观看 | 日韩精品中文字幕在线 | 狠狠色综合网站久久久久久久 | 激情综合色图 | 国产福利网站 | 香蕉手机在线 | 高清不卡一区二区在线 | 天堂久久电影网 | 日韩精品网址 | 日韩精品91偷拍在线观看 | 日韩欧美中文 | 精品国产一区二区三区日日嗨 | av中文字幕日韩 | 精品久久久久_ | 亚洲日本激情 | 成人一级影视 | 99精品国产一区二区三区不卡 | 在线视频你懂 | 中文字幕有码在线观看 | 国产视频2区 | 青草视频在线 | 欧美日韩精品在线播放 | 久久在线免费 | 国产破处精品 | 久久久亚洲国产精品麻豆综合天堂 | 五月天天在线 | 超碰av在线播放 | 国产婷婷 | 天天操一操 | 国产日产在线观看 | 国产91精品久久久久 | 国产成人久久77777精品 | 日韩天天操 | 国产视频精品免费播放 | 日韩久久久久久久久久久久 | a极黄色片 | 中文字幕一区二区三区在线视频 | 久久99热这里只有精品国产 | 婷婷色影院 | 日韩精品中文字幕在线不卡尤物 | 91精品国产麻豆国产自产影视 | 国产自制av | 五月天婷婷综合 | 亚洲精品乱码久久久久久久久久 | 在线色资源 | 国产一区二区在线免费 | 欧美有色 | 天天做夜夜做 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 天天操夜夜曰 | 中文字幕在线观看第二页 | 国产高清日韩欧美 | 国产美女免费观看 | 久久精品视频观看 | 人人看人人做人人澡 | 欧美亚洲成人免费 | 国产一级片在线播放 | 日韩大片在线免费观看 | 日韩av一区二区在线影视 | 高清有码中文字幕 | 久久99国产精品二区护士 | av高清免费在线 | 在线视频麻豆 | 99精品美女| 国产精品 国产精品 | 在线观看的黄色 | 国产免费黄色 | 国产视频二区三区 | 国产成人综合精品 | 国产黄色视 | 成人在线网站观看 | 久久精品96 | av免费高清观看 | 国产91成人在在线播放 | 91大神精品视频在线观看 | 久久免费毛片视频 | 免费观看的av网站 | 久久久久成人免费 | 中日韩欧美精彩视频 | 国产成人精品一区一区一区 | 麻豆成人网 | 97视频在线免费观看 | 亚洲欧美国产精品久久久久 | 欧洲av不卡 | 91精品国自产在线偷拍蜜桃 | 一级免费av| 午夜久久网站 | 五月天色站 | av一级久久 | 亚洲精品久久久蜜桃 | 中文av日韩| 久久精品99久久久久久 | 日韩精品中文字幕在线播放 | 久久字幕网 | 国产午夜在线观看视频 | 中文字幕91 | 伊人伊成久久人综合网小说 | 国产又粗又猛又色又黄网站 | 国产精品99久久久久 | 在线看免费 | 日韩www在线 | 日韩免费视频网站 | 国产涩涩网站 | 国产精品五月天 | 日韩精品免费在线 | 97在线精品国自产拍中文 | 天天操操操操操操 | 成年人黄色免费视频 | 国产精品视频免费看 | 亚洲精品国精品久久99热一 | 97超碰站 | 日韩高清一 | av在线免费观看不卡 | 国产视频在线播放 | 久久婷婷一区二区三区 | 91九色最新| 国产一区二区手机在线观看 | 久久成年人网站 | 久久久三级视频 | 亚洲国产精品一区二区尤物区 | 国产系列精品av | 亚洲国产精品久久久 | 亚洲精品国产成人 | 久久久久免费精品 | 免费av高清 | 久久成人国产精品 | 成人午夜在线电影 | 天天射天天干天天操 | 精品欧美一区二区精品久久 | 午夜视频一区二区 | 国产色黄网站 | 久久综合狠狠综合 | 99国内精品 | 日韩欧美精品在线观看视频 | 国产精品 9999| 欧美婷婷综合 | 最近中文字幕免费大全 | 操老逼免费视频 | 精品一二三区视频 | www.综合网.com| 樱空桃av | 国产精品自在线拍国产 | 久久久久国产精品免费免费搜索 | 亚洲午夜小视频 | 国产精彩视频 | 91九色蝌蚪在线 | 国产精品欧美久久久久久 | 欧美日韩高清一区二区 | 欧美孕妇视频 | 中文字幕丰满人伦在线 | 99热精品国产一区二区在线观看 | 九九热在线免费观看 | 亚洲国产中文字幕 | 欧美在线视频一区二区三区 | 久久经典视频 | 在线观看免费黄色 | 成人禁用看黄a在线 | 欧美a级免费视频 | av中文字幕在线电影 | 99国产精品视频免费观看一公开 | 久草在线视频国产 | 免费福利在线观看 | 91污在线观看 | 99在线视频网站 | 国产裸体bbb视频 | 日韩大片在线看 | 日韩字幕在线 | 免费看国产黄色 | 日韩色一区二区三区 | 色久综合 | 一 级 黄 色 片免费看的 | 国产精品av一区二区 | 欧美日韩国产在线精品 | 国产精品日韩精品 | 黄色a在线观看 | 美女黄频在线观看 | 日批在线看| 狠狠色伊人亚洲综合网站野外 | 成人欧美一区二区三区黑人麻豆 | 久久在线观看视频 | 日韩中文字幕免费电影 | 久久久黄色免费网站 | 国产精品久久久久久久久久了 | 五月婷婷丁香在线观看 | 久久精品欧美一区 | 中文不卡视频在线 | 久久精品99国产精品日本 | 精品在线一区二区 | 玖玖999| 国产视频九色蝌蚪 | 黄污视频网站 | 国产高清一| 伊人久久电影网 | 日韩av黄 | 黄色www在线观看 | 成人午夜剧场在线观看 | 在线观看成人网 | 激情综合网在线观看 | 日韩免费高清在线观看 | 国产精品爽爽久久久久久蜜臀 | 精品久久久久一区二区国产 | 欧美亚洲国产精品久久高清浪潮 | 五月色婷 | 国产伦理久久 | 偷拍精品一区二区三区 | 午夜精品福利影院 | 免费av一级电影 | 激情综合电影网 | 97色在线| 免费看一级片 | 99爱在线 | 中文在线资源 | 婷婷丁香色综合狠狠色 | 国产一级片不卡 | 亚洲精品国产成人av在线 | 日韩在线视频网站 | 日韩精品一区二区在线视频 | 99婷婷狠狠成为人免费视频 | 精品免费国产一区二区三区四区 | 最近中文字幕视频完整版 | 超碰伊人网 | 九九视频精品免费 | 国产美腿白丝袜足在线av | 国产精品福利av | 444av| 人人爽人人爽人人片av免 | 亚洲国产精品500在线观看 | 日韩精品免费专区 | 97国产情侣爱久久免费观看 | 天天综合网 天天综合色 | 国产又粗又猛又爽又黄的视频免费 | 久久综合色天天久久综合图片 | 激情视频免费在线 | 在线观看中文字幕视频 | 午夜精品一区二区三区在线视频 | 日韩电影久久久 | 国产亚洲久久 | 99久久精品国产观看 | 亚洲视频专区在线 | 亚洲精品h| 激情丁香在线 | 国产精品久久久久久久久岛 | 97电院网手机版 | 国产91成人在在线播放 | 精品人妖videos欧美人妖 | 日女人免费视频 | 国产成人在线看 | 91福利视频网站 | 国产专区第一页 | 日韩免费在线视频观看 | 探花在线观看 | 一区在线播放 | 色小说av| 人人干人人草 | 成人黄色毛片 | 最近日本韩国中文字幕 | 亚洲 综合 精品 | 久久99精品久久久久蜜臀 | 成年人在线播放视频 | 91视频久久久 | 国产日韩精品一区二区在线观看播放 | 国产九九九九九 | 伊人色**天天综合婷婷 | 国产免费人人看 | 国产视频一区在线 | 亚洲在线a| 九九久久久久99精品 | 国产精品一区二区av影院萌芽 | 成年人在线免费看片 | 精品伦理一区二区三区 | 免费看片日韩 | 操操碰| 超碰公开在线观看 | 亚洲三级黄色 | 热久久在线视频 | 亚洲精选在线观看 | 天天天色 | 亚洲欧洲精品视频 | 国产美女主播精品一区二区三区 | 中文字幕一区二区三区乱码在线 | 国产又粗又猛又黄 | 日韩在线观看视频免费 | 一区二区三区在线视频111 | 欧美日韩中文字幕综合视频 | 国产97视频在线 | 天天干.com| 欧美91成人网 | 亚洲丝袜中文 | 久爱精品在线 | 香蕉视频在线免费 | 国产999精品久久久久久绿帽 | 欧美夫妻性生活电影 | av网址在线播放 | 超薄丝袜一二三区 | 国产精品激情 | 久久99精品久久久久蜜臀 | 91中文字幕网 | 日本激情视频中文字幕 | 久久综合久久鬼 | 91久久精| 一级免费黄视频 | 欧美另类交人妖 | 久久免费中文视频 | 久久字幕网 | 日日干天天爽 | 日韩精品视频在线观看网址 | 操操综合 | 中文字幕久久亚洲 | 超碰在97 | 中文字幕无吗 | 91久久久久久久一区二区 | 国产美女在线免费观看 | 日韩精品久久久久久久电影竹菊 | 欧美福利网站 | 久久国产精品视频观看 | 国产精品视频观看 | 欧美一区二区三区激情视频 | 欧美日韩二三区 | 最近中文字幕免费视频 | www狠狠| 国内精品久久久精品电影院 | 国产主播大尺度精品福利免费 | 亚洲精色| 狠狠色丁香婷婷综合最新地址 | 男女日麻批 | 国产一区二区综合 | 午夜精品久久久 | 成人91在线观看 | 中文字幕一区二区三区久久 | 欧美日韩在线免费视频 | 亚洲一级黄色大片 | 日韩av影视在线观看 | 手机在线欧美 | 超碰av在线 | 91九色成人 | 91精品区| 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产精品美女久久久久久久久 | 天天操天天操一操 | 日韩成人不卡 | 丁香激情综合 | 日韩精品大片 | 一本色道久久综合亚洲二区三区 | 香蕉视频啪啪 | 色视频国产直接看 | www.黄色片网站 | 日韩网站免费观看 | 国产午夜一区 | 99热精品国产一区二区在线观看 | 日韩三级中文字幕 | 日本成人中文字幕在线观看 | 天堂av中文字幕 | 国产精品久久久久久久久久久久 | 成人免费视频网址 | 天天操天天舔天天干 | 精品夜夜嗨av一区二区三区 | 91麻豆精品国产91久久久无限制版 | 青青河边草免费直播 | 国产黄色免费 | 国产韩国日本高清视频 | 色综合国产 | 国产精品手机播放 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 91亚洲精品国偷拍 | 激情 婷婷 | 天天天综合网 | 日韩 在线观看 | 久久久国产精品久久久 | 免费在线一区二区三区 | 欧美午夜寂寞影院 | 国内精品久久久久影院优 | 国产精品亚洲人在线观看 | 日韩 在线a | 国产原创91 | 中文字幕五区 | 天天操人人干 | 国产成人l区 | 亚洲五月婷婷 | 亚洲精品合集 | 亚洲视频电影在线 | 中文字幕视频播放 | 欧美极品一区二区三区 | 在线观看午夜 | 欧美日韩免费一区二区三区 | 在线高清一区 | 六月激情丁香 | av在线免费观看网站 | 婷婷网站天天婷婷网站 | 精品产品国产在线不卡 | 人人看人人做人人澡 | 在线色亚洲 | 久久精品这里热有精品 | 久久不见久久见免费影院 | 欧美激情片在线观看 | 婷婷色网| 免费高清av在线看 | 精品久久五月天 | 在线观看中文字幕av | 五月婷婷色播 | 中文字幕精品三区 | 亚洲精品黄色在线观看 | 成人av网站在线观看 | 亚洲高清色综合 | 久久一及片 | 色中色资源站 | 五月天久久综合 | 五月婷婷色综合 | 国产精品久久中文字幕 | 欧美日韩亚洲国产一区 | 亚洲经典中文字幕 | 亚洲乱码中文字幕综合 | 久久日韩精品 | 国产成人黄色 | 黄色91免费观看 | 成人91在线观看 | 草久视频在线观看 | 国产1区2区 | 精品在线看 | 中文在线字幕免费观看 | 91精品国产99久久久久久久 | 成人在线视频免费 | 亚洲综合最新在线 | 日韩欧美综合视频 | 男女激情网址 | 亚洲欧洲精品在线 | 日韩午夜视频在线观看 | 日韩三级视频在线看 | 西西人体4444www高清视频 | 久久情爱| 九草视频在线观看 | 亚洲国产精品久久久久婷婷884 | 一本一本久久aa综合精品 | 久久精品亚洲综合专区 | 一区二区三区视频在线 | 一区二区三区四区精品视频 | 激情五月婷婷网 | 色婷婷视频在线 | 91看成人 | 麻豆av一区二区三区在线观看 | 伊人久久国产 | 综合网伊人 | 人人看人人草 | 黄污视频网站 | 亚洲综合精品在线 | 国产免费美女 | 久久久资源网 | 国产精品粉嫩 | 99久久日韩精品视频免费在线观看 | 国产自产高清不卡 | 婷婷在线看 | 久久99久国产精品黄毛片入口 | 久久男人中文字幕资源站 | 日韩av伦理片 | 欧美性猛片, | 成年人视频在线免费观看 | 精品中文字幕视频 | 国产一级免费在线观看 | 午夜精品久久久久久久99水蜜桃 | 亚洲国产欧美在线人成大黄瓜 | 亚洲精品视频二区 | 免费福利片2019潦草影视午夜 | 91精品啪在线观看国产81旧版 | 国产精品theporn| 国产在线精品一区二区 | 国产一级特黄电影 | 欧美嫩草影院 | 日韩激情视频在线 | 国产亚洲精品久久久久动 | 亚洲永久精品一区 | av在线8 | 欧美在线视频精品 | 九九99 | 欧美日韩视频 | 亚洲精品男女 | 国产免费亚洲高清 | 国产精品18p | 国产视频一区在线免费观看 | 国产日韩在线一区 | 91原创在线观看 | 国产一区二区三区久久久 | 欧美国产日韩一区 | 97超碰福利久久精品 | 午夜精品一区二区三区在线 | 亚洲精品成人av在线 | 又色又爽又黄 | 成人黄色电影在线播放 | 中文一区在线 | 亚洲一区二区视频在线 | 在线观看岛国片 | 不卡视频一区二区三区 | 精品毛片久久久久久 | 国产中文字幕网 | 精品久久综合 | 久久久婷 | 久久黄色免费 | 精品视频www | 国产成人精品久久亚洲高清不卡 | 天天插狠狠干 | 69视频网站 | 国产精品久久在线 | 麻豆视频免费看 | 国产91综合一区在线观看 | 成人一级片在线观看 | 精品久久中文 | 久草视频国产 | 国产亚洲婷婷免费 | 国产精品欧美久久久久无广告 | 亚洲五月| 久久精品国产99 | 一级黄色av | 久久黄色小说视频 | 国产一区免费观看 | 精品在线观看一区二区三区 | 日韩有码中文字幕在线 | 国产亚洲精品免费 | 久久精品国产一区二区电影 | 丁香六月国产 | 操久| 在线天堂视频 | 又色又爽又黄高潮的免费视频 | 男女啪啪网站 | 久久国产精品免费看 | 亚洲国产人午在线一二区 | 日韩视频一区二区三区在线播放免费观看 | 亚洲高清在线观看视频 | 亚洲激情中文 | 六月激情网 | 极品美女被弄高潮视频网站 | 国产精品久久久久久久久婷婷 | 欧美精品一区二区在线播放 | 日韩精品一区二区在线观看视频 | 蜜臀久久99精品久久久无需会员 | 色射色| 久久综合九色综合久久久精品综合 | 狠狠狠狠狠操 | 亚洲一区日韩在线 | 黄色aa久久 | 在线欧美最极品的av | 免费av网址在线观看 | 亚洲国产精品500在线观看 | 激情黄色av | 在线观看国产www | 91麻豆精品国产91久久久无需广告 | 国产精品乱码一区二三区 | 97成人精品区在线播放 | 91成人精品在线 | 欧美精品亚洲精品日韩精品 | 久久国产欧美日韩 | 91欧美国产 | 91高清视频在线 | 久久久久久久综合色一本 | 97av精品| 最新av在线播放 | 欧美片网站yy | 四虎成人免费观看 | 日韩 在线a | 久久久三级视频 | 国产精品一二 | 免费在线中文字幕 | 成人免费观看网址 | 成人av网站在线播放 | 色综合中文综合网 | 四虎国产精品免费观看视频优播 | 久久香蕉一区 | 日韩av手机在线观看 | 亚洲精品在线视频网站 | 亚洲欧美视频一区二区三区 | 亚洲在线视频免费 | 欧美aaa大片| 日本久久精 | 在线电影 一区 | 久久久久成人精品免费播放动漫 | 国产成人精品午夜在线播放 | 五月天久久狠狠 | 日本精品视频在线 | 国产久草在线观看 | 99色亚洲 | 99在线免费观看视频 | 丝袜制服综合网 | 曰本三级在线 | 成人免费在线播放视频 | 高清国产在线一区 | 91在线播放视频 | 一区二区三区国 | 97精品国产97久久久久久免费 | 日韩性xxxx| 欧美性生活小视频 | 成人免费观看网站 | 日本动漫做毛片一区二区 | 国产99久| 亚洲一区二区精品 | 在线观看视频你懂得 | 狠狠操91 | 91视频免费视频 | 91少妇精拍在线播放 | 国产最新视频在线观看 | 成人久久久久久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美日韩一区二区在线 | 永久黄网站色视频免费观看w | 国产又粗又猛又色 | 久草在线中文视频 | 国产99久久精品一区二区300 | 天天爱天天操天天爽 | 97成人资源站 | 亚洲精品在线免费 | 人人干人人做 | 欧美一级看片 | 久久tv视频| 最新日韩视频 | 91免费的视频在线播放 | 国产美女精品视频 | 欧美色888 | 免费手机黄色网址 | 午夜精品久久久久久久久久久久 | 久久精品看 | 日韩美女免费线视频 | 91久久影院 | 中文字幕视频在线播放 | 色老板在线视频 | 中文字幕黄网 | 国产精品系列在线观看 | 永久免费的av电影 | 中文字幕在线观看完整版电影 | 欧美孕交vivoestv另类 | 国产xxxx性hd极品 | 天天干夜夜爱 | 日本精品视频在线 | 久久精品视频国产 | 日韩aa视频 | 亚洲综合情| 97人人艹 | 日本中文字幕网址 | 久久观看 | 欧美日韩久 | 色综合咪咪久久网 | 久久精品视频99 | 激情综合站 | 狠狠干在线| 制服丝袜欧美 | 亚洲欧美国产日韩在线观看 | 一区二区三区在线影院 | 99久久精品国产一区二区三区 | 在线免费视频一区 | 亚洲成人第一区 | 久久九九影院 | 日韩欧美高清在线 | 精品国产一区二区三区噜噜噜 | 狠狠色丁香久久综合网 | 日韩国产精品一区 | 精品夜夜嗨av一区二区三区 | 国产一区二区精品久久 | 99精品偷拍视频一区二区三区 | 九九热视频在线 | 欧美精彩视频 | 中文av影院 | 中文字幕久久亚洲 | 波多野结衣在线观看一区 | 福利电影久久 | 精品国产美女在线 | 日韩在线视频线视频免费网站 | 91免费网址 | 欧美日韩国产精品一区二区三区 | 肉色欧美久久久久久久免费看 | 成年人免费在线观看 | 国产精品网站一区二区三区 | 超碰免费观看 | 中国美女一级看片 | 这里有精品在线视频 | 久久久久久久久影视 | 国产综合在线观看视频 | 天天五月天色 | 国内少妇自拍视频一区 | 成年人在线免费看视频 | 日本二区三区在线 | 91网免费看 | 99精品国产99久久久久久福利 | 日韩av一区在线观看 | 欧美精品中文在线免费观看 | 国产一区二区久久久久 | 日韩一区二区三区免费视频 | 成人理论电影 | 亚洲精区二区三区四区麻豆 | 91精品国产99久久久久 | 国产精品国产三级国产aⅴ无密码 | 精品在线播放视频 | 97超碰在线资源 | 国产精品成人一区二区三区吃奶 | 成人免费观看完整版电影 | 国产精品久久久久久久久久久杏吧 | 国产91丝袜在线播放动漫 | 在线观看av的网站 | 探花视频免费观看 | 99热最新| 日韩欧美在线观看 | 91看片在线 | 精品一区二区日韩 | 日本大片免费观看在线 | 91黄在线看 | 亚洲欧美视频在线观看 | 超碰大片| 激情在线五月天 | 久久99国产精品二区护士 | 高清在线一区二区 | 欧美久久久久久久久久 | 亚洲欧美日本一区二区三区 | 精品国产伦一区二区三区观看体验 | 婷婷5月激情5月 | 成人av免费在线播放 | 国产成人黄色片 | 99爱这里只有精品 | 黄色在线免费观看网站 | 日韩免费电影一区二区 | 国产精品资源网 | 在线黄av | 黄色影院在线免费观看 | 超碰人人超碰 | 国产精品久久人 | 国产 亚洲 欧美 在线 | 精品综合久久 | 精品一区二区久久久久久久网站 | 不卡日韩av | 一区二区观看 | 日韩视频在线观看免费 | 国产五月色婷婷六月丁香视频 | 在线观看不卡视频 | 国产精品免费久久久久久久久久中文 | 热久久视久久精品18亚洲精品 | 中文字幕有码在线观看 | 欧美日韩一区三区 | 97热视频 | 91精品视频免费看 | 国产另类xxxxhd高清 | 日韩高清www | 久久久久久久久久伊人 | 91色综合 | 99九九热只有国产精品 | 五月天综合网 | 日韩在线观看一区二区 | 久久精品亚洲 | 久久超碰99| 97国产在线| 成人中文字幕在线观看 | 久久久久免费精品 | 亚洲理论片 | 亚洲国产日韩一区 | av网址在线播放 | 日日草夜夜操 | 国外调教视频网站 | 日韩在线观看免费 | 国产又粗又猛又色又黄视频 | 狠狠网站 | 91人人干 | 91精品一区在线观看 | av免费观看高清 | 久久伊人国产精品 | 高清av免费观看 | 在线亚洲欧美日韩 | 开心激情婷婷 | 亚洲精品合集 | 日韩av在线看 | 亚洲一区av| 91精品影视 | 中文字幕中文 | 天天草天天插 | 2023国产精品自产拍在线观看 | 国产小视频91 | 黄色在线观看免费网站 | 成人av免费播放 | 97av免费视频| 日日爱夜夜爱 | 亚洲三级网 | 97精品国产97久久久久久春色 | 视频在线观看入口黄最新永久免费国产 | 成人午夜网址 | 激情黄色一级片 | 欧洲视频一区 | 免费男女羞羞的视频网站中文字幕 | 在线免费黄 | 91高清免费在线观看 | 天天色综合天天 | 超碰免费公开 | 天天操夜夜操 | 亚洲精品网页 | 在线观看91av | 免费亚洲一区二区 | 999久久国精品免费观看网站 | 丰满少妇在线观看网站 | 久草香蕉在线视频 | 最新的av网站 | 亚州精品天堂中文字幕 | 成人va视频| 欧美a级在线免费观看 | 久久精品99国产精品酒店日本 | 中文字幕在线观 | 在线视频一二区 | 91亚洲国产成人久久精品网站 | 久久久久国产精品午夜一区 | 国产精品久久久777 成人手机在线视频 | 免费在线电影网址大全 | 黄色影院在线免费观看 | 伊人视频 | 97国产一区 | 日韩国产欧美在线视频 | www久久com | 日本中文字幕在线看 | 国产在线精品二区 | 日韩欧美一区二区三区在线观看 | 日日夜夜人人天天 | 国产精品嫩草69影院 | 91九色蝌蚪国产 | 中文字幕美女免费在线 | 欧美日韩精品免费观看 | 久久伊人精品天天 | 在线视频观看你懂的 | 国产成人在线观看免费 | 日韩欧美视频 | 中文字幕一区二区三区在线视频 | 国产免费三级在线观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 成人三级视频 | 天天草天天干 | 综合色婷婷 | 久久精品国产久精国产 | 黄色av免费在线 | 亚洲精品www久久久 www国产精品com | 三级黄色片在线观看 | 麻豆视频免费播放 | 日韩精品一区二区电影 | 波多野结衣久久资源 | 成人午夜久久 | 久久情爱 | 成人久久久电影 | 99久高清在线观看视频99精品热在线观看视频 | 国产成人精品久久久久 | 久久成人亚洲欧美电影 | 免费色视频网址 | 网站免费黄色 | 国产成人在线看 | 激情 一区二区 | 久久久视屏| 国产精品v欧美精品 | 九九热免费精品视频 | 久久 精品一区 | 国产精品第10页 | 久久色在线观看 | 亚洲国产高清在线 | 国产在线p | 成 人 黄 色 免费播放 | 五月激情久久 | 超碰97.com | 亚洲一区二区三区精品在线观看 | 狠狠干2018 | 天天射综合网视频 | 婷婷精品进入 | 99久久久久久久久久 | 乱男乱女www7788 | 免费观看一级一片 | 波多野结衣一区 | 久久激情影院 | 欧美午夜a| 婷婷丁香av| 精品国产乱码久久久久久三级人 | 亚洲人久久久 | 国产一区二区在线免费观看 | 欧美国产亚洲精品久久久8v | 一区二区三区www | av成年人电影 | 在线观看www91| 成人黄色大片网站 | 国产中文字幕视频在线观看 | 国产啊v在线观看 | 国产永久免费高清在线观看视频 | 亚洲成人精品国产 | 免费国产黄线在线观看视频 | 综合色在线| 免费黄色在线播放 | 日韩av电影手机在线观看 | 成年人免费电影在线观看 | 成年人在线看片 | 精品免费国产一区二区三区四区 | 亚洲va在线va天堂 | 免费在线观看成人小视频 | 日韩午夜精品 | www.夜夜骑.com | 色偷偷888欧美精品久久久 | 三级av小说| 免费视频区| 欧美久久99| 日韩资源视频 | 黄色影院在线播放 | 91亚洲精品国偷拍 | 日韩精品不卡在线 | 人人看人人 | 亚洲精品xxxx |