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

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

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

摸透 Redis 主从复制、哨兵、Cluster 三种模式

發(fā)布時(shí)間:2024/4/18 数据库 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 摸透 Redis 主从复制、哨兵、Cluster 三种模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

概述

Redis作為緩存的高效中間件,在我們?nèi)粘5拈_(kāi)發(fā)中被頻繁的使用,今天就來(lái)說(shuō)一說(shuō)Redis的四種模式,分別是「單機(jī)版、主從復(fù)制、哨兵、以及集群模式」。

可能,在一般公司的程序員使用單機(jī)版基本都能解決問(wèn)題,在Redis的官網(wǎng)給出的數(shù)據(jù)是10W QPS,這對(duì)于應(yīng)付一般的公司綽綽有余了,再不行就來(lái)個(gè)主從模式,實(shí)現(xiàn)讀寫分離,性能又大大提高。

但是,我們作為有抱負(fù)的程序員,僅限于單機(jī)版和主從模式的crud是不行的,至少也要了解「哨兵」「集群模式」的原理,這樣面試的時(shí)候才能和面試官扯皮啊。

之前對(duì)于Redis方面也是寫了比較多的文章,如:「Redis的基本數(shù)據(jù)類型和底層的實(shí)現(xiàn)原理、事務(wù)、持久化、分布式鎖、訂閱預(yù)發(fā)布」等,可以說(shuō)是比較全面的教程了,這篇講完基本就全了,我會(huì)把文章系統(tǒng)的整理成pdf,分享給大家。

先來(lái)個(gè)整理的Redis大綱,可能還有不完整的地方,若是有不完整的,可以在留言區(qū)補(bǔ)充,我后續(xù)會(huì)加進(jìn)去。

單機(jī)

單機(jī)版的Redis就比較簡(jiǎn)單了,基本90%的程序員都是用過(guò)

優(yōu)點(diǎn)

單機(jī)版的Redis也有很多優(yōu)點(diǎn),比如實(shí)現(xiàn)實(shí)現(xiàn)簡(jiǎn)單、維護(hù)簡(jiǎn)單、部署簡(jiǎn)單、維護(hù)成本非常低,不需要其它額外的開(kāi)支。

缺點(diǎn)

但是,因?yàn)槭菃螜C(jī)版的Redis所以也存在很多的問(wèn)題,比如最明顯的單點(diǎn)故障問(wèn)題,一個(gè)Redis掛了,所有的請(qǐng)求就會(huì)直接打在了DB上。

并且一個(gè)Redis抗并發(fā)數(shù)量也是有限的,同時(shí)要兼顧讀寫兩種請(qǐng)求,只要訪問(wèn)量一上來(lái),Redis就受不了了,另一方面單機(jī)版的Redis數(shù)據(jù)量存儲(chǔ)也是有限的,數(shù)據(jù)量一大,再重啟Redis的時(shí)候,就會(huì)非常的慢,所以局限性也是比較大的。

由于,單機(jī)版的Redis在并發(fā)量比較大的時(shí)候,并且需要較高性能和可靠性的時(shí)候,單機(jī)版基本就不適合了,于是就出現(xiàn)了「主從模式」

主從模式

原理

主從的原理還算是比較簡(jiǎn)單的,一主多從,「主數(shù)據(jù)庫(kù)(master)可以讀也可以寫(read/write),從數(shù)據(jù)庫(kù)僅讀(only read)」

但是,主從模式一般實(shí)現(xiàn)「讀寫分離」「主數(shù)據(jù)庫(kù)僅寫(only write)」,減輕主數(shù)據(jù)庫(kù)的壓力,下面一張圖搞懂主從模式的原理:

主從模式原理就是那么簡(jiǎn)單,那他執(zhí)行的過(guò)程(工作機(jī)制)又是怎么樣的呢?再來(lái)一張圖:

