Java之品优购部署_day01(8)
2.1 Redis-Cluster簡介
2.1.1 什么是 Redis-Cluster
為何要搭建 Redis 集群。Redis 是在內(nèi)存中保存數(shù)據(jù)的,而我們的電腦一般內(nèi)存都不大, 這也就意味著 Redis 不適合存儲大數(shù)據(jù),適合存儲大數(shù)據(jù)的是 Hadoop 生態(tài)系統(tǒng)的 Hbase 或者是 MogoDB。Redis 更適合處理高并發(fā),一臺設備的存儲能力是很有限的,但是多臺設備協(xié)同合作,就可以讓內(nèi)存增大很多倍,這就需要用到集群。
Redis 集群搭建的方式有多種,例如使用客戶端分片、Twemproxy、Codis 等,但從redis 3.0 之后版本支持 redis-cluster 集群,它是 Redis 官方提出的解決方案, Redis-Cluster 采用無中心結(jié)構(gòu),每個節(jié)點保存數(shù)據(jù)和整個集群狀態(tài),每個節(jié)點都和其他所有節(jié)點連接。其 redis-cluster 架構(gòu)圖如下:
客戶端與 redis 節(jié)點直連,不需要中間 proxy 層.客戶端不需要連接集群所有節(jié)點連接集群中任何一個可用節(jié)點即可。
所有的 redis 節(jié)點彼此互聯(lián)(PING-PONG 機制),內(nèi)部使用二進制協(xié)議優(yōu)化傳輸速度和帶
寬.
2.1.1 分布存儲機制-槽
(1) redis-cluster 把所有的物理節(jié)點映射到[0-16383]slot 上,cluster 負責維護
node<->slot<->value
(2) Redis 集群中內(nèi)置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結(jié)果,然后把結(jié)果對 16384 求余數(shù),這樣每個 key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據(jù)節(jié)點數(shù)量大致均等的將哈希槽映射到不同的節(jié)點。
例如三個節(jié)點:槽分布的值如下:
SERVER1:
0-5460
SERVER2:
5461-10922
SERVER3:
10923-16383
2.1.2 容錯機制-投票
(1)選舉過程是集群中所有 master 參與,如果半數(shù)以上 master 節(jié)點與故障節(jié)點通信超過(cluster-node-timeout),認為該節(jié)點故障,自動觸發(fā)故障轉(zhuǎn)移操作. 故障節(jié)點對應的從節(jié)點自動升級為主節(jié)點
(2)什么時候整個集群不可用(cluster_state:fail)?
如果集群任意 master 掛掉,且當前 master 沒有 slave.集群進入 fail 狀態(tài),也可以理解成集群的 slot 映射[0-16383]不完成時進入 fail 狀態(tài).
4.2 搭建 Redis-Cluster4.2.1 搭建要求
需要 6 臺 redis 服務器。搭建偽集群。需 要 6 個 redis 實 例 。
需要運行在不同的端口 7001-7006
4.2.2 準備工作
(1)安裝 gcc 【此步省略】
Redis 是 c 語言開發(fā)的。安裝 redis 需要 c 語言的編譯環(huán)境。如果沒有 gcc 需要在線安裝。
yum install gcc-c++
(2)使用 yum 命令安裝 ruby (我們需要使用 ruby 腳本來實現(xiàn)集群搭建)【此步省略】
yum install ruby
yum install rubygems
Ruby,一種簡單快捷的面向?qū)ο?#xff08;面向?qū)ο蟪绦蛟O計)腳本語言,在 20 世紀 90 年代由日本人松本行弘
(Yukihiro Matsumoto)開發(fā),遵守 GPL協(xié)議和 Ruby License。它的靈感與特性來自于 Perl、Smalltalk、Eiffel
Ada以及 Lisp語言。由 Ruby 語言本身還發(fā)展出了 JRuby(Java 平臺)、IronRuby(.NET平臺)等其
他平臺的 Ruby 語言替代品。Ruby 的作者于 1993 年 2 月 24 日開始編寫 Ruby,直至 1995 年 12 月才正
式公開發(fā)布于 f(j 新聞組)。因為 Perl 發(fā)音與 6 月誕生石 pear(l 珍珠)相同,因此 Ruby 以 7 月誕生石 ruby
file:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AB.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AC.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AD.tmp.png
Ruby,一種簡單快捷的面向?qū)ο?#xff08;面向?qū)ο蟪绦蛟O計)腳本語言,在 20 世紀 90 年代由日本人松本行弘
(Yukihiro Matsumoto)開發(fā),遵守 GPL協(xié)議和 Ruby License。它的靈感與特性來自于 Perl、Smalltalk、Eiffel
Ada以及 Lisp語言。由 Ruby 語言本身還發(fā)展出了 JRuby(Java 平臺)、IronRuby(.NET平臺)等其
他平臺的 Ruby 語言替代品。Ruby 的作者于 1993 年 2 月 24 日開始編寫 Ruby,直至 1995 年 12 月才正
式公開發(fā)布于 f(j 新聞組)。因為 Perl 發(fā)音與 6 月誕生石 pear(l 珍珠)相同,因此 Ruby 以 7 月誕生石 ruby
file:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71AE.tmp.pngfile:///C:\Users\user\AppData\Local\Temp\ksohtml\wps71BF.tmp.png(3)將 redis 源碼包上傳到 linux 系統(tǒng) ,解壓 redis 源碼包
(4)編譯 redis 源碼 ,進入 redis 源碼文件夾
make
看到以下輸出結(jié)果,表示編譯成功
(5)創(chuàng)建目錄/usr/local/redis-cluster 目錄 安裝 6 個 redis 實例,分別安裝在以下目錄
/usr/local/redis-cluster/redis-1
/usr/local/redis-cluster/redis-2
/usr/local/redis-cluster/redis-3
/usr/local/redis-cluster/redis-4
/usr/local/redis-cluster/redis-5
/usr/local/redis-cluster/redis-6
以第一個 redis 實例為例,命令如下
make install PREFIX=/usr/local/redis-cluster/redis-1
出現(xiàn)此提示表示成功,按此方法安裝其余 5 個 redis 實例
(6)復制配置文件 將 /redis-3.0.0/redis.conf 復制到 redis 下的 bin 目錄下
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-1/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-2/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-3/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-4/bin [root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-5/bin
[root@localhost redis-3.0.0]# cp redis.conf /usr/local/redis-cluster/redis-6/bin
轉(zhuǎn)載于:https://blog.51cto.com/13517854/2140237
總結(jié)
以上是生活随笔為你收集整理的Java之品优购部署_day01(8)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL通过添加索引解决线上数据库服务
- 下一篇: springmvc+mybatis+eh