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

ElasticSearch 是什么?工作原理是怎么樣的?

開源
Elastic Search, 也就是 es,是一個開源的搜索引擎。它介于應用和數據之間,只要將數據寫入 es,應用就可以通過一些關鍵詞搜索到數據。效果就像某度搜索一樣。

現在有三段文本,id 分別是 0、1、2,你需要快速找到哪段文本里含有關鍵詞"xiaobai".

I like xiaobai        (點贊)
I follow xiaobai      (關注)
I forward the video   (轉發)

我們很容易想到,可以依次遍歷這三段文本,匹配文本內是否含有"xiaobai",最終將符合條件的文本 ID 輸出。
在數據量小的時候,問題不大,但如果我有上百億條這樣的數據呢?
如果依次遍歷,這一把執行下去,比你喜歡的女生回你消息的速度,還要慢。
像這種在海量數據中,通過關鍵詞檢索出有效信息的場景非常常見,比如我們網購用的某寶和某東的站內商品搜索。那么問題就來了,怎么處理類似的搜索場景呢?
好辦,沒有什么是加一層中間層不能解決的,如果有,那就再加一層。
這次我們要加的中間層是 elasticSearch。

什么是 elasticSearch

elastic Search, 也就是 es,是一個開源的搜索引擎。
它介于應用數據之間,只要將數據寫入 es,應用就可以通過一些關鍵詞搜索到數據。效果就像某度搜索一樣。
那它是怎么做到的呢?我們從倒排索引聊起。

什么是倒排索引

回到文章開頭的例子。依次遍歷文本匹配是否含有"xiaobai",確實低效。那有更高效的解法嗎?有,我們可以對文本進行切分,比如"I like xiaobai"切分為"I"、"like"、"xiaobai"三部分,這個操作叫分詞,分詞后的每部分,我們稱為一個詞項,也就是 term。記錄詞項和文本 id 的關系,于是上面的三段文本就變成了下面這樣。

term

文本 id

I

0, 1, 2

like

0

xiaobai

0, 1

follow

1

forward

2

the

2

video

2

當我們想要搜索 xiaobai 的時候,只需要匹配到 xiaobai 詞項,就可以立馬得到它所在的文檔 id 是 0 和 1。但這有個問題,短短三句話,就已經有這么多詞項了,要是換成三篇文檔,那詞項就會多得離譜,怎么在這么多的詞項里匹配出 xiaobai 呢?挨個遍歷的話,時間復雜度就是 O(N), 太低效了。

怎么辦呢?我們可以將詞項按字典序從小到大排序,通過二分查找的方法,直接將時間復雜度優化為 O(lgN)。就像下面這樣。

term

文檔 id

follow

1

forward

2

I

0, 1, 2

like

0

the

2

video

2

xiaobai

0, 1

我們將這堆排好序的詞項,稱為Term Dictionary,而詞項對應的文檔 id 等信息的集合,就叫 Posting List。它們共同構成了一個用于搜索的數據結構,它就是**倒排索引(Inverted Index)**。

注意,Posting List 其實還包含詞頻和詞項在文本里的偏移量等信息,但為了方便理解,我在上圖中去掉了這部分內容。

但倒排索引還有個問題,Term Dictionary 數據量很大,放內存并不現實,因此必須放在磁盤中。但查詢磁盤是個較慢的過程。有優化手段嗎?有,我們聊下 Term Index。

Term Index 是什么

我們可以發現,詞項和詞項之間,有些前綴是一致的,比如 follow 和 forward 前面的 fo 是一致的,如果我們將部分 term 前綴提取出來,像下圖一樣,就可以用更少的空間表達更多的 term。基于這個原理,我們可以將 Term Dictionary 的部分詞項提取出來,用這些 詞項 的前綴信息,構建出一個精簡的目錄樹。目錄樹的節點中存放這些詞項在磁盤中的偏移量,也就是指向磁盤中的位置。這個目錄樹結構,體積小,適合放內存中,它就是所謂的 Term Index。可以用它來加速搜索。