當(dāng)開(kāi)啟主從模式的時(shí)候,他的具體工作機(jī)制如下:

  • 當(dāng)slave啟動(dòng)后會(huì)向master發(fā)送SYNC命令,master節(jié)點(diǎn)收到從數(shù)據(jù)庫(kù)的命令后通過(guò)bgsave保存快照(「RDB持久化」),并且期間的執(zhí)行的些命令會(huì)被緩存起來(lái)。

  • 然后master會(huì)將保存的快照發(fā)送給slave,并且繼續(xù)緩存期間的寫命令。

  • slave收到主數(shù)據(jù)庫(kù)發(fā)送過(guò)來(lái)的快照就會(huì)加載到自己的數(shù)據(jù)庫(kù)中。

  • 最后master講緩存的命令同步給slave,slave收到命令后執(zhí)行一遍,這樣master與slave數(shù)據(jù)就保持一致了。

  • 優(yōu)點(diǎn)

    之所以運(yùn)用主從,是因?yàn)橹鲝囊欢ǔ潭壬辖鉀Q了單機(jī)版并發(fā)量大,導(dǎo)致請(qǐng)求延遲或者redis宕機(jī)服務(wù)停止的問(wèn)題。

    從數(shù)據(jù)庫(kù)分擔(dān)主數(shù)據(jù)庫(kù)的讀壓力,若是主數(shù)據(jù)庫(kù)是只寫模式,那么實(shí)現(xiàn)讀寫分離,主數(shù)據(jù)庫(kù)就沒(méi)有了讀壓力了。

    另一方面解決了單機(jī)版單點(diǎn)故障的問(wèn)題,若是主數(shù)據(jù)庫(kù)掛了,那么從數(shù)據(jù)庫(kù)可以隨時(shí)頂上來(lái),綜上來(lái)說(shuō),主從模式一定程度上提高了系統(tǒng)的可用性和性能,是實(shí)現(xiàn)哨兵和集群的基礎(chǔ)。

    主從同步以異步方式進(jìn)行同步,期間Redis仍然可以響應(yīng)客戶端提交的查詢和更新的請(qǐng)求。

    缺點(diǎn)

    主從模式好是好,他也有自己的缺點(diǎn),比如數(shù)據(jù)的一致性問(wèn)題,假如主數(shù)據(jù)庫(kù)寫操作完成,那么他的數(shù)據(jù)會(huì)被復(fù)制到從數(shù)據(jù)庫(kù),若是還沒(méi)有即使復(fù)制到從數(shù)據(jù)庫(kù),讀請(qǐng)求又來(lái)了,此時(shí)讀取的數(shù)據(jù)就不是最新的數(shù)據(jù)。

    若是從主同步的過(guò)程網(wǎng)絡(luò)出故障了,導(dǎo)致主從同步失敗,也會(huì)出現(xiàn)問(wèn)題數(shù)據(jù)一致性的問(wèn)題。

    主從模式不具備自動(dòng)容錯(cuò)和恢復(fù)的功能,一旦主數(shù)據(jù)庫(kù),從節(jié)點(diǎn)晉升為主數(shù)據(jù)庫(kù)的過(guò)程需要人為操作,維護(hù)的成本就會(huì)升高,并且主節(jié)點(diǎn)的寫能力、存儲(chǔ)能力都會(huì)受到限制。

    實(shí)操搭建

    安裝Redis

    $ yum -y install gcc $ yum -y install gcc-c++ $ wget http://download.redis.io/releases/redis-5.0.4.tar.gz $ tar -zvxf redis-5.0.4.tar.gz $ cd redis-5.0.4 $ make

    這里我們將redis.conf文件復(fù)制兩份slave.conf和slave2.conf并修改配置

    注意:不要用? bind 127.0.0.1,也不要這樣配置:bind 127.0.0.1 10.234.1.10?而要用?bind 10.234.1.10 127.0.0.1

    # 服務(wù)器端口號(hào),主從分別修改為7001 7002 7003 port 7001 # 使得Redis可以跨網(wǎng)絡(luò)訪問(wèn) bind 0.0.0.0 # 配置reids的密碼 requirepass "111111" # 下面兩個(gè)配置只需要配置從節(jié)點(diǎn)(slave) # 配置主服務(wù)器地址、端口號(hào) replicaof 127.0.0.1 7001 # 主服務(wù)器密碼 masterauth "111111"

    分別啟動(dòng)這三個(gè)Redis服務(wù)

    $ ./src/redis-server redis.conf $ ./src/redis-server slave.conf $ ./src/redis-server slave2.conf

    使用redis-cli工具連接redis服務(wù)查看主從節(jié)點(diǎn)是否搭建成功

    $ ./src/redis-cli -h <主機(jī)名> -p <端口號(hào)> $ auth <password> $ info replication

    看到類似如下所示信息則主從搭建成功

    ############主節(jié)點(diǎn)(master)信息############# "# Replication role:master connected_slaves:2 slave0:ip=192.168.1.164,port=7002,state=online,offset=1015511,lag=0 slave1:ip=192.168.1.164,port=7003,state=online,offset=1015511,lag=0 master_replid:ffff866d17e11dcc9a9fd7bf3a487ad9e499fca9 master_replid2:1c8a6f05891dc72bbe4fefd9a54ff65eb46ce35d master_repl_offset:1015511 second_repl_offset:424773 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:99239 repl_backlog_histlen:916273 " ############從節(jié)點(diǎn)(slave)信息############# "# Replication role:slave master_host:192.168.1.164 master_port:7001 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_repl_offset:560709 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:ffff866d17e11dcc9a9fd7bf3a487ad9e499fca9 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:560709 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:549628 repl_backlog_histlen:11082

    ?

    哨兵模式

    原理

    哨兵模式是主從的升級(jí)版,因?yàn)橹鲝牡某霈F(xiàn)故障后,不會(huì)自動(dòng)恢復(fù),需要人為干預(yù),這就很蛋疼啊。

    在主從的基礎(chǔ)上,實(shí)現(xiàn)哨兵模式就是為了監(jiān)控主從的運(yùn)行狀況,對(duì)主從的健壯進(jìn)行監(jiān)控,就好像哨兵一樣,只要有異常就發(fā)出警告,對(duì)異常狀況進(jìn)行處理。

    ?

    所以,總的概括來(lái)說(shuō),哨兵模式有以下的優(yōu)點(diǎn)(功能點(diǎn)):

  • 「監(jiān)控」:監(jiān)控master和slave是否正常運(yùn)行,以及哨兵之間也會(huì)相互監(jiān)控

  • 「自動(dòng)故障恢復(fù)」:當(dāng)master出現(xiàn)故障的時(shí)候,會(huì)自動(dòng)選舉一個(gè)slave作為master頂上去。

  • 哨兵模式的監(jiān)控配置信息,是通過(guò)配置數(shù)據(jù)庫(kù)的sentinel monitor <master-name> <ip> <redis-port> <quorum>?來(lái)指定的,比如:

    //?mymaster?表示給master數(shù)據(jù)庫(kù)定義了一個(gè)名字,后面的是master的ip和端口,1表示至少需要一個(gè)Sentinel進(jìn)程同意才能將master判斷為失效,如果不滿足這個(gè)條件,則自動(dòng)故障轉(zhuǎn)移(failover)不會(huì)執(zhí)行
    sentinel?monitor?mymaster?127.0.0.1?6379?1

    節(jié)點(diǎn)通信

    當(dāng)哨兵啟動(dòng)后,會(huì)與master建立一條連接,用于訂閱master的_sentinel_:hello頻道。該頻道用于獲取監(jiān)控該master的其它哨兵的信息。哨兵定期向_sentinel_:hello頻道發(fā)送自己的信息,以便其它的哨兵能夠訂閱獲取自己的信息,發(fā)送的內(nèi)容包含「哨兵的ip和端口、運(yùn)行id、配置版本、master名字、master的ip端口還有master的配置版本」等信息。

    哨兵還會(huì)與mastter建立一條獲取master信息的連接,定時(shí)向master發(fā)送INFO命令。「當(dāng)哨兵與master建立連接后,定期會(huì)向(10秒一次)master和slave發(fā)送INFO命令,若是master被標(biāo)記為主觀下線,頻率就會(huì)變?yōu)?秒一次?!?/strong>

    以及,「定期的向master、slave和其它哨兵發(fā)送PING命令(每秒一次),以便檢測(cè)對(duì)象是否存活」,若是對(duì)方接收到了PING命令,無(wú)故障情況下,會(huì)回復(fù)PONG命令。

    所以,哨兵通過(guò)建立這兩條連接、通過(guò)定期發(fā)送INFO、PING命令來(lái)實(shí)現(xiàn)哨兵與哨兵、哨兵與master之間的通信。

    這里涉及到一些概念需要理解,INFO、PING、PONG等命令,后面還會(huì)有MEET、FAIL命令,以及主觀下線,當(dāng)然還會(huì)有客觀下線,這里主要說(shuō)一下這幾個(gè)概念的理解:

  • INFO:該命令可以獲取主從數(shù)據(jù)庫(kù)的最新信息,可以實(shí)現(xiàn)新結(jié)點(diǎn)的發(fā)現(xiàn)。

  • PING:該命令被使用最頻繁,該命令封裝了自身節(jié)點(diǎn)和其它節(jié)點(diǎn)的狀態(tài)數(shù)據(jù)。

  • PONG:當(dāng)節(jié)點(diǎn)收到MEET和PING,會(huì)回復(fù)PONG命令,也把自己的狀態(tài)發(fā)送給對(duì)方。

  • MEET:該命令在新結(jié)點(diǎn)加入集群的時(shí)候,會(huì)向老節(jié)點(diǎn)發(fā)送該命令,表示自己是個(gè)新人。

  • FAIL:當(dāng)節(jié)點(diǎn)下線,會(huì)向集群中廣播該消息。

  • 上線和下線

    當(dāng)哨兵與master相通之后就會(huì)定期一直保持聯(lián)系,若是某一時(shí)刻哨兵發(fā)送的PING在指定時(shí)間內(nèi)沒(méi)有收到回復(fù)(sentinel down-after-milliseconds master-name milliseconds?配置),那么發(fā)送PING命令的哨兵就會(huì)認(rèn)為該master「主觀下線」(Subjectively Down)。

    因?yàn)橛锌赡苁巧诒c該master之間的網(wǎng)絡(luò)問(wèn)題造成的,而不是master本身的原因,所以哨兵同時(shí)會(huì)詢問(wèn)其它的哨兵是否也認(rèn)為該master下線,若是認(rèn)為該節(jié)點(diǎn)下線的哨兵達(dá)到一定的數(shù)量「前面的quorum字段配置」),就會(huì)認(rèn)為該節(jié)點(diǎn)「客觀下線」(Objectively Down)。

    若是沒(méi)有足夠數(shù)量的sentinel同意該master下線,則該master客觀下線的標(biāo)識(shí)會(huì)被移除;若是master重新向哨兵的PING命令回復(fù)了客觀下線的標(biāo)識(shí)也會(huì)被移除。

    選舉算法

    當(dāng)master被認(rèn)為客觀下線后,又是怎么進(jìn)行故障恢復(fù)的呢?原來(lái)哨兵中首先選舉出一個(gè)老大哨兵來(lái)進(jìn)行故障恢復(fù),選舉老大哨兵的算法叫做「Raft算法」

  • 發(fā)現(xiàn)master下線的哨兵(sentinelA)會(huì)向其它的哨兵發(fā)送命令進(jìn)行拉票,要求選擇自己為哨兵大佬。

  • 若是目標(biāo)哨兵沒(méi)有選擇其它的哨兵,就會(huì)選擇該哨兵(sentinelA)為大佬。

  • 若是選擇sentinelA的哨兵超過(guò)半數(shù)(半數(shù)原則),該大佬非sentinelA莫屬。

  • 如果有多個(gè)哨兵同時(shí)競(jìng)選,并且可能存在票數(shù)一致的情況,就會(huì)等待下次的一個(gè)隨機(jī)時(shí)間再次發(fā)起競(jìng)選請(qǐng)求,進(jìn)行新的一輪投票,直到大佬被選出來(lái)。

  • 選出大佬哨兵后,大佬哨兵就會(huì)對(duì)故障進(jìn)行自動(dòng)回復(fù),從slave中選出一名slave作為主數(shù)據(jù)庫(kù),選舉的規(guī)則如下所示:

  • 所有的slave中slave-priority優(yōu)先級(jí)最高的會(huì)被選中。

  • 若是優(yōu)先級(jí)相同,會(huì)選擇偏移量最大的,因?yàn)槠屏坑涗浿鴶?shù)據(jù)的復(fù)制的增量,越大表示數(shù)據(jù)越完整。

  • 若是以上兩者都相同,選擇ID最小的。

  • 通過(guò)以上的層層篩選最終實(shí)現(xiàn)故障恢復(fù),當(dāng)選的slave晉升為master,其它的slave會(huì)向新的master復(fù)制數(shù)據(jù),若是down掉的master重新上線,會(huì)被當(dāng)作slave角色運(yùn)行。

    優(yōu)點(diǎn)

    哨兵模式是主從模式的升級(jí)版,所以在系統(tǒng)層面提高了系統(tǒng)的可用性和性能、穩(wěn)定性。當(dāng)master宕機(jī)的時(shí)候,能夠自動(dòng)進(jìn)行故障恢復(fù),需不要人為的干預(yù)。

    哨兵與哨兵之間、哨兵與master之間能夠進(jìn)行及時(shí)的監(jiān)控,心跳檢測(cè),及時(shí)發(fā)現(xiàn)系統(tǒng)的問(wèn)題,這都是彌補(bǔ)了主從的缺點(diǎn)。

    缺點(diǎn)

    哨兵一主多從的模式同樣也會(huì)遇到寫的瓶頸,已經(jīng)存儲(chǔ)瓶頸,若是master宕機(jī)了,故障恢復(fù)的時(shí)間比較長(zhǎng),寫的業(yè)務(wù)就會(huì)受到影響。

    增加了哨兵也增加了系統(tǒng)的復(fù)雜度,需要同時(shí)維護(hù)哨兵模式。

    實(shí)操搭建

    新開(kāi)一臺(tái)服務(wù)器,并按上面的步驟下載安裝Redis。

    將sentinel.conf文件復(fù)制兩份為sentinel2.conf、sentinel3.conf,并分別修改配置

    # 三個(gè)配置文件分別配置不同的端口號(hào) port <端口號(hào)> # 設(shè)置為后臺(tái)啟動(dòng) daemonize yes # 主節(jié)點(diǎn)的名稱(可以自定義,與后面的配置保持一致即可) # 主機(jī)地址 # 端口號(hào) # 數(shù)量(2代表只有兩個(gè)或兩個(gè)以上的哨兵認(rèn)為主服務(wù)器不可用的時(shí)候,才會(huì)進(jìn)行failover操作) sentinel monitor mymaster 127.0.0.1 6379 2 # 多長(zhǎng)時(shí)間沒(méi)有響應(yīng)認(rèn)為主觀下線(SDOWN) sentinel down-after-milliseconds mymaster 60000 # 表示如果15秒后,mysater仍沒(méi)活過(guò)來(lái),則啟動(dòng)failover,從剩下從節(jié)點(diǎn)序曲新的主節(jié)點(diǎn) sentinel failover-timeout mymaster 15000 # 指定了在執(zhí)行故障轉(zhuǎn)移時(shí), 最多可以有多少個(gè)從服務(wù)器同時(shí)對(duì)新的主服務(wù)器進(jìn)行同步, 這個(gè)數(shù)字越小, 完成故障轉(zhuǎn)移所需的時(shí)間就越長(zhǎng) sentinel parallel-syncs mymaster 1

    啟動(dòng)三個(gè)sentinel

    $ ./src/server-sentinel sentinel.conf $ ./src/server-sentinel sentinel2.conf $ ./src/server-sentinel sentinel3.conf

    然后手動(dòng)關(guān)閉主節(jié)點(diǎn)的redis服務(wù),并查看兩個(gè)slave信息是否有一個(gè)變成了master。

    程序中使用

    SpringBoot連接Redis主從集群配置

    spring:redis:sentinel:master: mymasternodes: 192.168.1.167:26379,192.168.1.167:26380,192.168.1.167:26381host: 192.168.1.164port: 7003database: 0password: <password>

    ?

    Redis集群(Redis-Cluster)

    Cluster模式

    最后,Cluster是真正的集群模式了,哨兵解決和主從不能自動(dòng)故障恢復(fù)的問(wèn)題,但是同時(shí)也存在難以擴(kuò)容以及單機(jī)存儲(chǔ)、讀寫能力受限的問(wèn)題,并且集群之前都是一臺(tái)redis都是全量的數(shù)據(jù),這樣所有的redis都冗余一份,就會(huì)大大消耗內(nèi)存空間。

    集群模式實(shí)現(xiàn)了Redis數(shù)據(jù)的分布式存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)的分片,每個(gè)redis節(jié)點(diǎn)存儲(chǔ)不同的內(nèi)容,并且解決了在線的節(jié)點(diǎn)收縮(下線)和擴(kuò)容(上線)問(wèn)題。

    集群模式真正意義上實(shí)現(xiàn)了系統(tǒng)的高可用和高性能,但是集群同時(shí)進(jìn)一步使系統(tǒng)變得越來(lái)越復(fù)雜,接下來(lái)我們來(lái)詳細(xì)的了解集群的運(yùn)作原理。

    數(shù)據(jù)分區(qū)原理

    集群的原理圖還是很好理解的,在Redis集群中采用的是虛擬槽分區(qū)算法,會(huì)把redis集群分成16384 個(gè)槽(0 -16383)。

    比如:下圖所示三個(gè)master,會(huì)把0 -16383范圍的槽可能分成三部分(0-5000)、(5001-11000)、(11001-16383)分別數(shù)據(jù)三個(gè)緩存節(jié)點(diǎn)的槽范圍。

    當(dāng)客戶端請(qǐng)求過(guò)來(lái),會(huì)首先通過(guò)對(duì)key進(jìn)行CRC16 校驗(yàn)并對(duì) 16384 取模(CRC16(key)%16383)計(jì)算出key所在的槽,然后再到對(duì)應(yīng)的槽上進(jìn)行取數(shù)據(jù)或者存數(shù)據(jù),這樣就實(shí)現(xiàn)了數(shù)據(jù)的訪問(wèn)更新。

    之所以進(jìn)行分槽存儲(chǔ),是將一整堆的數(shù)據(jù)進(jìn)行分片,防止單臺(tái)的redis數(shù)據(jù)量過(guò)大,影響性能的問(wèn)題。

    節(jié)點(diǎn)通信

    節(jié)點(diǎn)之間實(shí)現(xiàn)了將數(shù)據(jù)進(jìn)行分片存儲(chǔ),那么節(jié)點(diǎn)之間又是怎么通信的呢?這個(gè)和前面哨兵模式講的命令基本一樣。

    首先新上線的節(jié)點(diǎn),會(huì)通過(guò) Gossip 協(xié)議向老成員發(fā)送Meet消息,表示自己是新加入的成員。

    老成員收到Meet消息后,在沒(méi)有故障的情況下會(huì)恢復(fù)PONG消息,表示歡迎新結(jié)點(diǎn)的加入,除了第一次發(fā)送Meet消息后,之后都會(huì)發(fā)送定期PING消息,實(shí)現(xiàn)節(jié)點(diǎn)之間的通信。

    通信的過(guò)程中會(huì)為每一個(gè)通信的節(jié)點(diǎn)開(kāi)通一條tcp通道,之后就是定時(shí)任務(wù),不斷的向其它節(jié)點(diǎn)發(fā)送PING消息,這樣做的目的就是為了了解節(jié)點(diǎn)之間的元數(shù)據(jù)存儲(chǔ)情況,以及健康狀況,以便及時(shí)發(fā)現(xiàn)問(wèn)題。

    數(shù)據(jù)請(qǐng)求

    上面說(shuō)到了槽信息,在Redis的底層維護(hù)了unsigned char myslots[CLUSTER_SLOTS/8]?一個(gè)數(shù)組存放每個(gè)節(jié)點(diǎn)的槽信息。因?yàn)樗且粋€(gè)二進(jìn)制數(shù)組,只有存儲(chǔ)0和1值,如下圖所示:

    這樣數(shù)組只表示自己是否存儲(chǔ)對(duì)應(yīng)的槽數(shù)據(jù),若是1表示存在該數(shù)據(jù),0表示不存在該數(shù)據(jù),這樣查詢的效率就會(huì)非常的高,類似于布隆過(guò)濾器,二進(jìn)制存儲(chǔ)。

    比如:集群節(jié)點(diǎn)1負(fù)責(zé)存儲(chǔ)0-5000的槽數(shù)據(jù),但是此時(shí)只有0、1、2存儲(chǔ)有數(shù)據(jù),其它的槽還沒(méi)有存數(shù)據(jù),所以0、1、2對(duì)應(yīng)的值為1。

    并且,每個(gè)redis底層還維護(hù)了一個(gè)clusterNode數(shù)組,大小也是16384,用于儲(chǔ)存負(fù)責(zé)對(duì)應(yīng)槽的節(jié)點(diǎn)的ip、端口等信息,這樣每一個(gè)節(jié)點(diǎn)就維護(hù)了其它節(jié)點(diǎn)的元數(shù)據(jù)信息,便于及時(shí)的找到對(duì)應(yīng)的節(jié)點(diǎn)。

    當(dāng)新結(jié)點(diǎn)加入或者節(jié)點(diǎn)收縮,通過(guò)PING命令通信,及時(shí)的更新自己clusterNode數(shù)組中的元數(shù)據(jù)信息,這樣有請(qǐng)求過(guò)來(lái)也就能及時(shí)的找到對(duì)應(yīng)的節(jié)點(diǎn)。

    有兩種其它的情況就是,若是請(qǐng)求過(guò)來(lái)發(fā)現(xiàn),數(shù)據(jù)發(fā)生了遷移,比如新節(jié)點(diǎn)加入,會(huì)使舊的緩存節(jié)點(diǎn)數(shù)據(jù)遷移到新結(jié)點(diǎn)。

    請(qǐng)求過(guò)來(lái)發(fā)現(xiàn)舊節(jié)點(diǎn)已經(jīng)發(fā)生了數(shù)據(jù)遷移并且數(shù)據(jù)被遷移到新結(jié)點(diǎn),由于每個(gè)節(jié)點(diǎn)都有clusterNode信息,通過(guò)該信息的ip和端口。此時(shí)舊節(jié)點(diǎn)就會(huì)向客戶端發(fā)一個(gè)MOVED 的重定向請(qǐng)求,表示數(shù)據(jù)已經(jīng)遷移到新結(jié)點(diǎn)上,你要訪問(wèn)這個(gè)新結(jié)點(diǎn)的ip和端口就能拿到數(shù)據(jù),這樣就能重新獲取到數(shù)據(jù)。

    倘若正在發(fā)生數(shù)據(jù)遷移呢?舊節(jié)點(diǎn)就會(huì)向客戶端發(fā)送一個(gè)ASK 重定向請(qǐng)求,并返回給客戶端遷移的目標(biāo)節(jié)點(diǎn)的ip和端口,這樣也能獲取到數(shù)據(jù)。

    擴(kuò)容和收縮

    擴(kuò)容和收縮也就是節(jié)點(diǎn)的上線和下線,可能節(jié)點(diǎn)發(fā)生故障了,故障自動(dòng)恢復(fù)的過(guò)程(節(jié)點(diǎn)收縮)。

    節(jié)點(diǎn)的收縮和擴(kuò)容時(shí),會(huì)重新計(jì)算每一個(gè)節(jié)點(diǎn)負(fù)責(zé)的槽范圍,并根據(jù)虛擬槽算法,將對(duì)應(yīng)的數(shù)據(jù)更新到對(duì)應(yīng)的節(jié)點(diǎn)。

    還有前面的講的新加入的節(jié)點(diǎn)會(huì)首先發(fā)送Meet消息,詳細(xì)可以查看前面講的內(nèi)容,基本一樣的模式。

    以及發(fā)生故障后,哨兵老大節(jié)點(diǎn)的選舉,master節(jié)點(diǎn)的重新選舉,slave怎樣晉升為master節(jié)點(diǎn),可以查看前面哨兵模式選舉過(guò)程。

    優(yōu)點(diǎn)

    集群模式是一個(gè)無(wú)中心的架構(gòu)模式,將數(shù)據(jù)進(jìn)行分片,分布到對(duì)應(yīng)的槽中,每個(gè)節(jié)點(diǎn)存儲(chǔ)不同的數(shù)據(jù)內(nèi)容,通過(guò)路由能夠找到對(duì)應(yīng)的節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)的槽,能夠?qū)崿F(xiàn)高效率的查詢。

    并且集群模式增加了橫向和縱向的擴(kuò)展能力,實(shí)現(xiàn)節(jié)點(diǎn)加入和收縮,集群模式是哨兵的升級(jí)版,哨兵的優(yōu)點(diǎn)集群都有。

    缺點(diǎn)

    緩存的最大問(wèn)題就是帶來(lái)數(shù)據(jù)一致性問(wèn)題,在平衡數(shù)據(jù)一致性的問(wèn)題時(shí),兼顧性能與業(yè)務(wù)要求,大多數(shù)都是以最終一致性的方案進(jìn)行解決,而不是強(qiáng)一致性。

    并且集群模式帶來(lái)節(jié)點(diǎn)數(shù)量的劇增,一個(gè)集群模式最少要6臺(tái)機(jī),因?yàn)橐獫M足半數(shù)原則的選舉方式,所以也帶來(lái)了架構(gòu)的復(fù)雜性。

    slave只充當(dāng)冷備,并不能緩解master的讀的壓力。

    搭建步驟

    Redis5.0之后的版本放棄了 Ruby 的集群方式,改為使用 C 語(yǔ)言編寫的redis-cli的方式,使集群的構(gòu)建方式復(fù)雜度大大降低。

    下載安裝Redis(見(jiàn)主從復(fù)制模式的搭建步驟)。

    創(chuàng)建6個(gè)Redis的配置文件,如下所示:

    /usr/local/redis-5.0.4/redis-cluster-conf/7001/redis.conf /usr/local/redis-5.0.4/redis-cluster-conf/7002/redis.conf /usr/local/redis-5.0.4/redis-cluster-conf/7003/redis.conf /usr/local/redis-5.0.4/redis-cluster-conf/7004/redis.conf /usr/local/redis-5.0.4/redis-cluster-conf/7005/redis.conf /usr/local/redis-5.0.4/redis-cluster-conf/7006/redis.conf

    配置文件內(nèi)容:

    port 7001 # 端口,每個(gè)配置文件不同7001-7006 cluster-enabled yes # 啟用集群模式 cluster-config-file nodes.conf #節(jié)點(diǎn)配置文件 cluster-node-timeout 5000 # 超時(shí)時(shí)間 appendonly yes # 打開(kāi)aof持久化 daemonize yes # 后臺(tái)運(yùn)行 protected-mode no # 非保護(hù)模式 pidfile /var/run/redis_7001.pid # 根據(jù)端口修改

    啟動(dòng)6個(gè)Redis節(jié)點(diǎn)。

    ./src/redis-server redis-cluster-conf/7001/redis.conf ./src/redis-server redis-cluster-conf/7002/redis.conf ./src/redis-server redis-cluster-conf/7003/redis.conf ./src/redis-server redis-cluster-conf/7004/redis.conf ./src/redis-server redis-cluster-conf/7005/redis.conf ./src/redis-server redis-cluster-conf/7006/redis.conf

    此時(shí)啟動(dòng)的6個(gè)Redis服務(wù)是相互獨(dú)立運(yùn)行的,通過(guò)以下命令配置集群。

    ./src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

    配置完看到如下圖所示信息表示集群搭建成功:

    從圖中可以看到啟動(dòng)了3個(gè)master節(jié)點(diǎn),3個(gè)slave節(jié)點(diǎn),16384個(gè)槽點(diǎn)平均分配到了3個(gè)master節(jié)點(diǎn)上。圖中很長(zhǎng)的一串字母數(shù)字的組合(07000b3a90......)為節(jié)點(diǎn)的ID。后面對(duì)節(jié)點(diǎn)的操作中會(huì)用到。

    集群重新分片

    如果對(duì)默認(rèn)的平均分配不滿意,我們可以對(duì)集群進(jìn)行重新分片。執(zhí)行如下命令,只需要指定集群中的其中一個(gè)節(jié)點(diǎn)地址即可,它會(huì)自動(dòng)找到集群中的其他節(jié)點(diǎn)。(如果設(shè)置了密碼則需要加上 -a <password>,沒(méi)有密碼則不需要,后面的命令我會(huì)省略這個(gè),設(shè)置了密碼的自己加上就好)。

    ./src/redis-cli -a <password> --cluster reshard 127.0.0.1:7001

    輸入你想重新分配的哈希槽數(shù)量

    How many slots do you want to move (from 1 to 16384)?

    輸入你想接收這些哈希槽的節(jié)點(diǎn)ID

    What is the receiving node ID?

    輸入想從哪個(gè)節(jié)點(diǎn)移動(dòng)槽點(diǎn),選擇all表示所有其他節(jié)點(diǎn),也可以依次輸入節(jié)點(diǎn)ID,以done結(jié)束。

    Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs. Source node #1:

    輸入yes執(zhí)行重新分片

    Do you want to proceed with the proposed reshard plan (yes/no)?

    自動(dòng)故障轉(zhuǎn)移

    當(dāng)運(yùn)行中的master節(jié)點(diǎn)掛掉了,集群會(huì)在該master節(jié)點(diǎn)的slave節(jié)點(diǎn)中選出一個(gè)作為新的master節(jié)點(diǎn)。這里不做演示。

    手動(dòng)故障轉(zhuǎn)移

    有的時(shí)候在主節(jié)點(diǎn)沒(méi)有任何問(wèn)題的情況下強(qiáng)制手動(dòng)故障轉(zhuǎn)移也是很有必要的,比如想要升級(jí)主節(jié)點(diǎn)的Redis進(jìn)程,我們可以通過(guò)故障轉(zhuǎn)移將其轉(zhuǎn)為slave再進(jìn)行升級(jí)操作來(lái)避免對(duì)集群的可用性造成很大的影響。

    Redis集群使用 cluster failover 命令來(lái)進(jìn)行故障轉(zhuǎn)移,不過(guò)要在被轉(zhuǎn)移的主節(jié)點(diǎn)的從節(jié)點(diǎn)上執(zhí)行該命令(使用redis-cli連接slave節(jié)點(diǎn)并執(zhí)行 cluster failover命令進(jìn)行轉(zhuǎn)移)。

    添加一個(gè)主節(jié)點(diǎn)

    按之前的方式再?gòu)?fù)制一份配置文件,并修改配置

    /usr/local/redis-5.0.4/redis-cluster-conf/7007/redis.conf

    然后啟動(dòng)該Redis服務(wù),執(zhí)行以下命令將該節(jié)點(diǎn)添加到集群中去

    ./src/redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001

    第一個(gè)參數(shù)為新增加的節(jié)點(diǎn)的IP和端口,第二個(gè)參數(shù)為任意一個(gè)已經(jīng)存在的節(jié)點(diǎn)的IP和端口。

    此時(shí)該新節(jié)點(diǎn)已經(jīng)成為集群的一份子

    127.0.0.1:7007> cluster nodes 90c78386c39c8258435b5b61f49a623b358ec8a6 127.0.0.1:7007@17007 myself,master - 0 1553239975877 10 connected c4180e02149e2d853a80683433773ef4bceffc78 127.0.0.1:7001@17001 master - 0 1553240017595 11 connected 0-5544 10923-11004 b6584514edbf57331a65f367304f33ad1bd0903e 192.168.1.164:7005@17005 slave 3bdbc4ac0d5902dcf8a5ebbfb88db8fad224c066 0 1553240016992 2 connected 07000b3a905df0ab0c86361adcb2774a487ce650 192.168.1.164:7004@17004 slave c4180e02149e2d853a80683433773ef4bceffc78 0 1553240016000 11 connected 28fa7bbf6b2a46991c7a5fe8eec53db1a5f1e9f6 192.168.1.164:7003@17003 master - 0 1553240017595 3 connected 11005-16383 3bdbc4ac0d5902dcf8a5ebbfb88db8fad224c066 192.168.1.164:7002@17002 master - 0 1553240017000 2 connected 5545-10922 fd9cba359d94ba6c9beecc91fbd491f9cf7a39ca 192.168.1.164:7006@17006 slave 28fa7bbf6b2a46991c7a5fe8eec53db1a5f1e9f6 0 1553240016000 3 connected

    但是該節(jié)點(diǎn)沒(méi)有包含任何的哈希槽,所以沒(méi)有數(shù)據(jù)會(huì)存到該主節(jié)點(diǎn)。我們可以通過(guò)上面的集群重新分片給該節(jié)點(diǎn)分配哈希槽,那么該節(jié)點(diǎn)就成為了一個(gè)真正的主節(jié)點(diǎn)了。

    添加一個(gè)從節(jié)點(diǎn)

    跟添加主節(jié)點(diǎn)一樣添加一個(gè)節(jié)點(diǎn)7008,然后連接上該節(jié)點(diǎn)并執(zhí)行如下命令

    cluster replicate <nodeId>

    這樣就可以指定該節(jié)點(diǎn)成為哪個(gè)節(jié)點(diǎn)的從節(jié)點(diǎn)。

    節(jié)點(diǎn)的移除

    可以使用如下命令來(lái)移除節(jié)點(diǎn)

    ./src/redis-cli --cluster del-node 127.0.0.1:7001 <nodeId>

    第一個(gè)參數(shù)是任意一個(gè)節(jié)點(diǎn)的地址,第二個(gè)參數(shù)是你想要移除的節(jié)點(diǎn)ID。如果是移除主節(jié)點(diǎn),需要確保這個(gè)節(jié)點(diǎn)是空的,如果不是空的則需要將這個(gè)節(jié)點(diǎn)上的數(shù)據(jù)重新分配到其他節(jié)點(diǎn)上。

    程序中使用

    SpringBoot中連接Redis集群配置

    spring:redis:cluster:nodes: 192.168.1.164:7001,192.168.1.164:7002,192.168.1.164:7003,192.168.1.164:7004,192.168.1.164:7005,192.168.1.164:7006database: 0password: <password>

    Redis常見(jiàn)數(shù)據(jù)丟失情況分析及解決

    情況分析

    (1)異步復(fù)制導(dǎo)致的數(shù)據(jù)丟失

    因?yàn)閙aster->slave的數(shù)據(jù)同步是異步的,所以可能存在部分?jǐn)?shù)據(jù)還沒(méi)有同步到slave,master就宕機(jī)了,此時(shí)這部分?jǐn)?shù)據(jù)就丟失了。

    (2)腦裂導(dǎo)致的數(shù)據(jù)丟失

    當(dāng)master所在的機(jī)器突然脫離的正常的網(wǎng)絡(luò),與其他slave、sentinel失去了連接,但是master還在運(yùn)行著。此時(shí)sentinel就會(huì)認(rèn)為master宕機(jī)了,會(huì)開(kāi)始選舉把slave提升為新的master,這個(gè)時(shí)候集群中就會(huì)出現(xiàn)兩個(gè)master,也就是所謂的腦裂。

    此時(shí)雖然產(chǎn)生了新的master節(jié)點(diǎn),但是客戶端可能還沒(méi)來(lái)得及切換到新的master,會(huì)繼續(xù)向舊的master寫入數(shù)據(jù)。

    當(dāng)網(wǎng)絡(luò)恢復(fù)正常時(shí),舊的master會(huì)變成新的master的從節(jié)點(diǎn),自己的數(shù)據(jù)會(huì)清空,重新從新的master上復(fù)制數(shù)據(jù)。

    解決方案

    Redis提供了這兩個(gè)配置用來(lái)降低數(shù)據(jù)丟失的可能性

    min-slaves-to-write 1 min-slaves-max-lag 10

    上面兩行配置的意思是,要求至少有1個(gè)slave,數(shù)據(jù)復(fù)制和同步的延遲不能超過(guò)10秒,如果不符合這個(gè)條件,那么master將不會(huì)接收任何請(qǐng)求。

    (1)減少異步復(fù)制的數(shù)據(jù)丟失

    有了min-slaves-max-lag這個(gè)配置,就可以確保,一旦slave復(fù)制數(shù)據(jù)和ack延時(shí)太長(zhǎng),就認(rèn)為master宕機(jī)后損失的數(shù)據(jù)太多了,那么就拒絕寫請(qǐng)求,這樣可以把master宕機(jī)時(shí)由于部分?jǐn)?shù)據(jù)未同步到slave導(dǎo)致的數(shù)據(jù)丟失降低到可控范圍內(nèi)。

    (2)減少腦裂的數(shù)據(jù)丟失

    如果一個(gè)master出現(xiàn)了腦裂,跟其他slave丟了連接,那么上面兩個(gè)配置可以確保,如果不能繼續(xù)給指定數(shù)量的slave發(fā)送數(shù)據(jù),而且slave超過(guò)10秒沒(méi)有給自己ack消息,那么就直接拒絕客戶端的寫請(qǐng)求

    這樣腦裂后的舊master就不會(huì)接受client的新數(shù)據(jù),也就避免了數(shù)據(jù)丟失。

    Redis并不能保證數(shù)據(jù)的強(qiáng)一致性,看官方文檔的說(shuō)明

    ?

    參考文檔:

    http://www.redis.cn/topics/cluster-tutorial.html

    總結(jié)

    以上是生活随笔為你收集整理的摸透 Redis 主从复制、哨兵、Cluster 三种模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

    欧美一级片免费在线观看 | 青草视频在线免费 | 久久午夜免费视频 | 69国产成人综合久久精品欧美 | 婷婷精品在线 | 91亚洲国产成人久久精品网站 | 国产精品二区三区 | 亚洲综合国产精品 | 日韩中文三级 | 日韩影视在线观看 | 久久久久久久99精品免费观看 | 豆豆色资源网xfplay | 免费成人av在线看 | 91精品国产91p65 | 欧美日韩高清 | 成人免费观看视频网站 | 高清av影院 | 激情久久伊人 | 五月天激情综合 | 在线免费黄色片 | 在线观看视频在线观看 | 久久精品网 | 91久久国产自产拍夜夜嗨 | 国产特级毛片aaaaaaa高清 | 麻豆果冻剧传媒在线播放 | 五月天婷婷免费视频 | 婷婷福利影院 | 国产精品完整版 | 18国产精品福利片久久婷 | 极品美女被弄高潮视频网站 | 国产中文在线视频 | 午夜久久久久久久久久影院 | 福利视频在线看 | 久久国产一区 | 免费色视频网站 | 久久中文字幕导航 | 日韩欧美国产激情在线播放 | 国产在线不卡精品 | 久久激情视频 久久 | 91麻豆看国产在线紧急地址 | 中文字幕亚洲精品在线观看 | www.亚洲精品在线 | 精品视频123区在线观看 | 在线观看完整版免费 | 激情久久影院 | 九九在线视频免费观看 | 色婷婷电影| 国产精品欧美一区二区三区不卡 | 在线国产黄色 | 午夜精品一区二区国产 | 中文字幕av最新 | 国产精品九九九九九九 | 久久综合免费视频影院 | 91av免费看 | 狠狠干夜夜爱 | 天天综合狠狠精品 | 又黄又爽又色无遮挡免费 | 一区二区激情视频 | 亚洲作爱视频 | 狠狠狠狠狠狠狠狠干 | 欧美日韩在线观看视频 | 91在线产啪| 成人国产精品入口 | 超碰在线人人爱 | www.狠狠操 | 国产中文在线字幕 | 成人精品久久 | 九九久久精品 | 国产精品久久久久久久久免费 | 亚洲激情 欧美激情 | 啪啪凸凸| 白丝av在线| 免费成人av | 日韩毛片一区 | 麻豆视频在线观看免费 | 久久高清精品 | 日韩精品一区二区免费视频 | 99欧美精品 | 欧美成人h版 | 99re视频在线观看 | 绯色av一区 | 99re国产视频 | 色综合天天 | 狠狠色综合欧美激情 | 国产麻豆视频在线观看 | 日韩激情中文字幕 | 国产在线a视频 | 黄色视屏av| 国产精品久久电影观看 | 日韩在线一区二区免费 | 中文字幕久久久精品 | 韩日精品在线 | 奇米影视999 | 日韩电影在线观看一区 | www.久久久久 | 成人精品影视 | 五月开心激情 | 丁香花中文字幕 | 夜夜操天天干 | 日批视频在线播放 | 亚洲一区二区精品在线 | 亚洲男男gaygay无套同网址 | 天天天在线综合网 | 又色又爽又黄高潮的免费视频 | 国产精品免费视频一区二区 | 欧美一区成人 | 在线亚洲精品 | 麻豆国产精品视频 | 91精品999| 久久久久久久久艹 | 麻豆国产网站入口 | 久久成人精品视频 | 亚洲黄色免费在线看 | 中文av不卡 | 国产黄在线免费观看 | 在线观看视频97 | 最近更新的中文字幕 | 欧洲性视频 | 99麻豆久久久国产精品免费 | 免费看三级黄色片 | 911免费视频 | 久久五月精品 | 六月丁香综合网 | 亚洲精品视频在线观看网站 | 成人中心免费视频 | 一二区电影 | 成人精品影视 | 特级西西www44高清大胆图片 | 日韩在线视频看看 | 黄网站色视频免费观看 | 精品福利片 | 日韩久久精品一区二区 | 午夜视频色| 色老板在线视频 | 成人免费中文字幕 | 97偷拍在线视频 | 久久免费播放视频 | 精品免费久久 | 国产亚洲视频在线免费观看 | 麻花豆传媒mv在线观看网站 | www.com.日本一级 | 久久久久久久久久久影视 | 超碰日韩在线 | 成人久久免费视频 | 国产一区免费观看 | 久久久亚洲精华液 | 日韩3区 | 91精品在线观看入口 | 狠狠88综合久久久久综合网 | 在线观看视频一区二区三区 | 国产精品久久久久久久久久久免费看 | 国产精品美女视频网站 | 欧美激情综合五月 | 久久情爱 | 全黄色一级片 | 亚洲国产精品成人av | 91在线视频 | 久久免费精彩视频 | 日韩免费在线视频 | 欧美精品在线观看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲电影av在线 | www.黄色网.com| 黄色免费网站 | 在线观看91网站 | 超碰在线最新地址 | 国产亚洲精品女人久久久久久 | 成人av.com| 日韩在线无 | 国产 中文 日韩 欧美 | 97精品国产一二三产区 | 久久伊人精品天天 | 欧美性生交大片免网 | 91精品啪在线观看国产线免费 | 国产乱码精品一区二区蜜臀 | 亚洲成人黄 | 亚洲国内精品在线 | 欧美va日韩va | 久久夜夜操 | 久久欧美精品 | 99久久er热在这里只有精品66 | 九九免费观看视频 | 国产精品久久久久久久久久ktv | 久久免费99精品久久久久久 | 精品国产乱码一区二区三区在线 | 天天天天天天干 | 亚洲一级电影 | av电影在线观看完整版一区二区 | 欧美性直播 | 精品国产大片 | 亚洲日本一区二区在线 | 免费国产在线精品 | 精品视频免费看 | 成人午夜影视 | av中文资源在线 | 99视频精品视频高清免费 | 黄色在线观看网站 | 国产一区二区久久久久 | 国产黄大片在线观看 | 亚洲国产一区二区精品专区 | 插久久 | 热re99久久精品国产99热 | av片在线观看免费 | 97超视频| 91福利影院在线观看 | 91精品视频在线免费观看 | 日日夜夜人人精品 | 黄色亚洲大片免费在线观看 | 成年人在线电影 | 国产成人在线免费观看 | 亚洲国产高清在线观看视频 | 狠狠躁夜夜a产精品视频 | 精品在线亚洲视频 | 国产视频日韩 | 国产精品久久一区二区无卡 | 三三级黄色片之日韩 | 99精品免费久久久久久日本 | 中文区中文字幕免费看 | 国产成人精品一区二区三区 | 色av资源网| 日本黄色特级片 | 久色免费视频 | 欧美韩国日本在线观看 | 免费亚洲黄色 | 国产精品观看在线亚洲人成网 | 深夜男人影院 | 在线视频一区二区 | 亚洲成人国产精品 | 超碰免费成人 | 色视频网站在线观看一=区 a视频免费在线观看 | av在线电影网站 | 久久久电影 | 久久99精品国产一区二区三区 | 日本性xxx | 免费下载高清毛片 | 欧美另类人妖 | 人人爱天天操 | 黄在线免费看 | 丝袜制服综合网 | 人人爽人人爽人人片 | 国产女人40精品一区毛片视频 | 成年人免费av | 日韩精品国产一区 | 亚洲精品一区中文字幕乱码 | 色97在线 | 日韩精选在线 | 99热国产在线观看 | 天天插一插| 免费亚洲视频 | 欧美日韩69 | 久久精品亚洲国产 | 亚洲精品久久久蜜臀下载官网 | 久久网页 | 国产一级片一区二区三区 | 精品视频在线视频 | 成人影片免费 | 国产在线自 | 天天干天天操天天爱 | 青青河边草免费视频 | 激情婷婷六月 | 综合av在线 | 久久久久中文字幕 | 日韩视 | 伊人电影在线观看 | 在线视频婷婷 | 在线影院 国内精品 | 99久久精品午夜一区二区小说 | 五月婷婷丁香网 | 在线视频日韩精品 | 国产日韩在线视频 | 色视频在线观看 | 久久久精品欧美一区二区免费 | av综合站 | av在线亚洲天堂 | 国产在线播放观看 | 九精品 | 99精品国产免费久久久久久下载 | 中文字幕最新精品 | 国产在线观看地址 | 一本色道久久综合亚洲二区三区 | 国产黄在线 | 蜜臀久久99精品久久久无需会员 | 日日干夜夜干 | 国产视频在线观看一区 | 伊人永久在线 | 亚洲区二区 | 久久成视频 | 国产91区| 中文字幕 成人 | 国产色在线观看 | av在线日韩 | 久久久久免费视频 | 曰本三级在线 | 日韩高清无线码2023 | 91污污视频在线观看 | 麻豆国产精品va在线观看不卡 | 国产黄色免费观看 | 久久久久久久久久久成人 | 午夜在线免费观看 | 日韩黄在线观看 | 不卡精品| 国产原创在线视频 | 在线视频 国产 日韩 | 丁香五月缴情综合网 | 国产亚洲精品久久久久久久久久 | 在线观看中文字幕dvd播放 | 久久久久久美女 | 免费www视频 | 国产亚洲精品久久久久久电影 | av片在线观看免费 | 日韩免费三区 | 免费高清在线视频一区· | 久久精品欧美视频 | 91黄色在线看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 美国av大片 | 中文字幕欧美激情 | 天天爱综合 | 99精品免费久久久久久久久日本 | 91桃色在线免费观看 | 亚洲国产一区二区精品专区 | 成人av电影在线观看 | 精品特级毛片 | 国产美女免费观看 | 久久夜色精品国产欧美乱 | 国偷自产视频一区二区久 | 国产精品九九久久久久久久 | 国产97免费| 久久视频一区二区 | 激情欧美在线观看 | 欧美日韩精品影院 | 成人h动漫在线看 | 91精品久久久久久粉嫩 | 五月开心婷婷 | 久久久久高清 | 91视频传媒 | 99在线热播精品免费99热 | 欧美日本一区 | 808电影| 国产成人久久精品77777 | 狠狠gao| 在线 精品 国产 | 夜夜操狠狠干 | 97成人精品区在线播放 | 韩国一区在线 | 亚洲精品高清在线 | 国产馆在线播放 | 久久久www | 免费在线色电影 | 色综合五月 | 日韩电影一区二区在线 | 偷拍福利视频一区二区三区 | 欧美地下肉体性派对 | 91福利视频久久久久 | 91九色成人蝌蚪首页 | 伊人五月天 | 国产亚洲精品成人av久久ww | 一区二区三区不卡在线 | 深夜免费小视频 | 一本一道久久a久久精品蜜桃 | 中文免费 | 欧美一区二区三区免费观看 | 不卡的av在线 | 三级av免费看 | 四虎免费在线观看视频 | 顶级bbw搡bbbb搡bbbb | 精品一区 在线 | 日韩欧美一区二区三区黑寡妇 | 免费在线观看日韩视频 | 婷婷丁香av | 精品视频免费在线 | 国产成人在线免费观看 | 国产精品美女视频网站 | 欧美一区免费观看 | 在线观看亚洲电影 | 日韩在线观看三区 | 久久精品—区二区三区 | 国产成人精品久久久 | 国产精品18久久久 | 久久久久北条麻妃免费看 | 久久免费高清 | 色婷婷久久 | 久久综合精品国产一区二区三区 | 黄色精品久久久 | 国产99久久精品一区二区300 | 91精品久久久久久久久久久久久 | 欧美视频不卡 | 亚洲无在线 | 一区二区视频在线播放 | 久久一线 | 欧美日韩一区二区久久 | 操操操天天操 | 欧美激情视频一区 | 久草99 | 精品视频 | 欧美日韩视频 | 亚洲精品在线免费播放 | 九九热re| 国产高清在线精品 | 久久精品日产第一区二区三区乱码 | 精品国产资源 | 狠狠操.com| 91在线文字幕 | 亚洲国产精品一区二区久久,亚洲午夜 | 亚洲理论片 | 国产精品久久久久久久久久了 | 久久优| 欧美一级性 | 国产在线不卡视频 | 亚洲国内精品在线 | 91黄色影视 | 亚洲精品国产精品99久久 | 日韩高清久久 | 毛片播放网站 | 日韩成人邪恶影片 | 国产啊v在线| 国产精品永久免费观看 | 亚洲精品综合在线观看 | 91在线播放视频 | 精品免费视频. | 久久久久国产精品免费免费搜索 | 人人爽人人搞 | 亚洲码国产日韩欧美高潮在线播放 | 色婷婷www| 亚洲精品视频免费观看 | 欧美成年人在线观看 | 91丨九色丨高潮 | 91av超碰| 国产日韩欧美中文 | 国产丝袜高跟 | 天堂在线v | 日韩视频免费观看高清完整版在线 | 五月天婷婷在线播放 | 在线免费观看视频一区二区三区 | 麻豆网站免费观看 | 五月婷婷在线观看 | www.午夜| 日韩欧美观看 | 久久麻豆精品 | 成人久久久电影 | 亚洲精品视频在线观看免费视频 | 天堂av在线网址 | 亚洲综合欧美日韩狠狠色 | 久久久久久久久久久久久久av | 日韩在线视频线视频免费网站 | 久久久受www免费人成 | 中文字幕在线视频一区二区 | 日韩精品不卡在线观看 | 久久国产亚洲 | 婷婷av在线 | 久久好看免费视频 | 九草视频在线观看 | 四虎永久免费 | 99re在线视频观看 | 国产一级特黄毛片在线毛片 | 久久国产免费视频 | 国产人成免费视频 | 久久久免费在线观看 | 国产一级免费观看视频 | 91香蕉视频720p | av天天澡天天爽天天av | 国产福利a | 亚洲精品国久久99热 | 成人在线视频免费看 | 亚洲精品www久久久 www国产精品com | 欧美一级免费高清 | 国产精品久久久久影院 | 国产黄色视 | 成人黄色小视频 | 蜜桃av久久久亚洲精品 | 国产精品理论片在线观看 | 国产精品中文久久久久久久 | 亚洲精品高清在线观看 | 99视频在线免费观看 | 天天操天天射天天爱 | 国产在线观看不卡 | 日韩激情一二三区 | 久久久国产99久久国产一 | 色视频成人在线观看免 | 91精品亚洲影视在线观看 | 黄av免费| 日韩成人精品在线观看 | 国产无区一区二区三麻豆 | www.天天成人国产电影 | 亚洲精品中文字幕在线 | 天天干国产 | 主播av在线 | 欧美成年性 | www.天天成人国产电影 | 欧美激情亚洲综合 | 婷婷亚洲综合五月天小说 | 一区二区三区在线观看免费 | 8x成人免费视频 | 久久午夜网| 99久久日韩精品视频免费在线观看 | 99久久久久久 | 亚洲乱亚洲乱妇 | 狠狠干天天操 | 三上悠亚在线免费 | 久草视频播放 | 免费日韩视 | 99久久久久久久久久 | 日韩电影精品一区 | 在线免费成人 | av网址aaa | 91爱爱电影| 欧美日韩高清一区二区 国产亚洲免费看 | 久久久www成人免费毛片麻豆 | 在线成人免费电影 | 在线视频婷婷 | 国内视频 | 欧洲视频一区 | 九九热在线精品 | 中文字幕色网站 | 欧美精品久久 | 探花视频免费观看高清视频 | av性网站 | 伊人久久精品久久亚洲一区 | 在线亚洲人成电影网站色www | 久久久性 | 亚洲成a人片在线观看网站口工 | 久久午夜网 | 婷婷视频在线 | 国内成人综合 | 中文字幕第一页在线播放 | 欧美在一区 | 99操视频| 国产精品av在线 | 久久看视频 | 日韩精品视频第一页 | 亚洲影视九九影院在线观看 | 成人a视频| 亚洲综合色网站 | 手机av网站 | 久久久综合香蕉尹人综合网 | 日韩理论 | 欧美色噜噜 | 国产精品免费av | 激情丁香 | 国产私拍在线 | 国产精品网站一区二区三区 | 久草视频免费在线播放 | 国产精品久久久久久久毛片 | 国产一区在线视频播放 | 97超碰国产精品女人人人爽 | 国产成人精品一区在线 | 国产69精品久久久久9999apgf | www.天天综合 | 在线看岛国av | 色综合天天色 | 亚洲3级 | av 在线观看| 久久天天躁 | 日本精品一 | 亚洲精品国产麻豆 | 国产美女在线精品免费观看 | 免费的国产精品 | 免费在线激情电影 | 久久人人97超碰精品888 | av电影免费在线看 | 国内精品久久久久影院日本资源 | 亚洲黄色免费观看 | 日韩在线免费视频观看 | 亚洲一区黄色 | 天天搞天天 | 808电影免费观看三年 | 丝袜美腿在线视频 | 免费观看91视频大全 | 99爱爱| 亚洲区视频在线观看 | 久久婷婷五月综合色丁香 | 51久久成人国产精品麻豆 | 91传媒在线| 久久综合爱 | 国产高清视频在线 | www.av小说 | 看片的网址| 夜夜操夜夜干 | 麻豆国产精品va在线观看不卡 | 国产一级大片在线观看 | 国产青春久久久国产毛片 | a色视频 | 91av社区 | 色福利网 | av片子在线观看 | 亚洲第一中文字幕 | 精品久久亚洲 | 国产一区二区观看 | 99热这里只有精品国产首页 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 欧美久久综合 | 人人爽爽人人 | 午夜黄色影院 | 特级xxxxx欧美 | 久久久久亚洲精品成人网小说 | 国产色 在线 | 九色视频网站 | 四虎在线视频免费观看 | 久久久毛片 | 国产精品成人a免费观看 | 国产精品成人品 | 日韩最新中文字幕 | 黄色免费大全 | 国产一级片免费观看 | japanesexxxhd奶水| 99久久婷婷国产一区二区三区 | 久久99精品国产麻豆婷婷 | 亚洲成aⅴ人在线观看 | 97超碰国产精品女人人人爽 | 中文字幕在线看视频 | 精品夜夜嗨av一区二区三区 | 人人干人人做 | 一级精品视频在线观看宜春院 | 久久草精品 | 国产精品久久久久久久久久久久午夜片 | 日韩黄色av网站 | 国产又黄又硬又爽 | 国产精品久久久久久久久久新婚 | 亚洲va在线va天堂 | 亚洲精品国产精品国自产观看 | 人人爽人人爽人人片av免 | 国产日产高清dvd碟片 | 欧美激情在线网站 | 欧美视频一区二 | 久艹视频在线观看 | 亚洲精品国产日韩 | 国产91精品高清一区二区三区 | 日韩成人在线免费观看 | 成人久久精品视频 | 激情综合网五月激情 | 国产美女永久免费 | 日本久久久久久久久久 | 久草资源在线观看 | 国产免费美女 | av在线a| 日日夜夜狠狠 | 国产精品24小时在线观看 | 日韩a级黄色片 | 五月天欧美精品 | 久久综合亚洲鲁鲁五月久久 | 成人午夜影院 | 黄色网址国产 | 碰超在线 | 91福利视频网站 | 欧美日韩高清一区二区 国产亚洲免费看 | 992tv在线成人免费观看 | 日韩午夜电影网 | 亚洲综合激情 | 国产涩涩在线观看 | 国产成人一区二区在线观看 | 久久精品国产99国产 | www日韩在线观看 | 亚洲伊人天堂 | 999久久精品 | 欧美 日韩 国产 中文字幕 | 九色porny真实丨国产18 | 精品国产一区二区三区久久久 | 久久久这里有精品 | 国产精品久久久久久久久久三级 | 免费下载高清毛片 | 日本精品一区二区三区在线播放视频 | 欧美性精品 | 91精品一区在线观看 | 国产夫妻性生活自拍 | 国产精品视频久久久 | 美女网站视频色 | 91精品福利在线 | 韩国三级在线一区 | 99热手机在线 | 伊人天天综合 | 久久资源在线 | 欧美精品在线观看一区 | 成人午夜电影在线 | 激情综合婷婷 | 狠狠色狠狠色综合系列 | 国产99久久九九精品免费 | 亚洲丁香日韩 | 成人久久久久久久久 | 国产精品久久久久久99 | 欧美激情综合五月 | 成人av在线网 | 99久久精品国 | 午夜狠狠操| 久久99热这里只有精品 | 色 免费观看 | 成年人看片 | 国产精品视频免费 | 91九色在线观看视频 | 国产欧美日韩视频 | 国产专区一 | 成人在线播放免费观看 | 欧美在线久久 | 中文字幕精品三区 | av黄在线播放 | 天天插综合 | 国产精品一区二区三区久久久 | 久草精品在线观看 | 美女黄久久 | 日本巨乳在线 | 国内精品国产三级国产aⅴ久 | 色综合五月 | 亚洲国产高清在线观看视频 | 久草视频资源 | 亚洲电影一区二区 | 日韩精品久久久久久久电影竹菊 | 国产精品完整版 | 在线不卡中文字幕播放 | 亚洲va在线va天堂va偷拍 | 国产小视频免费在线网址 | 亚洲高清色综合 | 日韩黄色大片在线观看 | 国产精品网红直播 | 中文字幕在线观看亚洲 | 99re国产视频 | 狠狠的日| 日韩电影中文字幕在线 | 伊人五月天 | 精品国产欧美一区二区 | 国产 视频 高清 免费 | 中文字幕观看av | 日韩精品三区四区 | 丁香婷婷综合五月 | 久久综合精品一区 | 五月婷婷视频在线 | 激情五月婷婷综合网 | 看片在线亚洲 | 色婷婷狠狠干 | 超碰在线中文字幕 | 国产精品剧情 | 亚洲91精品 | 天天操天天爽天天干 | 国产免费久久 | 国产一级黄大片 | 久久在线观看视频 | 久久久国产电影 | 国产香蕉av| 又黄又刺激的视频 | 91精品在线免费视频 | 国产a网站| 国产精品情侣视频 | 国产精品美乳一区二区免费 | 狠狠躁夜夜a产精品视频 | www.888.av | 亚洲精品视频二区 | 黄色在线观看免费 | 久久99国产精品视频 | 国产一区福利在线 | 中文字幕免费 | 99热高清| 国产日韩在线视频 | 美女网站黄在线观看 | 天天射综合 | 欧美激情精品久久久久久 | 8x成人在线| 精品亚洲在线 | 国产美腿白丝袜足在线av | 欧美a级成人淫片免费看 | 国产成人在线免费观看 | 91成品视频| 久久久久久久久久久综合 | 国产免费亚洲高清 | 99久久精品久久久久久清纯 | 精品国产一区二区三区久久久 | 亚洲日本欧美 | 欧美少妇bbwhd | 久久国产精品99久久久久久进口 | 亚洲精品视频免费在线观看 | 日韩黄在线观看 | 久久久蜜桃 | 色中色资源站 | 蜜桃传媒一区二区 | 亚洲黄色av网址 | 九九在线视频免费观看 | 免费网站黄 | 久久婷婷精品视频 | 91看片成人| 成人黄色片免费 | www久草 | 日韩av在线高清 | 亚洲精品高清在线 | 麻豆91在线观看 | 一区二区三区av在线 | 嫩嫩影院理论片 | 国产在线不卡 | 91超级碰| 精品视频| 精品久久在线 | 五月婷婷国产 | 在线观看中文字幕网站 | av在线免费播放网站 | 91在线超碰| 久久狠狠干 | 午夜视频99 | 午夜精品成人一区二区三区 | 91成人在线免费观看 | 天海翼一区二区三区免费 | 国产精品热视频 | 亚洲婷婷综合色高清在线 | 欧美成年人在线视频 | 91精彩视频在线观看 | 欧美有色 | 国产二区精品 | 91成人网在线观看 | 国产成人三级在线 | 国色天香在线 | 日日干天天爽 | 高清不卡一区二区在线 | 国产精品一区二区三区电影 | 国产精品久久久久高潮 | 国产视频综合在线 | 国产精品18久久久 | www.婷婷com | 国产精品一区二区 91 | 亚洲在线国产 | 久久久久久久国产精品视频 | 国产精品av在线免费观看 | a视频在线观看免费 | 一级黄毛片 | 激情综合六月 | 日韩在线视频观看免费 | 久久免费视频2 | 人人澡人人干 | av在线播放免费 | 香蕉视频色 | 三上悠亚一区二区在线观看 | 超碰个人在线 | 中文字幕日韩免费视频 | 成人sm另类专区 | 在线国产中文字幕 | 欧洲成人免费 | 成人黄色资源 | 黄污在线看 | 久久久在线免费观看 | 91av免费在线观看 | 国产成人一区二区三区影院在线 | 久久少妇免费视频 | 麻豆精品视频在线观看免费 | 五月激情视频 | av中文在线观看 | 国产在线观看你懂得 | 亚欧洲精品视频在线观看 | 国产午夜三级一区二区三 | 天天操福利视频 | 一区二区三区高清在线 | 欧美精品在线观看免费 | 五月开心六月伊人色婷婷 | 成片免费观看视频999 | 99久久精品国产欧美主题曲 | 69亚洲精品| 日韩毛片在线一区二区毛片 | 在线欧美日韩 | 欧美日韩精品在线观看 | 亚洲一区二区视频在线 | 色在线高清 | 五月天色婷婷丁香 | 香蕉日日| 91传媒免费在线观看 | 99视频在线观看免费 | 奇人奇案qvod | 日韩有码欧美 | 欧美国产一区在线 | 亚在线播放中文视频 | 久草综合视频 | 91传媒在线观看 | 99视频网站 | 操操操综合 | av免费网站| 成人黄色电影在线观看 | 欧美成人理伦片 | 看国产黄色片 | 精品欧美日韩 | 成 人 黄 色 视频免费播放 | 日韩在线视 | 人人玩人人添人人澡97 | 午夜精品av | 国产精品av在线 | 在线观看免费av网 | 国产精品成人免费精品自在线观看 | 色婷婷狠狠五月综合天色拍 | 97超碰国产精品 | 日韩xxx视频 | 九九热精品视频在线播放 | 91福利视频在线 | 高清av影院 | 久久综合久久久久88 | 香蕉影院在线观看 | 日韩a免费 | 成人黄色免费在线观看 | 欧美日韩一区二区在线观看 | 日日干视频 | 女人18毛片a级毛片一区二区 | 午夜影视一区 | 免费a v视频| 天天草天天操 | 色综久久 | www色,com| 亚洲精品乱码久久久久久蜜桃动漫 | 亚洲精品tv久久久久久久久久 | 久久综合成人网 | 国产色在线视频 | 国产精品国内免费一区二区三区 | 91精品久久久久久综合乱菊 | 国产在线美女 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 亚洲精品国产电影 | 91在线看网站 | 欧洲亚洲激情 | 国产精品精品国产色婷婷 | 天天看天天干 | 国产精品久久久久久久妇 | 天天摸天天操天天舔 | 99色人| 九九九九免费视频 | 91精品一区二区在线观看 | 人成免费网站 | 日本视频高清 | 免费看片成年人 | 国产裸体永久免费视频网站 | 日本公妇在线观看高清 | 国产高清免费观看 | 亚洲综合在线播放 | av大全免费在线观看 | 久久久国产精品成人免费 | 久久精品人人做人人综合老师 | 日韩在线视频网站 | 亚洲人成影院在线 | 国产精品 亚洲精品 | 黄色三级久久 | 国产成人一区二区啪在线观看 | 午夜影院一级 | 91av中文字幕 | 国产精品久久久免费看 | 精品国内自产拍在线观看视频 | 超碰人人干人人 | 日韩理论电影网 | 欧美日韩网址 | 日韩专区在线 | 激情综合网五月激情 | 伊人狠狠操 | 麻豆一二 | 麻豆超碰| 欧美疯狂性受xxxxx另类 | 久草97| 欧美精品一区二区免费 | 久久久私人影院 | 国产在线精品一区 | 色综合久久久久综合体 | 天天爽人人爽 | 91av视频在线播放 | 久久黄色小说视频 | 99视频免费播放 | 99精品久久久久 | 综合网五月天 | 久久国产精品小视频 | 欧美精品v国产精品v日韩精品 | 国产一级免费观看 | 亚洲成成品网站 | 久久久久综合精品福利啪啪 | 久久爱www. | 福利一区在线 | 99久久精品久久久久久清纯 | 日韩mv欧美mv国产精品 | 三级视频日韩 | 日韩一区二区三区观看 | 丁香综合激情 | 黄色免费观看 | 久久久久久久国产精品影院 | 精品影院 | 亚洲精品午夜久久久 | 在线黄色国产电影 | 国精产品999国精产品视频 | 丝袜av一区 | 在线探花| 久产久精国产品 | av免费看在线 | 亚洲黄a | 狠狠色噜噜狠狠狠合久 | 福利久久 | 在线观看v片 | 欧美一区,二区 | 成人一级影视 | 日女人免费视频 | 亚洲国产片色 | 久久综合导航 | 免费av观看 | 色大片免费看 | 一区二区三区电影 | 欧美性大胆 | 一级一片免费视频 | 99爱视频在线观看 | 91久久在线观看 | 国产精品一区二区在线观看免费 | 日本xxxxav| 狠狠躁日日躁狂躁夜夜躁 | 国产日韩欧美网站 | 久青草影院 | 在线观看中文字幕一区二区 | 欧美激情精品久久久久 |