亭亭五月天在线观看,亭亭五月天在线观看,国产最新av一区二区,国产 高清 中文字幕,99re热久久亚洲综合精品成人,熟妇 一区二区三区,一级做a爰片性色毛片武则天,美女的骚穴视频播放,国产美女午夜免费视频

首頁>國內(nèi) > 正文

Kafka 核心全面總結(jié),高可靠高性能核心原理探究 每日資訊

2023-05-08 15:07:44來源:碼哥字節(jié)

你好,我是碼哥,可以叫我靚仔


(資料圖片)

作者:mo

引言

在探究 Kafka 核心知識(shí)之前,我們先思考一個(gè)問題:什么場景會(huì)促使我們使用 Kafka? 說到這里,我們頭腦中或多或少會(huì)蹦出異步解耦和削峰填谷等字樣,是的,這就是 Kafka 最重要的落地場景。

異步解耦:同步調(diào)用轉(zhuǎn)換成異步消息通知,實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者的解耦。想象一個(gè)場景,在商品交易時(shí),在訂單創(chuàng)建完成之后,需要觸發(fā)一系列其他的操作,比如進(jìn)行用戶訂單數(shù)據(jù)的統(tǒng)計(jì)、給用戶發(fā)送短信、給用戶發(fā)送郵件等等。如果所有操作都采用同步方式實(shí)現(xiàn),將嚴(yán)重影響系統(tǒng)性能。針對此場景,我們可以利用消息中間件解耦訂單創(chuàng)建操作和其他后續(xù)行為。

削峰填谷:利用 broker 緩沖上游生產(chǎn)者瞬時(shí)突發(fā)的流量,使消費(fèi)者消費(fèi)流量整體平滑。對于發(fā)送能力很強(qiáng)的上游系統(tǒng),如果沒有消息中間件的保護(hù),下游系統(tǒng)可能會(huì)直接被壓垮導(dǎo)致全鏈路服務(wù)雪崩。想象秒殺業(yè)務(wù)場景,上游業(yè)務(wù)發(fā)起下單請求,下游業(yè)務(wù)執(zhí)行秒殺業(yè)務(wù)(庫存檢查,庫存凍結(jié),余額凍結(jié),生成訂單等等),下游業(yè)務(wù)處理的邏輯是相當(dāng)復(fù)雜的,并發(fā)能力有限,如果上游服務(wù)不做限流策略,瞬時(shí)可能把下游服務(wù)壓垮。針對此場景,我們可以利用 MQ 來做削峰填谷,讓高峰流量填充低谷空閑資源,達(dá)到系統(tǒng)資源的合理利用。

通過上述例子可以發(fā)現(xiàn)交易、支付等場景常需要異步解耦和削峰填谷功能解決問題,而交易、支付等場景對性能、可靠性要求特別高。那么,我們本文的主角 Kafka 能否滿足相應(yīng)要求呢?下面我們來探討下。

Kafka 宏觀認(rèn)知

在探究 Kafka 的高性能、高可靠性之前,我們從宏觀上來看下 Kafka 的系統(tǒng)架構(gòu):

如上圖所示,Kafka 由 Producer、Broker、Consumer 以及負(fù)責(zé)集群管理的 ZooKeeper 組成,各部分功能如下:

Producer:生產(chǎn)者,負(fù)責(zé)消息的創(chuàng)建并通過一定的路由策略發(fā)送消息到合適的 Broker;Broker:服務(wù)實(shí)例,負(fù)責(zé)消息的持久化、中轉(zhuǎn)等功能;Consumer:消費(fèi)者,負(fù)責(zé)從 Broker 中拉?。≒ull)訂閱的消息并進(jìn)行消費(fèi),通常多個(gè)消費(fèi)者構(gòu)成一個(gè)分組,消息只能被同組中的一個(gè)消費(fèi)者消費(fèi);ZooKeeper:負(fù)責(zé) broker、consumer 集群元數(shù)據(jù)的管理等;(注意:Producer 端直接連接 broker,不在 zk 上存任何數(shù)據(jù),只是通過 ZK 監(jiān)聽 broker 和 topic 等信息)

上圖消息流轉(zhuǎn)過程中,還有幾個(gè)特別重要的概念—主題(Topic)、分區(qū)(Partition)、分段(segment)、位移(offset)。

topic:消息主題。Kafka 按 topic 對消息進(jìn)行分類,我們在收發(fā)消息時(shí)只需指定 topic。partition:分區(qū)。為了提升系統(tǒng)的吞吐,一個(gè) topic 下通常有多個(gè) partition,partition 分布在不同的 Broker 上,用于存儲(chǔ) topic 的消息,這使 Kafka 可以在多臺(tái)機(jī)器上處理、存儲(chǔ)消息,給 kafka 提供給了并行的消息處理能力和橫向擴(kuò)容能力。另外,為了提升系統(tǒng)的可靠性,partition 通常會(huì)分組,且每組有一個(gè)主 partition、多個(gè)副本 partition,且分布在不同的 broker 上,從而起到容災(zāi)的作用。segment:分段。宏觀上看,一個(gè) partition 對應(yīng)一個(gè)日志(Log)。由于生產(chǎn)者生產(chǎn)的消息會(huì)不斷追加到 log 文件末尾,為防止 log 文件過大導(dǎo)致數(shù)據(jù)檢索效率低下,Kafka 采取了分段和索引機(jī)制,將每個(gè) partition 分為多個(gè) segment,同時(shí)也便于消息的維護(hù)和清理。每個(gè) segment 包含一個(gè).log 日志文件、兩個(gè)索引(.index、timeindex)文件以及其他可能的文件。每個(gè) Segment 的數(shù)據(jù)文件以該段中最小的 offset 為文件名,當(dāng)查找 offset 的 Message 的時(shí)候,通過二分查找快找到 Message 所處于的 Segment 中。offset:消息在日志中的位置,消息在被追加到分區(qū)日志文件的時(shí)候都會(huì)分配一個(gè)特定的偏移量。offset 是消息在分區(qū)中的唯一標(biāo)識(shí),是一個(gè)單調(diào)遞增且不變的值。Kafka 通過它來保證消息在分區(qū)內(nèi)的順序性,不過 offset 并不跨越分區(qū),也就是說,Kafka 保證的是分區(qū)有序而不是主題有序。Kafka 高可靠性、高性能探究

在對 Kafka 的整體系統(tǒng)框架及相關(guān)概念簡單了解后,下面我們來進(jìn)一步深入探討下高可靠性、高性能實(shí)現(xiàn)原理。

Kafka 高可靠性探究

Kafka 高可靠性的核心是保證消息在傳遞過程中不丟失,涉及如下核心環(huán)節(jié):

消息從生產(chǎn)者可靠地發(fā)送至 Broker;-- 網(wǎng)絡(luò)、本地丟數(shù)據(jù);發(fā)送到 Broker 的消息可靠持久化;-- Pagecache 緩存落盤、單點(diǎn)崩潰、主從同步跨網(wǎng)絡(luò);消費(fèi)者從 Broker 消費(fèi)到消息且最好只消費(fèi)一次 -- 跨網(wǎng)絡(luò)消息傳輸 。消息從生產(chǎn)者可靠地發(fā)送至 Broker

為了保障消息從生產(chǎn)者可靠地發(fā)送至 Broker,我們需要確保兩點(diǎn);

Producer 發(fā)送消息后,能夠收到來自 Broker 的消息保存成功 ack;Producer 發(fā)送消息后,能夠捕獲超時(shí)、失敗 ack 等異常 ack 并做處理。ack 策略

針對問題 1,Kafka 為我們提供了三種 ack 策略,

Request.required.acks = 0:請求發(fā)送即認(rèn)為成功,不關(guān)心有沒有寫成功,常用于日志進(jìn)行分析場景;Request.required.acks = 1:當(dāng) leader partition 寫入成功以后,才算寫入成功,有丟數(shù)據(jù)的可能;Request.required.acks= -1:ISR 列表里面的所有副本都寫完以后,這條消息才算寫入成功,強(qiáng)可靠性保證;

為了實(shí)現(xiàn)強(qiáng)可靠的 kafka 系統(tǒng),我們需要設(shè)置 Request.required.acks= -1,同時(shí)還會(huì)設(shè)置集群中處于正常同步狀態(tài)的副本 follower 數(shù)量 min.insync.replicas>2,另外,設(shè)置 unclean.leader.election.enable=false 使得集群中 ISR 的 follower 才可變成新的 leader,避免特殊情況下消息截?cái)嗟某霈F(xiàn)。

消息發(fā)送策略

針對問題 2,kafka 提供兩類消息發(fā)送方式:同步(sync)發(fā)送和異步(async)發(fā)送,相關(guān)參數(shù)如下:

以 sarama 實(shí)現(xiàn)為例,在消息發(fā)送的過程中,無論是同步發(fā)送還是異步發(fā)送都會(huì)涉及到兩個(gè)協(xié)程--負(fù)責(zé)消息發(fā)送的主協(xié)程和負(fù)責(zé)消息分發(fā)的 dispatcher 協(xié)程。

異步發(fā)送

對于異步發(fā)送(ack != 0 場景,等于 0 時(shí)不關(guān)心寫 kafka 結(jié)果,后文詳細(xì)講解)而言,其流程大概如下:

在主協(xié)程中調(diào)用異步發(fā)送 kafka 消息的時(shí)候,其本質(zhì)是將消息體放進(jìn)了一個(gè) input 的 channel,只要入 channel 成功,則這個(gè)函數(shù)直接返回,不會(huì)產(chǎn)生任何阻塞。相反,如果入 channel 失敗,則會(huì)返回錯(cuò)誤信息。因此調(diào)用 async 寫入的時(shí)候返回的錯(cuò)誤信息是入 channel 的錯(cuò)誤信息,至于具體最終消息有沒有發(fā)送到 kafka 的 broker,我們無法從返回值得知。當(dāng)消息進(jìn)入 input 的 channel 后,會(huì)有另一個(gè)dispatcher 的協(xié)程負(fù)責(zé)遍歷 input,來真正發(fā)送消息到特定 Broker 上的主 Partition 上。發(fā)送結(jié)果通過一個(gè)異步協(xié)程進(jìn)行監(jiān)聽,循環(huán)處理 err channel 和 success channel,出現(xiàn)了 error 就記一個(gè)日志。因此異步寫入場景時(shí),寫 kafka 的錯(cuò)誤信息,我們暫時(shí)僅能夠從這個(gè)錯(cuò)誤日志來得知具體發(fā)生了什么錯(cuò),并且也不支持我們自建函數(shù)進(jìn)行兜底處理,這一點(diǎn)在 trpc-go 的官方也得到了承認(rèn)。

同步發(fā)送

同步發(fā)送(ack != 0 場景)是在異步發(fā)送的基礎(chǔ)上加以條件限制實(shí)現(xiàn)的。同步消息發(fā)送在 newSyncProducerFromAsyncProducer 中開啟兩個(gè)異步協(xié)程處理消息成功與失敗的“回調(diào)”,并使用 waitGroup 進(jìn)行等待,從而將異步操作轉(zhuǎn)變?yōu)橥讲僮?,其流程大概如下?/p>

通過上述分析可以發(fā)現(xiàn),kafka 消息發(fā)送本質(zhì)上都是異步的,不過同步發(fā)送通過 waitGroup 將異步操作轉(zhuǎn)變?yōu)橥讲僮?。同步發(fā)送在一定程度上確保了我們在跨網(wǎng)絡(luò)向 Broker 傳輸消息時(shí),消息一定可以可靠地傳輸?shù)?Broker。因?yàn)樵谕桨l(fā)送場景我們可以明確感知消息是否發(fā)送至 Broker,若因網(wǎng)絡(luò)抖動(dòng)、機(jī)器宕機(jī)等故障導(dǎo)致消息發(fā)送失敗或結(jié)果不明,可通過重試等手段確保消息至少一次(at least once)發(fā)送到 Broker。另外,Kafka(0.11.0.0 版本后)還為 Producer 提供兩種機(jī)制來實(shí)現(xiàn)精確一次(exactly once)消息發(fā)送:冪等性(Idempotence)和事務(wù)(Transaction)。

小結(jié)

通過 ack 策略配置、同步發(fā)送、事務(wù)消息組合能力,我們可以實(shí)現(xiàn)exactly once 語意跨網(wǎng)絡(luò)向 Broker 傳輸消息。但是,Producer 收到 Broker 的成功 ack,消息一定不會(huì)丟失嗎?為了搞清這個(gè)問題,我們首先要搞明白 Broker 在接收到消息后做了哪些處理。

