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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

让Elasticsearch飞起来!百亿级实时查询优化实战

發(fā)布時(shí)間:2024/1/17 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让Elasticsearch飞起来!百亿级实时查询优化实战 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近的一個(gè)項(xiàng)目是風(fēng)控過(guò)程數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)分析和聚合的一個(gè) OLAP 分析監(jiān)控平臺(tái),日流量峰值在 10 到 12 億上下,每年數(shù)據(jù)約 4000 億條,占用空間大概 200T。

?

面對(duì)這樣一個(gè)數(shù)據(jù)量級(jí)的需求,我們的數(shù)據(jù)如何存儲(chǔ)和實(shí)現(xiàn)實(shí)時(shí)查詢將是一個(gè)嚴(yán)峻的挑戰(zhàn)。

經(jīng)過(guò)對(duì) Elasticsearch 多方調(diào)研和超過(guò)幾百億條數(shù)據(jù)的插入和聚合查詢的驗(yàn)證之后,我們總結(jié)出以下幾種能夠有效提升性能和解決這一問(wèn)題的方案:

  • 集群規(guī)劃
  • 存儲(chǔ)策略
  • 索引拆分
  • 壓縮
  • 冷熱分區(qū)等

本文所使用的 Elasticsearch 版本為 5.3.3。

什么是時(shí)序索引?其主要特點(diǎn)體現(xiàn)在如下兩個(gè)方面:

  • 存,以時(shí)間為軸,數(shù)據(jù)只有增加,沒(méi)有變更,并且必須包含 timestamp(日期時(shí)間,名稱隨意)字段。

其作用和意義要大于數(shù)據(jù)的 id 字段,常見(jiàn)的數(shù)據(jù)比如我們通常要記錄的操作日志、用戶行為日志、或股市行情數(shù)據(jù)、服務(wù)器 CPU、內(nèi)存、網(wǎng)絡(luò)的使用率等。

  • 取,一定是以時(shí)間范圍為第一過(guò)濾條件,然后是其他查詢條件,比如近一天、一周、本月等等,然后在這個(gè)范圍內(nèi)進(jìn)行二次過(guò)濾。

比如性別或地域等,查詢結(jié)果中比較關(guān)注的是每條數(shù)據(jù)和 timestamp 字段具體發(fā)生的時(shí)間點(diǎn),而非 id。

此類數(shù)據(jù)一般用于 OLAP、監(jiān)控分析等場(chǎng)景。

集群部署規(guī)劃

?

我們都知道在 Elasticsearch(下稱 ES)集群中有兩個(gè)主要角色:Master Node 和 Data Node,其他如 Tribe Node 等節(jié)點(diǎn)可根據(jù)業(yè)務(wù)需要另行設(shè)立。

為了讓集群有更好的性能表現(xiàn),我們應(yīng)該對(duì)這兩個(gè)角色有一個(gè)更好的規(guī)劃,在 Nodes 之間做讀取分離,保證集群的穩(wěn)定性和快速響應(yīng),在大規(guī)模的數(shù)據(jù)存儲(chǔ)和查詢的壓力之下能夠坦然面對(duì),各自愉快的協(xié)作。

Master Nodes

Master Node,整個(gè)集群的管理者,負(fù)有對(duì) index 的管理、shards 的分配,以及整個(gè)集群拓?fù)湫畔⒌墓芾淼裙δ堋?/p>

眾所周知,Master Node 可以通過(guò) Data Node 兼任,但是,如果對(duì)群集規(guī)模和穩(wěn)定要求很高的話,就要職責(zé)分離,Master Node 推薦獨(dú)立,它的狀態(tài)關(guān)乎整個(gè)集群的存活。

