c#入門-深入瞭解string
阿新 • • 發佈:2021-01-09
為什麼要有叢集
- 之前我們已經講了主從的概念,一主可以多從,如果同時的訪問量過大(1000w),主服務肯定就會掛掉,資料服務就掛掉了或者發生自然災難
- 大公司都會有很多的伺服器(華東地區、華南地區、華中地區、華北地區、西北地區、西南地區、東北地區、臺港澳地區機房)
叢集的概念:
叢集是一組相互獨立的、通過高速網路互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與叢集相互作用時,叢集像是一個獨立的伺服器。叢集配置是用於提高可用性和可縮放性。
當請求到來首先由負載均衡伺服器處理,把請求轉發到另外的一臺伺服器上。
redis叢集實際上就是存在多組的主從伺服器,共同協調工作
redis叢集
- 軟體層面:只有一臺電腦,在這一臺電腦上啟動了多個redis服務。
- 硬體層面:存在多臺實體的電腦,每臺電腦上都啟動了一個redis或者多個redis服務。
搭建叢集:
- 當前擁有兩臺主機172.16.179.130、172.16.179.131,這⾥的IP在使⽤時要改為實際值,
- 如果沒有多臺主機,可以使用一臺主機不同埠模擬多個伺服器
1. 啟動多個redis服務
1.1 配置檔案準備:
redis配置檔案.conf舉例如下:
# 埠 port 7000 # IP bind 172.16.179.130 # 是否以守護程序(後臺)方式執行 daemonize yes pidfile 7000.pid # 是否使用叢集 cluster-enabled yes cluster-config-file 7000_node.conf # 叢集超時時間 cluster-node-timeout15000 # 備份相關配置 appendonly yes
為不同的redis服務定義上述的配置檔案,同一個主機可以只修改上述配置中的埠號(將檔案中所有7000換成其他值),即可生成多個配置檔案
1.2 使用上面的配置檔案啟動多個redis 服務:
redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf
2.基於多個redis服務,建立叢集
- redis的安裝包中包含了redis-trib.rb,⽤於建立叢集
2.1 複製redis-trib.rb到/usr/local/bin/
sudo cp /usr/local/redis/src/redis-trib.rb /usr/local/bin/
2.2安裝ruby環境,因為redis-trib.rb是⽤ruby開發的
sudo apt-get install ruby
2.3 建立叢集
redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005
執⾏上⾯這個指令在某些機器上可能會報錯,主要原因是由於安裝的 ruby 不是最 新版本!,解決方法:天朝的防⽕牆導致⽆法下載最新版本,所以需要設定 gem 的源
-- 先檢視⾃⼰的 gem 源是什麼地址 gem source -l -- 如果是https://rubygems.org/ 就需要更換 -- 更換指令為 gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ -- 通過 gem 安裝 redis 的相關依賴 sudo gem install redis -- 然後重新執⾏指令 redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005
3.訪問叢集
redis-cli -h 192.168.1.102 -p 7000 -c
說明:新增 -c 選項連線叢集
結果:
liuxuelin@liuxuelin-virtual-machine:~/clustercfg$ redis-cli -h 192.168.1.102 -p 7000 -c 192.168.1.102:7000> set name abc -> Redirected to slot [5798] located at 192.168.1.102:7001 OK 192.168.1.102:7001> get name "abc" 192.168.1.102:7001>
說明:設定("name":"abc")時,叢集根據一定的演算法將鍵值對儲存至對應的伺服器,上面例子,連線的時埠7000的伺服器,而資料儲存到了7001伺服器