欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

Redis高可用架構(gòu)搭建到原理分析

本篇文章給大家?guī)砹岁P(guān)于Redis的相關(guān)知識(shí),其中主要介紹了關(guān)于高可用架構(gòu)搭建到原理分析的相關(guān)內(nèi)容,下面一起來看一下,希望對(duì)大家有幫助。

Redis高可用架構(gòu)搭建到原理分析

千萬級(jí)數(shù)據(jù)并發(fā)如何處理?進(jìn)入學(xué)習(xí)

推薦學(xué)習(xí):Redis視頻教程

由于近期公司在做系統(tǒng)優(yōu)化,前段時(shí)間將大表進(jìn)行分表后,現(xiàn)在又來搞redis了。關(guān)于redis,其中有一項(xiàng)要求就是將redis服務(wù)由阿里云遷移到公司自己的服務(wù)器中(由于公司性質(zhì)原因)。剛好借著這次機(jī)會(huì),重新回顧一下redis的高可用集群架構(gòu)。redis集群方式有三種,分別為主從復(fù)制模式,哨兵模式以及Cluster集群模式,一般情況下哨兵和Cluster集群用的相對(duì)多一些,下面就來簡(jiǎn)單理解這三種模式。

持久化機(jī)制

在理解集群架構(gòu)前,先要介紹一下redis的持久化機(jī)制,因?yàn)樵诤竺娴募褐袝?huì)涉及到持久化。redis持久化是將緩存在內(nèi)存中的數(shù)據(jù)根據(jù)一些規(guī)則進(jìn)行落盤,以防止在redis服務(wù)宕機(jī)時(shí)可以進(jìn)行數(shù)據(jù)恢復(fù)或者是集群架構(gòu)中進(jìn)行主從節(jié)點(diǎn)數(shù)據(jù)同步。redis持久化的方式有RDB和AOF兩種,在4.0版本后新出了混合持久化模式。

RDB

RDB是redis默認(rèn)開啟的持久化機(jī)制,其持久化方式是按照用戶配置的規(guī)則"X秒內(nèi)至少發(fā)生過Y次改動(dòng)",生成快照并落盤到dump.rdb二進(jìn)制文件中。默認(rèn)情況下,redis配置了三種,分別為900秒內(nèi)至少發(fā)生過1次緩存key的改動(dòng),300秒內(nèi)至少發(fā)生過10次緩存key的改動(dòng)以及60秒內(nèi)至少發(fā)生過10000次改動(dòng)。

Redis高可用架構(gòu)搭建到原理分析

除了redis自動(dòng)快照持久化數(shù)據(jù)外,還有兩個(gè)命令可以幫助我們手動(dòng)進(jìn)行內(nèi)存數(shù)據(jù)快照,這兩個(gè)命令分別為savebgsave

Redis高可用架構(gòu)搭建到原理分析

  • save:以同步的方式進(jìn)行數(shù)據(jù)快照,當(dāng)緩存數(shù)據(jù)量大,會(huì)阻塞其他命令的執(zhí)行,效率不高。

  • bgsave:以異步的方式進(jìn)行數(shù)據(jù)快照,有redis主線程fork出一個(gè)子進(jìn)程來進(jìn)行數(shù)據(jù)快照,不會(huì)阻塞其他命令的執(zhí)行,效率較高。由于是采用異步快照的方式,那么就有可能發(fā)生在快照的過程中,有其他命令對(duì)數(shù)據(jù)進(jìn)行了修改。為了避免這個(gè)問題reids采用了寫時(shí)復(fù)制(Cpoy-On-Write)的方式,因?yàn)榇藭r(shí)進(jìn)行快照的進(jìn)程是由主線程fork出來的,所以享有主線程的資源,當(dāng)快照過程中發(fā)生數(shù)據(jù)改動(dòng)時(shí),那么該數(shù)據(jù)會(huì)被復(fù)制一份并生成副本數(shù)據(jù),子進(jìn)程會(huì)將改副本數(shù)據(jù)寫入到dump.rdb文件中。

RDB快照是以二進(jìn)制的方式進(jìn)行存儲(chǔ)的,所以在數(shù)據(jù)恢復(fù)時(shí),速度會(huì)比較快,但是它存在數(shù)據(jù)丟失的風(fēng)險(xiǎn)。假如設(shè)置的快照規(guī)則為60秒內(nèi)至少發(fā)生100次數(shù)據(jù)改動(dòng),那么在50秒時(shí),redis服務(wù)由于某種原因突然宕機(jī)了,那在這50秒內(nèi)的所有數(shù)據(jù)將會(huì)丟失。

AOF

AOF是Redis的另一種持久化方式,與RDB不同時(shí)是,AOF記錄著每一條更改數(shù)據(jù)的命令并保存到磁盤下的appendonly.aof文件中,當(dāng)redis服務(wù)重啟時(shí),會(huì)加載該文將并再次執(zhí)行文件中保存的命令,從而達(dá)到數(shù)據(jù)恢復(fù)的效果。默認(rèn)情況下,AOF是關(guān)閉的,可以通過修改conf配置文件來進(jìn)行開啟。

 # appendonly no  關(guān)閉AOF持久化  appendonly yes   # 開啟AOF持久化  # The name of the append only file (default: "appendonly.aof")  appendfilename "appendonly.aof" # 持久化文件名
登錄后復(fù)制

AOF提供了三種方式,可以讓命令保存到磁盤。默認(rèn)情況下,AOF采用appendfsync everysec的方式進(jìn)行命令持久化。

appendfsync always #每次有新的改寫命令時(shí),都會(huì)追加到磁盤的aof文件中。數(shù)據(jù)安全性最高,但效率最慢。 appendfsync everysec # 每一秒,都會(huì)將改寫命令追加到磁盤中的aof文件中。如果發(fā)生宕機(jī),也只會(huì)丟失1秒的數(shù)據(jù)。 appendfsync no #不會(huì)主動(dòng)進(jìn)行命令落盤,而是由操作系統(tǒng)決定什么時(shí)候?qū)懭氲酱疟P。數(shù)據(jù)安全性不高。
登錄后復(fù)制

開啟AOF后需要重新啟動(dòng)redis服務(wù),當(dāng)再次執(zhí)行相關(guān)改寫命令時(shí),aof文件中會(huì)記錄操作的命令。

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

相對(duì)于RDB,雖然AOF的數(shù)據(jù)安全性更高,但是隨著服務(wù)的持續(xù)運(yùn)行,aof的文件也會(huì)越來越大,等到下次恢復(fù)數(shù)據(jù)時(shí),速度會(huì)越來越慢。如果RDB和AOF都開啟,在恢復(fù)數(shù)據(jù)時(shí),redis會(huì)優(yōu)先選擇AOF,畢竟AOF丟失的數(shù)據(jù)更少啊。

RDB AOF
恢復(fù)效率
數(shù)據(jù)安全性
空間占用

混合模式

由于RDB持久化方式容易造成數(shù)據(jù)丟失,AOF持久化方式數(shù)據(jù)恢復(fù)較慢,所以在redis4.0版本后,新出來混合持久化模式。混合持久化將RDB和AOF的優(yōu)點(diǎn)進(jìn)行了集成,并而且依賴于AOF,所以在使用混合持久化前,需要開啟AOF。在開啟混合持久化后,當(dāng)發(fā)生AOF重寫時(shí),會(huì)將內(nèi)存中的數(shù)據(jù)以RDB的數(shù)據(jù)格式保存到aof文件中,在下一次的重寫之前,混合持久化會(huì)追加保存每條改寫命令到aof文件中。當(dāng)需要恢復(fù)數(shù)據(jù)時(shí),會(huì)加載保存的rdb內(nèi)容數(shù)據(jù),然后再繼續(xù)同步aof指令。

  # AOF重寫配置,當(dāng)aof文件達(dá)到60MB并且比上次重寫后的體量多100%時(shí)自動(dòng)觸發(fā)AOF重寫  auto-aof-rewrite-percentage 100   auto-aof-rewrite-min-size 64mb      aof-use-rdb-preamble yes # 開啟混合持久化# aof-use-rdb-preamble no # 關(guān)閉混合持久化
登錄后復(fù)制