當我們需要查找某個詞項的時候,只需要搜索 Term Index,就能快速獲得詞項在 Term Dictionary 中的大概位置。再跳轉到 Term Dictionary,通過少量的檢索,定位到詞項內容。

Stored Fields 是什么

到這里,搜索功能就有了。但有個問題,前面提到的倒排索引,搜索到的是文檔 id,我們還需要拿著這個 id 找到文檔內容本身,才能返回給用戶。因此還需要有個地方,存放完整的文檔內容,它就是 Stored Fields(行式存儲)。

Doc Values 是什么

有了 id,我們就能從 Stored Fields 中取出文檔內容。

但用戶經常需要根據某個字段排序文檔,比如按時間排序或商品價格排序。但問題就來了,這些字段散落在文檔里。也就是說,我們需要先獲取 Stored Fields 里的文檔,再提取出內部字段進行排序。也不是說不行。但其實有更高效的做法。我們可以用空間換時間的思路,再構造一個列式存儲結構,將散落在各個文檔的某個字段,集中存放,當我們想對某個字段排序的時候,就只需要將這些集中存放的字段一次性讀取出來,就能做到針對性地進行排序。這個列式存儲結構,就是所謂的 Doc Values。

segment

在上文中,我們介紹了四種關鍵的結構:倒排索引用于搜索,Term Index 用于加速搜索,Stored Fields 用于存放文檔的原始信息,以及 Doc Values 用于排序和聚合。這些結構共同組成了一個復合文件,也就是所謂的"segment", 它是一個具備完整搜索功能的最小單元。

lucene 是什么

我們可以用多個文檔生成一份 segment,如果新增文檔時,還是寫入到這份 segment,那就得同時更新 segment 內部的多個數據結構,這樣并發讀寫時性能肯定會受影響。那怎么辦呢?我們定個規矩。segment 一旦生成,則不能再被修改。如果還有新的文檔要寫入,那就生成新的 segment。這樣老的 segment 只需要負責讀,寫則生成新的 segment。同時保證了讀和寫的性能。

但 segment 變多了,我們怎么知道要搜索的數據在哪個 segment 里呢?問題不大,并發同時讀多個 segment 就好了。

但這也引入了新問題,隨著數據量增大,segment 文件越寫越多,文件句柄被耗盡那是指日可待啊。是的,但這個也好解決,我們可以不定期合并多個小 segment,變成一個大 segment,也就是段合并(segment merging)。這樣文件數量就可控了。

到這里,上面提到的多個 segment,就共同構成了一個單機文本檢索庫,它其實就是非常有名的開源基礎搜索庫 lucene。不少知名搜索引擎都是基于它構建的,比如我們今天介紹的 ES。但這個 lucene 屬實過于簡陋,像什么高性能,高擴展性,高可用,它是一個都不沾。我們來看下怎么優化它。

高性能

lucene 作為一個搜索庫,可以寫入大量數據,并對外提供搜索能力。多個調用方同時讀寫同一個 lucene 必然導致爭搶計算資源。搶不到資源的一方就得等待,這不純純浪費時間嗎!有解決方案嗎?有!首先是對寫入 lucene 的數據進行分類,比如體育新聞和八卦新聞數據算兩類,每一類是一個 Index Name,然后根據 Index Name 新增 lucene 的數量,將不同類數據寫入到不同的 lucene 中,讀取數據時,根據需要搜索不同的 Index Name 。這就大大降低了單個 lucene 的壓力。

但單個 Index Name 內數據依然可能過多,于是可以將單個 Index Name 的同類數據,拆成好幾份,每份是一個 shard 分片,每個 shard 分片本質上就是一個獨立的 lucene 庫。這樣我們就可以將讀寫操作分攤到多個 分片 中去,大大降低了爭搶,提升了系統性能。

高擴展性

隨著 分片 變多,如果 分片 都在同一臺機器上的話,就會導致單機 cpu 和內存過高,影響整體系統性能。

于是我們可以申請更多的機器,將 分片 分散部署在多臺機器上,這每一臺機器,就是一個 Node。我們可以通過增加 Node 緩解機器 cpu 過高帶來的性能問題。

