學習Kotlin之泛型和委託
阿新 • • 發佈:2022-03-13
主從複製
主從複製,是指將一臺Redis伺服器的資料,複製到具他的Redis伺服器。前者稱為主節點(master/leacer),後者稱為從節點(slave/fallower);資料的複製是單向的,只能由主節點到從節點。Master以寫為主,Slave以讀為主。
預設情況下,每臺Redis伺服器都是主節點;且一個主節點可以有多個從節點(或沒有從節點),但一個從節點只能有一個主節點。主從複製的作用主要包括:
- 資料冗餘∶主從複製實現了資料的熱備份,是持久化之外的一種資料冗餘方式。
- 故障恢復∶當主節點出現問題時,可以由從節點提供服務,實現快速的故障恢復;實際上是一種服務的冗餘。
- 負載均衡︰在主從複製的基礎上,配合讀寫分離,可以由主節點提供寫服務,由從節點提供讀服務(即寫Redis資料時應用連線主節點,讀Redis資料時應用連線從節點),分擔伺服器負載;尤其是在寫少讀多的場景下,通過多個從節點分擔讀負載,可以大大提高Redis伺服器的併發量。
- 高可用叢集︰除了上述作用以外,主從複製還是哨兵和叢集能夠實施的基礎,因此說主從複製是Redis高可用的基礎。
一般來說,要將Redis運用於工程專案中,只使用一臺Redis是萬萬不能的,原因如下
- 從結構上,單個Redis伺服器會發生單點故障,並且一臺伺服器需要處理所有的請求負載,壓力較大;
- 從容量上,單個Redis伺服器記憶體容量有限,就算一臺Redis伺服器記憶體容量為256G,也不能將所有記憶體用作Redis儲存記憶體,一般來說,單臺Redis最大使用記憶體不應該超過20G。
環境配置
準備兩臺redis伺服器,mater和slave。(最常見的還是一主二從)
只配置從庫,不用配置主庫!預設情況下每臺redis都是主節點 。
>info replication
# Replication
role:master #角色
connected_slaves:0 #從節點數量
master_failover_state:no-failover
master_replid:e7b46e93f77ecf18c44d6630d9b08cb9cabe9cb6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset: 0
repl_backlog_histlen:0
#slave節點需要設定主機密碼
masterauth "1234567
配置主從
兩個節點分別開啟redis
#slave節點輸入該命令:
SLAVEOF 192.168.200.22 6379 #臨時繫結主機
#檢視主機的replication
# Replication
role:master
connected_slaves:1 #1個從節點
slave0:ip=192.168.200.23,port=6379,state=online,offset=14,lag=0
master_failover_state:no-failover
master_replid:5d91c62400c1dafd2a153811f5f9ef43ed58666b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
#檢視從機的replication
127.0.0.1:6379> info replication
# Replication
role:slave
master_host:192.168.200.22
master_port:6379
master_link_status:up #狀態 開啟
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_read_repl_offset:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:5d91c62400c1dafd2a153811f5f9ef43ed58666b
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:0
SLAVE ON ONE #變回主機
在配置檔案中設定replicaof 即可永久繫結主機,將該機器設定為從機。
replicaof 192.168.200.22 6379
主機能寫和讀,從機只能讀
主機斷開連線,從機依舊連線到主機,但是沒有寫操作,主機如果回來了,從機依然可以直接獲取到主機寫的資訊。並且如果沒做哨兵機制,是無法篡位做主機的。
Slave啟動成功連線到master後會傳送一個sync命令
Master接到命令,啟動後臺的存檔程序,同時收集所有接收到的用於修改資料集命令,在後臺程序執行完畢之後,master將傳送整個資料檔案到slave,並完成一次完全同步。