day74_淘淘商城專案_07_solrcloud搭建 + zookeeper叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記
課程計劃
- 1、solr叢集的搭建
- 2、使用solrJ管理solr叢集
- 3、把搜尋功能切換到solr叢集版
- 4、httpclient
- 5、全域性異常處理
1、什麼是SolrCloud
SolrCloud(solr 雲)是Solr提供的分散式搜尋方案
,當你需要大規模、容錯、分散式索引和檢索能力時使用 SolrCloud。當索引量很大,搜尋請求併發很高
,這時需要使用SolrCloud來滿足這些需求。
SolrCloud是基於Solr和Zookeeper的分散式搜尋方案,它的主要思想是使用Zookeeper作為叢集的配置資訊中心
。
Zookeeper它有幾個特色功能:
1)集中式的配置資訊(資料庫連線池的配置檔案,修改檔案不用重啟就可以生效)
2)自動容錯
3)近實時搜尋
4)查詢時自動負載均衡
2、Solr叢集的系統架構
詳解如下:
2.1、SolrCloud的物理結構
三個Solr例項(每個例項包括兩個Core),組成一個SolrCloud。
2.2、SolrCloud的邏輯結構
索引集合
包括兩個Shard(Shard1和Shard2),Shard1和Shard2分別由三個Core組成,其中一個Leader兩個Replication,Leader是由ZooKeeper選舉產生,zookeeper控制每個shard上三個Core的索引資料一致,解決高可用
問題。
使用者發起索引請求分別從Shard1和Shard2上獲取,解決高併發
問題。
2.2.1、Collection
Collection在SolrCloud叢集中是一個邏輯意義上的完整的索引結構
。它常常被劃分為一個或多個Shard(分片)
,它們使用相同的配置資訊。
比如:針對商品資訊搜尋可以建立一個Collection。
Collection = Shard1 + Shard2 + … + Shardx
2.2.2、Core
每個Core
是Solr中一個獨立執行單位,提供索引
和搜尋
服務。一個Shard需要由一個Core或多個Core組成。由於Collection由多個Shard組成所以Collection一般由多個Core組成。
2.2.3、Master或Slave
Master是Master-Slave結構中的主結點(通常說主伺服器),Slave是Master-Slave結構中的從結點(通常說從伺服器或備伺服器)。 同一個Shard下Master和Slave儲存的資料是一致的,這是為了達到高可用
目的。
2.2.4、Shard
Collection的邏輯分片
。每個Shard被化成一個或者多個Replication,通過選舉確定哪個是Leader。
2.3、我們需要實現簡單的Solr叢集架構
ZooKeeper作為叢集的管理工具。
1、叢集管理:容錯、負載均衡。
2、配置檔案的集中管理。
3、叢集的入口。
需要實現ZooKeeper高可用。需要搭建叢集。建議是奇數節點。需要三個ZooKeeper伺服器。
搭建Solr叢集至少需要7臺伺服器。
ZooKeeper有自己的
投票機制
,類似於Redis,需要半數以上的節點判斷其他的節點掛掉,才能算掛掉。
搭建
偽分散式
:
需要三個ZooKeeper節點
需要四個Tomcat節點。
建議虛擬機器的記憶體1G以上。
3、環境準備
Win10
CentOS 7.5
jdk-7u80-linux-x64.tar.gz
apache-tomcat-7.0.47.tar.gz
zookeeper-3.4.6.tar.gz
solr-4.10.3.tgz.gz
4、安裝步驟
4.1、ZooKeeper叢集的搭建
第一步:Linux上需要安裝jdk環境。(已安好jdk1.7)
第二步:把zookeeper的壓縮包上傳到Linux伺服器。
第三步:解壓縮後刪除壓縮包。
[[email protected] ~]# pwd
/root
[[email protected] ~]# tar zxvf zookeeper-3.4.6.tar.gz
[[email protected] ~]# rm -rf zookeeper-3.4.6.tar.gz
第四步:把zookeeper複製三份。
[[email protected] ~]# mkdir /usr/local/solr-cloud
[[email protected] ~]# cp -r zookeeper-3.4.6/ /usr/local/solr-cloud/zookeeper01
[[email protected] ~]# cp -r zookeeper-3.4.6/ /usr/local/solr-cloud/zookeeper02
[[email protected] ~]# cp -r zookeeper-3.4.6/ /usr/local/solr-cloud/zookeeper03
第五步:在每個zookeeper目錄下建立一個data目錄。
第六步:在data目錄下建立一個myid檔案,檔名就叫做“myid”。內容就是每個例項的id。例如1、2、3。
[[email protected] ~]# cd /usr/local/solr-cloud/
[[email protected] solr-cloud]# ll
總用量 12
drwxr-xr-x. 10 root root 4096 11月 23 16:59 zookeeper01
drwxr-xr-x. 10 root root 4096 11月 23 16:59 zookeeper02
drwxr-xr-x. 10 root root 4096 11月 23 16:59 zookeeper03
[[email protected] solr-cloud]# cd zookeeper01
[[email protected] zookeeper01]# mkdir data
[[email protected] zookeeper01]# cd data/
[[email protected] data]# echo 1 >> myid
[[email protected] data]# ll
總用量 4
-rw-r--r--. 1 root root 2 11月 23 17:05 myid
[[email protected] data]# cat myid
1
[[email protected] data]#
其他zookeeper目錄同理。注意:myid中的id要和伺服器的標識對應起來。
注意:命令:touch myid
是建立一個檔案myid,但是不寫入內容;echo 1 >> myid
不僅建立一個檔案myid,還寫入內容1。
第七步:修改配置檔案。把每一個zookeeper下的conf目錄下的zoo_sample.cfg檔案改名為zoo.cfg。
在zookeeper01目錄下的配置如下:(注意:配置的埠都不能衝突
)
[[email protected] conf]# pwd
/usr/local/solr-cloud/zookeeper01/conf
[[email protected] conf]# mv zoo_sample.cfg zoo.cfg
[[email protected] conf]# vim zoo.cfg
配置如下圖所示:
server.1 這個1是伺服器的標識也可以是其他的數字, 表示這個是第幾號伺服器,用來標識伺服器,這個標識要寫到快照目錄下面myid檔案裡。
同理在zookeeper02、zookeeper03下配置,
注意埠不能衝突
。
/usr/local/solr-cloud/zookeeper01/data/
server.1=192.168.25.154:2881:3881
server.2=192.168.25.154:2882:3882
server.3=192.168.25.154:2883:3883
第八步:啟動每個zookeeper例項。
a) 建立啟動例項的批處理檔案:在solr-cloud下建立,命令如下:
[[email protected] solr-cloud]# vim zookeeper_start_all.sh
b) 使用vim編輯內容如下:
cd /usr/local/solr-cloud/zookeeper01/bin
./zkServer.sh start
cd /usr/local/solr-cloud/zookeeper02/bin
./zkServer.sh start
cd /usr/local/solr-cloud/zookeeper03/bin
./zkServer.sh start
按ESC
輸入:wq
儲存退出。
修改檔案可執行許可權:
[[email protected] solr-cloud]# chmod u+x zookeeper_start_all.sh
c) 啟動所有zookeeper例項
[[email protected] solr-cloud]# ./zookeeper_start_all.sh
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] solr-cloud]#
檢視zookeeper的狀態:
[[email protected] solr-cloud]# zookeeper01/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
[[email protected] solr-cloud]#
明明已經啟動了,但是zookeeper的狀態卻是沒有啟動,為什麼呢?
原因是:本博主的是CentOS7,防火牆使用的是firewalld,我們使用修改配置檔案的方式來新增用到的埠(修改後需要重啟firewalld服務):
[[email protected] zones]# pwd
/etc/firewalld/zones
[[email protected] zones]# vim public.xml
新增內容如下:
儲存退出後,然後我們重啟firewalld服務:
[[email protected] zones]# service firewalld restart
Redirecting to /bin/systemctl restart firewalld.service
[[email protected] zones]#
其實我們在啟動所有zookeeper例項之前還可以關閉虛擬機器的防火牆
,但是生產環境中不建議這麼做
。
systemctl stop firewalld.service #停止firewall服務
systemctl disable firewalld.service #禁止firewall服務開機啟動
firewall-cmd --state #檢視預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running)
d) 再次啟動所有zookeeper例項,檢視zookeeper的狀態:
效果如下:
[[email protected] solr-cloud]# zookeeper01/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Mode: follower
[[email protected] solr-cloud]# zookeeper02/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper02/bin/../conf/zoo.cfg
Mode: follower
[[email protected] solr-cloud]# zookeeper03/bin/zkServer.sh status
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper03/bin/../conf/zoo.cfg
Mode: leader
4.2、Solr叢集的搭建
第一步:建立四個tomcat例項。每個tomcat執行在不同的埠。8180、8280、8380、8480。
[[email protected] ~]# ll
總用量 4
drwxr-xr-x. 9 root root 160 11月 20 17:09 apache-tomcat-7.0.47
drwxr-xr-x. 4 root root 225 11月 20 19:23 IK Analyzer 2012FF_hf1
drwxr-xr-x. 8 root root 218 11月 20 17:07 solr-4.10.3
drwxr-xr-x. 10 bruce bruce 4096 2月 20 2014 zookeeper-3.4.6
[[email protected] ~]# cp -r apache-tomcat-7.0.47/ /usr/local/solr-cloud/tomcat01
[[email protected] ~]# cp -r apache-tomcat-7.0.47/ /usr/local/solr-cloud/tomcat02
[[email protected] ~]# cp -r apache-tomcat-7.0.47/ /usr/local/solr-cloud/tomcat03
[[email protected] ~]# cp -r apache-tomcat-7.0.47/ /usr/local/solr-cloud/tomcat04
[[email protected] ~]# vim /usr/local/solr-cloud/tomcat01/conf/server.xml
修改內容為:8085-->8105、8080-->8180、8009-->8109
修改內容為:8085-->8205、8080-->8280、8009-->8209
修改內容為:8085-->8305、8080-->8380、
相關推薦
day74_淘淘商城專案_07_solrcloud搭建 + zookeeper叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記
課程計劃
1、solr叢集的搭建
2、使用solrJ管理solr叢集
3、把搜尋功能切換到solr叢集版
4、httpclient
5、全域性異常處理
1、什麼是SolrCloud
SolrCloud(solr 雲)是Solr提供的分散式搜尋
day74_淘淘商城專案_07_ zookeeper叢集搭建 + solrcloud叢集搭建 + 搜尋功能切換到叢集版 + httpclient學習 + 全域性異常處理器 + 附錄_匠心筆記
淘淘商城專案_07
1、什麼是SolrCloud
2、Solr叢集的系統架構
2.1、SolrCloud的物理結構
2.2、SolrCloud的邏輯結構
2.2.1、Collection
day79_淘淘商城專案_12_購物車流程 + 商城購物車系統的搭建 + 商城購物車系統的實現分析 + 購物車實現增刪改查_匠心筆記
課程計劃
1、購物車的流程
2、購物車的實現
a) 登入狀態下的購物車實現
b) 未登入狀態下的購物車實現
1、購物車流程
1.1、以前的購物車流程
使用者將商品新增到購物車時,判斷使用者是否登入,如果已經登入將購物車放入se
day73_淘淘商城專案_06_solr索引庫搭建 + solr搜尋功能實現 + 圖片顯示等問題解決_匠心筆記
課程計劃
第六天:
1、搜尋工程的搭建
2、linux下solr服務的搭建
3、測試使用solrJ管理索引庫
4、把商品資料匯入到索引庫中(後臺功能)
5、商品搜尋功能實現(前臺功能)
1、搜尋工程的搭建
要實現搜尋功能,需要搭建solr服務、搜尋服務工程、搜尋系統(表
day80_淘淘商城專案_13_訂單系統搭建 + 展示訂單確認頁面 + 使用者身份認證(SpringMVC攔截器) + 實現提交訂單功能_匠心筆記
淘淘商城專案_13
1、訂單系統搭建
1.1、功能分析
1.2、工程搭建
1.2.1、建立訂單服務層工程
1.2.2、建立訂單表現層工程
2、展示訂單確認頁面
day79_淘淘商城專案_12_購物車流程 + 商城購物車系統的搭建 + 商城購物車系統的實現分析(cookie+redis方案) + 購物車實現增刪改查_匠心筆記
淘淘商城專案_12
1、購物車流程
1.1、以前的購物車流程
1.2、現在的購物車流程
2、商城購物車系統的搭建
2.1、購物車系統的架構
2.2、服務層工程搭建
day77_淘淘商城專案_10_ Linux下的Nginx代理詳解(配置虛擬主機+實現反向代理+實現負載均衡+高可用) + 單點登入系統工程搭建 + SSO系統介面文件講解_匠心筆記
淘淘商城專案_10
1、目前訪問系統使用的方式存在的問題
2、什麼是nginx
3、nginx的應用場景
4、nginx的安裝
4.1、要求的安裝環境
4.2、安裝步驟
4.3、啟動nginx
day73_淘淘商城專案_06_搜尋工程的搭建 + linux下solr索引庫的搭建 + 把商品資料匯入到索引庫中(後臺) + 商品搜尋功能實現(前臺) + 圖片顯示等問題解決_匠心筆記
淘淘商城專案_06
1、搜尋工程的搭建
1.1、Solr服務搭建
1.1.1、solr的環境
1.1.2、solr的搭建步驟
1.1.3、solr的使用
1.2、配置
day72_淘淘商城專案_05_首頁輪播圖顯示實現 + redis的安裝及使用 + redis叢集環境搭建 + redis實現快取 + 快取同步_匠心筆記
淘淘商城專案_05
1、首頁輪播圖的展示
1.1、功能分析
1.2、Dao層
1.3、Service層
1.3.1、釋出服務
1.4、表現層
1.
day71_淘淘商城專案_04_入口網站介紹 + 商城首頁搭建 + CMS內容管理系統的建立 + CMS內容管理系統的實現_匠心筆記
淘淘商城專案_04
1、門戶(前臺)系統的搭建
1.1、什麼是門戶系統
1.2、系統架構
1.3、搭建taotao-portal-web工程
1.3.1、建立Maven工程
1.3
day69_淘淘商城專案_02_dubbo介紹 + dubbo框架整合 + zookeeper + 商品列表查詢實現 + 分頁 + 逆向工程_匠心筆記
淘淘商城專案_02
1、功能分析
1.1、後臺系統所用的技術
1.2、建立資料庫
1.3、Mybatis逆向工程
1.4、系統間通訊問題
1.4.1、分析
day68_淘淘商城專案_01_電商介紹 + 網際網路術語 + SOA + 分散式 + 叢集介紹 + 環境配置 + 框架搭建_匠心筆記
淘淘商城專案_01
1、電商行業的背景介紹--電子商務
1.1、11.11
1.2、電商行業技術特點
2、淘淘商城的系統架構
2.1、淘淘商城介紹
2.2、功能介紹
2
淘淘商城專案_同步索引庫問題分析 + ActiveMQ介紹/安裝/使用 + ActiveMQ整合spring + 使用ActiveMQ實現新增商品後同步索引庫_匠心筆記
文章目錄
1、同步索引庫問題分析
2、ActiveM的介紹
2.1、什麼是ActiveMQ
2.2、ActiveMQ的訊息形式
3、ActiveMQ的安裝
3.1、安裝環境
3.2、安裝步驟
day81_淘淘商城專案_14_專案釋出 + Linux下安裝mysql + tomcat熱部署 + 資料庫分庫分表 + Mycat學習_匠心筆記
第十四天:
1、Linux上mysql的安裝
2、系統的部署
3、mycat的介紹
4、專案總結
5、面試中的問題
1、開發流程淺解
2、專案釋出前的準備
1、測試 a) 本地單元測試 b) 測試環境測試(1,2,3,4,5) c) 使用
day82_淘淘商城_15_專案的總結 + 專案中的問題_匠心筆記
專案的總結
第一天:
學習電商行業的背景,電商模式:B2B、B2C、B2B2C、O2O。分散式,叢集的理解,系統的架構,基於SSO的架構。使用Maven搭建後臺工程,及SVN的使用。
第二天:
dubbo的學習和使用,系統和系統之間通訊的中介軟體。webservice :系統之間通訊。應
day82_淘淘商城專案_15_專案總結 + 專案中的問題_匠心筆記
專案總結
第一天 1、電商行業的背景,b2b、b2c、b2b2c、c2c、o2o2。 2、系統的架構。基於SOA的架構。 3、工程搭建。使用maven管理工程。 4、svn的使用。
第二天 1、ssm框架整合。 2、使用dubbo進行通訊 1)服務提供者 2)服務消費者
day81_淘淘商城專案_14_專案釋出 + Linux下安裝mysql + tomcat熱部署 + 反向代理的配置 + 資料庫分庫分表 + Mycat學習_匠心筆記
淘淘商城專案_14
1、開發流程淺解
2、專案釋出前的準備
3、專案部署
3.1、Linux下安裝mysql
3.2、專案架構講解
3.3、系統功能介紹
3.4、網路拓撲圖
3.5
day78_淘淘商城專案_11_實現SSO系統的登入註冊功能 + 門戶首頁展示使用者名稱 + ajax請求跨域問題詳解_匠心筆記
淘淘商城專案_11
1、服務介面實現
1.1、檢查資料是否可用介面開發
1.1.1、功能分析
1.1.2、Dao
1.1.3、Service
1.1.4、釋出服務
day76_淘淘商城專案_09_商品詳情頁動態展示實現(jsp+redis) + FreeMarker模板引擎入門 + 商品詳情頁靜態化實現(Win版本的nginx作http伺服器)_匠心筆記
淘淘商城專案_09
1、商品詳情頁面展示,動態展示(jsp + redis)
1.1、工程搭建
1.1.1、pom檔案
1.1.2、框架整合
1.1.3、springmvc.xml
day75_淘淘商城專案_08_同步索引庫問題分析 + ActiveMQ介紹/安裝/使用 + ActiveMQ整合spring + 使用ActiveMQ實現新增商品後同步索引庫_匠心筆記
淘淘商城專案_08
1、同步索引庫問題分析
2、ActiveM的介紹
2.1、什麼是ActiveMQ
2.2、ActiveMQ的訊息形式
3、ActiveMQ的安裝
3.1、安裝環