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

實現分布式共識算法-Raft算法

開發 前端 分布式 算法
C(一致性)A(可用性)P(分區容忍性)原理是分布式系統永遠繞不開的話題,在任何的分布式系統中,可用性、一致性和分區容忍性這三個方面都是相互矛盾的,三者不可兼得,最多只能取其二。

[[385285]]

筆者開源了自己實現的Java版Raft算法框架raft-core

項目鏈接:https://github.com/wujiuye/delay-scheduler/tree/main/raft/raft-core

該項目代碼是delay-scheduler(分布式延遲調度中間件)的子模塊,水平有限,建議只學習使用。

關于CAP原理

C(一致性)A(可用性)P(分區容忍性)原理是分布式系統永遠繞不開的話題,在任何的分布式系統中,可用性、一致性和分區容忍性這三個方面都是相互矛盾的,三者不可兼得,最多只能取其二。

AP:如果要求系統高可用(A)和分區容錯(P),那么就必須放棄一致性(C);

CP:如果要求數據強一致(C),由于網絡分區會導致同步時間無限延長(P),可用性就得不到保障,那么就要放棄可用性(A);

CA:如果不存在網絡分區(分區指不同機房/國家/地區)(P),那么強一致性(C)和可用性(A)可以同時滿足。

Raft一致性算法簡介

在Raft集群中,每個節點都對應一個角色,要么是Leader(領導節點),要么是Follower(跟隨節點),在未選舉出Leader之前,每個節點都可以是Candidate(候選節點)。

Raft算法約定Raft集群只能有一個Leader節點,并且只能由Leader節點處理客戶端的讀寫請求,將寫請求轉譯為操作日記,由Leader節點將操作日記復制給其它Follower節點,當Leader節點成功將一條操作日記同步到多數節點上時(包括自己在內的多數節點),就可以將操作日記應用到狀態機,由狀態機執行寫操作(執行命令),以此保證數據的最終一致性。

我們可以把Binlog看成Mysql數據庫執行的寫操作的命令,而MyISAM存儲引擎是Binlog的狀態機,用于執行命令。

實現Raft算法需要實現的兩個RPC接口:

  • RequestVoteRpc:選舉時由當前候選節點向其它節點發起拉票請求;
  • AppendEmtriesRpc:由Leader節點向其它Follower節點發送日記復制請求、心跳請求以及提交日記請求。

定時心跳計時器

Leader節點需要定時向其它Follower節點發送心跳包,以刷新其它Follower節點上的選舉超時計時。

心跳計時器在節點成為Leader節點時啟動,而在節點變為Follower節點時停止。要求心跳超時時間間隔要比超時選舉時間間隔長,即Heartbeat Timeout(心跳包廣播時間)< Election Timeout(選舉超時時間)。

超時選舉計時器

當計時達到超時(Election Timeout)閾值時觸發Leader選舉,當前節點將任期號+1,并嘗試給自己投一票(如果還未將票投給其它候選人),給自己投票成功則將自己變成候選人,并向其它節點發起拉票請求。

超時選舉計時器的當前計時可被重置,在接收到AppendEntriesRPC(含心跳請求)請求時重新計時。要求每個節點的超時閾值要不一樣,避免同時發起拉票請求,導致多輪選舉都未能選出Leader的情況發生。

Leader選舉流程

Leader通過投票選舉機制選舉,每個任期號每個節點都只能有一票,每個節點都優先考慮投給自己,獲得多數選票的節點將成為Leader節點,因此Raft集群要求至少3個節點,并且Raft集群節點總數最好是奇數。