高可用

到這里,問題又又來了,如果其中一個 Node 掛了,那 Node 里所有分片 都無法對外提供服務了。我們需要保證服務的高可用。有解決方案嗎?有,我們可以給 分片 多加幾個副本。將 分片 分為 Primary shard 和 Replica shard,也就是主分片和副本分片 。主分片會將數據同步給副本分片,副本分片既可以同時提供讀操作,還能在主分片掛了的時候,升級成新的主分片讓系統保持正常運行,提高性能的同時,還保證了系統的高可用。

Node 角色分化

搜索架構需要支持的功能很多,既要負責管理集群,又要存儲管理數據,還要處理客戶端的搜索請求。如果每個 Node 都支持這幾類功能,那當集群有數據壓力,需要擴容 Node 時,就會順帶把其他能力也一起擴容,但其實其他能力完全夠用,不需要跟著擴容,這就有些浪費了。因此我們可以將這幾類功能拆開,給集群里的 Node 賦予角色身份,不同的角色負責不同的功能。比如負責管理集群的,叫主節點(Master Node), 負責存儲管理數據的,叫數據節點(Data Node), 負責接受客戶端搜索查詢請求的叫協調節點(Coordinate Node)。集群規模小的時候,一個 Node 可以同時充當多個角色,隨著集群規模變大,可以讓一個 Node 一個角色。

去中心化

上面提到了主節點,那就意味著還有個選主的過程,但現在每個 Node 都是獨立的,需要有個機制協調 Node 間的數據。我們很容易想到,可以像 kafka 那樣引入一個中心節點 Zookeeper,但如果不想引入新節點,還有其他更輕量的方案嗎?有,去中心化。我們可以在 Node 間引入協調模塊,用類似一致性算法 Raft 的方式,在節點間互相同步數據,讓所有 Node 看到的集群數據狀態都是一致的。這樣,集群內的 Node 就能參與選主過程,還能了解到集群內某個 Node 是不是掛了等信息。

ES 是什么?

好了,到這里,當初那個簡陋的 lucene,就成了一個高性能,高擴展性,高可用,支持持久化的分布式搜索引擎,它就是我們常說的 elastic search,簡稱 ES。它對外提供 http 接口,任何語言的客戶端都可以通過 HTTP 接口接入 es,實現對數據的增刪改查。從架構角度來看,es 給了一套方案,告訴我們如何讓一個單機系統 lucene 變成一個分布式系統。

按這個思路,是不是也可以將 lucene 改成其他單機系統,比如 mysql 數據庫,或者專門做向量檢索的單機引擎 faiss?那以后再來個 elastic mysql 或者 elastic faiss 是不是就不那么意外了,大廠內卷晉升或者下一個明星開源大項目的小提示就給到這里了。

看完 es 的架構,是不是覺得有些似曾相識?沒錯,我說的就是我前兩期聊過的 kafka。

ES 和 Kafka 的架構差異

如果你不了解 kakfa 的架構,可以看下我之前寫的《Kafka 是什么?》。然后你就會發現:

  • ? es 中用于分類消息的 Index Name,其實就是 kafka 的 topic。
  • ? es 中用于對 Index Name 數據分片的 Shard,其實就是 kafka 中拆分 topic 數據的 Partition。
  • ? es 中用于分散部署多個 shard 的 Node, 其實就相當于 kafka 中的 broker。

es 的架構跟 kafka 以及我們上期聊過的 rocketMQ 都非常相似,果然優秀的架構都是相似的,丑陋的架構各有各的丑陋。學一套優秀架構,就等于弄通了好幾個中間件原理,簡直血賺!

現在我們了解完 es 的架構,再來用兩個實際例子將這些概念串起來,淺看下它的工作原理。