AOF重寫是指當(dāng)aof文件越來越大時(shí),redis會(huì)自動(dòng)優(yōu)化aof文件中無用的命令,從而減少文件體積。比如在處理文章閱讀量時(shí),每查看一次文章就會(huì)執(zhí)行一次Incr命令,但是隨著閱讀量的不斷增加,aof文件中的incr命令也會(huì)積累的越來越多。在AOF重寫后,將會(huì)刪除這些沒用的Incr命令,將這些命令直接替換為set key value命令。除了redis自動(dòng)重寫AOF,如果需要,也可以通過bgrewriteaof命令手動(dòng)觸發(fā)。

主從復(fù)制

在生產(chǎn)環(huán)境中,一般不會(huì)直接配置單節(jié)點(diǎn)的redis服務(wù),這樣壓力太大。為了緩解redis服務(wù)壓力,可以搭建主從復(fù)制,做讀寫分離。redis主從復(fù)制,是有一個(gè)主節(jié)點(diǎn)Master和多個(gè)從節(jié)點(diǎn)Slave組成。主從節(jié)點(diǎn)間的數(shù)據(jù)同步只能是單向傳輸?shù)模荒苡蒑aster節(jié)點(diǎn)傳輸?shù)絊lave節(jié)點(diǎn)。

Redis高可用架構(gòu)搭建到原理分析

環(huán)境配置

準(zhǔn)備三臺(tái)linux服務(wù)器,其中一臺(tái)作為redis的主節(jié)點(diǎn),兩臺(tái)作為reids的從節(jié)點(diǎn)。如果沒有足夠的機(jī)器可以在同一臺(tái)機(jī)器上面將redis文件多復(fù)制兩份并更改端口號(hào),這樣可以搭建一個(gè)偽集群。

IP 主/從節(jié)點(diǎn) 端口 版本
192.168.36.128 6379 5.0.14
192.168.36.130 6379 5.0.14
192.168.36.131 6379 5.0.14
  1. 配置從節(jié)點(diǎn)36.130,36.131機(jī)器中reids.conf

修改redis.conf文件中的replicaof,配置主節(jié)點(diǎn)的ip和端口號(hào),并且開啟從節(jié)點(diǎn)只讀。

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

  1. 啟動(dòng)主節(jié)點(diǎn)36.128機(jī)器中reids服務(wù)

 ./src/redis-server redis.conf
登錄后復(fù)制

登錄后復(fù)制

Redis高可用架構(gòu)搭建到原理分析3. 依次啟動(dòng)從節(jié)點(diǎn)36.130,36.131機(jī)器中的redis服務(wù)

 ./src/redis-server redis.conf
登錄后復(fù)制

登錄后復(fù)制

啟動(dòng)成功后可以看到日志中顯示已經(jīng)與Master節(jié)點(diǎn)建立的連接。Redis高可用架構(gòu)搭建到原理分析如果出現(xiàn)與Master節(jié)點(diǎn)的連接被拒,那么先檢查Master節(jié)點(diǎn)的服務(wù)器是否開啟防火墻,如果開啟,可以開放6379端口或者關(guān)閉防火墻。如果防火墻被關(guān)閉但連接仍然被拒,那么可以修改Master節(jié)點(diǎn)服務(wù)中的redis.conf文件。將bing 127.0.0.1修改為本機(jī)對(duì)外的網(wǎng)卡ip或者直接注釋掉即可,然后重啟服務(wù)器即可。Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

  1. 查看狀態(tài)

全部節(jié)點(diǎn)啟動(dòng)成功后,Master節(jié)點(diǎn)可以查看從節(jié)點(diǎn)的連接狀態(tài),offset偏移量等信息。

 info replication # 主節(jié)點(diǎn)查看連接信息
登錄后復(fù)制

Redis高可用架構(gòu)搭建到原理分析

數(shù)據(jù)同步流程

  • 全量數(shù)據(jù)同步Redis高可用架構(gòu)搭建到原理分析主從節(jié)點(diǎn)之間的數(shù)據(jù)同步是通過建立socket長(zhǎng)連接來進(jìn)行傳輸?shù)摹.?dāng)Slave節(jié)點(diǎn)啟動(dòng)時(shí),會(huì)與Master節(jié)點(diǎn)建立長(zhǎng)連接,并且發(fā)送psync同步數(shù)據(jù)命令。當(dāng)Master節(jié)點(diǎn)收到psync命令時(shí),會(huì)執(zhí)行pgsave進(jìn)行rdb內(nèi)存數(shù)據(jù)快照(這里的rdb快照與conf文件中是否開啟rdb無關(guān)),如果在快照過程中有新的改寫命令,那么Master節(jié)點(diǎn)會(huì)將這些命令保存到repl buffer緩沖區(qū)中。當(dāng)快照結(jié)束后,會(huì)將rdb傳輸給Slave節(jié)點(diǎn)。Slave節(jié)點(diǎn)在接收到rdb后,如果存在舊數(shù)據(jù),那么會(huì)將這些舊數(shù)據(jù)清除并加載rdb。加載完成后會(huì)接受master緩存在repl buffer中的新命令。在這些步驟全部執(zhí)行完成后,主從節(jié)點(diǎn)已經(jīng)算連接成功了,后續(xù)Master節(jié)點(diǎn)的命令會(huì)不斷的發(fā)送到Slave節(jié)點(diǎn)。如果在高并發(fā)的情況下,可能會(huì)存在數(shù)據(jù)延遲的情況。

  • 部分?jǐn)?shù)據(jù)同步

Redis高可用架構(gòu)搭建到原理分析

部分?jǐn)?shù)據(jù)同步發(fā)生在Slave節(jié)點(diǎn)發(fā)生宕機(jī),并且在短時(shí)間內(nèi)進(jìn)行了服務(wù)恢復(fù)。短時(shí)間內(nèi)主從節(jié)點(diǎn)之間的數(shù)據(jù)差額不會(huì)太大,如果執(zhí)行全量數(shù)據(jù)同步將會(huì)比較耗時(shí)。部分?jǐn)?shù)據(jù)同步時(shí),Slave會(huì)向Master節(jié)點(diǎn)建立socket長(zhǎng)連接并發(fā)送帶有一個(gè)offset偏移量的數(shù)據(jù)同步請(qǐng)求,這個(gè)offset可以理解數(shù)據(jù)同步的位置。Master節(jié)點(diǎn)在收到數(shù)據(jù)同步請(qǐng)求后,會(huì)根據(jù)offset結(jié)合buffer緩沖區(qū)內(nèi)新的改寫命令進(jìn)行位置確定。如果確定了offset的位置,那么就會(huì)將這個(gè)位置往后的所有改寫命令發(fā)送到Slave節(jié)點(diǎn)。如果沒有確定offset的位置,那么會(huì)再次執(zhí)行全量數(shù)據(jù)同步。比如,在Slave節(jié)點(diǎn)沒有宕機(jī)之前命令已經(jīng)同步到了offset=11這個(gè)位置,當(dāng)該節(jié)點(diǎn)重啟后,向Master節(jié)點(diǎn)發(fā)送該offset,Master根據(jù)offset在緩沖區(qū)中進(jìn)行定位,在定位到11這個(gè)位置后,將該位置往后的所有命令發(fā)送給Slave。在數(shù)據(jù)同步完成后,后續(xù)Master節(jié)點(diǎn)的命令會(huì)不斷的發(fā)送到該Slave節(jié)點(diǎn)

Redis高可用架構(gòu)搭建到原理分析

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

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

    1. 可以實(shí)現(xiàn)一主多從,讀寫分離,減輕Master節(jié)點(diǎn)讀操作壓力
    2. 是哨兵,集群架構(gòu)的基礎(chǔ)
  • 缺點(diǎn)

    1. 不具備自動(dòng)主從切換功能,當(dāng)Master節(jié)點(diǎn)宕機(jī)后,需要手動(dòng)切換主節(jié)點(diǎn)
    2. 容易出現(xiàn)數(shù)據(jù)不一致,當(dāng)Master節(jié)點(diǎn)宕機(jī)前,如果有數(shù)據(jù)未同步,則會(huì)造成數(shù)據(jù)丟失

哨兵模式