RequestVoteRpc請求數據包(拉票數據包):

  1. public class RequestVote { 
  2.     private long term; 
  3.     private int candidateId; 
  4.     private long lastLogIndex; 
  5.     private long lastLogTerm; 
  • term:拉票方(候選節點)的當前任期號;
  • candidateId:拉票方的節點ID;
  • lastLogIndex:拉票方最新日記條目的索引值;
  • lastLogTerm:拉票方最新日記條目對應的任期號。

RequestVoteRpc響應數據包(投票數據包):

  1. public class RequestVoteResp { 
  2.     private long term; 
  3.     private boolean voteGranted; 
  • term:投票方的當前任期號,用于告知拉票方更新term值;
  • voteGranted:如果投票方將選票投給拉票方,則voteGranted為true,否則為false。

在選舉計時器超時時發起拉票請求流程如下:

1)將自己本地維護的當前任期號(term)加1;

2)為自己投票,投票成功再將自己的狀態切換到候選節點(Candidate),因此每個候選節點的第一張選票來自于它自己;

3)向其所在集群中的其他節點發送RequestVoteRPC請求(拉票請求),要求它們投票給自己。

每個節點接收到其它候選節點發來的拉票請求時需根據節點當前任期號、日記同步情況、是否已經將當前期的一票投給了其它節點(包括自己)等作出如下反應:

1)、如果拉票方的term小于自身的當前term,返回false,提醒拉票方term過時,并明確告訴拉票方,這張選票不會投給它;

2)、如果拉票方的term大于自身的當前term,且如果之前沒有把選票投給任何人(包括自己),則將選票投給該節點,返回拉票方的term和true;

3)、否則如果拉票方的term等于自身的當前term,如果已經把選票投給了拉票方(重復發起請求場景),并且請求方的日記和自己的日記一樣新,則返回拉票方的term和true;

4)、否則,如果在此之前,已經把選票投給了其他人,則這張選票不能投給請求方,并明確告訴請求方,這張選票不會投給它。

候選節點廣播發起拉票請求后需根據最終投票結果作出如下反應:

1)、如果多數節點連接異常,則繼續當前期重新發起一次拉票,即多數節點掛掉選舉異常;

2)、得到大多數節點的選票成為Leader,包括自己投給自己的一票,但每個節點只有一票,投給了自己就不能投給其它節點;

3)、發現其它節點贏得了選舉(當拉票請求響應的term大于當前候選節點的term時,認為其它節點贏得了選舉)則主動切換回Follower;

4)、當超時選舉計時器又觸發超時選舉時,說明沒有接收到Leader的心跳包,最后一次選舉沒有節點贏得選舉成為Leader,那么繼續發起選舉。

如果是其它節點成為當前期的Leader,Leader會通過發送心跳包告知自己,要留給Leader足夠時間發送心跳包給自己,因此選舉超時要大于心跳超時,也就是:Heartbeat Timeout(心跳包廣播時間)< Election Timeout(選舉超時時間)。

在選舉結束后,每個Follower節點必須記錄當前期的Leader節點是哪個,Leader節點必須記錄其它所有Follower節點。Leader節點需要向其它Follower節點發送心跳包以及日記同步請求,而其它Follower節點在接收到客戶端請求時需要告知客戶端重定向到Leader節點發送請求。

Raft日志復制流程

在Raft集群中,Leader節點負責接收客戶端的讀寫請求,如果是Follower接收請求,則需要將請求重定向到Leader節點。

如果Leader節點接收的是讀請求,則Leader節點可直接查詢數據響應給客戶端;如果Leader節點接收的是寫請求,則Leader節點先將寫請求轉譯為一條操作日記,并將操作日記Append到本地,同時向其它節點發起AppendEntriesRPC調用,將該操作日記復制給其它節點,在成功復制多數節點后,Leader節點提交該操作日記,提交成功則應用到狀態機,再異步的向其它節點發起AppendEntriesRPC調用,告知其它Follower節點該日記已經提交,Follower節點接收提交請求后,先將日記改為已提交狀態,再將日記應用到狀態機。