ES 的寫入流程

  • ? 當客戶端應用發起數據寫入請求,請求會先發到集群中協調節點。
  • ? 協調節點根據 hash 路由,判斷數據該寫入到哪個數據節點里的哪個分片(Shard),找到主分片并寫入。分片底層是 lucene,所以最終是將數據寫入到 lucene 庫里的 segment 內,將數據固化為倒排索引和 Stored Fields 以及 Doc Values 等多種結構。
  • ? 主分片 寫入成功后會將數據同步給 副本分片。
  • ? 副本分片 寫入完成后,主分片會響應協調節點一個 ACK,意思是寫入完成。
  • ? 最后,協調節點響應客戶端應用寫入完成。

ES 的搜索流程

ES 的搜索流程分為兩個階段:分別是查詢階段(Query Phase)和獲取階段(Fetch Phase) 我們分別看下。

查詢階段。

  • 當客戶端應用發起搜索請求,請求會先發到集群中的協調節點。
  • 協調節點根據 index name 的信息,可以了解到 index name 被分為了幾個 分片,以及這些分片 分散哪個數據節點上,將請求轉發到這些數據節點的 分片 上面。
  • 搜索請求到達分片后,分片 底層的 lucene 庫會并發搜索多個 segment,利用每個 segment 內部的倒排索引獲取到對應文檔 id,并結合 doc values 獲得排序信息。分片將結果聚合返回給協調節點。
  • 協調節點對多個分片中拿到的數據進行一次排序聚合,舍棄大部分不需要的數據。

獲取階段。

  • 協調節點再次拿著文檔 id 請求數據節點里的 分片,分片 底層的 lucene 庫會從 segment 內的 Stored Fields 中取出完整文檔內容,并返回給協調節點。
  • 協調節點最終將數據結果返回給客戶端。完成整個搜索過程。

現在大家通了嗎?

總結

  • lucene 是 es 底層的單機文本檢索庫,它由多個 segment 組成,每個 segment 其實是由倒排索引、Term Index、Stored Fields 和 Doc Values 組成的具備完整搜索功能的最小單元。
  • 將數據分類,存儲在 es 內不同的 Index Name 中。
  • 為了防止 Index Name 內數據過多,引入了 Shard 的概念對數據進行分片。提升了性能。
  • 將多個 shard 分布在多個 Node 上,根據需要對 Node 進行擴容,提升擴展性。
  • 將 shard 分為主分片和副本分片,主分片掛了之后由副本分片頂上,提升系統的可用性。
  • 對 Node 進行角色分化,提高系統的性能和資源利用率,同時簡化擴展和維護。
  • es 和 kafka 的架構非常像,可以類比學習。
責任編輯:姜華 來源: 小白debug
相關推薦

2025-01-20 07:00:00

2024-11-25 07:00:00

RedisMySQL數據庫

2024-12-16 08:20:00

2025-06-20 08:03:36

Hadoopmysql數據庫

2025-02-03 08:00:00

HDFS架構存儲數據

2024-11-25 12:20:00

Hystrix微服務架構

2024-03-04 08:03:50

k8sClusterNode

2024-05-22 08:02:30

2023-11-05 10:52:54

DNS服務器瀏覽器

2018-06-21 08:38:05

編程語言程序員代碼

2021-10-21 09:40:50

AI人工智能

2022-08-12 17:14:46

元宇宙

2023-05-15 10:17:03

2009-12-24 14:05:06

Fedora core

2025-05-19 09:41:24

2021-07-29 11:46:27

NAS存儲NAS服務器

2017-01-19 14:22:51

Linux

2021-09-27 08:02:17

CDN加速網站網絡

2014-08-25 10:11:18

極致用戶體驗
點贊
收藏

51CTO技術棧公眾號