發(fā)送到 Broker 的消息可靠持久化

為了確保 Producer 收到 Broker 的成功 ack 后,消息一定不在 Broker 環(huán)節(jié)丟失,我們核心要關(guān)注以下幾點(diǎn):

Broker 返回 Producer 成功 ack 時(shí),消息是否已經(jīng)落盤;Broker 宕機(jī)是否會(huì)導(dǎo)致數(shù)據(jù)丟失,容災(zāi)機(jī)制是什么;Replica 副本機(jī)制帶來的多副本間數(shù)據(jù)同步一致性問題如何解決;

Broker 異步刷盤機(jī)制

kafka 為了獲得更高吞吐,Broker 接收到消息后只是將數(shù)據(jù)寫入 PageCache 后便認(rèn)為消息已寫入成功,而 PageCache 中的數(shù)據(jù)通過 linux 的 flusher 程序進(jìn)行異步刷盤(刷盤觸發(fā)條:主動(dòng)調(diào)用 sync 或 fsync 函數(shù)、可用內(nèi)存低于閥值、dirty data 時(shí)間達(dá)到閥值),將數(shù)據(jù)順序?qū)懙酱疟P。消息處理示意圖如下:

由于消息是寫入到 pageCache,單機(jī)場景,如果還沒刷盤 Broker 就宕機(jī)了,那么 Producer 產(chǎn)生的這部分?jǐn)?shù)據(jù)就可能丟失。為了解決單機(jī)故障可能帶來的數(shù)據(jù)丟失問題,Kafka 為分區(qū)引入了副本機(jī)制。

Replica 副本機(jī)制

Kafka 每組分區(qū)通常有多個(gè)副本,同組分區(qū)的不同副本分布在不同的 Broker 上,保存相同的消息(可能有滯后)。副本之間是“一主多從”的關(guān)系,其中 leader 副本負(fù)責(zé)處理讀寫請求,follower 副本負(fù)責(zé)從 leader 拉取消息進(jìn)行同步。分區(qū)的所有副本統(tǒng)稱為 AR(Assigned Replicas),其中所有與 leader 副本保持一定同步的副本(包括 leader 副本在內(nèi))組成 ISR(In-Sync Replicas),與 leader 同步滯后過多的副本組成 OSR(Out-of-Sync Replicas),由此可見,AR=ISR+OSR。

follower 副本是否與 leader 同步的判斷標(biāo)準(zhǔn)取決于 Broker 端參數(shù) replica.lag.time.max.ms(默認(rèn)為 10 秒),follower 默認(rèn)每隔 500ms 向 leader fetch 一次數(shù)據(jù),只要一個(gè) Follower 副本落后 Leader 副本的時(shí)間不連續(xù)超過 10 秒,那么 Kafka 就認(rèn)為該 Follower 副本與 leader 是同步的。在正常情況下,所有的 follower 副本都應(yīng)該與 leader 副本保持一定程度的同步,即 AR=ISR,OSR 集合為空。

當(dāng) leader 副本所在 Broker 宕機(jī)時(shí),Kafka 會(huì)借助 ZK 從 follower 副本中選舉新的 leader 繼續(xù)對外提供服務(wù),實(shí)現(xiàn)故障的自動(dòng)轉(zhuǎn)移,保證服務(wù)可用。為了使選舉的新 leader 和舊 leader 數(shù)據(jù)盡可能一致,當(dāng) leader 副本發(fā)生故障時(shí),默認(rèn)情況下只有在 ISR 集合中的副本才有資格被選舉為新的 leader,而在 OSR 集合中的副本則沒有任何機(jī)會(huì)(可通過設(shè)置 unclean.leader.election.enable 改變)。

當(dāng) Kafka 通過多副本機(jī)制解決單機(jī)故障問題時(shí),同時(shí)也帶來了多副本間數(shù)據(jù)同步一致性問題。Kafka 通過高水位更新機(jī)制、副本同步機(jī)制、 Leader Epoch 等多種措施解決了多副本間數(shù)據(jù)同步一致性問題,下面我們來依次看下這幾大措施。

HW 和 LEO

首先,我們來看下兩個(gè)和 Kafka 中日志相關(guān)的重要概念 HW 和 LEO:

HW: High Watermark,高水位,表示已經(jīng)提交(commit)的最大日志偏移量,Kafka 中某條日志“已提交”的意思是 ISR 中所有節(jié)點(diǎn)都包含了此條日志,并且消費(fèi)者只能消費(fèi) HW 之前的數(shù)據(jù);LEO: Log End Offset,表示當(dāng)前 log 文件中下一條待寫入消息的 offset;

如上圖所示,它代表一個(gè)日志文件,這個(gè)日志文件中有 8 條消息,0 至 5 之間的消息為已提交消息,5 至 7 的消息為未提交消息。日志文件的 HW 為 6,表示消費(fèi)者只能拉取到 5 之前的消息,而 offset 為 5 的消息對消費(fèi)者而言是不可見的。日志文件的 LEO 為 8,下一條消息將在此處寫入。

注意:所有副本都有對應(yīng)的 HW 和 LEO,只不過 Leader 副本比較特殊,Kafka 使用 Leader 副本的高水位來定義所在分區(qū)的高水位。換句話說,分區(qū)的高水位就是其 Leader 副本的高水位。Leader 副本和 Follower 副本的 HW 有如下特點(diǎn):

Leader HW:min(所有副本 LEO),為此 Leader 副本不僅要保存自己的 HW 和 LEO,還要保存 follower 副本的 HW 和 LEO,而 follower 副本只需保存自己的 HW 和 LEO;Follower HW:min(follower 自身 LEO,leader HW)。

注意:為方便描述,下面Leader HW簡記為HWL,F(xiàn)ollower HW簡記為F,Leader LEO簡記為LEOL,F(xiàn)ollower LEO簡記為LEOF。

下面我們演示一次完整的 HW / LEO 更新流程:

初始狀態(tài)

HWL=0,LEOL=0,HWF=0,LEOF=0。

Follower 第一次 fetchLeader收到Producer發(fā)來的一條消息完成存儲(chǔ), 更新LEOL=1;Follower從Leader fetch數(shù)據(jù), Leader收到請求,記錄follower的LEOF=0,并且嘗試更新HWL=min(全部副本LEO)=0;eade返回HWL=0和LEOL=1給Follower,F(xiàn)ollower存儲(chǔ)消息并更新LEOF=1, HW=min(LEOF,HWL)=0。Follower 第二次 fetchFollower再次從Leader fetch數(shù)據(jù), Leader收到請求,記錄follower的LEOF=1,并且嘗試更新HWL=min(全部副本LEO)=1;leade返回HWL=1和LEOL=1給Follower,Leader收到請求,更新自己的 HW=min(LEOF,HWL)=1。

上述更新流程中 Follower 和 Leader 的 HW 更新有時(shí)間 GAP。如果 Leader 節(jié)點(diǎn)在此期間發(fā)生故障,則 Follower 的 HW 和 Leader 的 HW 可能會(huì)處于不一致狀態(tài),如果 Followe 被選為新的 Leader 并且以自己的 HW 為準(zhǔn)對外提供服務(wù),則可能帶來數(shù)據(jù)丟失或數(shù)據(jù)錯(cuò)亂問題。

KIP-101 問題:數(shù)據(jù)丟失&數(shù)據(jù)錯(cuò)亂 ^參 5^

數(shù)據(jù)丟失

第 1 步:

副本 B 作為 leader 收到 producer 的 m2 消息并寫入本地文件,等待副本 A 拉取。副本 A 發(fā)起消息拉取請求,請求中攜帶自己的最新的日志 offset(LEO=1),B 收到后更新自己的 HW 為 1,并將 HW=1 的信息以及消息 m2 返回給 A。A 收到拉取結(jié)果后更新本地的 HW 為 1,并將 m2 寫入本地文件。發(fā)起新一輪拉取請求(LEO=2),B 收到 A 拉取請求后更新自己的 HW 為 2,沒有新數(shù)據(jù)只將 HW=2 的信息返回給 A,并且回復(fù)給 producer 寫入成功。此處的狀態(tài)就是圖中第一步的狀態(tài)。

第 2 步:

此時(shí),如果沒有異常,A 會(huì)收到 B 的回復(fù),得知目前的 HW 為 2,然后更新自身的 HW 為 2。但在此時(shí) A 重啟了,沒有來得及收到 B 的回復(fù),此時(shí) B 仍然是 leader。A 重啟之后會(huì)以 HW 為標(biāo)準(zhǔn)截?cái)嘧约旱娜罩?,因?yàn)?A 作為 follower 不知道多出的日志是否是被提交過的,防止數(shù)據(jù)不一致從而截?cái)喽嘤嗟臄?shù)據(jù)并嘗試從 leader 那里重新同步。

第 3 步:

B 崩潰了,min.isr 設(shè)置的是 1,所以 zookeeper 會(huì)從 ISR 中再選擇一個(gè)作為 leader,也就是 A,但是 A 的數(shù)據(jù)不是完整的,從而出現(xiàn)了數(shù)據(jù)丟失現(xiàn)象。

問題在哪里?在于 A 重啟之后以 HW 為標(biāo)準(zhǔn)截?cái)嗔硕嘤嗟娜罩?。不截?cái)嘈胁恍??不行,因?yàn)檫@個(gè)日志可能沒被提交過(也就是沒有被 ISR 中的所有節(jié)點(diǎn)寫入過),如果保留會(huì)導(dǎo)致日志錯(cuò)亂。

數(shù)據(jù)錯(cuò)亂

在分析日志錯(cuò)亂的問題之前,我們需要了解到 kafka 的副本可靠性保證有一個(gè)前提:在 ISR 中至少有一個(gè)節(jié)點(diǎn)。如果節(jié)點(diǎn)均宕機(jī)的情況下,是不保證可靠性的,在這種情況會(huì)出現(xiàn)數(shù)據(jù)丟失,數(shù)據(jù)丟失是可接受的。這里我們分析的問題比數(shù)據(jù)丟失更加槽糕,會(huì)引發(fā)日志錯(cuò)亂甚至導(dǎo)致整個(gè)系統(tǒng)異常,而這是不可接受的。

第 1 步:

A 和 B 均為 ISR 中的節(jié)點(diǎn)。副本 A 作為 leader,收到 producer 的消息 m2 的請求后寫入 PageCache 并在某個(gè)時(shí)刻刷新到本地磁盤。副本 B 拉取到 m2 后寫入 PageCage 后(尚未刷盤)再次去 A 中拉取新消息并告知 A 自己的 LEO=2,A 收到更新自己的 HW 為 1 并回復(fù)給 producer 成功。此時(shí) A 和 B 同時(shí)宕機(jī),B 的 m2 由于尚未刷盤,所以 m2 消息丟失。此時(shí)的狀態(tài)就是第 1 步的狀態(tài)。

第 2 步:

由于 A 和 B 均宕機(jī),而 min.isr=1 并且 unclean.leader.election.enable=true(關(guān)閉 unclean 選擇策略),所以 Kafka 會(huì)等到第一個(gè) ISR 中的節(jié)點(diǎn)恢復(fù)并選為 leader,這里不幸的是 B 被選為 leader,而且還接收到 producer 發(fā)來的新消息 m3。注意,這里丟失 m2 消息是可接受的,畢竟所有節(jié)點(diǎn)都宕機(jī)了。

第 3 步:

A 恢復(fù)重啟后發(fā)現(xiàn)自己是 follower,而且 HW 為 2,并沒有多余的數(shù)據(jù)需要截?cái)啵蚤_始和 B 進(jìn)行新一輪的同步。但此時(shí) A 和 B 均沒有意識(shí)到,offset 為 1 的消息不一致了。

問題在哪里?在于日志的寫入是異步的,上面也提到 Kafka 的副本策略的一個(gè)設(shè)計(jì)是消息的持久化是異步的,這就會(huì)導(dǎo)致在場景二的情況下被選出的 leader 不一定包含所有數(shù)據(jù),從而引發(fā)日志錯(cuò)亂的問題。

Leader Epoch