AppendEntriesRPC請求數據包(Leader節點向其它Follower節點發起rpc請求,要求其它Follower節點復制這個日記條目):

  1. public class AppendEntries implements Cloneable { 
  2.     private long term; 
  3.     private int leaderId; 
  4.     private long prevLogIndex; 
  5.     private long prevLogTerm; 
  6.     private long leaderCommit; 
  7.     private CommandLog[] entries; 
  • term:Leader節點創建該日記條目時的任期號;
  • leaderId:Leader節點的ID,為了其它Follower節點能夠重定向客戶端請求到Leader節點;
  • prevLogIndex:Leader節點已提交的日記中最新一條日記的索引;
  • prevLogTerm:Leader節點已提交的日記中最新一條日記的任期號;
  • leaderCommit:Leader節點為每個Follower都維護一個leaderCommit,表示Leader節點認為Follower已經提交的日記條目索引值;
  • entries:將要追加到Follower上的日記條目,如果是心跳包,則entries為空。

AppendEntriesRPC響應數據包(AppendEntries RPC響應):

  1. public class AppendEntriesResp { 
  2.     private long term; 
  3.     private boolean success; 

term:當前任期號,取值為Max(AppendEntries請求攜帶的term,Follower本地維護的term),用于Leader節點更新自己的任期號,一旦Leader節點發現任期號比自己的要大,就表明自己是一個過時的Leader,需要停止發送心跳包,主動切換為Follower;

success:接收者(Follower)是否能夠匹配prevLogIndex和prevLogTerm,匹配即說明請求成功。

Leader節點處理客戶端寫請求以及將寫請求日記復制給Follower的流程:

0)、客戶端向Leader發送寫請求;

1)、Leader將寫請求解析成操作指令日記追加到本地日志文件中;

2)、Leader異步向其它Follower節點發送AppendEntriesRPC請求;

3)、阻塞等待多數節點響應成功,多數節點至少是節點總數除以2加1,由于Leader節點自己也算一個,因此只需要節點總數除以2個節點響應成功即可;

4)、如果多數節點響應成功:Leader將該日志條目提交并應用到本地狀態機,異步告知其它Follower節點日記已經提交,之后立即向客戶端返回操作結果;

5)、否則:響應失敗給客戶端。

Follower節點處理日記復制請求流程:

0)、接收到任何AppendEntriesRPC請求(包含心跳包請求、提交日記請求、追加日記請求),都重置選舉超時計時器的當前計時;

1)、如果自身的term大于請求參數term,另本地記錄的Leader的任期號小于自身,則返回自身的term,且success為false(告知請求方:你已經是過期的Leader);

2)、否則如果Follower自身在prevLogIndex日記的任期號與請求參數prevLogTerm不匹配,返回自身的term,且success為false(當前Follower節點的日記落后了);

3)、否則如果當前只是一個心跳包,說明是接收到Leader的心跳,說明自己已經是Follower,如果需要則將自己從候選節點切換為Follower節點,返回自身的term,且success為true;

4)、否則,Follower進行日記一致性檢查,刪除已經存在但不一致的日記,添加任何在已有的日記中不存在的條目,刪除多余的條目,并且,如果是復制已經提交的條目,復制成功時直接提交;

5)、如果請求參數的leaderCommit大于自身的當前commitIndex,則將commitIndex更新為Max(leaderCommit,commitIndex),樂觀地將本地已提交日記的commitIndex躍進到領導人為該Follower跟蹤記得的值,用于Follower剛從故障中恢復過來的場景。

如果Follower節點向Leader節點響應日記追加失敗且Follower節點的當前期號小于等于Leader的當前期號,Leader節點將請求參數prevLogIndex遞減,然后重新發起AppendEntriesRPC請求,直到AppendEntriesRPC返回成功為止,這才表明在prevLogIndex位置的日志條目中領導人與追隨者的保持一致。這時,Follower節點上prevLogIndex位置之前的日志條目將全部保留,在prevLogIndex位置之后(與Leader有沖突)的日志條目將被Follower全部刪除,并且從該位置起追加Leader上在prevLogIndex位置之后的所有日志條目。因此,一旦AppendEntriesRPC返回成功,Leader和Follower的日志就可以保持一致了。