哨兵模式對(duì)主從復(fù)制進(jìn)行了進(jìn)一步優(yōu)化,獨(dú)立出單獨(dú)的哨兵進(jìn)程用于監(jiān)控主從架構(gòu)中的服務(wù)器狀態(tài),一旦發(fā)生宕機(jī),哨兵會(huì)在短時(shí)間內(nèi)選舉出新的Master節(jié)點(diǎn)并進(jìn)行主從切換。不僅如此,在多哨兵的節(jié)點(diǎn)下,每個(gè)哨兵都會(huì)相互進(jìn)行監(jiān)控,監(jiān)控哨兵節(jié)點(diǎn)是否宕機(jī)。

Redis高可用架構(gòu)搭建到原理分析

環(huán)境配置

IP 主/從節(jié)點(diǎn) 端口 哨兵端口 版本
192.168.36.128 6379 26379 5.0.14
192.168.36.130 6379 26379 5.0.14
192.168.36.131 6379 26379 5.0.14

主從復(fù)制是哨兵模式的基礎(chǔ),所以在搭建哨兵前需要完成主從復(fù)制的配置。在搭建完主從后,哨兵的搭建就容易很多。 找到安裝目錄下的sentinel.conf文件并進(jìn)行修改。主要修改兩個(gè)地方,分別為哨兵端口port和監(jiān)控的主節(jié)點(diǎn)ip地址和端口號(hào)。

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

在配置完成后,可以使用命令啟動(dòng)各機(jī)器的哨兵服務(wù)。啟動(dòng)成功后,可查看redis服務(wù)和哨兵服務(wù)的進(jìn)行信息。

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析搭建成功后,就來通過代碼演示主節(jié)點(diǎn)宕機(jī)的情況下,哨兵是否會(huì)幫助系統(tǒng)自動(dòng)進(jìn)行主備切換。在springboot項(xiàng)目中引入對(duì)應(yīng)的pom,并配置對(duì)應(yīng)的redis哨兵信息。

<dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-data-redis</artifactId>     <version>2.2.2.RELEASE</version></dependency><dependency>     <groupId>org.apache.commons</groupId>     <artifactId>commons-pool2</artifactId>     <version>2.4.2</version></dependency>
登錄后復(fù)制

server:   port: 8081spring:   redis:     sentinel:       master: mymaster # 主服務(wù)節(jié)點(diǎn)       nodes: 192.168.36.128:26379,192.168.36.130:26379,192.168.36.131:26379 #哨兵節(jié)點(diǎn)     timeout: 3000 #連接超時(shí)時(shí)間
登錄后復(fù)制

@Slf4j @RestController public class RedisTest {      @Resource     private StringRedisTemplate stringRedisTemplate;          /*     * 每秒鐘向redis中寫入數(shù)據(jù),中途kill掉主節(jié)點(diǎn)進(jìn)程,模擬宕機(jī)     */     @GetMapping("/redis/testSet")    public void test(@RequestParam(name = "key") String key,                     @RequestParam(name = "value") String value) throws InterruptedException {         int idx=0;         for(;;){             try {                 idx++;                 stringRedisTemplate.opsForValue().set(key+idx, value);                 log.info("=====存儲(chǔ)成功:{},{}=====",key+idx,value);             }catch (Exception e){                 log.error("====連接redis服務(wù)器失敗:{}====",e.getMessage());             }             Thread.sleep(1000);         }    } }
登錄后復(fù)制

當(dāng)啟動(dòng)服務(wù)后,通過節(jié)后向后端傳遞數(shù)據(jù),可以看到輸出的日志,表示redis哨兵集群已經(jīng)可以正常運(yùn)行了。那么這個(gè)時(shí)候kill掉36.128機(jī)器上的主節(jié)點(diǎn),模擬服務(wù)宕機(jī)。通過日志可以知道,服務(wù)出現(xiàn)異常了,在過十幾秒發(fā)現(xiàn)哨兵已經(jīng)自動(dòng)幫系統(tǒng)進(jìn)行了主從切換,并且服務(wù)也可以正常訪問了。Redis高可用架構(gòu)搭建到原理分析

2022-11-14 22:20:23.134  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test14,123===== 2022-11-14 22:20:24.142  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test15,123===== 2022-11-14 22:20:24.844  INFO 8764 --- [xecutorLoop-1-1] i.l.core.protocol.ConnectionWatchdog     : Reconnecting, last destination was /192.168.36.128:6379 2022-11-14 22:20:26.909  WARN 8764 --- [ioEventLoop-4-4] i.l.core.protocol.ConnectionWatchdog     : Cannot reconnect to [192.168.36.128:6379]: Connection refused: no further information: /192.168.36.128:6379 2022-11-14 22:20:28.165 ERROR 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : ====連接redis服務(wù)器失敗:Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 3 second(s)==== 2022-11-14 22:20:31.199  INFO 8764 --- [xecutorLoop-1-1] i.l.core.protocol.ConnectionWatchdog     : Reconnecting, last destination was 192.168.36.128:6379
登錄后復(fù)制

2022-11-14 22:20:52.189 ERROR 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : ====連接redis服務(wù)器失敗:Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 3 second(s)==== 2022-11-14 22:20:53.819  WARN 8764 --- [ioEventLoop-4-2] i.l.core.protocol.ConnectionWatchdog     : Cannot reconnect to [192.168.36.128:6379]: Connection refused: no further information: /192.168.36.128:6379 2022-11-14 22:20:56.194 ERROR 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : ====連接redis服務(wù)器失敗:Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 3 second(s)==== 2022-11-14 22:20:57.999  INFO 8764 --- [xecutorLoop-1-2] i.l.core.protocol.ConnectionWatchdog     : Reconnecting, last destination was 192.168.36.128:6379 2022-11-14 22:20:58.032  INFO 8764 --- [ioEventLoop-4-4] i.l.core.protocol.ReconnectionHandler    : Reconnected to 192.168.36.131:6379 2022-11-14 22:20:58.040  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test24,123===== 2022-11-14 22:20:59.051  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test25,123===== 2022-11-14 22:21:00.057  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test26,123===== 2022-11-14 22:21:01.065  INFO 8764 --- [nio-8081-exec-2] com.gz.redis.RedisTest                   : =====存儲(chǔ)成功:test27,123=====
登錄后復(fù)制

故障轉(zhuǎn)移

在多個(gè)哨兵的模式下,每個(gè)哨兵都會(huì)向redis節(jié)點(diǎn)發(fā)送心跳包來檢測(cè)節(jié)點(diǎn)的運(yùn)行狀態(tài)。如果某個(gè)哨兵發(fā)現(xiàn)主節(jié)點(diǎn)連接超時(shí)了,沒有收到心跳,那么系統(tǒng)并不會(huì)立刻進(jìn)行故障轉(zhuǎn)移,這種情況叫做主觀下線。如果后續(xù)的哨兵節(jié)點(diǎn)發(fā)現(xiàn),與主節(jié)點(diǎn)的心跳也失敗了并且哨兵數(shù)量超過2個(gè),那么這個(gè)時(shí)候就會(huì)認(rèn)為主節(jié)點(diǎn)客觀下線,并且會(huì)進(jìn)行故障轉(zhuǎn)移,這個(gè)客觀下線的數(shù)值可以在哨兵的配置文件中進(jìn)行配置。

sentinel monitor master 192.168.36.128 6378 2
登錄后復(fù)制

在故障轉(zhuǎn)移前,需要選舉出一個(gè)哨兵leader來進(jìn)行Master節(jié)點(diǎn)的重新選舉。哨兵的選舉過程大致可以分為三步:

  • 當(dāng)某個(gè)的哨兵確定主節(jié)點(diǎn)已經(jīng)下線時(shí),會(huì)像其他哨兵發(fā)送is-master-down-by-addr命令,要求將自己設(shè)為leader,并處理故障轉(zhuǎn)移工作。

  • 其他哨兵在收到命令后,進(jìn)行投票選舉

  • 如果票數(shù)過半時(shí),那么發(fā)送命令的哨兵節(jié)點(diǎn)將成為主節(jié)點(diǎn),并進(jìn)行故障轉(zhuǎn)移。

