java提高之集羣概念

整理的不夠系統,需要之後再完善

1. zookeeper集羣

奇數個節點,原因:投票機制,選舉效率高

2. solrcloud

1. 概念

solrcloud是solr提供的分佈式搜索方案,需要大規模、容錯、分佈式索引和檢索能力時用solrCloud。搜索量很大,搜索請求併發很高時採用。

基於solr和zookeeper的分佈式搜索方案,主要思想是使用zookeeper作爲集羣的配置信息中心。

特色功能:

  1. 集中式的配置信息
  2. 自動容錯
  3. 近實時搜索
  4. 查詢時自動負載均衡

3. redis-cluster

1. 概念

爲何要搭建Redis集羣。Redis是在內存中保存數據的,而我們的電腦一般內存都不大,這也就意味着Redis不適合存儲大數據,適合存儲大數據的是Hadoop生態系統的Hbase或者是MogoDB。Redis更適合處理高併發,一臺設備的存儲能力是很有限的,但是多臺設備協同合作,就可以讓內存增大很多倍,這就需要用到集羣

redis 3.0之後版本支持redis-cluster集羣,它是Redis官方提出的解決方案,Redis-Cluster採用無中心結構,每個節點保存數據和整個集羣狀態,每個節點都和其他所有節點連接。其redis-cluster架構圖如下:

在這裏插入圖片描述

客戶端與 redis 節點直連,不需要中間 proxy 層.客戶端不需要連接集羣所有節點連接集羣中任何一個可用節點即可。

所有的 redis 節點彼此互聯(PING-PONG機制),內部使用二進制協議優化傳輸速度和帶寬。

2. 分佈式存儲機制-槽

redis-cluster 把所有的物理節點映射到[0-16383]slot 上,cluster 負責維護

Redis 集羣中內置了 16384 個哈希槽,當需要在 Redis 集羣中放置一個 key-value 時,redis 先對 key 使用 crc16 算法算出一個結果,然後把結果對 16384 求餘數,這樣每個key 都會對應一個編號在 0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點

例如三個節點:槽分佈的值如下:

SERVER1: 0-5460

SERVER2: 5461-10922

SERVER3: 10923-16383

3. 容錯機制-投票

選舉過程是集羣中所有master參與,如果半數以上master節點與故障節點通信超過(cluster-node-timeout),認爲該節點故障,自動觸發故障轉移操作. 故障節點對應的從節點自動升級爲主節點

什麼時候整個集羣不可用

如果集羣任意master掛掉,且當前master沒有slave.集羣進入fail狀態,也可以理解成集羣的slot映射[0-16383]不完成時進入fail狀態

在這裏插入圖片描述

其他概念

1. 反向代理

Reverse Proxy,以代理服務器來接收Internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給Internet上請求鏈接的客戶端,此時代理服務器對外表現爲一個反向代理服務器。

nginx主機修改nginx配置文件

upstream pinyougou-portal {
  server 192.168.25.141:8080;
}
server {
  listen	80;
  server_name www.pinyougou.com;
  
  location / {
  	proxy_pass http://pinyougou-portal;
  	index	index.html;
   }
}

2. 負載均衡

web工程 由nginx做反向代理實現負載均衡

服務工程 由zookeeper負責負載均衡

nginx配置

upstream pinyougou-portal {
  server 192.168.25.141:8080;
  server 192.168.25.141:8081;
  server 192.168.25.141:8082;
}
server {
  listen	80;
  server_name www.pinyougou.com;
  
  location / {
  	proxy_pass http://pinyougou-portal;
  	index	index.html;
   }
}

3. 高可用

nginx壓力很大,需要建立備份機,主機和備份機都運行高可用監控程序來監控對方的運行狀況。

keepalived就是集羣管理中保證集羣高可用的服務軟件,防止單點故障。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章