一致性

由于一個候選節點必須是得到多數節點投票才能成為Leader,且投票時節點不會把票投給沒有自己的日志新的候選節點,再者Leader只在已經將日記成功同步給多數節點(包括自己)才提交日記(將日記變成已提交狀態,同時應用到狀態機),因此每次選舉出來的Leader就都是包含所有已提交日志的節點。

當新的Leader節點將新日記同步給某個Follower節點時,如果該Follower節點的日記落后很多,該Follower節點會主動移除Leader上沒有的日記,并且同步Leader節點日記給Follower。對于Leader節點已經標志為已提交的日記,Follower在接收時就可以直接應用到狀態機,以保持數據最終一致性。

Multi Raft

假設有三臺機器,每臺機器部署一個Raft節點服務,由于讀寫請求都由Leader節點處理,那么不就只能有一臺機器工作?

我們可以給一個節點服務啟動多個Raft服務(注意不是多個進程),構造成多個Raft集群,即Multi Raft,這樣每個Raft集群的Leader節點就可能均勻分布在多臺機器上。例如:

機器 Raft節點 Raft節點 Raft節點
機器1 Raft服務A節點1Leader Raft服務B節點1Follower Raft服務C節點1Follower
機器2 Raft服務A節點2Follower Raft服務B節點2Leader Raft服務C節點2Follower
機器3 Raft服務A節點3Follower Raft服務B節點3Follower Raft服務C節點3Leader

在分布式數據庫TiDB中,就采用了Multi Raft,將數據進行分片處理,讓每個Raft集群單獨負責一部分數據。

參考文獻

華為云容器服務團隊.《云原生分布式存儲基石:etcd深入解析》 (云計算技術系列叢書)

Raft論文地址

Raft論文中文版:https://github.com/maemual/raft-zh_cn

圖片來源

圖片來源:https://github.com/maemual/raft-zh_cn/tree/master/images

本文轉載自微信公眾號「Java藝術」,可以通過以下二維碼關注。轉載本文請聯系Java藝術公眾號。

 

責任編輯:武曉燕 來源: Java藝術
相關推薦

2023-08-04 07:28:00

2023-04-05 10:00:00

分布式算法

2023-11-02 09:33:31

Go語言Raft算法

2022-10-21 13:55:18

Paxos分布式系統

2021-05-31 08:01:11

Raft共識算法

2025-06-05 03:22:00

Raft服務器日志

2021-01-26 13:27:11

分布 Raft 算法

2021-12-20 07:51:17

分布式 Kv分布式 Kv

2021-04-19 08:16:53

算法Raft 共識

2024-10-16 09:53:07

2024-05-27 10:42:55

2024-01-11 08:13:49

Raft算法分布式

2025-05-13 02:10:00

2023-07-11 10:24:00

分布式限流算法

2018-03-14 10:06:25

2019-09-05 13:06:08

雪花算法分布式ID

2025-03-24 11:30:05

2024-01-18 10:52:38

Raft數據庫

2024-11-19 15:55:49

2019-07-12 09:14:07

分布式系統負載均衡
點贊
收藏

51CTO技術棧公眾號