當(dāng)選舉出主哨兵后,那么這個(gè)主哨兵就會(huì)過濾掉宕機(jī)的redis節(jié)點(diǎn),重新選舉出Master節(jié)點(diǎn)。首先會(huì)根據(jù)redis節(jié)點(diǎn)的優(yōu)先級(jí)進(jìn)行選舉(slave-priority),數(shù)值越大的從節(jié)點(diǎn)將會(huì)被選舉為主節(jié)點(diǎn)。如果這個(gè)優(yōu)先級(jí)相同,那么主哨兵節(jié)點(diǎn)就會(huì)選擇數(shù)據(jù)最全的從節(jié)點(diǎn)作為新的主節(jié)點(diǎn)。如果還是選舉失敗,那么就會(huì)選舉出進(jìn)程id最小的從節(jié)點(diǎn)作為主節(jié)點(diǎn)。

腦裂

在集群環(huán)境下會(huì)由于網(wǎng)絡(luò)等原因出現(xiàn)腦裂的情況,所謂的腦裂就是由于主節(jié)點(diǎn)和從節(jié)點(diǎn)和哨兵處于不同的網(wǎng)絡(luò)分區(qū),由于網(wǎng)絡(luò)波動(dòng)等原因,使得哨兵沒有能夠即使接收到主節(jié)點(diǎn)的心跳,所以通過選舉的方式選舉了一個(gè)從節(jié)點(diǎn)為新的主節(jié)點(diǎn),這樣就存在了兩個(gè)主節(jié)點(diǎn),就像一個(gè)人有兩個(gè)大腦一樣,這樣會(huì)導(dǎo)致客戶端還在像老的主節(jié)點(diǎn)那里寫入數(shù)據(jù),新節(jié)點(diǎn)無法同步數(shù)據(jù),當(dāng)網(wǎng)絡(luò)恢復(fù)后,哨兵會(huì)將老的主節(jié)點(diǎn)降為從節(jié)點(diǎn),這時(shí)再?gòu)男轮鞴?jié)點(diǎn)同步數(shù)據(jù),這會(huì)導(dǎo)致大量數(shù)據(jù)丟失。如果需要避免腦裂的問題,可以配置下面兩行信息。

 min-replicas-to-write 3 # 最少?gòu)墓?jié)點(diǎn)為3  min-replicas-max-lag 10 # 表示數(shù)據(jù)復(fù)制和同步的延遲不能超過10秒
登錄后復(fù)制

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

優(yōu)點(diǎn):除了擁有主從復(fù)制的優(yōu)點(diǎn)外,還可以進(jìn)行故障轉(zhuǎn)移,主從切換,系統(tǒng)更加可靠。

缺點(diǎn):故障轉(zhuǎn)移需要花費(fèi)一定的時(shí)間,在高并發(fā)場(chǎng)景下容易出現(xiàn)數(shù)據(jù)丟失。不容易實(shí)現(xiàn)在線擴(kuò)容。

Cluster模式

哨兵模式中雖然在主節(jié)點(diǎn)宕機(jī)的情況下能夠做到主從切換,但是在切換的過程中需要花費(fèi)十幾秒或者更久的時(shí)間,會(huì)造成部分?jǐn)?shù)據(jù)的丟失。如果在并發(fā)量不高的情況下,可以使用該集群模式,但是在高并發(fā)的情況下,這十幾秒的時(shí)間可能會(huì)造成嚴(yán)重的后果,所以,在很多互聯(lián)網(wǎng)公司都是采用Cluster集群架構(gòu)。Cluster集群中由多個(gè)redis節(jié)點(diǎn)組成,每個(gè)redis服務(wù)節(jié)點(diǎn)都有一個(gè)Master節(jié)點(diǎn)和多個(gè)Slave節(jié)點(diǎn),在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),redis會(huì)對(duì)數(shù)據(jù)的key進(jìn)行hash運(yùn)算并根據(jù)運(yùn)算結(jié)果分配到不同的槽位。一般情況下,Cluster集群架構(gòu)要設(shè)置6個(gè)節(jié)點(diǎn)(三主三從)。

Redis高可用架構(gòu)搭建到原理分析

環(huán)境搭建

由于只有三臺(tái)虛擬機(jī),所以需要在每臺(tái)服務(wù)器上面搭建兩個(gè)redis服務(wù),端口分別為6379和6380,這個(gè)剛好可以構(gòu)建6個(gè)節(jié)點(diǎn)。

IP 主/從節(jié)點(diǎn) 端口 版本
192.168.36.128 6379 5.0.14
192.168.36.128 6380 5.0.14
192.168.36.130 6379 5.0.14
192.168.36.130 6380 5.0.14
192.168.36.131 6379 5.0.14
192.168.36.131 6380 5.0.14

為了看起來不是那么混亂,可以為cluster新建一個(gè)文件夾,并將redis的文件拷貝到cluster文件夾中,并修改文件夾名為redis-6379,reids-6380。Redis高可用架構(gòu)搭建到原理分析

新建完成后,修改每個(gè)節(jié)點(diǎn)的redis.conf配置文件,找到cluster相關(guān)的配置位置,將cluster-enable更改為yes,表示開啟集群模式。開啟后,需要修改集群節(jié)點(diǎn)連接的超時(shí)時(shí)間cluster-node-timeout,節(jié)點(diǎn)配置文件名cluster-config-file等等,需要注意的是,同一臺(tái)機(jī)器上面的服務(wù)節(jié)點(diǎn)記得更改端口號(hào)。Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

Redis高可用架構(gòu)搭建到原理分析

在每個(gè)節(jié)點(diǎn)都配置完成后,可以依次啟動(dòng)各節(jié)點(diǎn)。啟動(dòng)成功后,可以查看redis的進(jìn)程信息,后面有明顯的標(biāo)識(shí)為[cluster]。

Redis高可用架構(gòu)搭建到原理分析

現(xiàn)在雖然每個(gè)節(jié)點(diǎn)的redis都已經(jīng)正常啟動(dòng)了,但是每個(gè)節(jié)點(diǎn)之間并沒有任何聯(lián)系啊。所以這個(gè)時(shí)候還需要最后一步,將各節(jié)點(diǎn)建立關(guān)系。在任意一臺(tái)機(jī)器上運(yùn)行下面的命令– cluster create ip:port,進(jìn)行集群創(chuàng)建。命令執(zhí)行成功后,可以看到槽位的分布情況和主從關(guān)系。

./src/redis-cli --cluster create 192.168.36.128:6379 192.168.36.128:6380 192.168.36.130:6379 192.168.36.130:6380 192.168.36.131:6379 192.168.36.131:6380 --cluster-replicas 1復(fù)制代碼
登錄后復(fù)制

Redis高可用架構(gòu)搭建到原理分析

cluster成功啟動(dòng)后,可以在代碼中簡(jiǎn)單的測(cè)試一下,這里的代碼依舊采用哨兵模式中的測(cè)試代碼,只是將sentinel相關(guān)的信息注釋掉并加上cluster的節(jié)點(diǎn)信息即可。

spring:   redis:     cluster:       nodes: 192.168.36.128:6379,192.168.36.128:6380,192.168.36.130:6379,192.168.36.130:6380,192.168.36.131:6379,192.168.36.131:6380#    sentinel:#      master: mymaster#      nodes: 192.168.36.128:26379,192.168.36.130:26379,192.168.36.131:26379     timeout: 3000     lettuce:       pool:         max-active: 80         min-idle: 50
登錄后復(fù)制

數(shù)據(jù)分片

Cluster模式下由于存在多個(gè)Master節(jié)點(diǎn),所以在存儲(chǔ)數(shù)據(jù)時(shí),需要確定將這個(gè)數(shù)據(jù)存儲(chǔ)到哪臺(tái)機(jī)器上。上面在啟動(dòng)集群成功后可以看到每臺(tái)Master節(jié)點(diǎn)都有自己的一個(gè)槽位(Slots)范圍,Master[0]的槽位范圍是0 – 5460,Master[1]的槽位范圍是5461 – 10922,Master[2]的槽位范圍是10922 – 16383。redis在存儲(chǔ)前會(huì)通過CRC16方法計(jì)算出key的hash值,并與16383進(jìn)行位運(yùn)算來確定最終的槽位值。所以,可以知道確定槽位的方式就是 CRC16(key) & 16383。計(jì)算出槽位后,此時(shí)在java服務(wù)端并不知道這個(gè)槽位對(duì)應(yīng)到哪一臺(tái)redis服務(wù),其實(shí)在java服務(wù)端啟動(dòng)服務(wù)時(shí)會(huì)將redis的相關(guān)槽位和映射的ip信息進(jìn)行一個(gè)本地緩存,所以知道槽位后,就會(huì)知道對(duì)應(yīng)槽位的ip。