Master 的配置:

  • node.master:?true??
  • node.data:?false??
  • node.ingest:?false?
  • 這樣 Master 不參與 I、O,從數(shù)據(jù)的搜索和索引操作中解脫出來(lái),專門負(fù)責(zé)集群的管理工作,因此 Master Node 的節(jié)點(diǎn)配置可以相對(duì)低一些。

    另外防止 ES 集群 split brain(腦裂),合理配置 discovery.zen.minimum_master_nodes 參數(shù),官方推薦 master-eligible nodes / 2 + 1 向下取整的個(gè)數(shù)。

    這個(gè)參數(shù)決定選舉 Master 的 Node 個(gè)數(shù),太小容易發(fā)生“腦裂”,可能會(huì)出現(xiàn)多個(gè) Master,太大 Master 將無(wú)法選舉。

    更多 Master 選舉相關(guān)內(nèi)容請(qǐng)參考:

  • https://www.elastic.co/guide/en/elasticsearch/reference/5.3/modules-discovery-zen.html#master-election?
  • Data Nodes

    Data Node 是數(shù)據(jù)的承載者,對(duì)索引的數(shù)據(jù)存儲(chǔ)、查詢、聚合等操作提供支持。

    這些操作嚴(yán)重消耗系統(tǒng)的 CPU、內(nèi)存、IO 等資源,因此,應(yīng)該把最好的資源分配給 Data Node,因?yàn)樗鼈兪钦嬲衫刍畹慕巧?#xff0c;同樣 Data Node 也不兼任 Master 的功能。

    Data 的配置:

  • node.master:?false??
  • node.data:?true??
  • node.ingest:?false?
  • Coordinating Only Nodes

    ES 本身是一個(gè)分布式的計(jì)算集群,每個(gè) Node 都可以響應(yīng)用戶的請(qǐng)求,包括 Master Node、Data Node,它們都有完整的 Cluster State 信息。

    正如我們知道的一樣,在某個(gè) Node 收到用戶請(qǐng)求的時(shí)候,會(huì)將請(qǐng)求轉(zhuǎn)發(fā)到集群中所有索引相關(guān)的 Node 上,之后將每個(gè) Node 的計(jì)算結(jié)果合并后返回給請(qǐng)求方。

    我們暫且將這個(gè) Node 稱為查詢節(jié)點(diǎn),整個(gè)過(guò)程跟分布式數(shù)據(jù)庫(kù)原理類似。那問(wèn)題來(lái)了,這個(gè)查詢節(jié)點(diǎn)如果在并發(fā)和數(shù)據(jù)量比較大的情況下,由于數(shù)據(jù)的聚合可能會(huì)讓內(nèi)存和網(wǎng)絡(luò)出現(xiàn)瓶頸。

    因此,在職責(zé)分離指導(dǎo)思想的前提下,這些操作我們也應(yīng)該從這些角色中剝離出來(lái),官方稱它是 Coordinating Nodes,只負(fù)責(zé)路由用戶的請(qǐng)求,包括讀、寫(xiě)等操作,對(duì)內(nèi)存、網(wǎng)絡(luò)和 CPU 要求比較高。

    本質(zhì)上,Coordinating Only Nodes 可以籠統(tǒng)的理解為是一個(gè)負(fù)載均衡器,或者反向代理,只負(fù)責(zé)讀,本身不寫(xiě)數(shù)據(jù),它的配置是:

  • node.master:?false??
  • node.data:?false??
  • node.ingest:?false??
  • search.remote.connect:?false?
  • 增加 Coordinating Nodes 的數(shù)量可以提高 API 請(qǐng)求響應(yīng)的性能,我們也可以針對(duì)不同量級(jí)的 Index 分配獨(dú)立的 Coordinating Nodes 來(lái)滿足請(qǐng)求性能。

    那是不是越多越好呢?在一定范圍內(nèi)是肯定的,但凡事有個(gè)度,過(guò)了負(fù)作用就會(huì)突顯,太多的話會(huì)給集群增加負(fù)擔(dān)。

    在做 Master 選舉的時(shí)候會(huì)先確保所有 Node 的 Cluster State 是一致的,同步的時(shí)候會(huì)等待每個(gè) Node 的 Acknowledgement 確認(rèn),所以適量分配可以讓集群暢快的工作。

    search.remote.connect 是禁用跨集群查詢,防止在進(jìn)行集群之間查詢時(shí)發(fā)生二次路由:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cross-cluster-search.html?
  • Routing

    類似于分布式數(shù)據(jù)庫(kù)中的分片原則,將符合規(guī)則的數(shù)據(jù)存儲(chǔ)到同一分片。ES 通過(guò)哈希算法來(lái)決定數(shù)據(jù)存儲(chǔ)于哪個(gè) Shard:

  • shard_num?=?hash(_routing)?%?num_primary_shards?
  • 其中 hash(_routing) 得出一個(gè)數(shù)字,然后除以主 Shards 的數(shù)量得到一個(gè)余數(shù),余數(shù)的范圍是 0 到 number_of_primary_shards - 1,這個(gè)數(shù)字就是文檔所在的 Shard。

    Routing 默認(rèn)是 id 值,當(dāng)然可以自定義,合理指定 Routing 能夠大幅提升查詢效率,Routing 支持 GET、Delete、Update、Post、Put 等操作。

    如:

  • PUT?my_index/my_type/1?routing=user1?
  • {?
  • ??"title":?"This?is?a?document"?
  • }?
  • ?
  • GET?my_index/my_type/1?routing=user1?
  • 不指定 Routing 的查詢過(guò)程:

    簡(jiǎn)單的來(lái)說(shuō),一個(gè)查詢請(qǐng)求過(guò)來(lái)以后會(huì)查詢每個(gè) Shard,然后做結(jié)果聚合,總的時(shí)間大概就是所有 Shard 查詢所消耗的時(shí)間之和。

    指定 Routing 以后:

    會(huì)根據(jù) Routing 查詢特定的一個(gè)或多個(gè) Shard,這樣就大大減少了查詢時(shí)間,提高了查詢效率。

    當(dāng)然,如何設(shè)置 Routing 是一個(gè)難點(diǎn),需要一點(diǎn)技巧,要根據(jù)業(yè)務(wù)特點(diǎn)合理組合 Routing 的值,來(lái)劃分 Shard 的存儲(chǔ),最終保持?jǐn)?shù)據(jù)量相對(duì)均衡。

    可以組合幾個(gè)維度做為 Routing ,有點(diǎn)類似于 Hbase Key,例如不同的業(yè)務(wù)線加不同的類別,不同的城市和不同的類型等等,如:

    • _search?routing=beijing:按城市。
    • _search?routing=beijing_user123:按城市和用戶。
    • _search?routing=beijing_android,shanghai_android:按城市和手機(jī)類型等。

    數(shù)據(jù)不均衡?假如你的業(yè)務(wù)在北京、上海的數(shù)據(jù)遠(yuǎn)遠(yuǎn)大于其他二三線城市的數(shù)據(jù)。

    再例如我們的業(yè)務(wù)場(chǎng)景,A 業(yè)務(wù)線的數(shù)據(jù)量級(jí)遠(yuǎn)遠(yuǎn)大于 B 業(yè)務(wù)線,有時(shí)候很難通過(guò) Routing 指定一個(gè)值保證數(shù)據(jù)在所有 Shards 上均勻分布,會(huì)讓部分 Shard 變的越來(lái)越大,影響查詢性能,怎么辦?

    一種解決辦法是單獨(dú)為這些數(shù)據(jù)量大的渠道創(chuàng)建獨(dú)立的 Index,如:

  • http://localhost:9200/shanghai,beijing,other/_search?routing=android?
  • 這樣可以根據(jù)需要在不同 Index 之間查詢,然而每個(gè) Index 中 Shards 的數(shù)據(jù)可以做到相對(duì)均衡。

    另一種辦法是指定 Index 參數(shù) index.routing_partition_size,來(lái)解決最終可能產(chǎn)生群集不均衡的問(wèn)題,指定這個(gè)參數(shù)后新的算法如下:

  • shard_num?=?(hash(_routing)?+?hash(_id)?%?routing_partition_size)?%?num_primary_shards?
  • index.routing_partition_size 應(yīng)具有大于 1 且小于 index.number_of_shards 的值。

    最終數(shù)據(jù)會(huì)在 routing_partition_size 幾個(gè) Shard 上均勻存儲(chǔ),是哪個(gè) Shard 取決于 hash(_id) % routing_partition_size 的計(jì)算結(jié)果。

    指定參數(shù) index.routing_partition_size 后,索引中的 Mappings 必須指定 _routing 為 "required": true,另外 Mappings 不支持 parent-child 父子關(guān)系。

    很多情況下,指定 Routing 后會(huì)大幅提升查詢性能,畢竟查詢的 Shard 只有那么幾個(gè),但是如何設(shè)置 Routing 是個(gè)難題,可根據(jù)業(yè)務(wù)特性巧妙組合。

    索引拆分

    Index 通過(guò)橫向擴(kuò)展 Shards 實(shí)現(xiàn)分布式存儲(chǔ),這樣可以解決 Index 大數(shù)據(jù)存儲(chǔ)的問(wèn)題。

    但在一個(gè) Index 變的越來(lái)越大,單個(gè) Shard 也越來(lái)越大,查詢和存儲(chǔ)的速度也越來(lái)越慢。

    更重要的是一個(gè) Index 其實(shí)是有存儲(chǔ)上限的(除非你設(shè)置足夠多的 Shards 和機(jī)器),如官方聲明單個(gè) Shard 的文檔數(shù)不能超過(guò) 20 億(受限于 Lucene index,每個(gè) Shard 是一個(gè) Lucene index)。

    考慮到 I、O,針對(duì) Index 每個(gè) Node 的 Shards 數(shù)最好不超過(guò) 3 個(gè),那面對(duì)這樣一個(gè)龐大的 Index,我們是采用更多的 Shards,還是更多的 Index,我們?nèi)绾芜x擇?

    Index 的 Shards 總量也不宜太多,更多的 Shards 會(huì)帶來(lái)更多的 I、O 開(kāi)銷,其實(shí)答案就已經(jīng)很明確,除非你能接受長(zhǎng)時(shí)間的查詢等待。

    Index 拆分的思路很簡(jiǎn)單,時(shí)序索引有一個(gè)好處就是只有增加,沒(méi)有變更,按時(shí)間累積,天然對(duì)索引的拆分友好支持,可以按照時(shí)間和數(shù)據(jù)量做任意時(shí)間段的拆分。

    ES 提供的 Rollover Api + Index Template 可以非常便捷和友好的實(shí)現(xiàn) Index 的拆分工作,把單個(gè) index docs 數(shù)量控制在百億內(nèi),也就是一個(gè) Index 默認(rèn) 5 個(gè) Shards 左右即可,保證查詢的即時(shí)響應(yīng)。

    簡(jiǎn)單介紹一下 Rollover API 和 Index Template 這兩個(gè)東西,如何實(shí)現(xiàn) index 的拆分。

    Index Template

    我們知道 ES 可以為同一目的或同一類索引創(chuàng)建一個(gè) Index Template,之后創(chuàng)建的索引只要符合匹配規(guī)則就會(huì)套用這個(gè) Template,不必每次指定 Settings 和 Mappings 等屬性。

    一個(gè) Index 可以被多個(gè) Template 匹配,那 Settings 和 Mappings 就是多個(gè) Template 合并后的結(jié)果。

    有沖突通過(guò) Template 的屬性"order" : 0 從低到高覆蓋(這部分據(jù)說(shuō)會(huì)在 ES6 中會(huì)做調(diào)整,更好的解決 Template 匹配沖突問(wèn)題)。

    示例:

  • PUT?_template/template_1?
  • {?
  • ????"index_patterns"?:?["log-*"],?
  • ????"order"?:?0,?
  • ????"settings"?:?{?
  • ????????"number_of_shards"?:?5?
  • ????},?
  • ????"aliases"?:?{?
  • ????????"alias1"?:?{}?
  • ????}?
  • }?
  • Rollover Index

    Rollover Index 可以將現(xiàn)有的索引通過(guò)一定的規(guī)則,如數(shù)據(jù)量和時(shí)間,索引的命名必須是 logs-000001 這種格式,并指定 aliases,示例:

  • PUT?/logs-000001??
  • {?
  • ??"aliases":?{?
  • ????"logs_write":?{}?
  • ??}?
  • }?
  • ?
  • #?Add?>?1000?documents?to?logs-000001?
  • ?
  • POST?/logs_write/_rollover??
  • {?
  • ??"conditions":?{?
  • ????"max_age":???"7d",?
  • ????"max_docs":??1000?
  • ??}?
  • }?
  • 先創(chuàng)建索引并指定別名 logs_write,插入 1000 條數(shù)據(jù),然后請(qǐng)求 _rollover api 并指定拆分規(guī)則。

    如果索引中的數(shù)據(jù)大于規(guī)則中指定的數(shù)據(jù)量或者時(shí)間過(guò)時(shí),新的索引將被創(chuàng)建,索引名稱為 logs-000002,并根據(jù)規(guī)則套用 Index Template,同時(shí)別名 logs_write 也將被變更到 logs-000002。

    注意事項(xiàng):

    • 索引命名規(guī)則必須如同:logs-000001。
    • 索引必須指定 aliases。
    • Rollover Index API 調(diào)用時(shí)才去檢查索引是否超出指定規(guī)則,不會(huì)自動(dòng)觸發(fā),需要手動(dòng)調(diào)用,可以通過(guò) Curator 實(shí)現(xiàn)自動(dòng)化。
    • 如果符合條件會(huì)創(chuàng)建新的索引,老索引的數(shù)據(jù)不會(huì)發(fā)生變化,如果你已經(jīng)插入 2000 條,拆分后還是 2000 條。
    • 插入數(shù)據(jù)時(shí)一定要用別名,否則你可能一直在往一個(gè)索引里追加數(shù)據(jù)。

    技巧是按日期滾動(dòng)索引:

  • PUT?/<logs-{now/d}-1>?
  • {?
  • ??"aliases":?{?
  • ????"logs_write":?{}?
  • ??}?
  • }?
  • 假如生成的索引名為 logs-2017.04.13-1,如果你在當(dāng)天執(zhí)行 Rollover 會(huì)生成 logs-2017.04.13-000001,次日的話是 logs-2017.04.14-000001。

    這樣就會(huì)按日期進(jìn)行切割索引,那如果你想查詢 3 天內(nèi)的數(shù)據(jù)可以通過(guò)日期規(guī)則來(lái)匹配索引名,如:

  • GET?/<logs-{now/d}-*>,<logs-{now/d-1d}-*>,<logs-{now/d-2d}-*>/_search?
  • 到此,我們就可以通過(guò) Index Template 和 Rollover API 實(shí)現(xiàn)對(duì) Index 的任意拆分,并按照需要進(jìn)行任意時(shí)間段的合并查詢,這樣只要你的時(shí)間跨度不是很大,查詢速度一般可以控制在毫秒級(jí),存儲(chǔ)性能也不會(huì)遇到瓶頸。

    Hot-Warm 架構(gòu)

    冷熱架構(gòu),為了保證大規(guī)模時(shí)序索引實(shí)時(shí)數(shù)據(jù)分析的時(shí)效性,可以根據(jù)資源配置不同將 Data Nodes 進(jìn)行分類形成分層或分組架構(gòu)。

    一部分支持新數(shù)據(jù)的讀寫(xiě),另一部分僅支持歷史數(shù)據(jù)的存儲(chǔ),存放一些查詢發(fā)生機(jī)率較低的數(shù)據(jù)。

    即 Hot-Warm 架構(gòu),對(duì) CPU,磁盤、內(nèi)存等硬件資源合理的規(guī)劃和利用,達(dá)到性能和效率的最大化。

    我們可以通過(guò) ES 的 Shard Allocation Filtering 來(lái)實(shí)現(xiàn) Hot-Warm 的架構(gòu)。

    實(shí)現(xiàn)思路如下:

    • 將 Data Node 根據(jù)不同的資源配比打上標(biāo)簽,如:Host、Warm。
    • 定義 2 個(gè)時(shí)序索引的 Index Template,包括 Hot Template 和 Warm Template,Hot Template 可以多分配一些 Shard 和擁有更好資源的 Hot Node。
    • 用 Hot Template 創(chuàng)建一個(gè) Active Index 名為 active-logs-1,別名 active-logs,支持索引切割。
    • 插入一定數(shù)據(jù)后,通過(guò) roller over api 將 active-logs 切割,并將切割前的 Index 移動(dòng)到 Warm Nodes 上,如 active-logs-1,并阻止寫(xiě)入。
    • 通過(guò) Shrinking API 收縮索引 active-logs-1 為 inactive-logs-1,原 Shard 為 5,適當(dāng)收縮到 2 或 3,可以在 Warm Template 中指定,減少檢索的 Shard,使查詢更快。
    • 通過(guò) force-merging api 合并 inactive-logs-1 索引每個(gè) Shard 的 Segment,節(jié)省存儲(chǔ)空間。
    • 刪除 active-logs-1。

    Hot,Warm Nodes

    Hot Nodes

    擁有最好資源的 Data Nodes,如更高性能的 CPU、SSD 磁盤、內(nèi)存等資源,這些特殊的 Nodes 支持索引所有的讀、寫(xiě)操作。

    如果你計(jì)劃以 100 億為單位來(lái)切割 Index,那至少需要三個(gè)這樣的 Data Nodes,Index 的 Shard 數(shù)為 5,每個(gè) Shard 支持 20 億 Documents 數(shù)據(jù)的存儲(chǔ)。

    為這類 Data Nodes 打上標(biāo)簽,以便我們?cè)?Template 中識(shí)別和指定,啟動(dòng)參數(shù)如下:

  • ./bin/elasticsearch?-Enode.attr.box_type=hot?
  • 或者配置文件:

  • node.attr.box_type:?hot?
  • Warm Nodes

    存儲(chǔ)只讀數(shù)據(jù),并且查詢量較少,但用于存儲(chǔ)長(zhǎng)多時(shí)間歷史數(shù)據(jù)的 Data Nodes,這類 Nodes 相對(duì) Hot Nodes 較差的硬件配置,根據(jù)需求配置稍差的 CPU、機(jī)械磁盤和其他硬件資源,至于數(shù)量根據(jù)需要保留多長(zhǎng)時(shí)間的數(shù)據(jù)來(lái)配比,同樣需要打上標(biāo)簽,方法跟 Hot Nodes 一樣,指定為 Warm,box_type: warm。

    Hot,Warm Template

    Hot Template

    我們可以通過(guò)指定參數(shù)"routing.allocation.include.box_type": "hot",讓所有符合命名規(guī)則索引的 Shard 都將被分配到 Hot Nodes 上:

  • PUT?_template/active-logs?
  • {?
  • ??"template":?"active-logs-*",?
  • ??"settings":?{?
  • ????"number_of_shards":???5,?
  • ????"number_of_replicas":?1,?
  • ????"routing.allocation.include.box_type":?"hot",?
  • ????"routing.allocation.total_shards_per_node":?2?
  • ??},?
  • ??"aliases":?{?
  • ????"active-logs":??{}?
  • ??}?
  • }?
  • Warm Template

    同樣符合命名規(guī)則索引的 Shard 會(huì)被分配到 Warm Nodes 上,我們指定了更少的 Shards 數(shù)量和復(fù)本數(shù)。

    注意,這里的復(fù)本數(shù)為 0,和 best_compression 級(jí)別的壓縮,方便做遷移等操作,以及進(jìn)行一些數(shù)據(jù)的壓縮:

  • PUT?_template/inactive-logs?
  • {?
  • ??"template":?"inactive-logs-*",?
  • ??"settings":?{?
  • ????"number_of_shards":???1,?
  • ????"number_of_replicas":?0,?
  • ????"routing.allocation.include.box_type":?"warm",?
  • ????"codec":?"best_compression"?
  • ??}?
  • }?
  • 假如我們已經(jīng)創(chuàng)建了索引 active-logs-1 ,當(dāng)然你可以通過(guò) _bulk API 快速寫(xiě)入測(cè)試的數(shù)據(jù),然后參考上文中介紹的 Rollover API 進(jìn)行切割。

    Shrink Index

    Rollover API 切割以后,active-logs-1 將變成一個(gè)冷索引,我們將它移動(dòng)到 Warm Nodes 上。

    先將索引置為只讀狀態(tài),拒絕任何寫(xiě)入操作,然后修改 index.routing.allocation.include.box_type 屬性,ES 會(huì)自動(dòng)移動(dòng)所有 Shards 到目標(biāo) Data Nodes 上:

  • PUT?active-logs-1/_settings?
  • {?
  • ??"index.blocks.write":?true,?
  • ??"index.routing.allocation.include.box_type":?"warm"?
  • }?
  • Cluster Health API 可以查看遷移狀態(tài),完成后進(jìn)行收縮操作,其實(shí)相當(dāng)于復(fù)制出來(lái)一個(gè)新的索引,舊的索引還存在。

  • POST?active-logs-1/_shrink/inactive-logs-1?
  • 我們可以通過(guò) Head 插件查看整個(gè)集群索引的變化情況。關(guān)于 Shard 的分配請(qǐng)參考:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html?
  • Forcemerge

    到目前為止我們已經(jīng)實(shí)現(xiàn)了索引的冷熱分離,和索引的收縮,我們知道每個(gè) Shard 下面由多個(gè) Segment 組成,那 inactive-logs-1 的 Shard 數(shù)是 1,但 Segment 還是多個(gè)。

    這類索引不會(huì)在接受寫(xiě)入操作,為了節(jié)約空間和改善查詢性能,通過(guò) Forcemerge API 將 Segment 適量合并:

  • PUT?inactive-logs-1/_settings?
  • {?"number_of_replicas":?1?}?
  • ES 的 Forcemerge 過(guò)程是先創(chuàng)建新的 Segment 刪除舊的,所以舊 Segment 的壓縮方式 best_compression 不會(huì)在新的 Segment 中生效,新的 Segment 還是默認(rèn)的壓縮方式。

    現(xiàn)在 inactive-logs-1 的復(fù)本還是 0,如果有需要的話,可以分配新的復(fù)本數(shù):

  • PUT?inactive-logs-1/_settings?
  • {?"number_of_replicas":?1?}?
  • 最后刪除 active-logs-1,因?yàn)槲覀円呀?jīng)為它做了一個(gè)查詢復(fù)本 inactive-logs-1。

    DELETE active-logs-1

    走到這里,我們就已經(jīng)實(shí)現(xiàn)了 Index 的 Hot-Warm 架構(gòu),根據(jù)業(yè)務(wù)特點(diǎn)將一段時(shí)間的數(shù)據(jù)放在 Hot Nodes,更多的歷史數(shù)據(jù)存儲(chǔ)于 Warm Nodes。

    其他優(yōu)化方案

    索引隔離

    在多條業(yè)務(wù)線的索引共用一個(gè) ES 集群時(shí)會(huì)發(fā)生流量被獨(dú)吃獨(dú)占的情況,因?yàn)榇蠹叶脊灿孟嗤募嘿Y源,流量大的索引會(huì)占用大部分計(jì)算資源而流量小的也會(huì)被拖慢,得不到即時(shí)響應(yīng),或者說(shuō)業(yè)務(wù)流量大的索引可以按天拆分,幾個(gè)流量小的索引可以按周或月拆分。

    這種情況下我們可以將規(guī)模大的索引和其他相對(duì)小規(guī)模的索引獨(dú)立存儲(chǔ),分開(kāi)查詢或合并查詢。

    除了 Master Nodes 以外,Data Nodes 和 Coordinating Nodes 都可以獨(dú)立使用(其實(shí)如果每個(gè)索引的量都特別大也應(yīng)該采用這種架構(gòu)),還有一個(gè)好處是對(duì)方的某個(gè) Node 掛掉,自己不受影響。

    同樣利用 ES 支持 Shard Allocation Filtering 功能來(lái)實(shí)現(xiàn)索引的資源獨(dú)立分配,先將 Nodes 進(jìn)行打標(biāo)簽,劃分區(qū)域,類似于 Hot-Warm 架構(gòu):

  • node.attr.zone=zone_a、node.attr.zone=zone_b?
  • 或者:

  • node.attr.zone?=zone_hot_a、node.attr.zone=zone_hot_b?
  • 等打標(biāo)簽的方式來(lái)區(qū)別對(duì)應(yīng)不同的索引,然后在各自的 Index Template 中指定不同的 node.attr.zone 即可。

    如"index.routing.allocation.include.zone" : "zone_a,zone_hot_a",

    或者排除法"index.routing.allocation.exclude.size": "zone_hot_b"

    分配到 zone_hot_b 以外的所有 Data Nodes 上。

    更多用法可以參考 Hot-Warm 架構(gòu),或 shard-allocation-filtering:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/shard-allocation-filtering.html?
  • 跨數(shù)據(jù)中心

    如果你的業(yè)務(wù)遍布全國(guó)各地,四海八荒,如果你數(shù)據(jù)要存儲(chǔ)到多個(gè)機(jī)房,如果你的 Index 有幾萬(wàn)個(gè)甚至更多( Index 特別多,集群龐大會(huì)導(dǎo)致 Cluster State 信息量特別大,因?yàn)?Cluster State 包含了所有 Shard、Index、Node 等所有相關(guān)信息,它存儲(chǔ)在每個(gè) Node 上,這些數(shù)據(jù)發(fā)生變化都會(huì)實(shí)時(shí)同步到所有 Node 上,當(dāng)這個(gè)數(shù)據(jù)很大的時(shí)候會(huì)對(duì)集群的性能造成影響)。

    這些情況下我們會(huì)考慮部署多個(gè) ES Cluster,那我們將如何解決跨集群查詢的問(wèn)題呢?

    目前 ES 針對(duì)跨集群操作提供了兩種方案 Tribe Node 和 Cross Cluster Search。

    Tribe Node

    需要一個(gè)獨(dú)立的 Node 節(jié)點(diǎn),加入其他 ES Cluster,用法有點(diǎn)類似于 Coordinating Only Node。

    所不同的是 Tribe 是針對(duì)多個(gè) ES 集群之間的所有節(jié)點(diǎn),Tribe Node 收到請(qǐng)求廣播到相關(guān)集群中所有節(jié)點(diǎn),將結(jié)果合并處理后返回。

    表面上看起來(lái) Tribe Node 將多個(gè)集群串連成了一個(gè)整體,遇到同名 Index 發(fā)生沖突,會(huì)選擇其中一個(gè) Index,也可以指定:

  • tribe:?
  • ??on_conflict:?prefer_t1?
  • ??t1:?
  • ????cluster.name:?us-cluster?
  • ????discovery.zen.ping.multicast.enabled:?false?
  • ????discovery.zen.ping.unicast.hosts:?['usm1','usm2','usm3']?
  • ??t2:?
  • ????cluster.name:?eu-cluster?
  • ????discovery.zen.ping.multicast.enabled:?false?
  • ????discovery.zen.ping.unicast.hosts:?['eum1','eum2','eum3']?
  • Cross Cluster Search

    Cross Cluster Search 可以讓集群中的任意一個(gè)節(jié)點(diǎn)聯(lián)合查詢其他集群中的數(shù)據(jù), 通過(guò)配置 elasticsearch.yml 或者 API 來(lái)啟用這個(gè)功能,API 示例:

  • PUT?_cluster/settings?
  • {?
  • ??"persistent":?{?
  • ????"search":?{?
  • ??????"remote":?{?
  • ????????"cluster_one":?{?
  • ??????????"seeds":?[?
  • ????????????"127.0.0.1:9300"?
  • ??????????]?
  • ????...?
  • ????????}?
  • ??????}?
  • ????}?
  • ??}?
  • }?
  • 提交以后整個(gè)集群所有節(jié)點(diǎn)都會(huì)生效,都可以做為代理去做跨集群聯(lián)合查詢,不過(guò)我們最好還是通過(guò) Coordinating Only Nodes 去發(fā)起請(qǐng)求。

  • POST?/cluster_one:decision,decision/_search?
  • {?
  • ????"match_all":?{}?
  • }?
  • 對(duì)集群 cluster_one 和本集群中名為 Decision 的索引聯(lián)合查詢。

    目前這個(gè)功能還在測(cè)試階段,但未來(lái)可能會(huì)取代 Tribe Node,之間的最大的差異是 Tribe Node 需要設(shè)置獨(dú)立的節(jié)點(diǎn),而 Cross Cluster Search 不需要,集群中的任意一個(gè)節(jié)點(diǎn)都可以兼任。

    比如可以用我們的 Coordinating Only Nodes 做為聯(lián)合查詢節(jié)點(diǎn),另一個(gè)優(yōu)點(diǎn)是配置是動(dòng)態(tài)的,不需要重啟節(jié)點(diǎn)。

    實(shí)際上可以理解為是一個(gè) ES 集群之間特定的動(dòng)態(tài)代理工具,支持所有操作,包括 Index 的創(chuàng)建和修改,并且通過(guò) Namespace 對(duì) Index 進(jìn)行隔離,也解決了 Tribe Node 之 Index 名稱沖突的問(wèn)題。

    小結(jié)

    我們?cè)谖闹薪榻B了幾種方案用來(lái)解決時(shí)序索引的海量數(shù)據(jù)存儲(chǔ)和查詢的問(wèn)題,根據(jù)業(yè)務(wù)特點(diǎn)和使用場(chǎng)景來(lái)單獨(dú)或組合使用能夠發(fā)揮出意想不到的效果。

    特別是 Nodes 之間的讀寫(xiě)分離、索引拆分、Hot-Warm 等方案的組合應(yīng)用對(duì)索引的查詢和存儲(chǔ)性能有顯著的提升。

    另外 Routing 在新版本中增加了 routing_partition_size,解決了 Shard 難以均衡的問(wèn)題。

    如果你的索引 Mapping 中沒(méi)有 parent-child 關(guān)聯(lián)關(guān)系可以考慮使用,對(duì)查詢的性能提升非常有效。

    本文參考內(nèi)容:

    • hot-warm-architecture-in-elasticsearch-5-x
    • managing-time-based-indices-efficiently
    • what-is-evolving-in-elasticsearch

    總結(jié)

    以上是生活随笔為你收集整理的让Elasticsearch飞起来!百亿级实时查询优化实战的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    日p视频在线观看 | 很黄很黄的网站免费的 | 亚洲激情综合网 | 国内精品视频一区二区三区八戒 | 欧美成年网站 | 九九av | 中文字幕一区二区在线播放 | 国产精品高潮在线观看 | aaawww | 婷婷丁香在线观看 | 丁香五婷 | 五月婷婷亚洲 | a黄色片 | 中文字幕免费观看视频 | 久草视频在线免费看 | 91色吧| 中文字幕在线观看第三页 | 99热这里只有精品免费 | 免费看国产黄色 | 91手机电影 | 日日日爽爽爽 | 日韩在线高清视频 | 奇米影视8888在线观看大全免费 | 97在线观看免费 | 97超碰人人澡人人爱学生 | 91精品久久久久久综合乱菊 | 国产日产亚洲精华av | 91精品夜夜 | 久久天堂精品视频 | 欧美激情奇米色 | 蜜臀av性久久久久av蜜臀妖精 | 色999视频| 高潮久久久久久 | 超碰人人在线 | 国产精品国产三级在线专区 | 一区中文字幕电影 | 特黄特色特刺激视频免费播放 | 国产精品一级视频 | 精品亚洲一区二区 | 国产护士av | 日本中文字幕在线播放 | 久久天堂精品视频 | 在线免费视频a | 天天操狠狠操网站 | 又黄又爽又无遮挡的视频 | 亚洲va欧美va | 日韩免费电影网 | 国产xxxxx在线观看 | 日日操天天爽 | 国产日韩在线一区 | 午夜免费在线观看 | 97色综合| www色网站| 91视频91自拍 | 在线视频区 | 色视频网站免费观看 | 亚洲精选视频在线 | 91最新网址在线观看 | 五月天综合网 | 最近在线中文字幕 | 日韩中文字幕免费视频 | 午夜影视一区 | 成人va在线观看 | 成人九九视频 | 日韩免费视频网站 | 丝袜美腿亚洲综合 | 国产精品男女视频 | 婷婷免费视频 | 久久特级毛片 | 成人av中文字幕 | 日韩在线观看视频一区二区三区 | 国产午夜影院 | 999电影免费在线观看2020 | 全黄网站| 欧美一级特黄aaaaaa大片在线观看 | 开心激情五月网 | 黄色综合| 国产精品久久99综合免费观看尤物 | 夜夜操网 | 久久午夜鲁丝片 | 91传媒免费观看 | 天天操夜夜叫 | 69精品在线观看 | 在线免费视频 你懂得 | 精品国产91亚洲一区二区三区www | 麻豆成人小视频 | 蜜桃麻豆www久久囤产精品 | av女优中文字幕在线观看 | 91av大全 | 少妇18xxxx性xxxx片 | 国产精品女同一区二区三区久久夜 | 激情五月开心 | 在线观看视频免费大全 | 中文字幕在线视频一区二区 | av在线免费观看不卡 | 国产99久久久精品 | 国产艹b视频 | 欧美性大战 | japanesexxxxfreehd乱熟 | 日韩精品黄| 国产人成在线观看 | 在线成人观看 | 欧美一区二视频在线免费观看 | 国产一区二区在线看 | 91在线精品一区二区 | av看片网| 国产成人久久精品一区二区三区 | 免费av影视 | 亚洲成人免费观看 | 在线播放日韩av | 日本中文字幕网址 | av在线观 | 欧美亚洲成人免费 | a成人在线 | 狠狠色丁香久久婷婷综合五月 | 中文字幕第一页av | 国产一级性生活 | 成人在线观看免费视频 | 午夜在线观看一区 | 久久精品欧美一区二区三区麻豆 | 99热在线这里只有精品 | 国产一级精品视频 | 国产999精品久久久影片官网 | 精品视频不卡 | www国产亚洲精品久久麻豆 | 欧美精品成人在线 | 蜜桃视频日韩 | 香蕉视频久久 | 国产成人精品一区一区一区 | 亚洲一级片在线看 | 亚洲精品mv在线观看 | 丁香六月欧美 | 日韩欧美视频一区 | 成人黄性视频 | 91在线九色| 国产又粗又猛又黄又爽 | 日韩精品一区二区三区高清免费 | 在线观看a视频 | 91精品国自产在线观看欧美 | 韩日精品在线 | 国产精品久久久久久久久久久久午夜片 | 97人人网| 精品国产乱码久久久久久1区2匹 | 在线观看色网站 | 国产精品一区二区果冻传媒 | 日本精品中文字幕 | 久久精品永久免费 | 免费国产一区二区视频 | 96香蕉视频 | 欧美日韩网站 | 国产一区网址 | 久久免费看 | 午夜av不卡 | 精品国产伦一区二区三区 | 91亚·色| a视频免费在线观看 | 国产精品精品国产婷婷这里av | 中文字幕网站 | 欧美性天天 | 日韩av成人在线观看 | 在线播放视频一区 | 亚洲最大av在线播放 | 99视频精品免费视频 | 国内精品久久久久影院优 | 亚洲特级毛片 | 久久久久久久影院 | 精品国产一区二区三区四 | 亚洲欧洲精品视频 | 五月婷婷.com | 一级a性色生活片久久毛片波多野 | 精品国产一区二区三区久久久 | 91黄色免费网站 | 欧洲高潮三级做爰 | 国产精品精品国产婷婷这里av | 成人免费视频播放 | 国产成人一区二区三区在线观看 | 小草av在线播放 | 在线不卡a | 欧美专区日韩专区 | 手机在线免费av | 玖玖999| 99久久www | 日韩高清在线一区二区三区 | 波多野结衣视频一区二区三区 | 射九九| 最新中文字幕视频 | 国产99久久久精品 | 国产亚洲在| 超碰电影在线观看 | 一本一本久久a久久精品牛牛影视 | 国产精品久久久久一区二区国产 | 亚洲欧美日韩国产一区二区三区 | 最近中文字幕高清字幕在线视频 | 亚洲欧洲精品一区二区 | 日韩在线精品一区 | 欧美精品久久久久性色 | 国产午夜剧场 | 99视频精品全国免费 | 精品久久久久久电影 | 在线观看视频一区二区三区 | 99精品在线免费视频 | 在线中文字母电影观看 | 欧美日韩视频免费看 | 超碰97人人射妻 | 成人 亚洲 欧美 | 日韩av影片在线观看 | 国产伦理久久 | 亚洲伦理中文字幕 | 懂色av一区二区在线播放 | 久久免费视频99 | 成人a视频 | 色婷婷激情四射 | 在线免费av播放 | 婷婷色网视频在线播放 | 在线观看国产区 | 久久99精品久久久久久三级 | av中文字幕在线播放 | 国偷自产视频一区二区久 | 天堂网av在线 | 色在线中文字幕 | 日韩黄色av网站 | 午夜成人免费影院 | 国产黄色理论片 | 91中文字幕网 | 色婷婷亚洲婷婷 | 欧美人人 | av成人动漫在线观看 | 日韩在线免费不卡 | 免费在线观看黄网站 | 伊人婷婷色 | 久久综合偷偷噜噜噜色 | 狠狠操狠狠干天天操 | 日韩精品一区二 | 亚洲第一久久久 | 国产99久久九九精品免费 | 国产精品一区二区中文字幕 | 黄色a三级| www.888av | 91九色蝌蚪国产 | 少妇视频在线播放 | 五月婷婷开心中文字幕 | 免费观看v片在线观看 | 婷婷六月综合网 | 99国产视频 | 在线观看免费观看在线91 | 欧美乱淫视频 | 国产成人精品免高潮在线观看 | 亚洲精品视频在线观看免费视频 | 国产日韩精品视频 | 欧美国产一区二区 | 91视频首页 | 国产久草在线观看 | 日日夜夜狠狠操 | 国产日韩中文字幕在线 | 亚洲韩国一区二区三区 | 国产亚洲综合在线 | 人人射人人爱 | 91人人澡 | 亚洲专区视频在线观看 | 久久久久在线观看 | www.干| 欧美日韩xx | 免费69视频 | 不卡视频在线看 | 亚洲国产天堂av | 91探花在线 | 亚洲成人资源网 | 美女免费电影 | 久久成熟 | 日韩av黄 | 日韩免费精品 | 九九热国产视频 | 国产精品美女久久久久久免费 | 九九九九免费视频 | 五月婷婷av在线 | 国内精品久久久久久久久 | 久久久一本精品99久久精品 | 国产成人精品日本亚洲999 | 永久免费观看视频 | 亚洲午夜久久久久 | www.av免费| 99久久婷婷国产精品综合 | 天天操夜夜操国产精品 | 午夜国产在线观看 | 久久高清片 | 在线只有精品 | 在线天堂中文www视软件 | 91福利试看 | 亚州天堂 | 亚洲精品国产综合99久久夜夜嗨 | 久草久视频 | 黄色特一级片 | 国产精品视频 | 免费高清在线视频一区· | 成年人免费av网站 | 91在线观| 成人午夜电影网站 | 成人播放器 | 91黄色在线视频 | 91在线国产观看 | 亚洲成人黄色网址 | 911av视频 | 久久精选视频 | 色噜噜狠狠色综合中国 | 久久99免费视频 | av免费看看 | 国产无区一区二区三麻豆 | 亚洲精品成人av在线 | 日韩欧美一区二区不卡 | 综合伊人av | 日日射av| 日韩在线高清视频 | 国产在线观看一区 | 99久久精品费精品 | 亚洲春色成人 | www.在线观看视频 | 四虎影视精品成人 | 在线观看视频中文字幕 | 国产综合久久 | 国产美女被啪进深处喷白浆视频 | 亚洲人人av| 精品国产伦一区二区三区观看说明 | 成人小视频在线免费观看 | 久久精品精品电影网 | 国产精品一区二区三区观看 | 亚洲一区日韩 | 日韩有色| 免费视频黄 | 欧美日韩在线观看一区二区三区 | 99久久精品免费看国产一区二区三区 | 欧美aa一级 | 成人在线播放网站 | av片一区 | 国产偷v国产偷∨精品视频 在线草 | 中文字幕欧美三区 | 在线观看视频91 | avcom在线| 成人在线视频免费 | 91精品伦理 | 精品一二三区视频 | 色噜噜在线观看 | 激情在线网站 | 天天射天天 | 国产日韩欧美自拍 | 日韩免费电影网 | 日韩美女免费线视频 | 黄色录像av | 日韩在线观 | 国产婷婷 | 亚洲国产小视频在线观看 | av资源免费看 | 日韩av免费观看网站 | 久久一区二区三区四区 | 激情av五月婷婷 | 欧美日韩二三区 | 色噜噜日韩精品一区二区三区视频 | 免费又黄又爽 | 一区二区三区在线免费观看视频 | 亚洲天天在线日亚洲洲精 | 亚洲精品色 | www黄色av| 久久99网 | 青青草视频精品 | 欧洲亚洲激情 | 亚洲精品国产拍在线 | 婷婷网站天天婷婷网站 | 国产精品av在线免费观看 | 久草网站在线观看 | 五月婷婷综合激情网 | 国产在线观看黄 | 成x99人av在线www | 夜又临在线观看 | 午夜美女wwww | 欧美一级视频一区 | 超薄丝袜一二三区 | 人人爽人人插 | 国产永久网站 | 国产精品一区二区免费在线观看 | 一区 二区电影免费在线观看 | 免费黄色在线网站 | 久热香蕉视频 | 在线观看av麻豆 | 欧美韩日精品 | 天天操操操操操 | 免费三级影片 | 国产精品一级视频 | 玖玖视频在线 | 丁香六月婷婷开心婷婷网 | 久久久福利影院 | 久久九精品 | 色综合天天射 | 亚洲影院天堂 | 亚洲成aⅴ人在线观看 | 欧美 日韩 久久 | 日韩中文字幕免费视频 | 国产少妇在线观看 | 国产又粗又猛又爽又黄的视频先 | av导航福利 | 人人超碰在线 | 久久久免费看片 | 91精品久久久久久久99蜜桃 | 天天操 夜夜操 | 亚洲婷婷丁香 | 天堂中文在线视频 | 日韩免费在线看 | 91桃色在线免费观看 | 久久精品国产成人精品 | 国产精品美女久久久 | 久久久久亚洲国产精品 | 521色香蕉网站在线观看 | 干亚洲少妇 | 国产手机精品视频 | 韩日电影在线免费看 | 黄色一级在线免费观看 | 五月综合色 | 91porny九色91啦中文 | 国产又黄又硬又爽 | 久久99国产精品 | 久久久香蕉视频 | 深爱婷婷网 | 亚洲国产中文字幕在线视频综合 | 久久综合导航 | 天天干天天拍天天操 | 日日激情| 中文字幕精品一区久久久久 | 日韩 在线观看 | 激情五月在线 | 99c视频高清免费观看 | 亚洲日本中文字幕在线观看 | 毛片网在线播放 | 99自拍视频在线观看 | av中文字幕免费在线观看 | 国产 日韩 在线 亚洲 字幕 中文 | 在线观看国产麻豆 | 最新av电影网站 | av网站免费看 | 国产精品com | 西西444www | 成人在线小视频 | 久久视频网址 | 欧美日韩久久久 | 狠狠久久伊人 | 毛片网站免费在线观看 | 国产成人久久av977小说 | 91成人免费视频 | 亚洲精品久久久蜜桃直播 | 国偷自产中文字幕亚洲手机在线 | 亚洲闷骚少妇在线观看网站 | 美女网站黄在线观看 | 狠狠的干 | 欧美9999| 中文字幕av在线不卡 | 国产精品福利一区 | 免费看片网页 | 81国产精品久久久久久久久久 | 免费在线观看av不卡 | 国产在线 一区二区三区 | 激情五月婷婷网 | 久久精品9| 国产精品女人久久久久久 | 射久久久 | 超碰在线最新网址 | 制服丝袜欧美 | 欧美精品视 | 久久免费视频5 | 香蕉在线观看视频 | 国产又粗又猛又色又黄网站 | 91免费网址 | 在线成人性视频 | 九九九热视频 | 精品黄色片 | 夜夜躁狠狠躁日日躁 | 色网站免费在线观看 | 国产欧美日韩一区 | 91禁在线看 | 国产亚洲午夜高清国产拍精品 | 最新中文字幕视频 | 免费三及片 | 国产精品18videosex性欧美 | 国产精品视频永久免费播放 | 精品99999| 天海翼一区二区三区免费 | 91视频免费看网站 | 91热| 国产 日韩 欧美 自拍 | av中文电影 | 色婷婷综合久色 | 欧美久久久久久久久 | 久九视频| 久久久久久久久久久电影 | 热久久影视| 综合色天天 | 黄色a在线观看 | 日本午夜免费福利视频 | 奇米影视777四色米奇影院 | 免费成人短视频 | 亚洲精品黄色在线观看 | 九九热免费精品视频 | 亚洲影视资源 | www.久久免费视频 | 国产色婷婷精品综合在线手机播放 | www.色婷婷 | 99久久999久久久精玫瑰 | 97免费中文视频在线观看 | 精品人妖videos欧美人妖 | 久99久精品视频免费观看 | 激情婷婷综合网 | 国产最新网站 | 国产精品免费小视频 | 天天曰天天射 | 最新av网站在线观看 | 国产精品美女999 | 国产精品理论片 | 国产亚洲精品久久久久久久久久久久 | 日本久久电影 | 亚洲天堂香蕉 | 国产精品激情在线观看 | 久久天天躁夜夜躁狠狠85麻豆 | 天天搞天天干天天色 | 欧美成年黄网站色视频 | 美女视频黄在线观看 | 国产精品毛片久久 | 欧美精品少妇xxxxx喷水 | 日韩中文字幕免费在线播放 | 一级免费黄色 | 日批在线看 | 欧美一区二区在线免费看 | 在线观看网站你懂的 | 亚洲精品乱码白浆高清久久久久久 | 亚洲精品久久久久中文字幕二区 | 亚洲成aⅴ人片久久青草影院 | 欧美一二在线 | 亚洲精品男女 | 精品产品国产在线不卡 | 在线色网站 | 精品国产一区二区三区久久 | 亚洲无吗视频在线 | 成人欧美日韩国产 | 亚洲自拍自偷 | 国产区欧美 | 日韩精品2区 | 欧美激精品| 日韩高清不卡一区二区三区 | 四虎在线观看 | 久草在线手机视频 | 久久高清av| 月丁香婷婷 | 国产精品嫩草影视久久久 | 91精品国产92久久久久 | 国产亚洲一级高清 | 国产成人在线观看 | 手机看片国产日韩 | 久草在线资源观看 | 91麻豆精品91久久久久同性 | 欧美日韩综合在线观看 | 黄色aa久久| 国产不卡精品视频 | 深夜免费福利网站 | 日韩在线视频在线观看 | 午夜视频亚洲 | 成人av在线网址 | 美女精品在线观看 | 亚洲精品影院在线观看 | 国内精品久久久久影院男同志 | 久久av中文字幕片 | 在线观看黄色国产 | 亚洲国产精品成人女人久久 | 在线你懂 | 欧美极度另类 | 国产精品一级在线 | 青青草视频精品 | 人人插人人舔 | 久久视频中文字幕 | 欧美极品少妇xbxb性爽爽视频 | 国内精品小视频 | 天天色天天操天天爽 | 国产精品白浆视频 | 日韩精品国产一区 | sm免费xx网站 | 久久综合九色综合欧美就去吻 | 免费在线播放黄色 | 欧美视频www | 韩国av电影网| 一区 二区电影免费在线观看 | 激情av网址 | 国产精品一二三 | 97超碰在线资源 | 国产又粗又猛又色又黄网站 | av片在线观看免费 | 黄色毛片网站在线观看 | 日本免费一二三区 | 国产一级91 | 久操视频在线免费看 | 偷拍精偷拍精品欧洲亚洲网站 | 国产最新福利 | 免费观看成人网 | 国产视频资源在线观看 | 久久视频网址 | 中国一级片视频 | 欧美人交a欧美精品 | 香蕉国产91 | 国产破处在线视频 | 国产日韩精品一区二区在线观看播放 | 91精品国产综合久久婷婷香蕉 | 国内精品久久久久久久久久久 | free,性欧美 九九交易行官网 | 在线 国产 日韩 | 欧美日韩精品在线视频 | 好看的国产精品视频 | 久久综合久色欧美综合狠狠 | 免费成人短视频 | 久草在线手机观看 | 一区二区丝袜 | 日韩欧美视频 | 国产白浆视频 | 黄色三级视频片 | 日韩欧美在线观看 | 国产精品久久久久久久久久久久午夜片 | 亚洲在线成人精品 | 夜夜骑天天操 | 亚洲韩国一区二区三区 | 久久成人国产精品 | 黄色一级片视频 | 久久午夜电影网 | 亚洲日韩欧美一区二区在线 | a久久久久 | 国产免费人成xvideos视频 | 波多野结衣亚洲一区二区 | 亚洲免费小视频 | 国产亚洲一区二区三区 | 久久久夜色 | 中文在线资源 | 毛片美女网站 | 色黄久久久久久 | 久久情网 | 久草视频一区 | 日韩欧美精选 | 亚洲高清在线 | 中文字幕在线观看视频一区 | 久久国产精品影片 | 日韩久久久久久久久久 | 一区免费视频 | 中文字幕av播放 | 人人舔人人射 | 久国产在线播放 | 欧美精品在线一区 | 香蕉视频91 | 天天曰夜夜操 | 人人爽久久涩噜噜噜网站 | 欧美一区影院 | 麻豆国产精品永久免费视频 | 精品国产中文字幕 | 97超碰免费在线观看 | 免费99精品国产自在在线 | 中文字幕亚洲在线观看 | 91片黄在线观看 | 国产无区一区二区三麻豆 | 玖玖在线播放 | 98涩涩国产露脸精品国产网 | 国产亚洲欧美在线视频 | 欧美日本国产在线观看 | 在线观看午夜 | 精品96久久久久久中文字幕无 | 午夜视频在线观看一区二区三区 | 天天色综合1 | 日本一区二区高清不卡 | 欧美精品久久久久久久亚洲调教 | 午夜婷婷网 | 久久热首页 | 香蕉在线观看 | 精品国产乱码久久久久久久 | 中文字幕av播放 | 日韩在线一二三区 | 91刺激视频| 最近中文字幕免费av | 综合激情 | 韩国av一区 | 亚州性色 | 亚洲欧洲精品一区二区 | 成人黄色免费在线观看 | 国产成人a亚洲精品v | 国产精品99久久久精品 | 国产一区二区中文字幕 | 久久久久伊人 | 日韩电影中文字幕在线 | 91网页版在线观看 | 91丨九色丨首页 | 91丨九色丨蝌蚪丰满 | 人人看人人爱 | 欧美色图东方 | 日韩,中文字幕 | 国产 一区二区三区 在线 | 亚洲精品影院在线观看 | 中文字幕在线免费看线人 | 久久夜色精品国产欧美一区麻豆 | 成人cosplay福利网站 | 国产视频在线观看一区 | 精品黄色片 | 激情丁香婷婷 | 国产69精品久久久久久 | 国产精品久久久久久久久费观看 | 香蕉网址| 在线观看av黄色 | 丝袜网站在线观看 | 在线观看视频三级 | 亚洲精品网址在线观看 | 欧美一区在线看 | 三级a视频 | 亚州精品国产 | 人人爽人人片 | 在线观看中文字幕2021 | 日韩精品一区二区三区三炮视频 | 在线观看va | 欧美一区二视频在线免费观看 | 精品成人网| 91精品久久久久久综合乱菊 | 97国产大学生情侣白嫩酒店 | 久久成年人网站 | 碰天天操天天 | 久久精品女人毛片国产 | 国产精品区一区 | 国产精品久久久久久久久久久久久 | 成人在线播放av | 黄网站色成年免费观看 | 日韩精品一区二区电影 | 国产成人一区二区三区久久精品 | 精品国产色 | h网站免费在线观看 | 欧美天堂视频在线 | 久草久热 | av韩国在线 | 成人永久视频 | 中文字幕免费一区二区 | 高清久久久久久 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 丁香网五月天 | 久久免费视频网 | 久久夜av | 人人插人人干 | 久久综合久久88 | 丝袜网站在线观看 | 日本在线视频一区二区三区 | 久久精品99国产精品亚洲最刺激 | 九月婷婷人人澡人人添人人爽 | 国产视| 国产九色91| 久久久久久久99精品免费观看 | 国产成人久久精品 | 夜夜骑天天操 | 国产黄色在线观看 | 日韩和的一区二在线 | 黄色av三级在线 | 色综合咪咪久久网 | 国产成人精品一二三区 | 成人中文字幕在线观看 | 亚洲精品一区二区三区在线观看 | 999视频在线播放 | 一本到视频在线观看 | 三级动态视频在线观看 | 99九九热只有国产精品 | 精品视频99 | 国产精选在线观看 | 青青河边草观看完整版高清 | 日日爽天天操 | 国产精品一区二区久久久 | 国产91精品在线观看 | 深夜免费小视频 | 99精品黄色片免费大全 | 免费看的国产视频网站 | 91专区在线观看 | 96av在线| 精品久久久久亚洲 | 国产精品视频久久久 | 99热官网| 亚洲国产高清在线观看视频 | 天天操天天爱天天干 | 激情在线五月天 | 久久免费国产电影 | 成年人黄色大片在线 | 五月婷婷中文网 | 人人看人人做人人澡 | 久久影院亚洲 | 国产精品久久久av | 日本电影久久 | 97视频资源| 国产手机视频在线 | 亚洲在线观看av | 欧美一区成人 | 亚洲免费一级 | 精品欧美一区二区三区久久久 | 曰本三级在线 | 国产亚洲精品美女久久 | 美女天天操 | 欧美激情操 | 精品黄色在线 | 欧美激情综合五月 | 天天干天天天 | 播五月婷婷 | 日韩午夜电影院 | 麻豆一区在线观看 | 国产精品一区二区三区视频免费 | 少妇精品久久久一区二区免费 | 91九色在线视频观看 | 国产成人一区二区三区影院在线 | 天天看天天干 | 激情av网 | 成人a视频片观看免费 | 伊人官网 | 美女av免费| 91高清在线看 | 国产黄在线看 | 91高清视频在线 | 五月婷婷另类国产 | 久视频在线播放 | 国产五月天婷婷 | 免费国产ww | 91九色视频导航 | 91精品国产综合久久婷婷香蕉 | 亚洲va欧洲va国产va不卡 | 不卡的av | 欧美a级成人淫片免费看 | 在线观看日韩中文字幕 | av观看久久久 | www.夜夜 | 欧美一级特黄高清视频 | 97人人超碰在线 | 日日摸日日碰 | 国产精品手机在线观看 | 亚洲天天摸日日摸天天欢 | 欧美国产日韩一区二区三区 | 91精品无人成人www | 高清视频一区二区三区 | 波多野结衣理论片 | 久久午夜网 | 999国内精品永久免费视频 | 精品国产aⅴ麻豆 | 久久久久久高潮国产精品视 | 在线观看久草 | 久久婷婷精品 | 九九热免费在线观看 | 黄网在线免费观看 | 亚洲视频精品 | 在线观看一级 | 三级黄色片子 | 日本视频久久久 | 国产精品福利在线播放 | 国产黑丝袜在线 | 久久久久久久久久久国产精品 | 91视频下载 | 免费观看www视频 | 亚洲理论在线观看电影 | 国产精品久久久久久高潮 | 色99导航 | 一本到在线 | 婷婷色 亚洲 | 一区二区三区在线观看中文字幕 | 三级av网站 | 国产精品乱码久久久久久1区2区 | 好看的国产精品视频 | 成人一级影视 | 久久精品99国产国产精 | 在线观看网站你懂的 | 久久人人艹 | 国产日产精品久久久久快鸭 | 国内免费的中文字幕 | 有没有在线观看av | 色综合 久久精品 | 手机av网站 | 色视频在线观看 | 五月婷婷另类国产 | 久久亚洲免费视频 | 黄色片亚洲 | 国产一级二级三级视频 | 午夜视频在线观看一区二区 | 亚洲综合色av| 欧美一级电影 | 最近日本mv字幕免费观看 | 久久天天躁夜夜躁狠狠85麻豆 | 91人人揉日日捏人人看 | 伊人宗合网 | 国产精品资源在线 | 激情五月婷婷综合 | 91视频在线免费 | 干av在线 | 99亚洲精品在线 | 日本少妇久久久 | 亚州av网站 | 99精品偷拍视频一区二区三区 | 亚洲高清在线观看视频 | 激情婷婷色 | 免费亚洲片 | 亚洲成aⅴ人片久久青草影院 | 国产精彩在线视频 | 97超碰人人| 久久亚洲电影 | 亚洲综合精品视频 | 国产精品久久久久毛片大屁完整版 | 六月丁香综合网 | 国产精品a久久久久 | 天天干天天综合 | 91| 久久男人中文字幕资源站 | a亚洲视频| 在线免费观看国产 | 人人干天天干 | av片中文 | 久久精品99国产 | www·22com天天操| 99免费看片 | 国产理论影院 | 欧美在线视频第一页 | 五月婷婷丁香在线观看 | 日日爽| 91精品天码美女少妇 | 国产99久久九九精品免费 | av色一区| av短片在线| 91在线免费播放 | 美女精品久久 | 久草免费在线视频 | 国产精品一区二区果冻传媒 | 草久视频在线观看 | 五月婷丁香网 | 婷婷伊人网 | 99产精品成人啪免费网站 | 日韩精品电影在线播放 | 激情 一区二区 | 中国一区二区视频 | www国产精品com | 亚洲激情在线视频 | 国内一级片在线观看 | 国产美女无遮挡永久免费 | 久久亚洲在线 | 99热最新精品| 99亚洲精品 | 日日干干夜夜 | 麻豆传媒一区二区 | 国产精品一区二区av麻豆 | 日本中文字幕在线看 | 亚洲夜夜综合 | 亚洲国产精品999 | 欧美日本三级 | 久久永久免费视频 | 五月天六月婷婷 | 中文国产在线观看 | 亚洲欧美视屏 | 五月婷婷久久丁香 | av片子在线观看 | 国产精品国产自产拍高清av | 国产在线观看网站 | 四虎在线视频免费观看 | 91精品视频在线看 | 久久久久日本精品一区二区三区 | 色天天中文| 中文字幕免费不卡视频 | 日韩动态视频 | 亚洲精选在线 | 狠狠色丁香久久婷婷综合_中 | 国产麻豆剧传媒免费观看 | 精品视频免费久久久看 | 亚洲综合视频在线观看 | 欧美大片在线观看一区 | 国产五码一区 | 99精品欧美一区二区三区黑人哦 | 91精品老司机久久一区啪 | 精品免费视频 | 国产99区| 久久久高清免费视频 | 亚洲黄色在线播放 | 99精品黄色片免费大全 | 日韩xxxbbb| 亚洲综合日韩在线 | 香蕉影院在线观看 | 亚洲精品美女久久久 | 久久黄色a级片 | 亚洲一区在线看 | 97国产电影| 手机在线中文字幕 | 九九久久国产 | 亚洲精品天天 | 免费看十八岁美女 | 亚洲精品午夜国产va久久成人 | 久久久国产精品一区二区中文 | 99在线免费观看 | 国产美女免费 | 热久久国产 | 亚洲美女视频在线 | 国产香蕉久久 | 亚洲黄色一级大片 | 亚洲精欧美一区二区精品 | 婷婷六月天丁香 | 亚洲成人麻豆 | 狠狠色伊人亚洲综合成人 | 狠狠操天天射 | 91av免费观看 | 香蕉97视频观看在线观看 | 午夜影院一区 | 九九在线高清精品视频 |