為了解決上述缺陷,Kafka 引入了 Leader Epoch 的概念。leader epoch 和 raft 中的任期號(hào)的概念很類似,每次重新選擇 leader 的時(shí)候,用一個(gè)嚴(yán)格單調(diào)遞增的 id 來標(biāo)志,可以讓所有 follower 意識(shí)到 leader 的變化。而 follower 也不再以 HW 為準(zhǔn),每次奔潰重啟后都需要去 leader 那邊確認(rèn)下當(dāng)前 leader 的日志是從哪個(gè) offset 開始的。下面看下 Leader Epoch 是如何解決上面兩個(gè)問題的。

數(shù)據(jù)丟失解決

這里的關(guān)鍵點(diǎn)在于副本 A 重啟后作為 follower,不是忙著以 HW 為準(zhǔn)截?cái)嘧约旱娜罩?,而是先發(fā)起 LeaderEpochRequest 詢問副本 B 第 0 代的最新的偏移量是多少,副本 B 會(huì)返回自己的 LEO 為 2 給副本 A,A 此時(shí)就知道消息 m2 不能被截?cái)?,所?m2 得到了保留。當(dāng) A 選為 leader 的時(shí)候就保留了所有已提交的日志,日志丟失的問題得到解決。

如果發(fā)起 LeaderEpochRequest 的時(shí)候就已經(jīng)掛了怎么辦?這種場景下,不會(huì)出現(xiàn)日志丟失,因?yàn)楦北?A 被選為 leader 后不會(huì)截?cái)嘧约旱娜罩?,日志截?cái)嘀粫?huì)發(fā)生在 follower 身上。

數(shù)據(jù)錯(cuò)亂解決

這里的關(guān)鍵點(diǎn)還是在第 3 步,副本 A 重啟作為 follower 的第一步還是需要發(fā)起 LeaderEpochRequest 詢問 leader 當(dāng)前第 0 代最新的偏移量是多少,由于副本 B 已經(jīng)經(jīng)過換代,所以會(huì)返回給 A 第 1 代的起始偏移(也就是 1),A 發(fā)現(xiàn)沖突后會(huì)截?cái)嘧约浩屏繛?1 的日志,并重新開始和 leader 同步。副本 A 和副本 B 的日志達(dá)到了一致,解決了日志錯(cuò)亂。

小結(jié)

Broker 接收到消息后只是將數(shù)據(jù)寫入 PageCache 后便認(rèn)為消息已寫入成功,但是,通過副本機(jī)制并結(jié)合 ACK 策略可以大概率規(guī)避單機(jī)宕機(jī)帶來的數(shù)據(jù)丟失問題,并通過 HW、副本同步機(jī)制、 Leader Epoch 等多種措施解決了多副本間數(shù)據(jù)同步一致性問題,最終實(shí)現(xiàn)了 Broker 數(shù)據(jù)的可靠持久化。

消費(fèi)者從 Broker 消費(fèi)到消息且最好只消費(fèi)一次

Consumer 在消費(fèi)消息的過程中需要向 Kafka 匯報(bào)自己的位移數(shù)據(jù),只有當(dāng) Consumer 向 Kafka 匯報(bào)了消息位移,該條消息才會(huì)被 Broker 認(rèn)為已經(jīng)被消費(fèi)。因此,Consumer 端消息的可靠性主要和 offset 提交方式有關(guān),Kafka 消費(fèi)端提供了兩種消息提交方式:

正常情況下我們很難實(shí)現(xiàn) exactly once 語意的消息,通常是通過手動(dòng)提交+冪等實(shí)現(xiàn)消息的可靠消費(fèi)。

Kafka 高性能探究

Kafka 高性能的核心是保障系統(tǒng)低延遲、高吞吐地處理消息,為此,Kafaka 采用了許多精妙的設(shè)計(jì):

異步發(fā)送批量發(fā)送壓縮技術(shù)Pagecache 機(jī)制&順序追加落盤零拷貝稀疏索引broker & 數(shù)據(jù)分區(qū)多 reactor 多線程網(wǎng)絡(luò)模型異步發(fā)送

如上文所述,Kafka 提供了異步和同步兩種消息發(fā)送方式。在異步發(fā)送中,整個(gè)流程都是異步的。調(diào)用異步發(fā)送方法后,消息會(huì)被寫入 channel,然后立即返回成功。Dispatcher 協(xié)程會(huì)從 channel 輪詢消息,將其發(fā)送到 Broker,同時(shí)會(huì)有另一個(gè)異步協(xié)程負(fù)責(zé)處理 Broker 返回的結(jié)果。同步發(fā)送本質(zhì)上也是異步的,但是在處理結(jié)果時(shí),同步發(fā)送通過 waitGroup 將異步操作轉(zhuǎn)換為同步。使用異步發(fā)送可以最大化提高消息發(fā)送的吞吐能力。

批量發(fā)送

Kafka 支持批量發(fā)送消息,將多個(gè)消息打包成一個(gè)批次進(jìn)行發(fā)送,從而減少網(wǎng)絡(luò)傳輸?shù)拈_銷,提高網(wǎng)絡(luò)傳輸?shù)男屎屯掏铝?。Kafka 的批量發(fā)送消息是通過以下兩個(gè)參數(shù)來控制的:

batch.size:控制批量發(fā)送消息的大小,默認(rèn)值為 16KB,可適當(dāng)增加 batch.size 參數(shù)值提升吞吐。但是,需要注意的是,如果批量發(fā)送的大小設(shè)置得過大,可能會(huì)導(dǎo)致消息發(fā)送的延遲增加,因此需要根據(jù)實(shí)際情況進(jìn)行調(diào)整。linger.ms:控制消息在批量發(fā)送前的等待時(shí)間,默認(rèn)值為 0。當(dāng) linger.ms 大于 0 時(shí),如果有消息發(fā)送,Kafka 會(huì)等待指定的時(shí)間,如果等待時(shí)間到達(dá)或者批量大小達(dá)到 batch.size,就會(huì)將消息打包成一個(gè)批次進(jìn)行發(fā)送??蛇m當(dāng)增加 linger.ms 參數(shù)值提升吞吐,比如 10 ~ 100。

在 Kafka 的生產(chǎn)者客戶端中,當(dāng)發(fā)送消息時(shí),如果啟用了批量發(fā)送,Kafka 會(huì)將消息緩存到緩沖區(qū)中。當(dāng)緩沖區(qū)中的消息大小達(dá)到 batch.size 或者等待時(shí)間到達(dá) linger.ms 時(shí),Kafka 會(huì)將緩沖區(qū)中的消息打包成一個(gè)批次進(jìn)行發(fā)送。如果在等待時(shí)間內(nèi)沒有達(dá)到 batch.size,Kafka 也會(huì)將緩沖區(qū)中的消息發(fā)送出去,從而避免消息積壓。

壓縮技術(shù)

Kafka 支持壓縮技術(shù),通過將消息進(jìn)行壓縮后再進(jìn)行傳輸,從而減少網(wǎng)絡(luò)傳輸?shù)拈_銷(壓縮和解壓縮的過程會(huì)消耗一定的 CPU 資源,因此需要根據(jù)實(shí)際情況進(jìn)行調(diào)整。),提高網(wǎng)絡(luò)傳輸?shù)男屎屯掏铝?。Kafka 支持多種壓縮算法,在 Kafka2.1.0 版本之前,僅支持 GZIP,Snappy 和 LZ4,2.1.0 后還支持 Zstandard 算法(Facebook 開源,能夠提供超高壓縮比)。這些壓縮算法性能對比(兩指標(biāo)都是越高越好)如下:

吞吐量:LZ4>Snappy>zstd 和 GZIP,壓縮比:zstd>LZ4>GZIP>Snappy。

在 Kafka 中,壓縮技術(shù)是通過以下兩個(gè)參數(shù)來控制的:

compression.type:控制壓縮算法的類型,默認(rèn)值為 none,表示不進(jìn)行壓縮。compression.level:控制壓縮的級別,取值范圍為 0-9,默認(rèn)值為-1。當(dāng)值為-1 時(shí),表示使用默認(rèn)的壓縮級別。

在 Kafka 的生產(chǎn)者客戶端中,當(dāng)發(fā)送消息時(shí),如果啟用了壓縮技術(shù),Kafka 會(huì)將消息進(jìn)行壓縮后再進(jìn)行傳輸。在消費(fèi)者客戶端中,如果消息進(jìn)行了壓縮,Kafka 會(huì)在消費(fèi)消息時(shí)將其解壓縮。注意:Broker 如果設(shè)置了和生產(chǎn)者不通的壓縮算法,接收消息后會(huì)解壓后重新壓縮保存。Broker 如果存在消息版本兼容也會(huì)觸發(fā)解壓后再壓縮。

Pagecache 機(jī)制&順序追加落盤

kafka 為了提升系統(tǒng)吞吐、降低時(shí)延,Broker 接收到消息后只是將數(shù)據(jù)寫入PageCache后便認(rèn)為消息已寫入成功,而 PageCache 中的數(shù)據(jù)通過 linux 的 flusher 程序進(jìn)行異步刷盤(避免了同步刷盤的巨大系統(tǒng)開銷),將數(shù)據(jù)順序追加寫到磁盤日志文件中。由于 pagecache 是在內(nèi)存中進(jìn)行緩存,因此讀寫速度非??欤梢源蟠筇岣咦x寫效率。順序追加寫充分利用順序 I/O 寫操作,避免了緩慢的隨機(jī) I/O 操作,可有效提升 Kafka 吞吐。

如上圖所示,消息被順序追加到每個(gè)分區(qū)日志文件的尾部。

零拷貝

Kafka 中存在大量的網(wǎng)絡(luò)數(shù)據(jù)持久化到磁盤(Producer 到 Broker)和磁盤文件通過網(wǎng)絡(luò)發(fā)送(Broker 到 Consumer)的過程,這一過程的性能直接影響 Kafka 的整體吞吐量。傳統(tǒng)的 IO 操作存在多次數(shù)據(jù)拷貝和上下文切換,性能比較低。Kafka 利用零拷貝技術(shù)提升上述過程性能,其中網(wǎng)絡(luò)數(shù)據(jù)持久化磁盤主要用 mmap 技術(shù),網(wǎng)絡(luò)數(shù)據(jù)傳輸環(huán)節(jié)主要使用 sendfile 技術(shù)。

索引加速之 mmap

傳統(tǒng)模式下,數(shù)據(jù)從網(wǎng)絡(luò)傳輸?shù)轿募枰?4 次數(shù)據(jù)拷貝、4 次上下文切換和兩次系統(tǒng)調(diào)用。如下圖所示:

為了減少上下文切換以及數(shù)據(jù)拷貝帶來的性能開銷,Kafka使用mmap來處理其索引文件。Kafka中的索引文件用于在提取日志文件中的消息時(shí)進(jìn)行高效查找。這些索引文件被維護(hù)為內(nèi)存映射文件,這允許Kafka快速訪問和搜索內(nèi)存中的索引,從而加速在日志文件中定位消息的過程。mmap 將內(nèi)核中讀緩沖區(qū)(read buffer)的地址與用戶空間的緩沖區(qū)(user buffer)進(jìn)行映射,從而實(shí)現(xiàn)內(nèi)核緩沖區(qū)與應(yīng)用程序內(nèi)存的共享,省去了將數(shù)據(jù)從內(nèi)核讀緩沖區(qū)(read buffer)拷貝到用戶緩沖區(qū)(user buffer)的過程,整個(gè)拷貝過程會(huì)發(fā)生 4 次上下文切換,1 次CPU 拷貝和 2次 DMA 拷貝。

網(wǎng)絡(luò)數(shù)據(jù)傳輸之 sendfile

傳統(tǒng)方式實(shí)現(xiàn):先讀取磁盤、再用 socket 發(fā)送,實(shí)際也是進(jìn)過四次 copy。如下圖所示:

為了減少上下文切換以及數(shù)據(jù)拷貝帶來的性能開銷,Kafka 在 Consumer 從 Broker 讀數(shù)據(jù)過程中使用了 sendfile 技術(shù)。具體在這里采用的方案是通過 NIO 的transferTo/transferFrom調(diào)用操作系統(tǒng)的 sendfile 實(shí)現(xiàn)零拷貝??偣舶l(fā)生 2 次內(nèi)核數(shù)據(jù)拷貝、2 次上下文切換和一次系統(tǒng)調(diào)用,消除了 CPU 數(shù)據(jù)拷貝,如下:

稀疏索引