選舉機(jī)制

cluster模式中的選舉與哨兵中的不同。當(dāng)某個(gè)從節(jié)點(diǎn)發(fā)現(xiàn)自己的主節(jié)點(diǎn)狀態(tài)變?yōu)閒ail狀態(tài)時(shí),便嘗試進(jìn)行故障轉(zhuǎn)移。由于掛掉的主節(jié)點(diǎn)可能會(huì)有多個(gè)從節(jié)點(diǎn),從而存在多個(gè)從節(jié)點(diǎn)競(jìng)爭(zhēng)成為新主節(jié)點(diǎn) 。其選舉過程大概如下:

  • 從節(jié)點(diǎn)將自己記錄的集群currentEpoch加1,并廣播FAILOVER_AUTH_REQUEST信息,通知集群中的所有節(jié)點(diǎn),需要進(jìn)行重新選舉了。

  • 其他節(jié)點(diǎn)收到該信息,但只有master節(jié)點(diǎn)會(huì)進(jìn)行響應(yīng),判斷請(qǐng)求者的合法性,并發(fā)送 FAILOVER_AUTH_ACK,對(duì)每一個(gè)epoch只發(fā)送一次ack。

  • 發(fā)送通知的從節(jié)點(diǎn)會(huì)收集各master主節(jié)點(diǎn)返回的FAILOVER_AUTH_ACK。

  • 如果該從節(jié)點(diǎn)收到的ack數(shù)過半,那么該節(jié)點(diǎn)就會(huì)被選舉為新的Master主節(jié)點(diǎn)。成為主節(jié)點(diǎn)后,廣播通知其他小集群節(jié)點(diǎn)

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

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

  • 有多個(gè)主節(jié)點(diǎn),做到去中心化。

  • 數(shù)據(jù)可以槽位進(jìn)行分布存儲(chǔ)

  • 擴(kuò)展性更高,可用性更高。cluster集群中的節(jié)點(diǎn)可以在線添加或刪除,官方推薦節(jié)點(diǎn)數(shù)不超1000。當(dāng)部分Master節(jié)點(diǎn)不可用時(shí),整個(gè)集群任然可以正常工作。

缺點(diǎn):

  • 數(shù)據(jù)通過異步復(fù)制,不保證數(shù)據(jù)的強(qiáng)一致性

  • Slave節(jié)點(diǎn)在集群中充當(dāng)冷備,不能緩解讀壓力

總結(jié)

reids作為當(dāng)下非常流行的一款中間件,它可以用作緩存,減少DB的壓力,提高系統(tǒng)的性能。也可以用作分布式鎖保證并發(fā)安全性。還可以用作MQ消息隊(duì)列,減少系統(tǒng)的耦合度。它支持單機(jī)模式,主從復(fù)制,哨兵以及Cluster模式。每個(gè)模式都有自己的優(yōu)點(diǎn)和缺點(diǎn),在實(shí)際項(xiàng)目中可以根據(jù)自己的業(yè)務(wù)需求以及并發(fā)程度來進(jìn)行選擇。

