1. 程式人生 > 其它 >學習Kotlin之泛型和委託

學習Kotlin之泛型和委託

主從複製

主從複製,是指將一臺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,並完成一次完全同步。