為了方便對日志進(jìn)行檢索和過期清理,kafka 日志文件除了有用于存儲(chǔ)日志的.log 文件,還有一個(gè)位移索引文件.index和一個(gè)時(shí)間戳索引文件.timeindex 文件,并且三文件的名字完全相同,如下:

Kafka 的索引文件是按照稀疏索引的思想進(jìn)行設(shè)計(jì)的。稀疏索引的核心是不會(huì)為每個(gè)記錄都保存索引,而是寫入一定的記錄之后才會(huì)增加一個(gè)索引值,具體這個(gè)間隔有多大則通過 log.index.interval.bytes 參數(shù)進(jìn)行控制,默認(rèn)大小為 4 KB,意味著 Kafka 至少寫入 4KB 消息數(shù)據(jù)之后,才會(huì)在索引文件中增加一個(gè)索引項(xiàng)??梢姡瑔螚l消息大小會(huì)影響 Kakfa 索引的插入頻率,因此 log.index.interval.bytes 也是 Kafka 調(diào)優(yōu)一個(gè)重要參數(shù)值。由于索引文件也是按照消息的順序性進(jìn)行增加索引項(xiàng)的,因此 Kafka 可以利用二分查找算法來搜索目標(biāo)索引項(xiàng),把時(shí)間復(fù)雜度降到了 O(lgN),大大減少了查找的時(shí)間。

位移索引文件.index

位移索引文件的索引項(xiàng)結(jié)構(gòu)如下:

相對位移:保存于索引文件名字上面的起始位移的差值,假設(shè)一個(gè)索引文件為:00000000000000000100.index,那么起始位移值即 100,當(dāng)存儲(chǔ)位移為 150 的消息索引時(shí),在索引文件中的相對位移則為 150 - 100 = 50,這么做的好處是使用 4 字節(jié)保存位移即可,可以節(jié)省非常多的磁盤空間。

文件物理位置:消息在 log 文件中保存的位置,也就是說 Kafka 可根據(jù)消息位移,通過位移索引文件快速找到消息在 log 文件中的物理位置,有了該物理位置的值,我們就可以快速地從 log 文件中找到對應(yīng)的消息了。下面我用圖來表示 Kafka 是如何快速檢索消息:

假設(shè) Kafka 需要找出位移為 3550 的消息,那么 Kafka 首先會(huì)使用二分查找算法找到小于 3550 的最大索引項(xiàng):[3528, 2310272],得到索引項(xiàng)之后,Kafka 會(huì)根據(jù)該索引項(xiàng)的文件物理位置在 log 文件中從位置 2310272 開始順序查找,直至找到位移為 3550 的消息記錄為止。

時(shí)間戳索引文件.timeindex

Kafka 在 0.10.0.0 以后的版本當(dāng)中,消息中增加了時(shí)間戳信息,為了滿足用戶需要根據(jù)時(shí)間戳查詢消息記錄,Kafka 增加了時(shí)間戳索引文件,時(shí)間戳索引文件的索引項(xiàng)結(jié)構(gòu)如下:

時(shí)間戳索引文件的檢索與位移索引文件類似,如下快速檢索消息示意圖:

broker & 數(shù)據(jù)分區(qū)

Kafka 集群包含多個(gè) broker。一個(gè) topic 下通常有多個(gè) partition,partition 分布在不同的 Broker 上,用于存儲(chǔ) topic 的消息,這使 Kafka 可以在多臺(tái)機(jī)器上處理、存儲(chǔ)消息,給 kafka 提供給了并行的消息處理能力和橫向擴(kuò)容能力。

多 reactor 多線程網(wǎng)絡(luò)模型

多 Reactor 多線程網(wǎng)絡(luò)模型 是一種高效的網(wǎng)絡(luò)通信模型,可以充分利用多核 CPU 的性能,提高系統(tǒng)的吞吐量和響應(yīng)速度。Kafka 為了提升系統(tǒng)的吞吐,在 Broker 端處理消息時(shí)采用了該模型,示意如下:

SocketServer和KafkaRequestHandlerPool是其中最重要的兩個(gè)組件:

SocketServer:實(shí)現(xiàn) Reactor 模式,用于處理多個(gè) Client(包括客戶端和其他 broker 節(jié)點(diǎn))的并發(fā)請求,并將處理結(jié)果返回給 ClientKafkaRequestHandlerPool:Reactor 模式中的 Worker 線程池,里面定義了多個(gè)工作線程,用于處理實(shí)際的 I/O 請求邏輯。

整個(gè)服務(wù)端處理請求的流程大致分為以下幾個(gè)步驟:

Acceptor 接收客戶端發(fā)來的請求輪詢分發(fā)給 Processor 線程處理Processor 將請求封裝成 Request 對象,放到 RequestQueue 隊(duì)列KafkaRequestHandlerPool 分配工作線程,處理 RequestQueue 中的請求KafkaRequestHandler 線程處理完請求后,將響應(yīng) Response 返回給 Processor 線程Processor 線程將響應(yīng)返回給客戶端其他知識(shí)探究負(fù)載均衡

生產(chǎn)者負(fù)載均衡

Kafka 生產(chǎn)端的負(fù)載均衡主要指如何將消息發(fā)送到合適的分區(qū)。Kafka 生產(chǎn)者生產(chǎn)消息時(shí),根據(jù)分區(qū)器將消息投遞到指定的分區(qū)中,所以 Kafka 的負(fù)載均衡很大程度上依賴于分區(qū)器。Kafka 默認(rèn)的分區(qū)器是 Kafka 提供的 DefaultPartitioner。它的分區(qū)策略是根據(jù) Key 值進(jìn)行分區(qū)分配的:

如果 key 不為 null:對 Key 值進(jìn)行 Hash 計(jì)算,從所有分區(qū)中根據(jù) Key 的 Hash 值計(jì)算出一個(gè)分區(qū)號(hào);擁有相同 Key 值的消息被寫入同一個(gè)分區(qū),順序消息實(shí)現(xiàn)的關(guān)鍵;如果 key 為 null:消息將以輪詢的方式,在所有可用分區(qū)中分別寫入消息。如果不想使用 Kafka 默認(rèn)的分區(qū)器,用戶可以實(shí)現(xiàn) Partitioner 接口,自行實(shí)現(xiàn)分區(qū)方法。

消費(fèi)者負(fù)載均衡

在 Kafka 中,每個(gè)分區(qū)(Partition)只能由一個(gè)消費(fèi)者組中的一個(gè)消費(fèi)者消費(fèi)。當(dāng)消費(fèi)者組中有多個(gè)消費(fèi)者時(shí),Kafka 會(huì)自動(dòng)進(jìn)行負(fù)載均衡,將分區(qū)均勻地分配給每個(gè)消費(fèi)者。在 Kafka 中,消費(fèi)者負(fù)載均衡算法可以通過設(shè)置消費(fèi)者組的 partition.assignment.strategy 參數(shù)來選擇。目前主流的分區(qū)分配策略以下幾種:

range:在保證均衡的前提下,將連續(xù)的分區(qū)分配給消費(fèi)者,對應(yīng)的實(shí)現(xiàn)是 RangeAssignor;round-robin:在保證均衡的前提下,輪詢分配,對應(yīng)的實(shí)現(xiàn)是 RoundRobinAssignor;0.11.0.0 版本引入了一種新的分區(qū)分配策略 StickyAssignor,其優(yōu)勢在于能夠保證分區(qū)均衡的前提下盡量保持原有的分區(qū)分配結(jié)果,從而避免許多冗余的分區(qū)分配操作,減少分區(qū)再分配的執(zhí)行時(shí)間。

集群管理

Kafka 借助 ZooKeeper 進(jìn)行集群管理。Kafka 中很多信息都在 ZK 中維護(hù),如 broker 集群信息、consumer 集群信息、 topic 相關(guān)信息、 partition 信息等。Kafka 的很多功能也是基于 ZK 實(shí)現(xiàn)的,如 partition 選主、broker 集群管理、consumer 負(fù)載均衡等,限于篇幅本文將不展開陳述,這里先附一張網(wǎng)上截圖大家感受下:

參考文獻(xiàn)https://www.cnblogs.com/arvinhuang/p/16437948.htmlhttps://segmentfault.com/a/1190000039133960http://matt33.com/2018/11/04/kafka-transaction/https://blog.51cto.com/u_14020077/5836698https://t1mek1ller.github.io/2020/02/15/kafka-leader-epoch/https://cwiki.apache.org/confluence/display/KAFKA/KIP-101+-+Alter+Replication+Protocol+to+use+Leader+Epoch+rather+than+High+Watermark+for+Truncationhttps://xie.infoq.cn/article/c06fea629926e2b6a8073e2f0https://xie.infoq.cn/article/8191412c8da131e78cbfa6600https://mp.weixin.qq.com/s/iEk0loXsKsMO_OCVlUsk2Qhttps://cloud.tencent.com/developer/article/1657649https://www.cnblogs.com/vivotech/p/16347074.html