推薦學(xué)習(xí):Redis視頻教程

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
主站蜘蛛池模板: 99热免费观看 | 99国产精品99久久久久久 | 综合精品一区 | 毛片一级免费 | 色碰视频 | 亚洲久久久久久 | 欧美日韩毛片 | 爱色av·com | japanese在线观看 | 香蕉视频日本 | 久久久久亚洲精品男人的天堂 | 国产欧美日韩在线视频 | 国产精品一级二级三级 | 可以免费观看的av网站 | 免费午夜视频 | 日韩有码在线播放 | 国产乱码精品一区二三赶尸艳谈 | 久久午夜国产 | 日韩理论片在线观看 | 一本一道精品欧美中文字幕 | 北条麻妃一区二区三区在线观看 | 星空大象mv高清在线观看免费 | 亚洲成人免费看 | 男人天堂2014 | 亚洲精品三区 | 亚洲国产精品久久久久爰性色 | 我和我的太阳泰剧在线观看泰剧 | japanese国产在线观看 | 2021av在线 | 欧美日韩视频一区二区 | 六月丁香色婷婷 | 蜜桃av噜噜一区二区三区 | 久久精品免费看 | 成人福利片 | 夜夜导航| 国产精品视频一二三区 | 黄色av免费在线观看 | 亚洲三级在线播放 | 九一在线观看免费高清视频 | 国产成人a v| 一级一级黄色片 | 日韩精品1 | 91一区二区视频 | 蜜桃色av | 日韩免费网| 国产精品国产三级国产a | 亚洲精品无线乱码一区 | 日本黄色片免费看 | 久久精品夜 | 色97| 一区在线播放 | 高清乱码毛片入口 | www.97ai.com| 国产伦精品一区二区三区高清版禁 | 欧美日韩一区二区在线播放 | 91春色 | 日韩成人激情视频 | 毛片网站在线观看 | 日韩一区二区三区四区五区六区 | 亚洲精品成人 | 国产99久久久久久免费看 | 国产一区二区观看 | 美女91网站 | 色婷婷九月 | 精品一区二区三区三区 | 亚洲欧美成人 | 中国精品妇女性猛交bbw | 国外亚洲成av人片在线观看 | 成年人免费在线观看网站 | 91久操| 亚洲国产精品自拍视频 | 男女那个视频 | 亚洲精品在线免费观看视频 | 在线精品免费视频 | 亚洲成人激情av | 国产一二三级 | 老司机精品导航 | 九九视频精品在线 | 欧美日韩在线视频免费播放 | 精品孕妇一区二区三区 | 天天躁日日躁aaaaxxxx | 免费成人高清视频 | 免费视频久久 | 日本成人高清 | 日韩黄色在线视频 | 国内精品久久久久 | 亚洲视频在线免费看 | 亚洲毛片儿 | 青青草在线免费视频 | 你懂的网站在线 | 亚洲字幕成人中文在线观看 | 日韩少妇激情 | www.色天使 | 久久久精品日韩 | 国产一区二区亚洲 | 国产精品久久久久久久久动漫 | 黄色午夜 | 午夜视频h | 亚洲精品一二 | 亚洲少妇视频 | 6080一区 | 日韩成人三级 | 污片视频在线观看 | 韩国精品一区二区 | 黄网在线免费观看 | 99国产精品久久久久久久成人热 | 97超碰成人 | 97在线免费 | 日韩少妇激情 | 99re视频在线播放 | 国产三级韩国三级日本带黄 | 亚洲福利视频一区 | 黄色录象片 | bbbbbbbbb毛片大片按摩 | 中国在线观看免费高清视频播放 | 黑人操日本 | 成人午夜在线观看视频 | 中文字幕成人在线观看 | 这里都是精品 | 亚洲伦理中文字幕 | 国产成人欧美 | 一级久久久| 伊人久久大香线蕉综合75 | www.性欧美| 欧美视频性 | 懂色av蜜臀av粉嫩av分 | 国产福利在线播放 | 天天操综合 | 免费人成年激情视频在线观看 | 在线亚洲一区 | 黑人巨大精品欧美黑寡妇 | 97人人看 | 粉嫩久久久久久久极品 | 日韩在线精品 | 99精品色 | 国产乱码精品一区二三赶尸艳谈 | 五月天婷婷综合网 | 日本h在线观看 | 91精品久久久久久久久久久 | 国产精品不卡视频 | 日日爱视频 | 五月天综合网 | 亚洲一区无 | 亚洲黄在线 | 和漂亮岳做爰3中文字幕 | 久热这里只有精品在线 | 亚洲精品国产一区二区三区四区在线 | 四色成人av永久网址 | 欧美精品一区二区在线播放 | 成年人看片网站 | 亚洲区 欧美区 | 亚洲操片 | 44444kk在线观看三免费 | www爱爱 | 亚洲图片激情小说 | 人超碰| 伦理自拍 | 亚洲精品1区2区3区 国产免费一级视频 | 亚欧视频在线观看 | 国产福利视频一区二区 | 国产精品视频播放 | 亚洲性生活大片 | 亚洲精品久久久一区二区三区 | 嫩草影院一区二区三区 | 丁香婷婷综合激情五月色 | 九九热九九热 | 亚洲精品在线免费观看视频 | 国产精品免费视频观看 | 久久婷婷色综合 | 国内精品视频在线 | 狠狠综合久久av一区二区 | 午夜精品少妇 | 性视频日韩 | 狠狠做| 免费中文字幕日韩欧美 | 免费三级黄| 国产视频一二区 | 久久久久国产免费 | 日韩在线一区二区 | 国产一级二级视频 | 亚洲免费精品视频在线观看 | 黄色一级在线观看 | 亚洲国产精品一区二区三区 | 亚洲欧美在线看 | 久久大胆人体 | 看看屋午夜 | 黄色香港三级三级三级 | 在线观看欧美 | 亚洲女人奶水多 | 伊人久久国产精品 | 国产专区精品 | 干夜夜| 中文字幕一区二区三区免费看 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 不卡视频一区二区三区 | 一级中国毛片 | 国产精品xxx在线观看 | 亚洲精品不卡在线观看 | 九九综合九九综合 | 国产一区二区三区影视 | 性一区| 黄网在线免费观看 | 日韩欧美亚洲 | 亚洲一级精品毛片 | 国产一级免费av | 800av免费在线观看 | www.av黄色| www国产视频| 亚洲成人7777 | 日韩美女在线 | 精品国产免费久久久久久婷婷 | 色偷偷综合网 | 亚洲图片激情小说 | 午夜激情在线 | 夜夜穞天天穞狠狠穞 | 久久久天堂 | 精品一区二区三区在线视频 | 国产精品高潮呻吟av久久4虎 | 国产精品羞羞答答在线 | 一区精品二区国产 | 色呦呦精品 | 亚洲天堂手机 | 免费在线一区二区三区 | 亚洲欧洲av | 亚洲男人影院 | 最新免费av网站 | av午夜三片乱码少妇 | 成人福利视频网站 | 最近更新2019中文字幕 | 欧美成人三级视频 | 91中文在线| wwwxxxxx日本 | 夜夜操操操操 | 成人毛片18女人毛片 | 茄子视频色 | 日韩成人高清 | 黄色小视频在线观看免费 | 国产一区视频在线 | 亚洲一级性生活 | 国内精品视频一区 | 网站毛片 | 成年人黄色大全 | 久操久热 | 一区二区三区久久久 | 黄色性视频网站 | 日韩激情综合 | 欧美男人的天堂 | 懂色av一区二区在线播放 | 91中文字幕在线观看 | 精品一区二三区 | 亚洲第一香蕉网 | av中文字幕网 | 真实新婚偷拍xxxxx | 五月激情丁香婷婷 | 欧美精品日韩少妇 | 亚洲剧情在线 | 免费观看黄色一级视频 | 综合色网站 | 综合网五月天 | 亚洲网站大全 | 日韩精品久久久 | 尤物视频最新网址 | 国产精品久久久国产盗摄 | 夜夜爽网站| 国产精品爽爽久久 | 色综合网站 | 在线免费你懂的 | 亚洲精品国产精品乱码不66 | 日韩欧美在线中文字幕 | 黄色在线观看免费 | 国产在线激情 | 888夜夜爽夜夜躁精品 | 永久精品动漫网站入口大全 | 国产一级精品视频 | 亚洲欧洲精品一区二区 | 欧美xxxxx视频| 91成人免费观看视频 | 狠狠躁夜夜 | 美女精品| 日韩精品中文字幕在线观看 | 国产免费不卡av | 精品久久久久久久久久岛国gif | 91亚洲一区二区三区 | 国产激情在线 | 久久久久久久久国产精品 | 久久丁香综合五月国产三级网站 | 天天干天天透 | 国产精品成人aaaa在线 | 久久久久国产免费 | 久久青青草原 | 成人精品av| 亚洲人免费视频 | 爱爱福利社| 国产精品午夜在线观看 | 狠狠躁18三区二区一区 | 国产午夜一区二区三区 | 国产乱码精品一区二三赶尸艳谈 | 精品亚洲一区二区三区 | 欧美日韩一区二 | 97香蕉久久超级碰碰高清版 | 亚洲午夜久久久久久久久红桃 | 狠狠操天天干 | 国产自产精品 | 国产精品天美传媒沈樵 | 亚洲v国产v欧美v久久久久久 | 无码少妇一区二区三区 | 欧美在线中文字幕 | 精品国产黄色片 | 我爱av好色| 日本在线精品视频 | 欧美用舌头去添高潮 | 亚洲图片在线观看 | 伊人久久成人网 | 偷偷操av | 色av免费| 女人高潮潮呻吟喷水 | 午夜网站免费 | 久久久久成人网 | 日日干夜夜干 | 免费一级网站 | 欧美三级在线看 | 亚洲高清精品视频 | 欧美国产中文字幕 | 奇米影视奇米色 | 污污视频免费观看 | 宅男噜噜666在线观看 | 久久久精品一区二区 | 久艹在线播放 | 亚洲中字幕 | 日日干日日射 | 婷婷日韩| 国产福利在线 | 久久99久久久 | 粉嫩av | 人人人人干 | 国产一区二区三区精品视频 | 久久免费资源 | 自拍一级片 | 国产91传媒| 美国一级大黄一片免费中文 | 久久第一页 | 国产97在线观看 | 69精品久久久久久久 | 欧美一级做a爰片免费视频 日本三级精品 | 91操操| 天天干天天干天天干天天 | 亚洲精品自拍偷拍 | 香蕉二区| 亚洲欧美视频 | 日韩男人的天堂 | 综合色区 | 国产精品1234区| 亚洲国产精品综合 | 中文字幕第6页 | 动漫精品一区一码二码三码四码 | 国产精品久久久爽爽爽麻豆色哟哟 | 欧美又粗又深又猛又爽啪啪九色 | 成人在线综合 | 青青草伊人网 | 亚洲香蕉在线视频 | 国产香蕉视频在线播放 | 在线免费观看日韩av | 亚洲男人天堂av | 亚洲图片偷拍区 | 精品欧美一区二区三区 | 久久夜靖品2区 | 精品日韩在线 | 免费国产成人 | 久久久精品网 | 成人免费性生活视频 | 精品一区二区三区自拍图片区 | 欧美色成人 | 亚洲激情区 | www激情| 欧美一a一片一级一片 | 天天毛片 | 男女www视频 | 国产一区二区三区日韩 | av综合资源 | 揄拍自拍 | 成人性生交大片免费 | 成年人看的网站 | 欧美性生活免费视频 | 三级网站在线看 | 高清毛片aaaaaaaaa郊外 | 日韩精品一区二区三区丰满 | 一区二区三区四区中文字幕 | 成人免费看视频 | 性色av一区二区三区红粉影视 | 99在线免费观看 | 白白色在线播放 | 在线观看免费高清 | 国产美女永久免费无遮挡 | 成人在线免费小视频 | 亚洲国产成人精品久久 | 香蕉福利影院 | 丝袜综合网 | 久久久综| av最新网址 | 777色婷婷视频二三区 | 欧美日韩国产三区 | 黄色伊人网 | 在线成人日韩 | 国产网红主播精品av | jizzjizz在线| 亚洲高清免费视频 | 免费观看成人 | 九月婷婷丁香 | www.夜夜骑| 午夜久久久久久久久 | 先锋影音中文字幕 | 欧美国产日韩综合 | 国产一区二区三区www | 日本人毛片 | 久久久精品毛片 | www.黄色免费 | 免费成人av网址 | av在线不卡观看 | 99久视频 | 国产网站大全 | 国产成人精品一二三区 | 欧美一区二区日韩 | 一区二区视频免费在线观看 | 欧美有码视频 | 国产成人激情视频 | 最近的中文字幕在线看视频 | 中文在线观看视频 | 免费涩涩视频 | 日日躁夜夜躁狠狠躁 | 欧美天堂在线 | 91精品国产综合久久久密臀九色 | 午夜男人天堂 | 高清不卡一区二区 | 四虎影视免费在线观看 | 六月婷婷综合 | 天天综合入口 | 色图av | 国产精品21区 | 国产精品午夜未成人免费观看 | 69成人做爰免费视频 | 中文字幕黄色av | 潘甜甜在线 | 不卡视频在线观看 | 亚洲精品乱码久久久久久蜜桃不卡 | 久久久一区二区三区 | 国内自拍视频网站 | 一级黄色片一级 | 日韩一级淫片 | 午夜激情国产 | 成人国产精品免费观看 | 久久精品国产成人av | 国产精品99久久久久久www | 日韩无马 | 日韩一区二区中文字幕 | av88av| 超碰.com | 欧美黄在线| 久久精品免费在线 | 亚洲精品女人 | 亚洲欧美日韩在线不卡 | 一区二区三区免费在线观看视频 | 夜夜躁恨恨躁爱躁 | 日本网站在线 | 欧美日韩一区二区在线播放 | 精品一区视频 | 久久精品这里只有精品 | 91av资源在线 | 激情视频在线观看网址 | 欧美日韩中文字幕一区 | 在线啪 | 欧美午夜精品久久久 | 天堂男人网 | 中文字幕精品三级久久久 | 国产精品麻豆一区二区 | 国产乱码精品一区二三区蜜臂 | www.免费av| 亚洲国产日韩欧美 | www.日日日| 在线成人看片 | 97视频国产 | 欧美精品在线免费 | 久久婷婷丁香 | 天天干天天操天天操 | 成年人午夜网站 | 爱欲av | 永久免费看mv网站入口亚洲 | 91丨porny丨尤物| 亚洲羞羞 | 少妇与公做了夜伦理69 | 8x8ⅹ成人永久免费视频 | 午夜影院污 | 激情网络 | 91在线免费播放 | 日韩小视频在线 | 国产原创视频在线观看 | 91免费影片 | aaa午夜| 人体毛片 | 综合狠狠开心 | 欧美图片一区二区 | 欧美疯狂做受xxxxx高潮 | 国产福利视频导航 | 免费黄色在线网站 | 欧美毛片在线观看 | 亚洲高清日本 | 亚洲毛片a| 7799精品视频天天看 | 九九久视频 | 天天摸日日干 | 91看片在线观看 | 我和我的太阳泰剧在线观看泰剧 | 91搞搞| aaa成人 | 国产又粗又长又大 | 久久精品久久久久 | 中文字幕精品视频 | 亚洲成人777777 | 黄色成人av在线 | 色老头一区二区三区 | 在线观看日韩视频 | 日韩插插 | 91刺激| 夜夜操夜夜爱 | 国产福利91精品一区二区三区 | 色综合综合 | 欧美亚洲国产日韩 | av在线影视 | 久久婷婷影院 | 一级中国毛片 | 特级毛片在线播放 | 久草香蕉在线视频 | 精品国产污污免费网站入口爱酱 | 日日夜夜狠狠 | 精品国产99| 香蕉国产片一级一级一级一级 | 91久久久久久 | 国产一级在线视频 | 在线视频导航 | 久久久久99精品国产片 | 91操人| 久久精品国产99精品国产亚洲性色 | 欧美成人小视频 | 国产精品手机视频 | 午夜性影院 | 中文字幕av免费 | www.啪啪.com | 六月婷婷综合 | 亚洲日本久久久 | 精品久久久久成人码免费动漫 | 国产精品国产三级国产专区51区 | av操操操 | 在线观看高h | 久久精品国产77777蜜臀 | 亚洲国产精品免费 | 久草中文在线观看 | 亚洲一区二区三区在线播放 | 亚洲精品成人区在线观看 | 亚洲精品乱码久久久久久金桔影视 | 国产特级毛片aaaaaa | 黄色的视频网站 | 免费黄色一级片 | 国产精品v欧美精品v日韩 | 国产精品呦呦 | 国产成人手机在线 | 国产福利小视频在线 | 97人人澡| 国产妞干网 | 久久久精选 | 在线视频91| 九色在线 | 日韩av在线免费 | 国产在线麻豆精品观看 | 久久香蕉精品视频 | 一本毛片 | 亚洲人成小说 | 亚洲日b视频 | 五十路av | 国产精品女教师久久二区二区 | 国内自拍视频网站 | 在线观看国产精品入口男同 | 亚洲草逼 | 性色av蜜臀 | 国产精品一区二区三区免费观看 | 中文字幕少妇在线三级hd | 夜夜撸网站 | 亚洲一区二区三区日韩 | 国产成人中文字幕 | 亚洲人视频在线观看 | 国产午夜伦理 | 狠狠艹视频 | 亚洲视频免费观看 | 成人免费视频一区二区三区 | 色呦呦免费观看 | 国产精品网站在线观看 | 日韩一区二区三免费高清在线观看 | 欧美国产日韩综合 | 日批毛片| 徐锦江一级淫片免费看 | 日韩视频在线一区 | 91精品视频观看 | 成人午夜精品 | 婷婷五月在线视频 | 99久久亚洲精品 | 中文在线字幕免费观看电 | 国产色网站 | 青青草亚洲 | 五月婷婷激情网 | 国产又大又黄又粗 | 亚洲一区二区高清 | 特级av| 国产成人av大片 | √资源天堂中文在线 | www视频在线免费观看 | 一区二区国产精品视频 | 亚洲成人播放器 | 亚洲wwwwww| 日韩欧美亚洲精品 | 天天添天天操 | 午夜精品在线播放 | 国产99久久久国产精品免费看 | 欧美在线看 | 九七精品 | 久久92| 亚洲91网 | 亚洲男人的天堂在线 | www.99色| 亚洲永久精品ww.7491进入 | 都市激情 亚洲 | 亚洲成人看片 | 91亚洲国产成人久久精品麻豆 | 欧美日日夜夜 | 最近中文字幕日本 | 在线精品国产一区二区三区 | 成人黄色在线免费观看 | 精品动漫一区 | 91在线观看欧美日韩 | 成人女同在线观看 | 夜夜夜夜骑| 91精品国| 蜜臀久久99精品久久久 | 日韩不卡高清 | 亚洲一区二区三区综合 | 色呦呦中文字幕 | 日韩欧美福利 | 91人人草| 神马久久久久久久久 | 日韩黄色免费视频 | 久久99精品国产 | 亚洲人成网77777 | 男人天堂怡红院 | 亚洲国产看片 | 久久久久99精品 | av大片免费在线观看 | 日韩精品视频免费在线观看 | 国产精品久久777777毛茸茸 | 国产精品永久免费视频 | 国产农村妇女毛片精品久久麻豆 | 国产三级国产精品 | 久久久综合视频 | 国内91视频| 欧美日韩操 | 中文字幕永久在线视频 | 日本色婷婷 | 黄色xxxx | av网站地址| 亚洲情se| 狠狠干少妇 | 五月天开心激情 | 国产老妇av | 重口味av | 伊人国产女 | 欧美日韩不卡合集视频 | 污污网站免费在线观看 | 国产精品你懂的 | 六月丁香综合 | 久久露脸视频 | 一色桃子juy758在线播放 | 三级黄色片免费 | 人人爽人人草 | 看全色黄大色黄大片女图片第一次 | 欧美成人tv| 午夜色影院 | 亚洲欧美日韩在线播放 | aaa午夜| 黄色污污视频 | 国产美女自拍视频 | 91麻豆免费看 | 黄av色| 天天操天天曰 | 综合一区二区三区 | 久久人人视频 | 先锋影音一区二区 | 热热色av| 污视频在线免费观看 | 欧美伦理一区二区 | 一级少妇精品久久久久久久 | 成人久久网站 | 91欧美视频| 日本丰满少妇做爰爽爽 | 久久久久久a亚洲欧洲av | 毛片最新网址 | 色久视频 | 91国产在线播放 | 日本高清不卡二区 | www.日本黄| 中文在线永久免费观看 | 人人人超碰| 日本午夜免费 | 黄色小说网站在线观看 | 日本99视频 | 强开乳罩摸双乳吃奶羞羞www | 欧美成年人 | 天堂在线国产 | 亚洲揄拍窥拍久久国产自揄拍 | 国产专区在线 | 久久精品夜 | 美女一区二区三区 | 成人毛片一区二区三区 | 精品美女久久久 | 99热在线只有精品 | 在线黄色观看 | 自拍偷拍第一页 | 黄色1级毛片 | 久久丫精品 | 国产在线国偷精品产拍 | 日韩一区二区不卡 | av在线男人天堂 | 日美女网站 | 粉嫩久久99精品久久久久久夜 | 欧美日韩国产片 | 中文字幕日韩在线视频 | 在线亚洲自拍 | 最近中文字幕在线播放中 | av毛片不卡| 黑人巨大精品 | 久久久久亚洲视频 | 亚洲九区 | 成人短视频在线免费观看 | 69福利网 | 天天射天天操天天干 | 国产黄a三级三级看三级 | 动漫av一区二区三区 | 超碰免费97 | 午夜成人在线视频 | 中文日韩av | 一级在线播放 | 日韩精品在线看 | 天天精品视频 | 亚洲香蕉久久 | h网址在线观看 | 日韩欧美亚洲在线 | 天天干天天摸天天操 | 国产老头老太作爱视频 | 日本少妇与黑人 | 国产大片中文字幕 | 欧美亚洲视频在线观看 | 午夜宅男影院 | 91色香视频 | 91在线精品一区二区 | 91片黄在线观看喷潮 | 激情五月综合网 | 中文字幕一区二区三区乱码不卡 | 亚洲精品6 | 毛片在线免费观看视频 | 中文字幕日产乱码中 | 伊人久久大香线蕉成人综合网 | 久久成人久久爱 | 日本在线视频不卡 | 国产精品第八页 | 日本在线视频免费观看 | 成人免费网站视频 | 欧美资源在线观看 | 78日本xxxxxxxxx59 黄色污在线观看 | 久久久久久久久久久免费av | 自拍av在线| 污视频网站在线 | 成人看片黄a免费看视频 | 婷婷色在线 | 亚洲欧洲av| 人人干超碰 | 国产特级毛片aaaaaa | 亚洲精品男同 | 在线久热 | 日韩和一区二区 | 国产 中文 字幕 日韩 在线 | 朝桐光一区二区 | 国产女女调教女同 | 国产在线一区二区三区 | 成人免费视屏 | 草草在线观看 | 亚洲男人天堂网站 | 私库av在线 | 欧美精品成人久久 | 精品国产色| 国产一级片一区二区三区 | 在线观看视频你懂得 | 96在线视频 | 日韩精品一区二区不卡 | 日韩一级黄色片 | 欧美黄色三级视频 | 香蕉钻洞视频 | 亚洲精品网站在线播放gif | 欧美大片免费 | 很黄很污的视频网站 | 欧美理论在线观看 | 一区二区三区播放 | 国产精品福利在线 | 国产成人高清成人av片在线看 | 奇米色影视 | 亚洲图片小说视频 | 欧美日韩高清在线观看 | 综合av一区| www.色综合.com| 一级片网站视频 | 久久综合久久鬼色 | 日本久久综合网 | 日b在线观看 | 3d动漫啪啪精品一区二区中文字幕 | 国产又爽又黄又嫩又猛又粗 | 成人高潮片免费网站 | 欧美成人中文字幕 | 亚洲日本在线观看视频 | 四季av一区二区凹凸精品 | 国产一区二区视频网站 | 贵族女沦为官妓h呻吟 | 午夜xxxx | 亚州中文| 日韩一区二区三区精品 | 91高清免费视频 | 影音先锋成人网 | 超在线视频 | 色女仆影院 | 欧美亚洲专区 | 国产精品第四页 | 亚洲热久久 | 久一久久 | av在线播放一区 | 亚洲成人精品在线 | 亚洲视频欧洲视频 | 在线观看一二三区 | 亚洲自拍偷拍专区 | 国产在线视频卡一卡二 | 亚洲狠| 亚洲25p| 男人懂得网站 | 四虎毛片| 男女网站在线观看 | 日韩国产在线播放 | 色原网| 精品久久精品久久 | 亚洲视频精品在线 | 国产毛片一区二区三区va在线 | 日本久久网站 | 日韩在线视频观看 | 免费视频久久久 | 中文字幕在线播放视频 | 国产网站视频 | 亚洲国产精品自拍 | 夜夜看| 日韩久久中文字幕 | 成人性生活免费视频 | 国产草逼视频 | 免费在线看黄网站 | 99久久香蕉 | 久久久综合久久 | 岛国av中文字幕 | 国产精品伊人久久 | 毛片中文字幕 | 99riav视频| 日本在线观看免费 | 做爰无遮挡三级 | javxxx| 人人人超碰| 婷婷久草 | 日韩欧美一区二区三区久久婷婷 | 国产区在线观看视频 | 色交视频 | 另类视频在线观看+1080p | 91精品91| 91传媒在线视频 | 久久成人在线视频 | 中文毛片无遮挡高潮免费 | 午夜影院视频 | 国产东北真实交换多p免视频 | 一区二区日韩精品 | 天天爽夜夜操 | 成人精品鲁一区一区二区 | 婷婷人体| 日本一区二区视频在线 | 久久久在线免费观看 | 亚洲干 | 国产色在线 | 亚洲综合p| 五月婷婷在线视频 | 国产大片在线观看 | 日韩精品xxx | 欧美成人一区二区三区片免费 | 男女污视频 | 他趴在我两腿中间添得好爽在线看 | av一区二区免费 | 成人一级片在线观看 | 亚洲一区精品在线观看 | 五月婷婷深深爱 | 最新日本中文字幕 | 国产国拍亚洲精品av | 国产一级在线观看视频 | 久草国产精品视频 | 亚洲国产一区二区a毛片 | 国产一区二区三区探花 | 在线国产福利 | 日韩成人精品在线观看 | 久久国产影院 | 激情拍拍 | 精品久久中文字幕97 | 国产日韩欧美综合 | 依人在线观看 | 日韩免费在线视频观看 | 色婷婷国产 | 亚洲精品免费在线观看 | 午夜久久久久久 | 亚洲视频二区 | 国产乱色精品成人免费视频 | 日韩欧美色 | 成人av视屏 | 亚州一区二区 | 亚洲精品美女在线观看 | 免费在线观看的av | 99sao| 亚洲综合图色 | 日韩videos| 日韩视频精品 | 啪啪五月天 | 欧美影院一区二区 | 久久久久久久久久一级 | 天天干在线观看 | 成人午夜免费在线观看 | 日日躁夜夜躁白天躁晚上躁91 | 丁香网五月天 | 国产精品久久久久久久久久免费 | 在线观看成人免费视频 | 亚洲视频中文字幕 | 综合精品视频 | 中文字幕15页| 干爹你真棒插曲mv在线观看 | 成人在线一区二区 | 青草青在线 | 日韩极品在线 | 午夜精品久久久久久久96蜜桃 | 久久免费少妇做爰 | 手机看片国产1024 | 国产亚洲不卡 | 福利视频午夜 | 成年人在线视频 | 亚洲精品视 | 亚洲精品天天 | 国产16处破外女视频在线 | 国产精品91在线 | jizz中国女人高潮 | 久久久久久久国产 | 日韩一区二区三区四区 | 日日夜夜爱 | 午夜影院h | 337p日本欧洲亚洲鲁鲁 | 日本精品黄 | 不卡视频在线 | 91.xxx.高清在线 | 国产在线自 | 国产亚洲综合一区二区 | v8888av| 成人小视频在线观看 | 综合激情网 | 18资源在线www免费 | 蜜臀av一区二区 | 五月天激情开心网 | 国产传媒视频 | 日韩成人激情视频 | 国产伦乱视频 | 超碰97人人爱 | 成人国产| 成人日b视频 | 精品乱子伦一区二区三区 | 欧美春色| 久久亚洲影视 | 一级性生活毛片 | 欧美视频一区二区 | 自拍偷拍国内 | 亚洲欧洲中文字幕 | 色香色香欲天天天影视综合网 | 综合色播 | 国产日本一区二区三区 | 男女视频久久 | 在线观看波多野结衣 | 国产视频精品视频 | av大片免费观看 | 一区二区三区精 | 国产又白又嫩又爽又黄 | 黄色在线观看视频 | 亚洲国产字幕 | www.久久综合 |