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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

ClickHouse源码阅读(0000 0110) —— 使用ReplicatedMergeTree引擎时的副本选择问题

發(fā)布時(shí)間:2024/3/24 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ClickHouse源码阅读(0000 0110) —— 使用ReplicatedMergeTree引擎时的副本选择问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在使用ReplicatedMergeTree引擎和Distributed引擎的時(shí)候,對于同一張表,服務(wù)器上存在多個(gè)副本,在查詢數(shù)據(jù)的時(shí)候,是如何在這些副本之間進(jìn)行選擇的呢?結(jié)合源碼來試著分析一下...

對于一條SELECT SQL,從以下方法開始:

pipeline.streams = storage->read(required_columns, query_info, context, processing_stage, max_block_size, max_streams);

如圖:

進(jìn)入到這個(gè)方法中,主要步驟包括修改AST(修改表名)、物化header、構(gòu)建select_stream_factory等,最后執(zhí)行ClusterProxy::executeQuery()方法,簡化代碼如下:

BlockInputStreams StorageDistributed::read(const Names & /*column_names*/,const SelectQueryInfo &query_info,const Context &context,QueryProcessingStage::Enum processed_stage,const size_t /*max_block_size*/,const unsigned /*num_streams*/) {auto cluster = getCluster();const Settings &settings = context.getSettingsRef();//修改AST, 修改表名const auto &modified_query_ast = rewriteSelectQuery(......);//header, 應(yīng)該是列名那行, 即Structure of query resultBlock header = materializeBlock(......);ClusterProxy::SelectStreamFactory select_stream_factory = ......;......//重點(diǎn)方法return ClusterProxy::executeQuery(select_stream_factory, cluster, modified_query_ast, context, settings);}

進(jìn)入ClusterProxy::executeQuery()方法, 會設(shè)置網(wǎng)絡(luò)帶寬限制,然后遍歷數(shù)據(jù)的所有分片,對每個(gè)分片執(zhí)行createForShard()方法,簡化代碼如下:

BlockInputStreams executeQuery(IStreamFactory & stream_factory, const ClusterPtr & cluster,const ASTPtr & query_ast, const Context & context, const Settings & settings) {BlockInputStreams res;const std::string query = queryToString(query_ast);....../// Network bandwidth limit, if needed. 網(wǎng)絡(luò)帶寬限制ThrottlerPtr throttler;if (settings.max_network_bandwidth || settings.max_network_bytes){......}//遍歷數(shù)據(jù)的所有的分片,針對每個(gè)分片for (const auto & shard_info : cluster->getShardsInfo())stream_factory.createForShard(shard_info, query, query_ast, new_context, throttler, res);return res; }

進(jìn)入到createForShard()方法,代碼邏輯還是比較清晰的,先定義了emplace_local_stream和emplace_remote_stream,然后根據(jù)prefer_localhost_replica和shard_info.isLocal()這兩個(gè)條件判斷使用local_stream還是remotr_stream,簡化代碼如下:

//遍歷數(shù)據(jù)的所有的分片,針對每個(gè)分片void SelectStreamFactory::createForShard(const Cluster::ShardInfo &shard_info,const String &query, const ASTPtr &query_ast,const Context &context, const ThrottlerPtr &throttler,BlockInputStreams &res) {auto emplace_local_stream = [&]()//將 數(shù)據(jù)流 放在本地{res.emplace_back(createLocalStream(query_ast, context, processed_stage));};auto emplace_remote_stream = [&]()//將 數(shù)據(jù)流 發(fā)送給遠(yuǎn)程服務(wù)器{//構(gòu)建RemoteBlockInputStreamauto stream = std::make_shared<RemoteBlockInputStream>(shard_info.pool, query, header, context, nullptr,throttler, external_tables, processed_stage);stream->setPoolMode(PoolMode::GET_MANY);if (!table_func_ptr)stream->setMainTable(main_table);res.emplace_back(std::move(stream));};const auto &settings = context.getSettingsRef();//prefer_localhost_replica = 1 且 本地服務(wù)器上存在這個(gè)分片(shard_info.isLocal() = true), 就使用本地分片數(shù)據(jù).// 如果本地服務(wù)器上沒有這個(gè)分片, 則只能連接遠(yuǎn)程獲取該分片的數(shù)據(jù)emplace_remote_stream//prefer_localhost_replica = 0 則 連接遠(yuǎn)程獲取該分片的數(shù)據(jù)emplace_remote_streamif (settings.prefer_localhost_replica && shard_info.isLocal()) {......} elseemplace_remote_stream();}

注意:可以具體看下shard_info.isLocal()方法的具體實(shí)現(xiàn)。

?

下面分開分析,先分析滿足settings.prefer_localhost_replica && shard_info.isLocal()條件的情況,主要流程包括:

1-判斷本地服務(wù)器的這個(gè)分片上有沒有這個(gè)表;

2-判斷這個(gè)表是不是用的復(fù)制表引擎;

3-如果本地分片存在這個(gè)表,且這個(gè)表是復(fù)制表,那么就該考慮副本的延遲問題了。

4-獲取本地副本的延遲和配置的可允許的最大延遲時(shí)間,兩者比較。如果本地副本的延遲時(shí)間小于max_allowed_delay, 說明本地副本是可以使用的,否則認(rèn)為本地副本已經(jīng)過期了。

5-如果本地副本已經(jīng)過期了,則看fallback_to_stale_replicas_for_distributed_queries這個(gè)配置參數(shù),是不是允許使用過期的副本。

6-如果不允許使用過期的副本,即設(shè)置了fallback_to_stale_replicas_for_distributed_queries=0,則看當(dāng)前分片是不是有遠(yuǎn)程副本分片,如果有則使用遠(yuǎn)程分片;如果沒有則拋出異常;

7-如果允許使用過期的副本,即設(shè)置了fallback_to_stale_replicas_for_distributed_queries=1,且當(dāng)前分片沒有遠(yuǎn)程副本分片,則使用本地分片過期的數(shù)據(jù);

8-如果允許使用過期的副本,且當(dāng)前分片也有遠(yuǎn)程副本分片,就先嘗試使用遠(yuǎn)程副本, 但如果它們也過期了, 則退回使用本地副本 。懶洋洋地做這件事以避免在主線程中連接(惰性創(chuàng)建連接)(后面有部分代碼還沒有仔細(xì)看)。

基本判斷邏輯就是這樣了。帶注釋的代碼如下:

//運(yùn)行到這里表示本地服務(wù)器上存在這個(gè)分片StoragePtr main_table_storage;//根據(jù)庫名表名在本地服務(wù)器的分片上的找到需要查詢的這個(gè)表if (table_func_ptr) {const auto *table_function = table_func_ptr->as<ASTFunction>();main_table_storage = TableFunctionFactory::instance().get(table_function->name, context)->execute(table_func_ptr, context);} elsemain_table_storage = context.tryGetTable(main_table.database, main_table.table);//本地服務(wù)器的這個(gè)分片上沒有這個(gè)表if (!main_table_storage) /// Table is absent on a local server.{ProfileEvents::increment(ProfileEvents::DistributedConnectionMissingTable);//shard_info.hasRemoteConnections() 本次查詢是否是遠(yuǎn)程發(fā)過來的(是否有遠(yuǎn)程副本), 如果是則需要emplace_remote_streamif (shard_info.hasRemoteConnections()) {LOG_WARNING(&Logger::get("ClusterProxy::SelectStreamFactory"),"There is no table " << main_table.database << "." << main_table.table<< " on local replica of shard " << shard_info.shard_num<< ", will try remote replicas.");emplace_remote_stream();} elseemplace_local_stream(); /// Let it fail the usual way.return;}//運(yùn)行到這里, 表示這個(gè)表在本地服務(wù)器的這個(gè)分片上//通過一個(gè)動態(tài)轉(zhuǎn)換來判斷這個(gè)表有沒有副本const auto *replicated_storage = dynamic_cast<const StorageReplicatedMergeTree *>(main_table_storage.get());//該分片在遠(yuǎn)程沒有副本, 只能使用本地分片數(shù)據(jù)if (!replicated_storage) {/// Table is not replicated, use local server.emplace_local_stream();return;}// 代碼運(yùn)行到這里, 說明對于當(dāng)前分片, 本地服務(wù)器上有這個(gè)表, 且該分片也有遠(yuǎn)程副本.// 那應(yīng)該怎么選呢?// 到了這一步就需要考慮應(yīng)該選擇本地的還是遠(yuǎn)程的了// 如果設(shè)置了max_replica_delay_for_distributed_queries(分布式查詢的最大副本延遲)這個(gè)參數(shù), 則復(fù)制表的分布式查詢將選擇復(fù)制延遲時(shí)間(秒)小于指定值(不包括該指定值)的服務(wù)器.// 零意味著不考慮延遲。UInt64 max_allowed_delay = settings.max_replica_delay_for_distributed_queries;//沒有設(shè)置max_allowed_delay這個(gè)參數(shù), 則不考慮延遲, 優(yōu)先使用本地分片數(shù)據(jù)if (!max_allowed_delay) {emplace_local_stream();return;}//設(shè)置了max_allowed_delay這個(gè)參數(shù), 就先獲取副本的絕對延遲 (這里獲取的應(yīng)該是本地副本的延遲時(shí)間)UInt32 local_delay = replicated_storage->getAbsoluteDelay();//如果本地副本的延遲時(shí)間小于max_allowed_delay, 說明本地副本是可以使用的if (local_delay < max_allowed_delay) {emplace_local_stream();return;}/// If we reached this point, local replica is stale.// 如果代碼執(zhí)行到這里, 表示本地副本已經(jīng)過期了(復(fù)制延遲時(shí)間 >= 指定值300s)ProfileEvents::increment(ProfileEvents::DistributedConnectionStaleReplica);LOG_WARNING(&Logger::get("ClusterProxy::SelectStreamFactory"),"Local replica of shard " << shard_info.shard_num << " is stale (delay: " << local_delay<< "s.)");// 代碼運(yùn)行到這里表示設(shè)置了max_replica_delay_for_distributed_queries(分布式查詢的最大副本延遲)這個(gè)參數(shù), 并且本地的副本已過期了.// 如果設(shè)置了fallback_to_stale_replicas_for_distributed_queries=0, 表示不允許使用過期的副本,// 則將查看當(dāng)前分片是不是有遠(yuǎn)程副本, 如果由則使用遠(yuǎn)程副本, 如果沒有則報(bào)錯(cuò)if (!settings.fallback_to_stale_replicas_for_distributed_queries) {if (shard_info.hasRemoteConnections()) {/// If we cannot fallback, then we cannot use local replica. Try our luck with remote replicas.emplace_remote_stream();return;} elsethrow Exception("Local replica of shard " + toString(shard_info.shard_num)+ " is stale (delay: " + toString(local_delay) + "s.), but no other replica configured",ErrorCodes::ALL_REPLICAS_ARE_STALE);}// 如果設(shè)置了fallback_to_stale_replicas_for_distributed_queries=1, 表示允許使用過期的副本,// 再判斷當(dāng)前分片是不是有遠(yuǎn)程副本, 如果沒有遠(yuǎn)程副本. 則只能使用本地過期的副本if (!shard_info.hasRemoteConnections()) {/// There are no remote replicas but we are allowed to fall back to stale local replica.emplace_local_stream();return;}//代碼運(yùn)行到這里表示允許使用過期的副本, 且遠(yuǎn)程也有副本/// Try our luck with remote replicas, but if they are stale too, then fallback to local replica./// Do it lazily to avoid connecting in the main thread.//于是就先嘗試使用遠(yuǎn)程副本, 但如果它們也過期了, 則退回使用本地副本//懶洋洋地做這件事以避免在主線程中連接(惰性創(chuàng)建連接)//惰性創(chuàng)建數(shù)據(jù)流(類比spark中, 一次行動操作觸發(fā)一次計(jì)算), 這里也是, 先捋清底層數(shù)據(jù)都有哪些, 再創(chuàng)建streamauto lazily_create_stream = [pool = shard_info.pool, shard_num = shard_info.shard_num, query, header = header, query_ast, context, throttler,main_table = main_table, table_func_ptr = table_func_ptr, external_tables = external_tables, stage = processed_stage,local_delay]()-> BlockInputStreamPtr {std::vector<ConnectionPoolWithFailover::TryResult> try_results;try {if (table_func_ptr)try_results = pool->getManyForTableFunction(&context.getSettingsRef(), PoolMode::GET_MANY);elsetry_results = pool->getManyChecked(&context.getSettingsRef(), PoolMode::GET_MANY,main_table);}catch (const Exception &ex) {if (ex.code() == ErrorCodes::ALL_CONNECTION_TRIES_FAILED)LOG_WARNING(&Logger::get("ClusterProxy::SelectStreamFactory"),"Connections to remote replicas of local shard " << shard_num<< " failed, will use stale local replica");elsethrow;}double max_remote_delay = 0.0;for (const auto &try_result : try_results) {if (!try_result.is_up_to_date)max_remote_delay = std::max(try_result.staleness, max_remote_delay);}if (try_results.empty() || local_delay < max_remote_delay)return createLocalStream(query_ast, context, stage);else {std::vector<IConnectionPool::Entry> connections;connections.reserve(try_results.size());for (auto &try_result : try_results)connections.emplace_back(std::move(try_result.entry));return std::make_shared<RemoteBlockInputStream>(std::move(connections), query, header, context, nullptr, throttler, external_tables,stage);}};res.emplace_back(std::make_shared<LazyBlockInputStream>("LazyShardWithLocalReplica", header,lazily_create_stream));

對于使用遠(yuǎn)程副本的情況,先看下定義的emplace_remote_stream,代碼如下:

auto emplace_remote_stream = [&]()//將 數(shù)據(jù)流 發(fā)送給遠(yuǎn)程服務(wù)器{//構(gòu)建RemoteBlockInputStreamauto stream = std::make_shared<RemoteBlockInputStream>(shard_info.pool, query, header, context, nullptr,throttler, external_tables, processed_stage);stream->setPoolMode(PoolMode::GET_MANY);if (!table_func_ptr)stream->setMainTable(main_table);res.emplace_back(std::move(stream));};

關(guān)鍵在于構(gòu)建RemoteBlockInputStream。注意shard_info.pool的類型是ConnectionPoolWithFailoverPtr(具有容錯(cuò)功能的連接池)。進(jìn)一步找到構(gòu)建RemoteBlockInputStream的方法:

RemoteBlockInputStream::RemoteBlockInputStream(const ConnectionPoolWithFailoverPtr &pool,const String &query_, const Block &header_, const Context &context_, const Settings *settings,const ThrottlerPtr &throttler, const Tables &external_tables_, QueryProcessingStage::Enum stage_): header(header_), query(query_), context(context_), external_tables(external_tables_), stage(stage_) {if (settings)context.setSettings(*settings);//創(chuàng)建多路連接create_multiplexed_connections = [this, pool, throttler]() {const Settings &current_settings = context.getSettingsRef();std::vector<IConnectionPool::Entry> connections;if (main_table) {//如果限定了表名(沒有使用remote表函數(shù)的情況)auto try_results = pool->getManyChecked(&current_settings, pool_mode, *main_table);connections.reserve(try_results.size());for (auto &try_result : try_results)connections.emplace_back(std::move(try_result.entry));} else//對于使用了remote表函數(shù)的情況connections = pool->getMany(&current_settings, pool_mode);return std::make_unique<MultiplexedConnections>(std::move(connections), current_settings, throttler);};}

其中,對于沒有使用表函數(shù)的情況,pool->getManyChecked()這個(gè)方法是重點(diǎn)。

?

好了,這篇文章已經(jīng)很長了,就先到這兒,剩余的內(nèi)容到下篇文章中吧。

總結(jié)

以上是生活随笔為你收集整理的ClickHouse源码阅读(0000 0110) —— 使用ReplicatedMergeTree引擎时的副本选择问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

精品国产片 | 国产精品1区2区3区在线观看 | 日本韩国精品在线 | 又黄又爽的免费高潮视频 | 国产又粗又猛又黄 | 久久久91精品国产 | 久久久亚洲网站 | 日韩久久久久久久久久久久 | 国产五月 | 久久曰视频 | 91精选在线观看 | www一起操 | av在线色| 人人搞人人爽 | 日韩精品一区二区在线观看视频 | 日韩中文在线电影 | 99色亚洲| 狠狠躁夜夜av | 成人午夜影院在线观看 | 精品久久久久久综合日本 | 日韩福利在线观看 | 色网址99| 免费精品国产 | 国产精品丝袜 | www蜜桃视频| 亚洲乱码久久久 | 欧美久久久久久久久久久久久 | 成 人 黄 色 视频 免费观看 | 在线看国产 | 高清免费在线视频 | 亚洲黄色在线观看 | 新版资源中文在线观看 | 91久久久久久久一区二区 | 成人永久在线 | 亚洲精品视频在线看 | 91九色国产视频 | 97超级碰碰碰碰久久久久 | 成年人免费在线观看 | 欧美国产亚洲精品久久久8v | 免费在线视频一区二区 | 国产精品高 | 国产一区二区久久精品 | 91丨九色丨高潮 | 成人超碰在线 | 色婷婷免费视频 | 免费看国产曰批40分钟 | 黄p在线播放 | 国产日韩视频在线播放 | 99精品国产一区二区 | 久久成人免费视频 | 精品一区二区三区久久 | 激情久久一区二区三区 | 九九爱免费视频在线观看 | av在线电影网站 | 日韩av视屏 | 99久久这里只有精品 | 日韩精品免费一线在线观看 | 久久视屏网 | 五月天综合激情网 | 深爱激情av | av青草| 久久再线视频 | 欧美日本国产在线观看 | 天天艹天天操 | 最新影院| 久久久九色精品国产一区二区三区 | 在线观看av免费 | 精品久久久成人 | 国产精品24小时在线观看 | 久草爱 | 91.精品高清在线观看 | 婷婷综合影院 | 在线观看视频在线观看 | 日韩v在线 | 成人在线免费观看视视频 | 白丝av在线 | 一本色道久久精品 | 亚洲视频资源在线 | 日韩毛片在线一区二区毛片 | 久久综合久色欧美综合狠狠 | 免费在线观看av网站 | 欧亚久久 | 成人黄视频 | 国产成人精品一二三区 | 最近日本中文字幕 | 亚洲 欧美 精品 | 日韩精品视频在线免费观看 | 综合久久网 | 96国产精品视频 | 久久人人干| 福利电影一区二区 | 黄色在线观看污 | 日韩剧 | 不卡视频一区二区三区 | 天天曰视频 | 夜夜操天天干, | 在线观看黄色免费视频 | 亚洲高清视频在线 | 中文字幕av网站 | 国产精品 亚洲精品 | 毛片一区二区 | 91网页版免费观看 | 在线三级播放 | 久久精品视频观看 | av片子在线观看 | 日韩三级免费 | 91视频国产高清 | 8x成人在线 | 欧美a视频在线观看 | 激情综合久久 | 探花视频在线观看免费 | 97超碰影视 | 成人亚洲网 | 欧美日韩国产精品久久 | 国产一区欧美在线 | 99久久精品久久久久久动态片 | 精品成人免费 | 天天天天天干 | 国产一区在线观看免费 | av成人动漫 | 欧美激情精品久久久久久变态 | 国产精品大尺度 | 久久成人午夜 | 亚洲精品国偷自产在线91正片 | 日韩美精品视频 | 人人看看人人 | 久久国产精品色av免费看 | 国产亚洲精品久久久久久电影 | 国产成人三级在线 | 精品一区二区三区四区在线 | 久久国产精品一区二区三区四区 | 97在线观看视频免费 | 日韩va亚洲va欧美va久久 | 精品国产伦一区二区三区免费 | 日韩精品中文字幕久久臀 | 狠狠操夜夜操 | 亚洲国产精品成人va在线观看 | 久久精品久久精品久久39 | 国产激情电影综合在线看 | 黄色激情网址 | 国产精品入口麻豆www | 国产精品久久久久久影院 | 九九99| 九九免费在线看完整版 | 亚洲日本成人网 | 综合铜03 | 国产91粉嫩白浆在线观看 | 狠狠色伊人亚洲综合网站色 | 国产精品久久久久久久久岛 | 亚洲精品在线观看的 | 久久大片 | 欧美天天综合网 | 夜夜澡人模人人添人人看 | 国产最新视频在线 | 国产视频在线观看一区 | 国产高清无av久久 | 久久99精品波多结衣一区 | 国产不卡在线观看视频 | 操操操日日日 | 亚洲精品看片 | 久久久久久久久久久综合 | 亚洲视频 在线观看 | 日韩欧美成 | 色www永久免费 | 最新国产中文字幕 | 久久av一区二区三区亚洲 | 激情网站免费观看 | 日韩激情视频在线 | 日韩欧美视频在线观看免费 | 在线观看免费版高清版 | 丝袜网站在线观看 | 国产高清视频在线免费观看 | 国产一级片一区二区三区 | 黄色成人在线观看 | 亚洲一区尤物 | 国产免费区 | 免费久久视频 | 天天综合网 天天综合色 | 久人人 | 永久免费视频国产 | 国产成人一级电影 | 69国产精品视频免费观看 | 在线观看aa | 中文字幕一区二区三区视频 | 四虎8848免费高清在线观看 | 国产一区高清在线 | 亚洲爽爽网| 国产一区二区不卡在线 | 一级理论片在线观看 | 久久久久久麻豆 | 精品乱码一区二区三四区 | 亚洲三级在线免费观看 | 久久久久国 | 日一日操一操 | 天天亚洲 | 国产区在线 | 亚洲成人一二三 | 国产打女人屁股调教97 | 日本特黄一级片 | 久久久国内精品 | 精品久久美女 | 久久九九影院 | 久草免费福利在线观看 | 久久免费av | 国产一级在线免费观看 | 欧美夫妻性生活电影 | 亚洲成av人影片在线观看 | 少妇bbw撒尿| 久久视频在线观看免费 | 亚洲国产字幕 | 成人av一区二区兰花在线播放 | 成人中文字幕在线 | 日本公妇色中文字幕 | 精品国产精品国产偷麻豆 | 成人a视频 | 国产精品一区二区三区久久久 | 亚洲激情综合 | 日本一区二区三区视频在线播放 | 久久久网页 | 精品成人a区在线观看 | 九九热免费在线视频 | 亚洲国产精品免费 | 久久99精品久久久久蜜臀 | 最近最新中文字幕 | 亚洲欧美色婷婷 | 色先锋av资源中文字幕 | 久久综合亚洲鲁鲁五月久久 | 欧美日韩国产一区 | 成人毛片a| 99精品视频在线观看视频 | 免费欧美精品 | 探花视频在线观看免费 | 天天射天天干天天插 | 视频在线99re | 国产精品一区二区久久精品 | 国产精品久久在线观看 | 国产精品午夜在线 | 国产一区二区不卡视频 | 97日日碰人人模人人澡分享吧 | 激情丁香综合五月 | av电影免费在线 | 五月激情片 | 最新午夜 | 91精品久久久久久综合乱菊 | 欧美 日韩 视频 | 一级黄色片网站 | 国产一区久久久 | 国产欧美日韩精品一区二区免费 | 区一区二区三在线观看 | 欧美少妇影院 | 五月婷婷综合在线观看 | 亚洲精品综合在线 | 日日干夜夜操视频 | 久久夜av| 国产一区二区久久久久 | 97在线精品 | 一级黄色大片 | 国产剧情一区二区 | 丁香资源影视免费观看 | 久久伦理电影 | 国产美女久久 | 久久这里有精品 | 天天爽人人爽夜夜爽 | 日韩在线色 | 一区二区三区日韩在线 | 久久综合色影院 | 久久国产电影 | 日日摸日日碰 | 最新中文字幕 | 国产亲近乱来精品 | 婷婷深爱五月 | 国产日韩欧美视频在线观看 | 久久久精品国产免费观看同学 | 五月婷色 | 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲视频每日更新 | 国产成人精品三级 | 菠萝菠萝蜜在线播放 | 精品久久久久久国产偷窥 | 国内视频在线 | 97人人澡人人添人人爽超碰 | 国产精品久久久网站 | 97在线精品国自产拍中文 | 免费大片av | 久久久久美女 | 91欧美精品 | 天天草天天干天天 | av中文资源在线 | av免费观看高清 | 亚洲精品白浆高清久久久久久 | 九九热免费精品视频 | 久久久久国产一区二区 | h动漫中文字幕 | 亚洲高清国产视频 | 丁香花在线视频观看免费 | av高清在线观看 | 天天操天天干天天 | 在线日韩av| 日韩中文字幕在线 | 成人欧美一区二区三区黑人麻豆 | 亚洲精品国产成人 | 草久电影| 日韩一级理论片 | 日韩欧美精品在线 | 国产色在线视频 | 免费电影播放 | 97超碰在线久草超碰在线观看 | 亚洲午夜av电影 | 99在线精品免费视频九九视 | 成人资源在线观看 | 超碰97中文 | 国产精品久久久久久久午夜片 | 日韩精品中文字幕在线不卡尤物 | 黄免费在线观看 | 亚洲激色 | av在线影视 | 99久久精品日本一区二区免费 | 国产成人三级 | 亚洲精品国产精品国产 | 美女黄频在线观看 | 久久综合成人 | 激情深爱.com | 91手机在线看片 | 男女激情麻豆 | 99久久夜色精品国产亚洲96 | .国产精品成人自产拍在线观看6 | 国产美女精品视频 | 狠狠狠色丁香综合久久天下网 | 国内精品小视频 | av在线免费播放网站 | 成人毛片在线观看 | 欧美另类老妇 | 亚洲 欧美 变态 国产 另类 | 久久久久在线视频 | 国产a高清 | 国产成人免费观看久久久 | 在线播放国产一区二区三区 | 中文字幕免费不卡视频 | 97人人澡人人爽人人模亚洲 | 国产一区二区三精品久久久无广告 | 91天堂在线观看 | 狠狠狠狠狠狠天天爱 | 91丨九色丨国产女 | 国产精品99在线观看 | 中文欧美字幕免费 | 五月婷婷一级片 | 午夜精品福利在线 | 精品亚洲男同gayvideo网站 | 婷婷六月色 | 一级黄色片毛片 | 久久国内视频 | 国产精品日韩在线播放 | 国产明星视频三级a三级点| 国产欧美日韩精品一区二区免费 | 国产理伦在线 | 美女在线免费观看视频 | 激情欧美国产 | 激情开心色 | 欧美日韩一级在线 | 欧美做受高潮1 | 婷婷六月在线 | 欧美性护士| 亚洲春色综合另类校园电影 | 日韩激情中文字幕 | 中文字幕在线观看三区 | 午夜婷婷在线观看 | 6080yy精品一区二区三区 | wwwww.国产| 成人久久免费视频 | 国产96在线视频 | 国产精品免费麻豆入口 | 欧美一二三视频 | 天天干,天天插 | 69精品人人人人 | 久久精品一区二区三区四区 | 97超碰国产精品 | 在线电影 一区 | 超碰人在线| 亚洲欧美日韩中文在线 | 亚洲成人av片在线观看 | av超碰免费在线 | 欧美亚洲三级 | 国产精品国产毛片 | 激情五月在线观看 | 欧美一级视频在线观看 | 日韩欧美视频在线免费观看 | 日本精品久久久久 | 久久精品香蕉视频 | 在线视频观看91 | 精品国产区在线 | 97免费中文视频在线观看 | 国产一级黄色电影 | 激情偷乱人伦小说视频在线观看 | 四虎精品成人免费网站 | 欧美精品久久久久久久免费 | 亚洲日韩中文字幕 | 国产精品久久久久久久久免费 | 精品亚洲网 | 久久夜夜操 | 天堂入口网站 | 在线观看黄色免费视频 | 91久久丝袜国产露脸动漫 | av成人免费网站 | 91精品国产99久久久久 | 一本之道乱码区 | av黄色免费在线观看 | 国产精品久久久久久久久久 | 精品人人人 | 天天爱天天操 | 亚洲视频综合 | 久久精品视频在线免费观看 | 日批网站在线观看 | 中文字幕在线播放第一页 | 国产精品久久久久999 | 久久久国产精品亚洲一区 | 亚洲人xxx | 91精品国自产在线 | 国产精品欧美激情在线观看 | 在线激情影院一区 | 国产中文字幕在线免费观看 | 国产精品精品久久久久久 | 久青草电影 | 在线视频亚洲 | 国产综合久久 | 天天操人人干 | 一本一道久久a久久综合蜜桃 | www.啪啪.com| 成人在线视频一区 | 黄污视频网站 | 中文字幕精品一区二区三区电影 | 久久精品国产亚洲精品2020 | 久久夜视频 | av3级在线| 麻豆传媒在线免费看 | 久草国产在线 | 色视频网站免费观看 | 私人av| 一区二区在线影院 | 91久久久久久国产精品 | 香蕉在线视频播放网站 | 久久免费播放 | 国产精品白丝jk白祙 | 国产精品入口a级 | 伊人天天综合 | 中文字幕在线播放第一页 | 国产麻豆精品95视频 | 毛片基地黄久久久久久天堂 | 狠狠色噜噜狠狠 | 日韩欧美一区二区三区在线 | 久久中文欧美 | 成人v| 一区三区视频在线观看 | 亚洲欧美日韩一级 | 色999五月色 | 在线播放视频一区 | 久草视频免费看 | 在线观看免费福利 | 免费观看一级 | 日韩综合一区二区 | 91在线影视 | 一级全黄毛片 | 欧美日韩性生活 | 一区二区三区高清在线观看 | 五月在线 | 久久99国产综合精品免费 | 日日操网站 | 99福利片| 99精品国产一区二区 | 日韩av电影免费在线观看 | 狠狠88综合久久久久综合网 | 国产成人精品久久久久 | 99热99热| 高清不卡毛片 | 国产免费久久av | 天堂在线一区二区三区 | 亚洲精品女人久久久 | 久久不卡日韩美女 | 久久一区二区三区国产精品 | 国产在线精品视频 | 最新av观看| 手机色在线 | 看av在线 | 国产精品久久久久久久妇 | 亚洲最新av在线网站 | 久久成人国产精品一区二区 | 免费a视频在线观看 | 亚洲成人av片 | 国产三级午夜理伦三级 | 91av99| 天天搞天天 | 日韩精品一区二区三区不卡 | 五月激情丁香婷婷 | 免费视频 三区 | 精品久久久久国产免费第一页 | 国产乱对白刺激视频在线观看女王 | 亚洲精品影视在线观看 | 国产99精品在线观看 | 日日爽夜夜操 | 日韩理论片在线 | 亚洲综合欧美日韩狠狠色 | 亚洲黄色免费在线看 | 国产一区视频在线播放 | 中文字幕国语官网在线视频 | 久草香蕉在线视频 | 午夜久久久精品 | 国产 欧美 日本 | 久久久一本精品99久久精品 | 欧美国产日韩中文 | 亚洲免费在线视频 | www.伊人网| 国产精品久久久久久一区二区 | 久久国产色 | 久久免费精品 | 国产精品日韩在线播放 | 亚洲另类久久 | 亚洲国产精久久久久久久 | 五月天堂色| 日日夜日日干 | 日韩一区二区三免费高清在线观看 | 黄色在线观看www | 国产又粗又猛又黄又爽的视频 | 在线观看91视频 | 最新中文字幕在线观看视频 | 亚洲精品午夜久久久久久久久久久 | 色 中文字幕 | 亚洲www天堂com | 国产男女爽爽爽免费视频 | 国产视频手机在线 | 欧美一级专区免费大片 | 国产98色在线 | 日韩 | 日韩成人av在线 | 日韩国产欧美视频 | 国产精品久久久久久久久久久久午 | 久久久黄视频 | 最新av免费在线 | 国产资源在线视频 | av高清不卡 | 日韩免费观看高清 | 国产一区二区免费 | 超碰在线97观看 | 亚洲毛片在线观看. | 97色免费视频 | 二区三区在线 | 亚洲人成网站精品片在线观看 | 国产免费a| 99久热在线精品视频 | 国产精品第二十页 | 婷香五月| 综合天堂av久久久久久久 | 91日韩免费 | 久久电影网站中文字幕 | 国产精品免费视频观看 | 欧美日韩精品免费观看视频 | 免费av大全 | 999久久国精品免费观看网站 | 精品久久久久久久久亚洲 | 999国内精品永久免费视频 | 操操操天天操 | 欧美色综合天天久久综合精品 | 久久伊99综合婷婷久久伊 | 日韩色中色| 欧美一级片 | 国产精品久久 | 91精品国产高清自在线观看 | 久久不射电影网 | 成人在线观看免费视频 | 天天干,天天射,天天操,天天摸 | 国产伦精品一区二区三区… | 欧美精品v国产精品 | 在线观看视频精品 | 欧美va天堂va视频va在线 | 草久在线视频 | 日本久久成人中文字幕电影 | 亚洲天天综合网 | 91精品日韩| 国产亚洲免费观看 | 日韩欧美高清在线观看 | 香蕉视频免费看 | 国产精品一区二区三区在线播放 | 亚洲精品777| 成人免费视频a | 97超级碰 | www.狠狠| 中文字幕在线播放第一页 | 毛片在线播放网址 | 欧美在线观看禁18 | 亚洲一级电影在线观看 | 亚洲精品综合在线观看 | 久草免费新视频 | 免费观看一级成人毛片 | 99精品偷拍视频一区二区三区 | 人人澡超碰碰97碰碰碰软件 | 亚洲视频一区二区三区在线观看 | 99热这里只有精品1 av中文字幕日韩 | 久久99久久久久 | 在线观看日本高清mv视频 | 91亚洲狠狠婷婷综合久久久 | 在线视频日韩一区 | 午夜的福利 | 国产黄影院色大全免费 | 97视频在线免费 | 欧美一区二区三区激情视频 | 天天天天天干 | 免费成人看片 | 国产激情电影综合在线看 | 欧美日韩中文国产 | 又黄又爽又无遮挡的视频 | 在线看黄色的网站 | av免费网站观看 | 欧美激情亚洲综合 | 五月婷婷亚洲 | 国产一区二区免费 | 国产视频不卡一区 | 夜夜操网站 | a亚洲视频 | 亚洲日韩欧美一区二区在线 | 亚洲激情视频在线 | 欧美日韩激情视频8区 | 天天摸天天操天天舔 | 97超碰国产精品女人人人爽 | 久久久久久久久久久电影 | 日本激情视频中文字幕 | 免费进去里的视频 | 激情 婷婷 | 国产精品麻豆欧美日韩ww | 黄色三级在线观看 | 久久精彩视频 | 亚洲精品美女视频 | 超碰精品在线 | 久久亚洲私人国产精品 | 91亚洲成人 | www.五月婷 | 人人躁 | 国产成人一区二区在线观看 | 五月婷网 | 91中文字幕在线视频 | 在线观看视频在线 | 天天躁天天狠天天透 | 国产麻豆剧传媒免费观看 | 综合在线色 | 天天综合日 | 亚洲国产无| 男女全黄一级一级高潮免费看 | 97操操| 91九色性视频 | 性色av免费在线观看 | 精品女同一区二区三区在线观看 | 六月丁香伊人 | 久久精品影片 | 欧美日韩不卡在线 | 久久免费黄色网址 | 日韩在线二区 | 国产999精品 | av成年人电影 | 久久成年人 | 国产最新视频在线观看 | 精品一区二区在线免费观看 | 日韩激情中文字幕 | 欧美激情综合色综合啪啪五月 | 国产小视频福利在线 | 国内精品视频在线播放 | 国产一区二区三区在线免费观看 | 中文字幕av最新 | 97超碰在线播放 | 在线97| 最新日韩在线 | 国产在线视频在线观看 | 99久久er热在这里只有精品15 | 亚洲精品成人 | 欧美精品一区在线 | 91pony九色丨交换 | 久人人 | 亚洲黄网站 | 午夜视频导航 | 麻豆视频在线免费 | 天天综合视频在线观看 | 中文字幕色在线 | 精品亚洲一区二区三区 | 欧亚日韩精品一区二区在线 | 日本久久久久久久久久久 | 五月婷婷综合在线 | 美国三级黄色大片 | 天天狠狠干| a在线免费观看视频 | 亚洲免费精品视频 | 日韩www在线 | 麻豆传媒视频在线 | 久二影院| 成人av资源站| 一区二区在线电影 | 九九视频热| a√天堂资源 | 国产一二区在线观看 | 日韩视频免费 | 亚洲精品在线免费观看视频 | 成人羞羞视频在线观看免费 | 五月婷婷操 | 欧美日本国产在线观看 | 亚洲乱码久久久 | 免费观看成年人视频 | 日韩欧美在线综合网 | 日韩激情免费视频 | 久久精品国产一区二区 | 国产乱对白刺激视频在线观看女王 | 亚洲国产片 | 中文字幕在线免费观看视频 | 久久综合色天天久久综合图片 | 成人av在线亚洲 | 99久久精品国产一区 | 久久99热这里只有精品 | 色小说av | 久久精品亚洲 | 日日夜夜婷婷 | 男女激情免费网站 | 国产精品久久久久一区二区 | 久久免费视频播放 | 久久最新 | 91九色在线| 少妇资源站 | 国产香蕉视频在线播放 | 手机在线小视频 | 最新精品国产 | 久久avav | 国产网站av| 午夜视频免费播放 | 黄色视屏免费在线观看 | 中文在线免费观看 | 国内精品久久久精品电影院 | 蜜臀精品久久久久久蜜臀 | 亚洲高清网站 | 亚洲人成在 | 日韩精品一区不卡 | 国内小视频在线观看 | 久久色视频 | 奇米网8888| 免费福利小视频 | 热久精品 | 在线视频 区 | 香蕉视频在线观看免费 | 国产精品麻豆99久久久久久 | 国产一区二区免费看 | 操少妇视频 | 丁香av | 亚洲欧美视频在线观看 | 96超碰在线 | 最新av电影网址 | 亚洲激情影院 | 色噜噜日韩精品欧美一区二区 | 夜添久久精品亚洲国产精品 | 亚洲黄色网络 | 国产精品一区二区在线观看免费 | 成人黄色小说网 | 狠狠操操| 涩涩网站免费 | 欧美一区成人 | 久久免费国产电影 | 玖玖玖精品 | 6080yy精品一区二区三区 | 天天综合网 天天 | 亚洲精品观看 | 久久精品综合一区 | 久久久影院官网 | 国产精品入口久久 | 日韩av高清| 国产成人一区二区三区在线观看 | 免费在线日韩 | 久久99亚洲网美利坚合众国 | 久久久久久免费毛片精品 | 国产在线一区二区 | 69精品久久久| 亚洲一区二区精品视频 | 九色视频网| av天天澡天天爽天天av | 国色天香在线 | 欧产日产国产69 | 久久精品中文字幕一区二区三区 | av看片在线 | 精品国产综合区久久久久久 | 99在线精品观看 | 999成人网 | 激情伊人五月天久久综合 | 久久a免费视频 | 一级久久久 | 久热久草| 亚洲欧美国产精品久久久久 | 又黄又刺激的视频 | 免费在线视频一区二区 | 久久97视频| 亚洲专区 国产精品 | 天天干天天爽 | 国产第页| av东方在线| 国产日韩欧美在线观看 | 久久精品美女 | 国产精品午夜免费福利视频 | 91在线公开视频 | 99久精品视频 | 蜜桃视频成人在线观看 | 亚洲一区二区三区在线看 | 天天·日日日干 | 天天操天天干天天操天天干 | 国产香蕉视频在线播放 | 免费看久久 | 中文字幕在线视频精品 | av免费黄色 | 久久久久免费电影 | 亚洲va欧美va人人爽 | 九九欧美视频 | 日韩网站免费观看 | 久久91久久久久麻豆精品 | 久久艹中文字幕 | 成人亚洲精品久久久久 | 久久美女精品 | 亚洲精品在线网站 | 少妇视频在线播放 | 色综合天天综合网国产成人网 | 国产亚洲精品精品精品 | 久久精品国产精品亚洲 | 国产精品无av码在线观看 | 欧美一区二区三区免费看 | 激情欧美丁香 | 伊人久久五月天 | 亚洲视频axxx | 婷婷中文字幕在线观看 | 国产成人av综合色 | 国产综合香蕉五月婷在线 | 国产免费视频一区二区裸体 | 午夜av片 | 激情小说久久 | 免费看av在线 | 国产精品黄 | 亚洲精品影院在线观看 | 国产精品一区二区美女视频免费看 | av国产在线观看 | 西西www4444大胆视频 | 欧美一级欧美一级 | 久久久久日本精品一区二区三区 | 亚洲精品18日本一区app | 国产在线欧美日韩 | 亚洲国产日本 | 97成人超碰 | 天天插狠狠干 | 国产综合精品一区二区三区 | 97精品久久| 日批网站在线观看 | 中文字幕 欧美性 | 黄色在线网站噜噜噜 | 欧美另类xxxx | 成人亚洲综合 | 在线电影 一区 | 婷婷丁香七月 | 国产极品尤物在线 | 久久这里只有精品视频99 | 免费在线观看毛片网站 | a视频在线观看免费 | 国产黄色精品在线观看 | 久久久久看片 | 欧美日韩一区二区三区在线免费观看 | 免费不卡中文字幕视频 | 中文字幕在线免费播放 | 国产视频一区在线 | 99热这里只有精品久久 | 国产精品福利一区 | 91热爆在线观看 | 国产精品免费久久久 | 狠狠操欧美 | 成人毛片一区二区三区 | 久久精品美女视频网站 | 国产精品免费视频网站 | .精品久久久麻豆国产精品 亚洲va欧美 | 天天操天天色综合 | 亚洲免费婷婷 | 日韩中文字幕亚洲一区二区va在线 | 91热| 天天射综合网视频 | 97精品国产97久久久久久免费 | 色综合天天综合 | 色天天中文 | 免费av高清 | 在线观看黄av | 亚洲精品国产电影 | 国产精品亚 | 成人在线视| 五月婷婷色播 | 久久不射网站 | 久草在线中文视频 | 国产麻豆精品一区 | 国产精品毛片久久久久久 | 欧美一级在线 | 18岁免费看片 | 日韩91精品 | 亚洲天堂网站视频 | 亚洲精品国产精品国自 | 亚洲成人国产精品 | 日日干网址 | 亚洲免费永久精品国产 | 亚洲理论在线观看 | 超碰97人人干 | 欧美日韩视频在线观看免费 | 91成人欧美| 色综合天天爱 | 国产日韩精品在线 | 国产精成人品免费观看 | 久久精品99精品国产香蕉 | 亚洲精品国产电影 | 久久久国产一区二区 | 天天草夜夜 | 欧美日韩精品电影 | 国产精品高清在线 | 精品久久久久久久久久久久久久久久 | 亚洲成aⅴ人片久久青草影院 | 免费日韩视| 91九色自拍 | 人人干在线观看 | 天天色影院 | 国产伦理一区二区三区 | 国产成人精品一区二区三区在线 | 奇米7777狠狠狠琪琪视频 | 久久久久国产精品免费免费搜索 | 在线观看精品一区 | 亚洲片在线观看 | 又黄又爽又刺激的视频 | 色综合婷婷 | 最近中文字幕在线中文高清版 | 欧美精品国产综合久久 | 91精品国产乱码久久 | 午夜精品视频免费在线观看 | 91免费版成人 | 99视频精品免费视频 | 天天射天天操天天 | 成年人免费在线观看网站 | 亚洲午夜久久久综合37日本 | 91在线一区二区 | 天天操网 | 精品国产亚洲在线 | 国产一区二区三区视频在线 | 免费观看国产成人 | 一区二区视频在线看 | 一区二区三区不卡在线 | 91色在线观看视频 | 一区二区三区手机在线观看 | 国产一区二区久久久久 | 99精品一区 | 久草视频在线资源 | 狠狠干夜夜爽 | 国产精品欧美精品 | 久久超碰在线 | 麻豆视频91| 九草在线观看 | 久久成人亚洲欧美电影 | 成年人视频在线免费 | 免费看一级特黄a大片 | а中文在线天堂 | 欧美另类性 | 国产精品久久在线观看 | 日韩精品高清视频 | 女女av在线 | 91九色porn在线资源 | 国产亚洲一级高清 | av丝袜天堂 | www.激情五月.com | 四虎免费在线观看视频 | 99r在线 | 亚洲在线看 | 午夜久久影视 | 亚洲极色 | 亚洲欧美成人 | 精品国产乱码一区二区三区在线 | 久久久亚洲麻豆日韩精品一区三区 | 日韩网站中文字幕 | 国产婷婷一区二区 | 很黄很色很污的网站 | 国产精品久久久久久久久久免费 | 国内精品久久久久久久97牛牛 | 亚洲一区 av| 视频 国产区| 国产一级一片免费播放放a 一区二区三区国产欧美 | 色综合天天色综合 | 96视频免费在线观看 | 久草热久草视频 | 久久精品国产一区二区 | 亚洲成人高清在线 | 日韩大片在线免费观看 | 手机在线看片日韩 | 99精品偷拍视频一区二区三区 | 精品一区二三区 | 日本老少交 | 久精品视频免费观看2 | 国产精品高清一区二区三区 | www视频在线播放 | www久草| 亚洲成av人片在线观看香蕉 | 国产精品丝袜在线 | 日韩精品极品视频 | 成人精品一区二区三区中文字幕 | 婷婷六月在线 | www.天天干 | 国产一级久久 |