關(guān)鍵詞:

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 640@qq.com  備案號(hào): 京ICP備2022022245號(hào)-21
欧美最新一区二区三区| 超级黄肉动漫在线观看| 性高潮视频在线观看日韩| 青青草一个释放的网站| 中文字幕在线观看av观看| 河北全程露脸对白自拍| 亚洲激情噜噜噜久久久| 天天操天天搞天天操| 欧美黄色一区二区三区视频| 大香蕉尹人在线最新| 欧美亚洲另类精品第一页| 蜜臀一区二区日韩美女少妇视频| 在线免费观看a视频免费| 久操资源在线免费播放| 99久久久久久久久久久久久| 欧美成人少妇人妻精品| 午夜在线观看一级毛| 美女精品久久久久久久久| 放荡人妻极品少妇全集| 欧美区日本区国产区| 亚洲综合另类欧美久久| 亚洲美女色www色| 日本一区二区三区区别| 夜夜人人干人人爱人人操| 亚洲av网站一区二区三区| 久久99国产中文丝袜| 亚洲国产精品自拍偷拍视频在线| 久久精品久久久久观看99水蜜桃| 日本少妇三级交换做爰做| 极品内射老女人操逼视频| 成人精品动漫一区二区| 国产乱码有码一区二区三区| 精品人妻在线激情视频| 亚洲国产美女主播在线观看| 啊~插得好快别揉我胸了视频| avtt中文字幕手机版| 日韩一区二区在线播放观看| 一区二区三区午夜福利在线| 天海翼亚洲一区在线观看| 美女福利网站在线播放| 美女妩媚午夜诱惑网站| 精品人妻在线激情视频| 裸日本资源在线午夜| 99久久99九九九99九| av网页免费在线观看| 欧美精品999不卡| 亚洲一区视频中文字幕在线播放| 99亚偷拍自图区亚洲| 汤姆提醒30秒中转进站口| 91污污在线观看视频| 伦理在线观看未删减中文字幕| 免费看日韩黄视频在线观看| 天堂网免费在线电影| 色狠狠色综合久久久绯色| 午夜8050免费小说| 豆豆专区操逼性视频在线| 无码人妻丰满熟妇区五路| 人妻系列中文字幕大乳丰满人妻 | 抽插小穴啊啊啊视频| 久久热在线免费观看| 视频在线 一区二区| 亚洲av网站一区二区三区| 亚洲一区二区三区国产精品电影 | 性感美女人妻久久久| 大乳丰满人妻中文字幕韩国hd| 老熟妇一区二区三区v∧88| 美女妩媚午夜诱惑网站| 日本福利视频网站导航| 天天日天天玩天天摸| 伊人精品成人综合网| 日本欧美视频在线免费| 不卡高清一区二区三区| 熟女人妻少妇一区二区| 欧美精品激情在线不卡| 亚洲综合天堂av网站在线观看| 久久人人爽人人爽人人av东京热| 五月天天堂视频在线| 亚洲成人自拍av在线| 最新激情中文字幕视频| 国产免费久久精品99re丫丫| 夜夜操夜夜爱夜夜摸| 亚av一二三在线观看| 久久久久九九九九九12| 亚洲熟女少妇中文字幕系列| 午夜国产精品免费视频| 欧美啪啪一区二区三区| 操人妻人妻天天爽天天偷| 日韩av水蜜桃一区二区三区| 亚洲gay视频在线观看| 久久人妻人人草人人爽| 麻豆白洁少妇在线播放| 中文字幕在线字幕乱码怎么设置| 欧美黄色一区二区三区视频| 黑吊操欧美极品美女| 欧美情色av在线观看| 手机视频在线观看一区| www一区二区91| 亚洲成a人片777777张柏芝| 伊人情人成综合视频| 18岁禁一二三区免费体验| 91偷拍被偷拍在线播放| 欧美区一区二区三视频| 日韩加勒比精品在线看| 成人av在线视频免费| 免费在线小视频你懂的| 中文字幕久久久国产| 91久久精品美女高潮喷水白浆| 内地精品毛片在线观看| 国内精品一区二区2021在线| 欧美日韩在线观看免费播放| 免费看一级高潮喷水片| 免费24小时人妻视频| 亚洲成人av在线一区二区| 91色老久久精品偷偷蜜臀| 亚洲精品乱码久久久久app| 麻豆出品视频在线观看| 国际精品熟女一区二区| 日韩在线 中文字幕| 亚洲欧美国产一本综合首页| 最近在线中文字幕免费| 69国产在线视频网站| 亚洲午夜精品一级毛片app| 国产精品乱码高清在线观看h| 美女妩媚午夜诱惑网站| 天天碰天天摸天天搞| 天堂一区二区三区在线等| 美女一区二区四区六区八区| 青青在线免费手机播放视频| 极品风骚人妻3p视频| 日本福利视频网站导航| 天天透天天舔天天操| 精品美女洗澡一区二区| 亚洲午夜高清在线观看| 91精品国产91久久久久久密臀| 二十四小时日本高清在线观看| 国产福利三级在线观看| 午夜精品久久久久久久久久蜜桃| 国产亚洲精品啪啪视频| 伊人久久综合国产精品| 91九色91在线视频| 91 精品视频在线看| 亚洲av中文无码网站| 99国产精品久久99久久久| 青青操91美女国产| 男女啪啪啪啪91av日韩| 欧美激情视频第一页| 久久中文字幕av一区二区| 亚洲综合天堂av网站在线观看| 顶级欧美色妇xxxx| 2021国产剧情麻豆| 在线 制服 中文字幕 日韩| 网友自拍第一页99热| 亚洲色视频在线播放网站| 欧美第一激情综合网欧美激情| 成年人免费黄色av| 天堂在线中文字幕av| 亚洲激情视频在线观看免费| 精品国产av虐杀两警花| 韩国在线播放一区二区三区 | 岛国av成人午夜高清| av中文字幕国产精品| 快色视频在线观看免费| 玖玖资源站在线观看亚洲| 亚洲第一区av中文字幕| 日本少妇精品免费视频| 日韩加勒比精品在线看| 91在线九色porny| 亚洲男人天堂最新网址大全| 高潮喷水在线视频观看| 美国十次了亚洲天堂网国产| 高潮喷水一区二区三区| 国产福利三级在线观看| 顶级欧美色妇4khd| 户外露出视频在线观看| 福利小视频免费在线| 韩国在线播放一区二区三区| 欧美精品999不卡| 欧美日本国产一区二区| 少妇被粗大的猛进69视频| 天天干夜夜操夜夜骑| av人摸人人人澡人人超碰小说| 亚洲一区二区三区四区入口| 欧美一区二区三区视频看| 搞乱在线在线观看视频| 松本菜奈实最新av在线| 核xp工厂精品久久亚洲| 亚洲中文字幕在线视频观看二区 | 亚洲激情噜噜噜久久久| 国产精品美女免费视频观看| 欧美精品激情在线不卡| 911美女片黄在线观看| 国产91九色视频在线观看| 午夜偷拍的视频久久久免费大全 | 人妻色综合aaaaaa网| 午夜8050免费小说| 福利视频导航在线观看| 午夜国产一区二区三区| 中文字幕人妻一区色偷偷久久| 黑人3p日本女优中出| 熟妇高潮久久久久久久| 超级黄肉动漫在线观看| 亚洲中文字幕无线乱码人妻精品| 免费在线观看黄色小网站| 77亚洲视频在线观看| 久久国产半精品99精品国产| 97人妻在线视频自拍| 99久久久久久亚洲精品免费| 国产视频1区2区3区| 在线观看免费啪啪啪| 两个人在一起靠逼啊啊啊| 白白色在线免费视频发布视频| 高清国产美女a一级毛片| 午夜精品老牛av一区二区三区| 午夜精品老牛av一区二区三区| 久草久热这里只有精品| 天天综合久久无人区| 国产精品 亚洲欧美 自拍偷拍| 中出小骚货在线观看| 玖玖资源站在线观看亚洲| 美女网站视频久久精品| 青青青在线观看国产| 可以免费观看日韩av| 国产,亚洲,欧美综合| 女生裸体视频免费网站| 91精品国产成人久久久久久| 欧美日韩不卡视频合集| 青青青国产精品视频| 桃色成人开心激情网| 美女露阴道让男人捅| 成人免费电影二区三区| 丝袜美女诱惑佐佐三上| 超peng视频在线免费播放97| 国产精品 亚洲欧美 自拍偷拍 | 一区二区三区观看在线| 日本五六十路熟女视频| 欧美丝袜亚洲国产日韩| 日本四十路人妻熟女| 五月在线视频免费播放91| 亚洲中文字幕最新地址| 男人资源站中文字幕| 2026天天操天天干| 日本丰满熟妇浓密多毛| 在线看的免费网站黄| 亚av一二三在线观看| 午夜美女福利视频在线| 综合久久伊人久久88| 国产精品剧情av在线播放| 亚洲成人欧洲成人在线| 日本亚洲午夜福利一区二区三区| 亚洲欧美另类丝袜另类自拍| 日韩人妻中文字幕二区| 精品日本少妇久久久| 久久精品国产亚洲av清纯| 91精品资源在线观看| 68视频在线免费观看| 欧美日韩黄片免费在线观看| 午夜宅男电影av网站| 国产熟女五十路一区二区三区| 伊人精品成人综合网| 国产三级自拍视频在线观看网站| 手机看片1024精品国产| 精品av天堂毛片久久久| 人妻中文字幕亚洲在线| 国产伦理二区三区在干嘛呢| 伊人免费观看视频一| 欧美插插插插插插| 91精品麻豆91夜夜骚| 亚洲国产精品一区二区第二页| 日韩国产欧美久久一区| 奇米网首页神马久久| 国产白丝一区二区三区av| 亚洲国产精品青青草| 精品精品精品精品精品污污污污 | 在线观看中文字幕视频成人| 国产精品剧情av在线播放| aaaa级少妇高潮在线观看| 欧美视频亚洲视频在线| 美女福利网站在线播放| 亚洲三级综合在线观看| 国产igao激情在线视频入口| 国产乱码有码一区二区三区| 亚洲av毛片在在线播放| 亚洲经典av中文字幕| 亚洲美女露隐私av一区二区精品 | 无人区一码二码三码区别在哪| 啪啪啪网站免费在线看| 日韩av熟妇在线观看| 超peng视频在线免费播放97| 亚洲综合熟女乱中文| 四虎国产精品国产精品国产精品| 欧美黄色性视频网站| 国产精品乱码高清在线观看h| 欧美一区二区三区视频看 | 欧美一级aaaaaaa片| 老牛影视在线一区二区三区| 亚洲最大先锋资源采集站| 91超碰国产在线观看| 一区二区三区高清视频3| 在线中文字幕人妻av| 国产探花自拍亚洲av| 久久sm人妻中出精品一区二区| 99热这里只有精品免费播放| 日本高清 中文字幕| 国产精品久久久久精品三级18| xxnxx国产美女| 国产高清视频www夜色资源| 蜜臀一区二区日韩美女少妇视频| 一区二区三区四区视频精品免费| 久久久视频在线播放| 91大神福利视频网| jandara在线观看| 岛国av成人午夜高清| 午夜情色一区二区三区| 黄色片免费国产精品| 国产精品成人免费电影| 亚洲在线免费观看18| 亚洲人人爽人人澡起碰av| 大陆中文字幕视频在线| 免费中文三级在线观看| 人妻在线中文视频视频| 久久99精品热在线观看| 国产精品 亚洲欧美 自拍偷拍| 天天早上头和脸出汗是怎么办| 欧美男男在线观看视频网站| 夜夜骚av一二三区| 亚洲天堂色综合久久| 久久久久久高清一区| 2019年中文字幕在线播放视频| 55夜色66夜色亚洲精品| 不卡在线一区二区三区| 正在播放麻豆精品一区二区| 50熟妇一区二区三区| 亚洲精品色图1234| 岳母的诱惑电影在线观看| avjpm亚洲伊人久久| 性高潮视频在线观看日韩| av成人三级高清日韩| 亚洲欧美综合另类最新| 欧美猛少妇色ⅹⅹⅹⅹⅹ猛叫| 一看就是假奶的av| av成人三级高清日韩| 99999久久久精品| 亚洲成人自拍图片网站| 亚洲资源在线免费观看| 亚洲一区二区精品在线播放| 精品高潮呻吟久久av| 精品久久久久久久久久久久久| 香港日本台湾经典三级| av激情四射五月婷婷| 免费绝清毛片a在线播放| 欧美男女一区二区三区| 久久人妻诱惑我视频| 五月婷婷激情视频网| 人妻中文字幕亚洲在线| 欧美最新一区二区三区| 中文字幕一区二区人妻视频| 漂亮人妻口爆久久精品| 在线有码人妻自拍视频| 亚洲国内精品久久久久久久| 蜜乳av一区二区三区免费观看| 欧美日韩久久丝袜在线| xxxx69在线观看视频| 奇米网首页神马久久| 亚洲最强的25个城市| 免费成人av麻豆| 天天爱天天日天天爽| 黄色大片一级老太太操逼| 日韩人妻精品久久久久| 久久99久久99久久97的人| 人人人妻人人人妻精品少妇| 一区二区三区不卡免费视频网站| 亚洲欧洲无码一区2区无码| 国产在线观看av一区| 不卡一二三区别视频| avgo成人短视频| 亚洲一区视频中文字幕在线播放| 欧美日韩国产在线中文字幕| 国产精品内射婷婷一级| 欧美精品乱码99久久蜜桃免费| 日本一区二区三区的资源| 午夜国产成人精品视频观看| www国产亚洲精品久久久| 欧美亚洲国产一区二区| 亚洲综合在线视频在线播放| 亚洲欧美另类校园春色| 可以免费观看日韩av| 亚洲韩精品一区二区三区| 蜜桃臀少妇白色紧身裤细高跟| 欧美成人红桃视频在线观看| iga肾三级算严重吗| 干逼又爽又黄又免费的视频| 日本福利网站一区二区| 91精品综合久久久久久五月天| 久草久热这里只有精品| 亚洲精品9999蜜桃| 亚成区一区二区人妻熟女| 国产精品网站亚洲发布| 国产主播诱惑毛片av| 成人做爰av在线观看网站| 全国熟妇精品一区二区免费视频 | 一区二区三区观看在线| 亚洲一区视频中文字幕在线播放| 国产自拍偷拍在线精品| 操人妻人妻天天爽天天偷| 久久sm人妻中出精品一区二区| 亚洲欧美日韩电影一区| 天天干夜夜操夜夜骑| 两个人在一起靠逼啊啊啊| 伊人免费观看视频一| jiee日本美女视频网站| 国产成人深夜福利短视频99| 免费啪啪啪网站在线观看| 伊人网在线欧美日韩在线| 最新福利二区三区视频| 天天摸天天干夜夜操| 日本高清 中文字幕| 日本少妇人妻凌辱在线| 欧美肥妇久久久久久| 日产国产欧美精品另类| 日本不卡 中文字幕| 岳母的诱惑电影在线观看| 成人av中文字幕在线看| 久久久人妻免费视频| 另类欧美激情校园春色| 熟女一区二区三区综合| 日本高清有码在线视频| 午夜夫妻性生活视频| 日本午夜福利免费在线播放| av福利免费体验观看| 在线人成视频免费观看尤物| 第一福利视频在线观看| 人妻熟女 亚洲 一页二页| 天天干天天操天天要| jiee日本美女视频网站| 手机看片1024精品国产| 精品欧美黑人一区二区三区| 懂色av之国产精品| 欧美黑人1区2区3区| 久久久久九九九九九12| 国产91黑丝小视频在线观看| 色视频在线播放免费观看| 亚洲国产日韩欧美一区二区三区, 精久久久久久久久久久久 | 综合激情网,激情五月| 99色在线观看免费观看| 久久久久性感美女偷拍视频| 青青青在线观看国产| 亚洲一区二区在线视频观看免费| 九九视频在线观看全部| 天天干天天操天天要| 日韩成人精品久久久免费看| 欧美成人区一区二区三| 精产国品一二三产品区别97| 18禁男女啪啪啪无遮挡| 69av精品国产探花| 男生用大肌巴操美女骚穴| 91九色pony蝌蚪| 深夜福利免费观看在线看| 60路70路日本熟妇| 最新日韩av电影在线播放 | 360偷拍蜜桃臀69式| 天天天天天天天天日日日| 青娱乐免费视频一二三| 亚洲 偷拍 自拍 欧美| 欧美熟女xx00视频| 伊人情人成综合视频| 麻豆午夜激情在线观看| 日本高清在线观看不卡视频| 欧美精品乱码99久久蜜桃免费| 欧美男女一区二区三区| 夏目彩春av在线看| 欧美情色av在线观看| 岛国av成人午夜高清| julia人妻av一区二区三区| 亚洲成人偷拍自拍在线| 婷婷一区二区三区五月丁| 夜色17s精品人妻熟女av| 成年人免费黄色av| 成人精品动漫一区二区| 男女69视频在线观看免费| 一二区二区不卡视频| 无码人妻丰满熟妇区五路| 欧美日韩亚洲tv不卡久久| 免费看一级高潮喷水片| 男人用大鸡巴狂操女人肉穴| 青青青在线视频免费播放| 国产午夜羞羞一区二区三区| 亚洲一区二区三区无码在线| 精品国模一区二区三区欧美| 亚洲午夜国产末满十八岁勿进网站| 97精品国产91久久久| 精品视频一区二区三区◇| 天天日 天天舔 天天射| 成人18禁高潮片免费日本| 99热在线只有的精品| 免费成人av麻豆| 欧美精品999不卡| 亚洲一区二区在线视频观看免费| 91精品夜夜夜一区二区| 欧美在线视频不卡一区| 日韩三级精品电影久久久久| 最新福利二区三区视频| 亚洲国产精品 久久久| 欧美亚洲精品色图网站| 国产漂亮白嫩美女在线图片| 羞羞漫画无限免费观看秋蝉| 亚洲最强的25个城市| av一区二区三区四区五区在线| 青青青在线观看国产| 51vv精品视频在线观看| 国产视频成人一区二区| 日本少妇三级交换做爰做| 每日更新日韩欧美在线| 中文人妻av一区二区三区| 91亚洲最新蜜桃在线| 国产男女无套?免费网站下载 | 中日韩又粗又硬又大精品| 午夜精品一区二区三区不卡顿| 老鸭窝在线毛片观看免费播放| 呻吟求饶的人妻中文字幕| 日本午夜福利免费在线播放| 天堂一区二区三区在线等| 超碰在线观看97资源| 美国伦理片午夜理论片| 超级黄肉动漫在线观看 | 99色在线观看免费观看| 五月的婷婷综合视频| 亚洲中文字幕在线av| 最近在线中文字幕免费| 操人妻人妻天天爽天天偷| 福利美女视频在线观看| 亚洲字幕一区二区夜色av| 国语精品视频自产自拍| 欧美极品少妇高潮喷水| 国产成人在线观看hd| 中文字幕 人妻 熟女| 久草视频在线看免费| 日日躁夜夜躁狠狠操| 天天操天天日天天插天天舔| 熟女一区二区视频在线| 色丁香久久激情综合网| 成人黄色录像在线观看| 正在播放麻豆精品一区二区| 天天操天天干天天谢| 国产精品国产三级在线高清观看| 女人扒开逼让男人操| 99re这里是国产精品首页| 亚洲gay视频在线观看| 黑川堇人妻88av| 日本人妻熟妇丰满成熟HD系列| 汤姆提醒30秒中转进站口| 男人的天堂aⅴ在线| 高清欧美色欧美综合网站| 91国产精品乱码久久久久久| 国产女人18毛片水真多精选| 亚洲成人欧洲成人在线| 日本黄色一级电影网址| 快使劲弄我视频在线播放 | 国产一区二区手机在线观看| 亚洲一区二区三区四区入口| 91麻豆精品国产在线| 亚洲一区二区偷拍女厕所| 久久久久久免费观看av| 99久9在线视频播放| 亚洲妹妹我爱你在线观看| avtt中文字幕手机版| 午夜精品小视频在线播放| 丝袜美腿日韩av一区| 天天色天天射天天日天天干| 亚洲av毛片在在线播放| 日本不卡视频一二三区| 91九色人妻在线播放| 欧美精品一区二区三区观看 | 亚洲理论在线a中文字幕97| 99精品久久精品一区二区| 女人的天堂 av在线| av 资源在线播放| 极品风骚人妻3p视频| 老司国产精品视频免费观看| 极品风骚人妻3p视频| 猫咪亚洲中文在线中文字幕| 日本欧美国产在线一区| 天天干天天操天天要| 天天干天天操天天要| 一区二区三区高清视频3| 美女扒开逼逼给你看| 韩国在线播放一区二区三区| 成人精品影视一区二区| 91精品国产人妻麻豆| 亚洲综合在线视频在线播放| 99久久99九九九99九| 亚洲欧美激情国产综合久久久| 2021国产剧情麻豆| 午夜美女福利视频在线| 国际精品熟女一区二区| 熟女俱乐部jukujoclub| 日本清纯中文字幕版| 亚洲一区二区精品三区视频| 亚洲综合成人精品成人精品| 欧美区一区二区三视频| 韩日一级人添人人澡人人妻精品| 亚洲国产精品一区51动漫| 一区二区在线观看视频网站| 亚洲成人av在线一区二区| 天天天天天天天天干夜夜| 白白色在线免费视频发布视频| 亚洲欧美小说中文字幕| 乱子伦国产一区二区三区| 中文在线字幕免费观看日韩视频| 区一区二区三免费观看视频| 精品欧美黑人一区二区三区| 2020国产激情视频在线观看| 91香蕉国产亚洲一二三区| 第一福利视频在线观看| 国产美女视频带a∨黄色片| 99久久国语露脸国产精品| 亚洲欧美不卡专业视频| 欧美aaaa性bbbbaaaa| 午夜国产精品免费视频| 天堂网免费在线电影| 精品国产污污污污免费观看| 国产三级自拍视频在线观看网站| 三区美女视频在线观看| avjpm亚洲伊人久久| 亚洲韩精品一区二区三区| 大尺度久久久久久久| 国产探花自拍亚洲av| av在线播放观看h| 亚洲一区亚洲二区成人福利| 一区二区三区 国产日韩欧美| 欧美强奸视频在线观看| 在线成人教育平台排名| 亚洲gay视频在线观看| 日本久久久久久黄色| 欧美日韩高清片在线观看| 黑人大巨屌操美女逼| 一区二区三区午夜福利在线| 亚洲国产精品自产拍在线观看| xxxx69在线观看视频| 在线 激情 亚洲 视频| 成人午夜av电影网| 国产91黑丝小视频在线观看| 韩国毛片w妈妈的朋友7| 一级做性色a爱片久久片| 玖玖资源站在线观看亚洲| 9久re热视频在线精品| 人妻熟女 亚洲 一页二页| 2019年中文字幕在线播放视频| 欧美一级特黄大片做受99| 免费在线观看黄色小网站| 日本东京热最新中文字幕| 国产一区两区三区福利小视频| 中文字幕日韩人妻在线三区| v天堂国产精品久久| 日本不卡视频一二三区| 亚洲熟女人妻自拍在线视频 | 免费在线观看亚洲福利| 亚洲18片综合国产av| 中文字幕亚洲无线乱码| 美女网站福利在线观看| 欧美巨大另类极品video| 青青草原在线播放日韩| 亚洲av中文免费在线| 免费啪啪啪网站在线观看| 99久久免费播放在线观看视频| 亚洲无人区乱码中文字幕一区| 亚洲AV无码一二三四区在线播放| 亚欧洲乱码视频一二三区| 国产91九色视频在线观看| 女女抠逼白虎白丝袜| 超peng视频在线免费播放97| 东京热男人的天堂视频| 玖辛奈18禁同人污本子| 美女露阴道让男人捅| 男人电影天堂在线观看| av资源中文字幕在线观看| 青青操久久综合激情| 亚洲欧美国产一本综合首页| 女同大尺度视频网站在线观看| 开心激情五月天作爱片| 美女激情久久久久久久| 猫咪亚洲中文在线中文字幕| 一区二区三区四区视频精品免费| 亚洲国产日韩欧美一区二区三区, 精久久久久久久久久久久 | 亚洲一区二区三区国产精品电影| 九十九步都是爱最后一步是尊严| 网友自拍第一页99热| 中文字幕熟女人妻丝袜丝在线| 二十四小时日本高清在线观看| 东北老女人熟女啪啪视频| 亚洲情色777中文字幕| 成人av在线视频免费| 国产精品网站的黄色| 亚洲成人自拍图片网站| 天天插天天透天天爽| 欧美丝袜亚洲国产日韩| 自拍偷拍亚洲综合第一页| 国语对白性爱三级片免费看| 亚洲熟女人妻自拍在线视频| 天天操天天干加勒比久久| 97精品人妻免费视频| 最新免费在线观看污视频| 中文字幕亚洲乱码精品无限| 天天摸天天干夜夜操| 18福利视频在线观看| 人妻中文字幕亚洲在线| 日韩国产欧美久久一区| 最新国产精品综合网高清| 顶级欧美色妇xxxx| 国产精品内射婷婷一级| 天天碰天天摸天天搞 | 亚洲成人欧洲成人在线| 在线看日韩av不卡| 亚洲制服丝袜网站中文字幕| 午夜国产免费视频亚洲| 最新国产精品拍在线观看| 5566熟女人妻人妻| 国产精品性感美女视频| 182tv精品免费在线观看| 91九色国产在线视频| 欧美日韩亚洲tv不卡久久| 美女精品久久久久久久久| 天堂av国产av伦理av| 欧美日韩成人高清中文网| 欧美亚洲愉拍一区二区三区| 亚洲成人五月婷婷久久综合| 人妻系列在线免费视频| 天天早上头和脸出汗是怎么办| 97视频人人爱麻豆| 裸露视频免费在线观看| 欧美成人屋影院在线视频观看 | 亚洲成人自拍图片网站| 69久久夜色精品国产69乱电影 | 欧美精品熟妇免费在线| 久久午夜免费鲁丝片| 午夜宅男电影av网站| 大奶熟妇激情操逼逼| 国产女人18毛片水真多精选| 男人电影天堂在线观看| 亚洲一区二区三区无码在线| 亚洲欧美另类校园春色| 九九视频在线观看全部| 东京热日韩av影片| 亚洲三级综合在线观看| 五月天天堂视频在线| 欧美大胆a级视频秒播| 一区二区在线观看视频观看| 最新中文字幕久久久久| 久久午夜免费鲁丝片| 乱子伦国产一区二区三区| 成人精品影视一区二区| 91大神福利视频网| 日本久久久久久黄色| 天堂av国产av伦理av| 污视频在线观看地址| 亚洲成人激情在线综合| 18禁男女啪啪啪无遮挡| 亚洲AV无码久久精品国产一区老 | 男女啪啪啪啪91av日韩| 一二区二区不卡视频| 日本高清久久人人爽| 放荡人妻极品少妇全集| 日韩人妻中文字幕二区| 亚洲制服丝袜资源网| 网站在线观看蜜臀91| 午夜国产精品免费视频| 欧美日韩不卡视频合集| 久久久人妻免费视频| 夏目彩春av在线看| 男女真人做带声音视频图片| 夫妻黄色一级性生活片| 日本少妇熟女乱码一区二区| 日本一本午夜在线播放| 2020国产激情视频在线观看| 神马不卡视频在线视频| 91精品一区一区三区| 熟女一区二区视频在线| 欧美啪啪一区二区三区| 欧美黄色性视频网站| 夫亡人妻被强干中文字幕| 干逼又爽又黄又免费的视频| 亚洲AV无码久久精品国产一区老 | 人妻视频网站快射视频网站| 羞羞漫画无限免费观看秋蝉| 亚洲乱码av一区二区蜜桃av| 岛国av成人午夜高清| 欧美亚洲愉拍一区二区三区| jizzjizz国产精品传媒| 瑟瑟干视频在线观看| 猫咪亚洲中文在线中文字幕| 亚洲人妻系列在线视频| 干逼又爽又黄又免费的视频| 人妻少妇视频系列视频在线| 人妻熟女 亚洲 一页二页 | 成人做爰av在线观看网站| 国产最新av在线免费观看| 全国熟妇精品一区二区免费视频 | 在线免费观看a视频免费| 国产男人的天堂一区| 秋霞成人午夜鲁丝一区二区三区| 精产国品一二三77777| 可以直接看av网站| 大乳人妻一区二区三区| 无人区一码二码三码区别在哪| 中文乱码字幕人妻熟女人妻| 快进来插我的逼嗯啊视频| 久久内射天天玩天天懂色| 四虎国产精品国产精品国产精品| 福利在线国产小视频| 中文字幕av人妻一区二区三区| 欧美人与动欧交视频| 五月天色婷婷狠狠爱| 男人av一区二区三区| 欧美成人少妇人妻精品| 美女网站福利在线观看| 国产中文亚洲熟女日韩| 亚洲AV无码一二三四区在线播放| 欧美一级特黄大片做受99| 九九热在线精品播放| 77亚洲视频在线观看| 综合激情网,激情五月| 91精品国产综合99| 亚成区一区二区人妻熟女| 手机看电影一区二区三区| 女人扒开逼让男人操| 亚洲激情视频在线观看免费| 操人妻人妻天天爽天天偷| 18岁禁一二三区免费体验| 黑人3p日本女优中出| 欧美视频亚洲视频在线| 国产清纯一区二区在线观看| 91美女在线观看视频| 男女啪啪啪网站在线观看免费| 亚洲精品9999蜜桃| lutu玩弄人妻短视频| 亚洲在线免费观看18| 99 re国产精品| 日韩少妇免费在线播放| 青娱乐这里只有精品| 亚洲国内精品久久久久久久| 中文字幕中文字幕在线中…一区| 中文字幕欧美一区二区视频| 岳的大肥屁熟妇五十路| 无码精品黑人一区二区老人| 国产伦理二区三区在干嘛呢| 91亚洲精品久久蜜桃| 久久久国产精品免费视频网| 在线有码人妻自拍视频| 国产 少妇 一区二区| 久久av色噜噜ai换脸| 欧美巨大另类极品video| 天天色天天射天天日天天干| 亚洲制服丝袜资源网| 人妻少妇精品二三区| 日韩欧美中文字幕老司机三分钟| 亚洲美女露隐私av一区二区精品 | 国产经典精品欧美日韩| 97人妻av人人澡人人爽| a级黄片免费观看| 成年男女免费视频网站无毒| 91久久精品美女高潮喷水白浆| 5d蜜桃臀女无痕裸感| 亚洲一区二区中文字幕久久| 天天干天天日天天弄| 中日韩又粗又硬又大精品| 亚洲一区二区三区国产精品电影 | 大乳丰满人妻中文字幕韩国hd| 女生抠逼自慰啊啊啊啊啊啊啊下载 | 97人妻av人人澡人人爽| 丰满少妇_区二区三区| 成人做爰av在线观看网站| 欧美第一激情综合网欧美激情| 欧美肥妇久久久久久| 核xp工厂精品久久亚洲| 全球高清中文字幕av| 男人av一区二区三区| 上床啪啪啪免费视频| 午夜精品老牛av一区二区三区| 中文字幕熟女人妻丝袜丝在线| 全国熟妇精品一区二区免费视频| 国产又粗又长又大视频| 女同性恋av在线播放| 国产 少妇 一区二区| 一区二区三区不卡免费视频网站| 豆豆专区操逼性视频在线| 亚洲国产精品自产拍在线观看| 国产毛片特级Av片| 加勒比不卡在线视频| 日日躁夜夜躁狠狠操| 精品人妻人人做人人爽| 欧洲成熟女人色惰片| 美国伦理片午夜理论片| 999精品视频免费在线观看| 亚洲av毛片一区二区三区网| 国模伊人久久精品一区二区三区| 国产精品性感美女视频| 日韩精品视频一区二区三区在线| 77亚洲视频在线观看| 日韩最近中文在线观看| 日韩一区二区在线播放观看| 国产成人在线观看hd| 亚洲欧美另类丝袜另类自拍| 大尺度av毛片在线网址| www一区二区91| 国产精品国产三级在线高清观看| 国产精品福利久久久久| 久久国产半精品99精品国产| 日韩加勒比精品在线看| 美女精品久久久久久久久| 有码一区二区三区四区五区| 天天操天天干天天谢| 青青操久久综合激情| 日韩久久不卡免费视频| 得得爱在线视频观看| 九十九步都是爱最后一步是尊严| 亚洲成人五月婷婷久久综合| 日本一区二区三区调教性奴视频| 午夜亚洲国产精品中字| 午夜免费福利老司机| 人妻免费视频黄片在线视频| 国产清纯一区二区在线观看| 亚洲另类欧美综合久久| 成年人免费福利在线| 国长拍拍视频免费孕妇| 天天干夜夜操夜夜骑| 欧美成人少妇人妻精品| 97人妻av人人澡人人爽| 欧美日本国产一区二区| 欧美大胆a级视频秒播| 国产自拍偷拍在线精品| 国产青青青青草免费在线视频| 熟女人妻aⅴ一区二区三| 免费高清av一区二区| 男人电影天堂在线观看| 夜夜操夜夜爱夜夜摸| 91人妻人人做人人爽高清| 亚洲黄色成人一级片| 国产精品网站亚洲发布| 女人高潮潮呻吟喷水网站| 日韩最近中文在线观看| 青青青青青爽视频在线| 国产91精品福利系列| 神马不卡视频在线视频| 九九视频在线观看全部| 无码精品黑人一区二区老人| 国产精品国产三级在线高清观看| av激情四射五月婷婷| 亚洲综合成人精品成人精品| 真人一进一出抽搐大尺度视频 | 全彩漫画口工18禁| 国产午夜在线播放视频| 国产高清视频www夜色资源| 中文字幕人妻精品精品| 大鸡扒操大逼大片免费关看| 91麻豆精品国产在线| 中文字幕 一区二区在线观看| 国产午夜羞羞一区二区三区| 欧美aaaa性bbbbaaaa| 在宿舍强奷两个清纯校花| 99re这里是国产精品首页 | 狠狠操狠狠操狠狠插| 国产成人在线观看视频播放| 亚洲午夜精品视频节目| 国产91黑丝小视频在线观看| av在线免费在线观看| 熟女阿高潮合集一区二区| 午夜久久人妻一级内射av网址| 日本黄页在线观看视频| 国产91黑丝小视频在线观看| tobu8日本高清| 老司机免费视频福利0| 四季av人妻一区二区三区| 91精品视频在线观看视频| 91佛爷视频在线观看| 欧美国产精品久久久免费| 一区二区欧美 国产日韩| 日本成年视频在线免费观看| 国产av在线免费视频| 夜色17s精品人妻熟女av| 国产精品国产三级在线高清观看 | 亚洲午夜高清在线观看| 日本欧美亚洲国产啊啊啊| 不卡一二三区别视频| 奇米网首页神马久久| 一区二区三区av免费天天看| 99久久久久久久久久久久久| 91亚洲精品久久蜜桃| 在线免费观看a视频免费| 欧美区一区二区三视频| 亚洲黄色成人一级片| 最新国产午夜激情视频| 韩国资源视频一区二区三区| 夫亡人妻被强干中文字幕| 97香蕉久久国产超碰| 色视频在线播放免费观看| 岳的大肥屁熟妇五十路| 美利坚合众国av天堂| 亚洲熟女一区二区六区| 国产av高清二区三区| 99久久国语露脸国产精品| 午夜福利午夜福利影院| 亚洲制服丝袜网站中文字幕| 抽插小穴啊啊啊视频| 国产福利一区二区三区在线观看| 51精品视频在线免费观看| 不卡在线一区二区三区| 亚洲国产日韩欧美一区二区三区, 精久久久久久久久久久久 | 中文字幕 中文字幕 亚洲| 黄色片免费网站在线| 国产肥胖熟女又色又爽免费视频| 天天日夜夜操人人爽| 九热精品视频在线观看| 日本少妇熟女乱码一区二区| 亚州av嫩草av极品在线观看| 国产激情免费在线视频| 中国精品人妻一区二区| 日本老熟老熟妇七十路| 91 精品视频在线看| 国色天香一二三期区别大象| 午夜国产精品免费视频| 在线视频国产精品欧美| 老司机在线视频福利观看| 人人妻人人爽人人爽欧美一区| 狠狠操av一区二区三区| 青青青在线视频观看97| 精品人妻 色中文熟女 oo| 91超碰九色porny| 中国精品人妻一区二区| 韩国在线播放一区二区三区| 欧美丝袜亚洲国产日韩| 最新福利二区三区视频| 天天操天天干天天舔天天| 18福利视频在线观看| 麻豆午夜激情在线观看| 日本美女爱爱视频网站| av在线免费在线观看| 成人精品影视一区二区| 先锋人妻啪啪中文字幕| 日本人妻少妇xxxxxxx| 白白色在线免费视频发布视频| 国语精品视频自产自拍| 68视频在线免费观看| 亚洲自拍偷拍av在线| 天天看片天天摸天天操| 亚洲综合另类欧美久久| 国产高清在线观看av| 偷拍熟女大胆免费视频| 伊人久久综合国产精品| 亚洲成人自拍av在线| 自拍偷拍色图亚洲天堂| 日本在线免费观看国产精品| 日本福利视频网站导航| 激情久久在线免费观看视频| 男人用大鸡巴狂操女人肉穴| 欧美熟女xx00视频| 99re这里是国产精品首页| 999久久久人妻精品一区| www,日韩av,com| 欧美大胆a级视频秒播| 亚洲成a人片777777张柏芝| 成人大片男人的天堂| 一看就是假奶的av| 久久人妻人人草人人爽| av在线观看视频免费| 天海翼亚洲一区在线观看| 可以直接看av网站| 视频在线+欧美十亚洲曰本| 日本人妻熟妇丰满成熟HD系列| 视频免费在线观看网站| 99久久碰碰人妻国产| 亚洲精品9999蜜桃| 免费24小时人妻视频| 亚洲熟女一区二区六区| 日韩三级黄色大片在线观看| 五月天天堂视频在线| 亚洲午夜熟女在线观看| 欧洲精品在线免费观看| 天天夜夜久久精品综合| 玖玖资源站在线观看亚洲| 色999日韩偷自拍拍免费| 人妻系列中文字幕大乳丰满人妻| 超碰在线免费观看视频97 | 9999久久久久老熟妇二区| 男人用大鸡巴狂操女人肉穴| 77亚洲视频在线观看| 伊人情人成综合视频| 97超碰人人爽人人做| 中文字幕 首页 人妻| 一看就是假奶的av| 欧美在线观看视频欧美| 四虎国产精品国产精品国产精品| 日本一区二区三区的资源| 一区二区在线观看视频网站| 熟女俱乐部jukujoclub| 熟妇精品午夜久久久久| 午夜偷拍的视频久久久免费大全| 美女福利视频一区二区三区四区| 亚洲中文字幕在线视频观看二区| 亚洲国产电影的一区| 天天日天天玩天天摸| 99精品久久99久久久久一| 天堂一区二区三区在线等| 成人午夜高清福利视频| 河北全程露脸对白自拍| 国产资源在线观看二区| 熟女人妻少妇一区二区| 久久内射天天玩天天懂色| 亚洲全国精品女人久久久| 久久精品国产亚洲av清纯| 人妻女侠被擒受辱记| 欧美日韩不卡视频合集| 日本香港韩国三级黄色| 老鸭窝在线毛片观看免费播放| 天天看天天爱天天日| 55夜色66夜色亚洲精品| 绿巨人浩克在线视频观看| 伊人网在线观看 视频一区| 91精品麻豆91夜夜骚| 91中文字幕视频网站| 日本高清在线观看不卡视频| 欧美精品乱码99久久蜜桃免费| 天天综合久久无人区| 欧美三区四区在线视频| 青青草原在线播放日韩| 天天操天天射天天操天天日| 天天夜夜久久精品综合| 一区二区三区四区久久久久韩日| 亚洲成年人精品国产| 中文字幕在线免费观看成人| 欧美老熟妇xxoo老妇| 五月的婷婷综合视频| 男插女视频大全免费| 亚洲图片另类综合小说| 亚洲欧美韩国日本一区二区| 大香蕉伊人97在线| 亚洲永远av在线播放| 我爱搞在线观看视频| 熟女国内精品一区二区三区| 视频在线 一区二区| 污网址在线观看视频| 国产中文亚洲熟女日韩| 日本高清有码在线视频| 亚洲国产精品自产拍在线观看 | 一区二区三区高清视频3| 999久久久人妻精品一区| 豆豆专区操逼性视频在线| 亚成区一区二区人妻熟女| 欧美日韩不卡视频合集| 69av精品国产探花| 免费看一级高潮喷水片| 色丁香久久激情综合网| 亚洲情色777中文字幕| 瑟瑟干视频在线观看| 男女啪啪啪啪91av日韩| 98热视频精品在线观看| 99re这里是国产精品首页| 四虎国产精品国产精品国产精品| 欧美aaaa性bbbbaaaa| 啪啪啪网站免费在线看| 综合久久伊人久久88| 免费绝清毛片a在线播放| 欧美一级aaaaaaa片| 亚洲欧美日韩中文在线观看| 在线中文字幕人妻av| 手机视频在线观看一区| 99久久人人爽亚洲精品美女| av毛片在线观看网址| 天天操天天日天天碰| 一区二区九日韩美女| av中文字幕国产精品| 人妻人妻在线视频网站| 一区二区三区婷婷中文字幕| 青青青青午夜手机国产视频| 成人午夜麻豆大胆视频| 亚洲欧美不卡专业视频| 最近在线中文字幕免费| 亚洲国产精品一区51动漫| 亚洲av手机免费在线| 九九热在线精品播放| 有码一区二区三区四区五区| 黄色av 在线观看| 一区二区在线观看视频网站| 天天操,天天射,天天爽| 99久久精品视频16| 91色老久久精品偷偷蜜臀| 川上优所有中文字幕在线| 深夜福利免费观看在线看| 欧美日本亚欧在线观看| 五月天天堂视频在线| 亚洲成人中文无码在线| 国产自拍偷拍视频在线免费观看 | 亚洲va999天堂va| 福利视频导航在线观看| 大香蕉尹人在线最新| 日本特级黄片免费观看| 欧美黑人1区2区3区| 免费在线观看黄色小网站| 四虎国产精品国产精品国产精品 | 伊人精品成人综合网| 最近中文字幕免费视频一| 免费在线小视频你懂的| 日本高清激情乱一区二区三区 | 日本东京热视频欧美视频| 亚洲国产精品久久久久久无码| 免费中文字幕a级激情| 国产资源网站在线播放| av男人站在线观看| tushy一区二区三区视频| 天天搞天天操天天干| 国内自拍第一区二区三区| 免费绝清毛片a在线播放| 午夜在线成人免费电影| 国产主播诱惑毛片av| 9久re热视频在线精品| 午夜宅男电影av网站| 高清国产美女a一级毛片| av一区二区三区蜜桃| 久久久久夜色国产精品电影| 啊~插得好快别揉我胸了视频| 最新福利二区三区视频| 国际日韩日韩日韩日韩日韩| 日本不卡 中文字幕| 91激情四射婷婷综合| 污网址在线观看视频| 欧美性受黑人猛交裸体视频| 欧美一区二区三区爽爽| 午夜精品视频免费观看 | 国产,亚洲,欧美综合| 男女插鸡巴视频软件| 东京热日韩av影片| 日本高清激情乱一区二区三区| 在线看日韩av不卡| 98热视频精品在线观看| 国产美女视频带a∨黄色片| 无码人妻丰满熟妇区五路| 天天碰天天摸天天搞| 亚洲成人自拍图片网站 | 色视频在线播放免费观看| 中文字幕在线观看av观看| 亚洲另类激情视频在线看| 亚洲全国精品女人久久久| 超碰在线免费观看视频97| 亚洲色图日韩在线视频观看| 久久精品国产亚洲av热软件| 99女福利女女视频在线播放| 69视频在线精品国自产拍| 色999日韩偷自拍拍免费| 亚洲av在线免费播放| 麻豆午夜激情在线观看 | 人妻激情偷乱一区二区三区av| 熟女一区二区视频在线| caopeng97在线观看视频| 操人妻人妻天天爽天天偷| 日本韩国福利在线播放| 国产成人综合久久婷婷| 亚洲熟女少妇中文字幕系列| 熟女阿高潮合集一区二区| 午夜野花视频在线观看| 国产伦理二区三区在干嘛呢| av一区二区三区蜜桃| 美女欧美视频在线观看免费| 开心五月综合激情婷婷| 久久中文字幕av一区二区| 国产人妻777人伦精品hd超碰| 人妻视频网站快射视频网站| 人妻系列中文字幕大乳丰满人妻| 手机看片1024精品国产| 亚洲熟女乱色一区二区三区视频| 青青青在线观看国产| 国产视频成人自拍蝌蚪视频| 久久99热精品免费观看视| 一区二区三区免费版在线| 美女福利网站在线播放| 91超精品碰国产在线观看| 在线免费视频999| 国产精品久久人人添| 国产熟妇色xxⅹ交白浆视频| 午夜8050免费小说| 亚洲免费在线不卡视频| 美女妩媚午夜诱惑网站| 人妻色综合aaaaaa网| 亚洲中文字幕最新地址| 国产原创一区二区三区在线播放| 青青草原在线播放日韩| 啪啪啪网站免费在线看| 久99久视频免费观看中文字幕| 呻吟求饶的人妻中文字幕| 亚洲欧美激情久久久| 欧美在线观看视频欧美| av丝袜免费在线观看| 日本高清在线观看不卡视频| 人妻中文字幕亚洲在线| 国产人妻熟女ⅹxx丝袜| 91国产精品乱码久久久久久| 亚洲欧美另类丝袜另类自拍| 91超精品碰国产在线观看| 久久亚洲国产成人精品麻豆| 五月的婷婷综合视频| 日韩av熟妇在线观看| 天天干夜夜爽狠狠操| 日韩男女视频网站在线观看| 熟女阿高潮合集一区二区| 中文字幕综合网91| 熟女一区二区三区综合| 狠狠干狠狠操免费视频| 精品美女洗澡一区二区| 天天色天天射天天日天天干| 日韩三级精品电影久久久久| 天天干夜夜操夜夜骑| 天天早上头和脸出汗是怎么办| jizzjizz国产精品传媒| 亚洲成人中文无码在线| av 资源在线播放| 一区二区三区四区 在线播放| 午夜精品小视频在线播放| 欧美一区二区三区视频看| 91精品在线视频免费视频| 亚洲美女黄色福利视频网站大全| 中文字幕av特黄毛片| 日韩成人在线电影首页| 第一福利视频在线观看| 欧美最新一区二区三区| 色哟哟亚洲乱码国产乱码精品精| 天天操天天干天天谢| 夜夜操天天干夜夜操| 人妻中文字幕亚洲在线| 波多野结衣在线一区别| 久久久久高潮白浆久久| 污网址在线观看视频| 久久99精品热在线观看| 不卡在线一区二区三区| 99热在线只有的精品| 亚洲自拍偷拍av在线| 黑人黄色免费一级av| 97精品视频,全部免费| 久久久久高潮白浆久久| 2018中文字字幕人妻| 欧美日韩综合精品无人区| 福利一二三在线视频观看| 岳母的诱惑电影在线观看| 黑人大巨屌操美女逼| 精品人妻人人做人人爽| 色老头一区二区三区四区五区| 亚洲制服丝袜网站中文字幕| 亚洲欧美不卡专业视频| 99热99这里免费的精品| 成人午夜av电影网| 欧美亚洲精品色图网站| 亚洲欧美韩国日本一区二区| 男人电影天堂在线观看| 国产三级自拍视频在线观看网站| alisontyler和黑人| 亚洲欧美日韩电影一区| 亭亭五月天在线观看| 欧美丝袜亚洲国产日韩| 免费高清av一区二区| 欧美在线观看一区二区不卡| 最新国产精品久久精品app| av男人站在线观看| 夫亡人妻被强干中文字幕| 国产漂亮白嫩美女在线图片| 久久人妻人人草人人爽| 欧美三区四区在线视频| 后入日韩翘臀蜜桃臀美女| 亚洲免费午夜污福利| 北野中文字幕一区二区| 亚洲制服丝袜资源网| 亚洲熟女乱色一区二区三区视频| 久久99久久99久久97的人| 99久久精品视频16| 久久久亚洲熟女一区二区| 人妻人妻在线视频网站| 裸日本资源在线午夜| 91人妻人人做人人爽高清| 男人的天堂aⅴ在线| 爱搞视频在线观看视频91| 亚洲欧美国产人成在线| 日本一区二区高清av中文| 欧美精品999不卡| yellow在线亚洲精品一区| 亚洲国产电影的一区| 国产漂亮白嫩美女在线图片 | 不用付费特黄特色亚洲特级黄色片 | 爱搞视频在线观看视频91| 91超碰九色porny| 99久久国语露脸国产精品| 五月天天堂视频在线| 亚洲欧美小说中文字幕| 欧美性感美女热舞视频| 日韩激情文学在线视频| 久久人妻人人草人人爽| 国产极品气质外围av| 97精品人妻免费视频| 亚洲综合成人精品成人精品| 色就色综合偷拍区欧美在线| 亚洲男人的天堂最新网址| 成人黄色录像在线观看| 西野翔人妻中文字幕中字在| 九九视频在线观看全部| 天天色天天射天天日天天干| 1级黄色片在线观看| 熟女俱乐部jukujoclub| 真人一进一出抽搐大尺度视频| 老熟女 露脸 嗷嗷叫| 人人妻人人爽人人摸| 午夜情色一区二区三区| 国长拍拍视频免费孕妇| 成人免费电影二区三区| 亚洲综合首页综合在线观看| 亚洲美女午夜激情视频在线观看 | 亚洲宅男噜噜噜66在线观看| 日本免费人爱做视频在线观看不卡| 成熟了的熟妇毛茸茸| 亚洲国产日韩精品在线| 啪啪啪网站免费看视频| 色999日韩偷自拍拍免费| 无码精品黑人一区二区老人| 人妻色综合aaaaaa网| 青青草原在线播放日韩| 18岁禁一二三区免费体验| 91污污在线观看视频| 国产精品福利久久久久| 成年人免费福利在线| 红桃视频国产av在线| 天天操天天射天天操天天日| 黄色片黄色片黄色片黄色片黄色 | 秋霞成人午夜鲁丝一区二区三区| yy4080黄色片| 少妇熟女天堂网av| 国产成人91色精品免费看片| 欧洲成熟女人色惰片| 亚洲男人天堂最新网址大全 | 制服丝袜 中文字幕 日韩 | 奇米网首页神马久久| 日本欧美亚洲国产啊啊啊| 狠狠干狠狠操免费视频| 中文字幕免费啪啪啪| 91精品在线视频免费视频| 最新国产午夜激情视频| 2021国产在线视频| 日本欧美国产在线一区| 韩国资源视频一区二区三区| 日韩激情文学在线视频| 夫亡人妻被强干中文字幕| 老色鬼精品视频在线观看播放| 欧美啪啪一区二区三区| 91偷拍被偷拍在线播放| 国际精品熟女一区二区| 美女黄色啊啊啊啊视频| 欧美亚洲国产一区二区| 久久99嫩草99久久精品| 午夜福利片无码10000| 在线视频国产精品欧美| 一区二区九日韩美女| 国产精品美女免费视频观看| 黑人黄色免费一级av| 国产一区两区三区福利小视频| 成人免费电影二区三区 | 亚洲同性同志一二三专区| 国产大桥未久一区二区| 中文字幕麻绳捆绑的人妻| 青青操91美女国产| 性色蜜桃臀x88av天美传媒| 午夜精品久久久久久久精品乱码| 午夜精品一区二区三区不卡顿 | 国产农村乱子伦精精品视频| 日韩黄色在线观看网站上| 亚洲国产电影的一区| 岳母的诱惑电影在线观看| 亚洲一区视频中文字幕在线播放 | 99热这里只有精品免费播放| 欧美精品一区二区三区观看| 日本一区二区三区的资源| 亚洲 自拍 激情 另类| 啊~插得好快别揉我胸了视频| 鸡巴插进美女的嫩小穴视频| 日本少妇三级交换做爰做| 老鸭窝在线毛片观看免费播放| 亚洲欧洲一区二区三区在线| 视频自拍偷拍视频自拍| 91九色尤物无套内射| 国产精品网站亚洲发布|