久久久久久久蜜桃| 黄色一级免费大片| 欧美自拍偷拍一区二区| 欧美日韩综合| 亚洲成人免费网站| 六月激情综合网| 青青草在线免费视频| 日韩在线观看一区二区| 最近更新的2019中文字幕| 欧美第一页浮力影院| 国产秀色在线www免费观看| 国产精品456| 欧美一级视频免费在线观看| 男人的天堂影院| 久久久成人av毛片免费观看| 亚洲一本二本| 7777精品久久久大香线蕉| 一个色的综合| 涩涩视频免费看| 久久久久综合| 免费不卡在线观看av| 老司机免费视频| 久久久久伊人| 亚洲成a人v欧美综合天堂| 日本一区二区在线| 国产丝袜在线视频| 久久人人超碰| 欧美日韩高清在线观看| www.狠狠爱| 精品一区二区三区免费看| 激情久久av一区av二区av三区| 欧美极品一区二区| 成 人 免费 黄 色| 日本伊人午夜精品| 久久国产精品偷| 欧美偷拍一区二区三区| 综合视频一区| 欧美日韩国产影片| 久久久久久久久久久久久久国产| 污网站在线免费看| 国产精品无遮挡| 精品视频第一区| 国产精品特级毛片一区二区三区| 午夜综合激情| 97久久超碰福利国产精品…| 神马午夜精品91| 少妇精品久久久一区二区| 欧美xxxx老人做受| 午夜视频在线网站| 日本国产欧美| 亚洲一区二区视频在线| 黄瓜视频免费观看在线观看www| 亚洲av电影一区| 国产成人免费av在线| 国产精品直播网红| 成人免费一级片| 午夜亚洲性色福利视频| 欧美寡妇偷汉性猛交| 九九热久久免费视频| 色综合中文网| 亚洲欧美国产精品专区久久| 超碰男人的天堂| 男人的天堂久久| 亚洲第一级黄色片| 成人在线短视频| 欧美午夜网站| 日韩欧美一卡二卡| 免费观看黄网站| 久久国产精品免费一区二区三区| 欧美片在线播放| 潘金莲激情呻吟欲求不满视频| 精品网站在线| 欧美亚洲国产一卡| 色婷婷成人在线| 久久av影院| 欧美人伦禁忌dvd放荡欲情| 久久久久久久片| 成人在线免费电影网站| 欧美日韩高清影院| 亚洲va在线va天堂va偷拍| 亚洲成人毛片| 91精品国产一区二区三区| 亚洲一区在线不卡| 国产精品99久久免费| 玛雅亚洲电影| 伊人网综合在线| 精品人妻一区二区三区日产| 91资源在线视频| 免费看日韩精品| 日韩女优人人人人射在线视频| 圆产精品久久久久久久久久久| 99国产精品视频免费观看一公开| 91高清在线免费观看| 黄色在线免费观看| 秋霞午夜av一区二区三区| 成人综合婷婷国产精品久久蜜臀| 一二美女精品欧洲| 手机看片国产日韩| 亚洲国产日韩欧美在线| 欧美黑人巨大精品一区二区| 国产精品99精品无码视| 国产精品社区| 国产精品天天狠天天看| 国产女人高潮时对白| 成人手机电影网| 欧美午夜精品久久久久久蜜| av播放在线观看| 国产精品自产自拍| 五月综合久久| 99久久久久| 亚洲欧洲在线看| 国产三级在线观看完整版| 亚洲久久久久| 国产69久久精品成人| 一二三区在线播放| 粉嫩aⅴ一区二区三区四区五区| 久久久人人爽| 国产黄a三级三级三级av在线看| 91超碰在线播放| 国产精品麻豆视频| 女人被男人躁得好爽免费视频 | 日韩电影免费在线看| 亚洲综合中文字幕在线| 性xxxxbbbb| 综合久久一区二区三区| 蜜臀精品一区二区| 国产精品无码久久久久| 亚洲黄色www| 欧美性生交大片| 国外av在线| 99久久精品免费看国产 | 国产一区二区三区成人| 成人激情免费网站| 亚洲乱码国产乱码精品天美传媒| 91在线三级| 91麻豆精品国产91久久久使用方法| 亚洲一区二区三区无码久久| 天天摸夜夜添狠狠添婷婷| 免费欧美在线视频| 久久精品丝袜高跟鞋| 99国产视频| 秋霞欧美在线观看| 亚洲天堂a在线| 国产无限制自拍| 国产精久久一区二区| 亚洲图片欧美日产| 久草视频在线观| 成人一级片在线观看| 日韩三级电影| 天堂√中文最新版在线| 精品国产1区二区| 欧美黑人性猛交xxx| 奇米影视一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 91精品中文在线| www.成人.com| 91国模大尺度私拍在线视频| 国产毛片毛片毛片毛片毛片毛片| 欧美国产激情| 成人黄色在线播放| 1024国产在线| 欧美视频一二三区| аⅴ天堂中文在线网| 日韩极品在线观看| 日本精品一区二区三区视频 | 美乳少妇欧美精品| 91片黄在线观看喷潮| 国产精品狼人久久影院观看方式| 天堂中文视频在线| 四季av在线一区二区三区 | 韩国精品一区| 亚洲激情免费观看| 免费看日韩毛片| 91在线云播放| 男人天堂网视频| 夜夜春成人影院| 日韩免费观看高清| 成人亚洲性情网站www在线观看| 一本到一区二区三区| 久久久久久久久久久久久久久| 日日夜夜精品视频免费| 亚洲精品无人区| 成人18视频在线观看| 中文字幕日韩av电影| 一级黄色小视频| 亚洲欧美偷拍卡通变态| www.色.com| 精品96久久久久久中文字幕无| 国产精品9999久久久久仙踪林| 黄色影院在线看| 精品无码久久久久久国产| 天天干天天操天天爱| 亚洲国产精品精华液2区45| 自拍偷拍一区二区三区四区| 一区二区中文| 国产欧美日韩一区| 菠萝蜜视频在线观看www入口| 精品亚洲永久免费精品| 中国精品一区二区| 亚洲美女屁股眼交3| 先锋资源在线视频| 国产一区二区三区成人欧美日韩在线观看| 欧美一区二区三区四区夜夜大片 | 国语对白做受xxxxx在线中国| 精品久久久久久久| 91福利入口| 自由日本语热亚洲人| 亚洲午夜精品久久久久久性色 | 欧美午夜精品| 欧美日韩精品综合| 99蜜月精品久久91| 久久久久久18| av大全在线免费看| 亚洲国产高潮在线观看| 日韩xxx视频| 亚洲综合成人在线| 精品一区二区三区蜜桃在线| 免费国产亚洲视频| 阿v天堂2018| 久久网站免费观看| 久久精品丝袜高跟鞋| 成人污污www网站免费丝瓜| 2019最新中文字幕| 91香蕉在线观看| 一区二区福利视频| 污视频在线免费| 91精品国产福利| 人妻 日韩精品 中文字幕| 亚洲乱码国产乱码精品精可以看| 黄色正能量网站| 高清免费成人av| 第四色婷婷基地| 久久国产一二区| 欧美大黑帍在线播放| 图片小说视频色综合| 欧美日韩免费观看一区| 红杏成人性视频免费看| 国产精品美女www| 欧亚在线中文字幕免费| 久久99久久99精品中文字幕| 色欧美激情视频在线| 亚洲丝袜在线视频| 婷婷五月综合激情| 日韩欧美www| 91激情在线观看| 欧美性一二三区| 一级一片免费看| 欧美日韩午夜视频在线观看| 欧美片一区二区| 亚洲免费在线视频| 亚洲欧美va天堂人熟伦| 国产性做久久久久久| 日本xxxxxxxxx18| 亚洲国产精品v| 国产精品69久久久久孕妇欧美| 国产精品久久久久9999吃药| 免费黄色国产视频| 成人免费在线视频| 久久网免费视频| 五月激情六月综合| 69亚洲精品久久久蜜桃小说| 欧洲亚洲国产日韩| 国产一区二区三区三州| 欧美一卡在线观看| 风流老熟女一区二区三区| 亚洲成人精品久久| 欧美白人做受xxxx视频| 亚洲人成在线免费观看| 欧美成人视屏| 欧美激情精品久久久久久变态 | 911精品美国片911久久久| 公共露出暴露狂另类av| 黄色亚洲在线| 少妇高清精品毛片在线视频| 久久精品噜噜噜成人av农村| 爱情岛论坛亚洲自拍| 99久久精品99国产精品| 国产肥白大熟妇bbbb视频| 亚洲欧美中日韩| 18精品爽视频在线观看| 91精品办公室少妇高潮对白| 91一区二区视频| 亚洲成av人片在线观看香蕉| 欧美理论在线观看| 久久精品国产久精国产思思| 欧美黑人猛交的在线视频| 欧美怡春院一区二区三区| 不卡亚洲精品| 国产精品区一区二区三在线播放| 欧美极品中文字幕| 日本一区二区三区四区五区六区| 亚洲高清久久| 久热精品在线播放| 成人v精品蜜桃久久一区| 日本黄区免费视频观看| 亚洲第一主播视频| 中文字幕人妻精品一区| 亚洲精品一区二区三区香蕉| 成人网视频在线观看| 欧美激情在线一区| 99精品在免费线偷拍| 国产精品免费一区二区三区四区 | 亚洲天堂2018av| 成人动漫在线一区| 三上悠亚在线观看视频| 欧美日韩国产激情| 国产欧美熟妇另类久久久| 日韩精品有码在线观看| 色图在线观看| 国产精自产拍久久久久久| 四虎5151久久欧美毛片| 无码人妻精品一区二区三区99v| 天堂午夜影视日韩欧美一区二区| 国产精品嫩草影视| 国产性色一区二区| 国产成人免费观看视频| 精品久久久久香蕉网| 激情在线小视频| 国产精品久久久久99| 欧美精品中文| 欧美又粗又长又爽做受| 韩国精品免费视频| 欧美福利第一页| 日韩欧美福利视频| 无码精品视频一区二区三区| 欧美日韩成人网| 经典三级久久| 一区二区视频国产| 免费一级片91| 免费看黄色av| 色屁屁一区二区| 免费国产在线观看| 欧美性受xxx| 天天躁日日躁狠狠躁欧美巨大小说| 轻点好疼好大好爽视频| 国产精品资源在线观看| 国产成人久久久久| 欧美巨大另类极品videosbest | 成视频免费观看在线看| 成人黄色片网站| 欧美丰满日韩| 五月婷婷之婷婷| 中文字幕在线不卡一区| 亚洲图片在线播放| www.亚洲人.com| 亚洲男女网站| 亚洲天堂第一区| 国产精品综合视频| 青娱乐国产盛宴| 精品国产一区二区精华| aa视频在线观看| 久久精品日韩精品| 日韩精品一级二级 | 亚洲国产成人av网| 欧美一级免费片| 性色av一区二区三区免费| 欧美一级一片| 黄色高清无遮挡| 国产精品女主播在线观看| 国产精品久久久国产盗摄| 久久视频国产精品免费视频在线| 麻豆国产一区| 青青草精品视频在线| 97久久超碰国产精品| 久久青青草原亚洲av无码麻豆 | 精品国产乱码久久久久久图片| av白虎一区| 欧美一级爽aaaaa大片| 青娱乐精品视频| 9999热视频| 日韩激情视频在线播放| 国产精品久久久久久妇女| 日韩影片在线播放| 国产一区二区三区av电影| 国产极品在线播放| 亚洲男人天堂九九视频| 国产欧美在线观看免费| 大桥未久一区二区| 91在线播放网址| 中文字幕777| 欧美激情国产精品| 成人在线免费观看网站| 在线观看欧美一区二区| 一本大道av伊人久久综合| 米奇精品一区二区三区| 国产伦理久久久| 麻豆精品视频在线观看| 久久久久久久久久久网| 亚洲香蕉成视频在线观看| 精品一区二区三区亚洲| 狠狠爱免费视频| 亚洲另类中文字| 免费在线国产| 91中文字精品一区二区| 久久一区二区三区四区五区 | 欧美性猛交xxxx| 大地资源网3页在线观看| 欧洲在线视频一区| 国产99久久精品| 国产精品久久久久久久久久久久久久久久 |