在线观看一区日韩| 国产精品夜夜嗨| 正在播放亚洲1区| 中文字幕亚洲影院| 国产美女高潮在线| 中文字幕巨乱亚洲| 国产精品久久精品国产| 最好看的日本字幕mv视频大全| 中文字幕一区二区精品区| 日韩电影大片中文字幕| 一级淫片在线观看| 亚洲人成午夜免电影费观看| 亚洲乱码国产乱码精品精的特点| 乱色588欧美| 亚洲a视频在线观看| 日韩高清不卡在线| 亚州精品天堂中文字幕| 午夜激情福利网| 国产伦精品一区二区三区视频| 日韩三级电影网址| 亚洲精品www.| 日韩在线影院| 天天做天天摸天天爽国产一区| 日韩视频在线免费播放| 国产69精品久久app免费版| 成人国产电影网| 亚洲综合中文字幕68页| 一级黄色短视频| 日韩高清在线观看| 欧美又大又硬又粗bbbbb| 黄色片在线观看网站| 久久一区二区三区喷水| 亚洲天堂第二页| av网页在线观看| 97精品久久| 日韩欧美激情一区| 永久av免费在线观看| 成人免费黄色| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 性欧美激情精品| 久久久久久久9999| 一区二区电影在线观看| 久久精品福利视频| 69夜色精品国产69乱| 国产国产精品| 久久综合色88| 青青青在线免费观看| 欧美激情 亚洲a∨综合| 久久福利视频导航| 侵犯稚嫩小箩莉h文系列小说| 天天插综合网| 久久中文字幕在线视频| 欧美精品一区二区成人| 欧美日韩亚洲一区二区三区在线| 久久国产精品99国产精| 久久综合久久鬼| 99av国产精品欲麻豆| 2020欧美日韩在线视频| 午夜婷婷在线观看| 日韩电影免费在线看| 国产精品美乳一区二区免费| 欧美性受xxx黑人xyx性爽| 蜜臀久久99精品久久久久久9| 国产精品露脸av在线| 这里只有精品9| 国产麻豆欧美日韩一区| 高清国产在线一区| 天天av综合网| 国产日韩欧美a| 久久精品国产精品亚洲精品色| 成人av免费| 偷拍亚洲欧洲综合| 亚洲欧美自拍另类日韩| 免费欧美网站| 日韩国产精品视频| av黄色在线免费观看| 欧美电影免费播放| 久久久久久一区二区三区| 欧美性猛交bbbbb精品| 麻豆极品一区二区三区| av成人综合网| 久草在现在线| 一区二区三区欧美激情| 国产成人无码一二三区视频| 日韩成人精品一区二区三区| 亚洲变态欧美另类捆绑| 欧美精品欧美精品| 国产精品成人久久| 国产婷婷精品| 国产欧美一区二区白浆黑人| 亚洲黄色a级片| 久久久一区二区三区捆绑**| 国产精品亚洲天堂| 免费成人直播| 日韩精品专区在线影院重磅| 国产 欧美 在线| 亚洲最新av| 国产精品第一视频| 开心激情综合网| 中文字幕免费观看一区| 亚洲 自拍 另类小说综合图区| 成人亚洲网站| 亚洲精选在线观看| 免费一级黄色大片| 日本欧美在线观看| 狠狠色噜噜狠狠色综合久| 久久久久久国产精品免费无遮挡 | 韩国v欧美v日本v亚洲v| 久久综合给合久久狠狠色| 国产成人在线视频免费观看| 在线免费不卡视频| 久久久久国产精品无码免费看| 欧美大黑bbbbbbbbb在线| 欧美专区第一页| 日韩一级片免费在线观看| 国产精品福利一区二区三区| 亚洲欧洲日产国码无码久久99| 青草伊人久久| 中文字幕不卡av| 中文在线第一页| 99久久综合99久久综合网站| 一区二区三区四区久久| 成人黄色图片网站| 亚洲女人初尝黑人巨大| a v视频在线观看| 国产suv一区二区三区88区| 亚洲免费av网| 亚洲精品无播放器在线播放| 在线视频日本亚洲性| 久久精品无码av| www.亚洲精品| 青青青青草视频| 国产成人福利av| 欧美激情第三页| 性生交生活影碟片| 亚洲一区二区三区四区中文字幕| 一区二区三区国产好的精华液| 日韩欧美视频| 国产精品亚洲自拍| 日本三级在线视频| 欧美伦理视频网站| 中文字幕另类日韩欧美亚洲嫩草| 国产自产v一区二区三区c| 最新不卡av| 91精品福利观看| 久久av.com| 国产黄色小视频在线观看| 夜夜爽夜夜爽精品视频| 久久精品无码专区| 亚洲国产导航| 美脚丝袜一区二区三区在线观看| 在线观看特色大片免费视频| 亚洲最大在线视频| 在线观看毛片视频| 亚洲精选视频在线| 91传媒理伦片在线观看| 在线亚洲欧美| 日本一区二区三区免费看| 97精品国产99久久久久久免费| 中文字幕亚洲综合| 国产熟女一区二区丰满| 亚洲va欧美va国产va天堂影院| 99久久国产精| 青青草国产成人av片免费| 国产又粗又硬又长| 福利欧美精品在线| 日本一区二区在线播放| 日本综合在线| 精品久久久久久久人人人人传媒 | 欧美挠脚心视频网站| 波多野结衣亚洲色图| 波多野结衣在线一区| www.四虎成人| 91tv精品福利国产在线观看| 国产在线一区二区三区四区| 日韩av首页| 欧美成人午夜免费视在线看片| 五月婷婷开心中文字幕| 欧美色图片你懂的| 久久精品国产亚洲av高清色欲| 久久综合精品国产一区二区三区| 欧美wwwwwww| 亚洲人体偷拍| 一区二区精品在线| 凹凸av导航大全精品| 国产精品狠色婷| 牛牛精品在线| 中文字幕九色91在线| 亚洲免费不卡视频| 在线观看国产日韩| 久久久夜色精品| 亚洲国产电影在线观看| 国内精品免费视频| 久久成人精品无人区| 国产素人在线观看| 91精品亚洲| 日韩欧美一区二区三区四区 | 亚洲精品久久久久久久久久久| 做爰视频毛片视频| 婷婷综合在线观看| 青娱乐国产在线| 中文字幕成人av| 国产又黄又粗又猛又爽的视频| 极品少妇xxxx偷拍精品少妇| 精品一卡二卡三卡| 亚洲免费高清| 久久综合亚洲精品| 97欧美在线视频| 四虎影院一区二区三区| 爱高潮www亚洲精品| 亚洲自拍偷拍视频| 国产精品久久久久久久久免费高清| 68精品久久久久久欧美 | 欧美日韩久久久久| 免费在线观看黄色av| 中文字幕日韩精品一区| 亚洲自拍偷拍图| 91在线一区二区三区| 人妻精油按摩bd高清中文字幕| 麻豆一区二区三| 亚洲福利精品视频| 久久精品官网| 国产一区二区在线视频播放| 亚洲国产清纯| 波多野结衣av一区二区全免费观看 | 麻豆changesxxx国产| 日韩一区欧美小说| 一本在线免费视频| 日本一区二区在线不卡| 亚洲日本精品视频| 国产日产欧产精品推荐色| 欧美老熟妇乱大交xxxxx| av不卡在线观看| 一起草在线视频| 99国产精品国产精品久久| 日韩精品一区二区三区高清免费| 成人午夜激情在线| 久久久久无码国产精品一区李宗瑞| 国产成人午夜片在线观看高清观看| 污污视频网站在线| 国产精品一区一区三区| 一级日本黄色片| 成人午夜私人影院| zjzjzjzjzj亚洲女人| jizz一区二区| 黄色国产在线观看| 久久亚洲影视婷婷| 熟女少妇内射日韩亚洲| 中文字幕精品综合| 最新一区二区三区| 亚洲欧美怡红院| 久青草免费视频| 色综合久久久久网| 中文字幕丰满人伦在线| 欧美美女bb生活片| 亚洲国产剧情在线观看| 亚洲国产精品专区久久| 久久久久久青草| 日韩中文字幕在线观看| av在线免费播放| 51精品在线观看| 97人人做人人爽香蕉精品| 成人中文字幕在线观看 | 日本一区二区久久精品| 欧美国产一级| 亚洲乱码日产精品bd在线观看| 亚洲日本免费| www.xxx亚洲| 国产精品一区二区视频| 色哟哟无码精品一区二区三区| 久久久精品一品道一区| 黄色录像免费观看| 天天操天天干天天综合网| 色老头在线视频| 日韩欧美亚洲另类制服综合在线 | 2021年精品国产福利在线| 久久久99爱| 久久影院100000精品| 国产天堂视频在线观看| 日韩精品福利网| 肉丝美足丝袜一区二区三区四| 久久伊人中文字幕| 91高清免费看| 一本久道久久综合中文字幕 | 国产99久久久国产精品免费看| 少妇毛片一区二区三区| 亚洲天堂中文字幕| 四虎精品永久在线| 欧美一区二区三区日韩视频| 天堂在线中文| 欧美成人在线免费视频| 日韩成人av电影| 99热在线国产| 青青草97国产精品麻豆| 极品粉嫩国产18尤物| 久久99精品一区二区三区三区| 男女一区二区三区| 国产欧美精品一区二区色综合朱莉| 久久精品www| 欧美区视频在线观看| 香蕉av一区二区三区| 久久久www成人免费精品张筱雨| 在线观看福利电影| 豆国产97在线| 香蕉久久网站| 久久婷婷国产91天堂综合精品| 成人福利电影精品一区二区在线观看| 一本在线免费视频| 色偷偷久久人人79超碰人人澡| 丰满肥臀噗嗤啊x99av| 北条麻妃久久精品| 日日夜夜天天综合| 久久99精品久久久久久三级| 欧美激情1区2区| 一级黄色大片儿| 欧美激情资源网| 免费看日韩毛片| 亚洲国产成人精品女人久久久| 91在线中文| 51成人做爰www免费看网站| 久久五月天小说| 国产精品一区二区小说| 国产日韩欧美一区二区三区综合| 免费在线不卡视频| 亚洲国产精品成人av| 久久不射影院| 国产九区一区在线| 在线免费观看欧美| 国产伦精品一区二区三区88av| 亚洲精品国久久99热| www.热久久| 欧美美女18p| 日本亚洲视频| 黄色一级片国产| 成人黄色av电影| 日韩欧美性视频| 日韩第一页在线| 老司机2019福利精品视频导航| 欧美日韩国产高清视频| 老鸭窝毛片一区二区三区 | 青青草成人影院| 最新天堂在线视频| 亚洲欧美日韩综合aⅴ视频| 国产精品伦一区二区三区| 久久精品久久久久久| 精品视频在线观看网站| 美脚丝袜脚交一区二区| 99热这里都是精品| av资源免费观看| 亚洲性视频网址| 高清欧美日韩| 国产日韩第一页| 高清不卡一区二区在线| 天堂网一区二区三区| 亚洲人a成www在线影院| 国产人妖一区| 男女激烈动态图| 成人精品免费看| 香蕉影院在线观看| 最近2019年中文视频免费在线观看| 日韩欧美激情| 精品少妇人欧美激情在线观看| 92国产精品观看| 一本色道久久综合精品婷婷| 欧美巨大黑人极品精男| 精品国产影院| 我看黄色一级片| 一区二区三区四区激情| 亚欧洲精品视频| 国产日韩精品在线观看| 日韩电影在线观看永久视频免费网站| 成人一区二区三区仙踪林| 亚洲综合精品自拍| 天堂中文在线看| 国产精品18久久久久久麻辣| 日韩欧美视频在线播放| av在线天堂网| 在线亚洲一区观看| 91中文在线| 日韩欧美一区二区在线观看| 国产精品综合二区| 九九热在线免费观看| 北条麻妃一区二区三区中文字幕 | 亚洲精品欧美| 亚洲黄色免费视频| 日韩精品一区二区三区四区| 欧美va在线观看| 男人的天堂avav| 欧美国产精品劲爆| 天天操天天干天天| 成人性生交大片免费观看嘿嘿视频| 99国产精品久久久久久久成人热 | 91免费视频国产| 蜜桃伊人久久| 九九热精品免费视频| 在线观看久久久久久| 日韩av三区| 2018国产精品| 欧美精品丝袜中出| 新片速递亚洲合集欧美合集|