雖然後臺使用了讀寫分離技術,能夠在一定程度上抗擊高併發,但是如果併發量特別巨大時,主資料庫不能同時處理高併發的請求,這時資料庫容易宕機. 問題: 現在的問題是如何既能保證資料庫正常運行,又能實現用戶數據的入庫操作? 解決方案: 引入rabbitMQ技術: 說明: 當資料庫的訪問壓力過載時,這時會將過 ...
雖然後臺使用了讀寫分離技術,能夠在一定程度上抗擊高併發,但是如果併發量特別巨大時,主資料庫不能同時處理高併發的請求,這時資料庫容易宕機.
問題:
現在的問題是如何既能保證資料庫正常運行,又能實現用戶數據的入庫操作?
解決方案:
引入rabbitMQ技術:
說明:
當資料庫的訪問壓力過載時,這時會將過載以後的數據先保存到rabbitMQ中.其中的數據結構是隊列的形式,先進先出.這時資料庫從隊列中取數據執行.一直到隊列中的數據全部操作完成為止.
RabbitMQ就是消息的中間件.
RabbitMQ介紹:
RabbitMQ性能分析:
1.MSMQ:是微軟的產品 應用於.net框架
2.ActiveMQ:是apache的產品 做業務用圖廣泛
3.RabbitQM:是愛立信的產品(早期手機生產廠商)基於erlang語言(函數式編程大數據 scala語言)
4.ZeroMQ:大數據中應用廣泛,缺點容易丟失數據.但是業務系統中使用率較少
5.KafkaMQ:大數據項目中使用,50萬/秒 現在主流
5.RabbitMQ環境搭建:
1.配置JDK:
2.固定虛擬機IP地址:
3.連接虛擬機:
編輯文件跳轉路徑:
Vim go
Cd /usr/local/src
2.安裝rabbitMQ:
1.新建文件rabbitmq
/usr/local/src/rabbitmq
2.將安裝文件導入
3.安裝rabbitMQ
4.開啟遠程用戶訪問:
將文件複製到指定目錄下:
cp /usr/share/doc/rabbitmq-server-3.6.1/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
修改新複製的文件64行
1.將%%去掉
2.將,號去掉
修改為:
5.開啟rabbitMQ:
執行命令:
rabbitmq-plugins enable rabbitmq_management
表示啟動成功
6.開放埠15672和5672
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT
訪問rabbitMQ的控制台
iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
程式連接rabbitMQ的埠
或者關閉防火牆
7.啟動/停止服務
service rabbitmq-server start 啟動
service rabbitmq-server stop 停止
service rabbitmq-server restart 重啟
8.遠程登錄:
訪問:
用戶名和密碼都是guest
9.視圖解析:
10.建立管理員:
11.構建虛擬主機:
11.構建虛擬主機:
6.rabbitMQ的工作模式:
1.簡單模式:
p:proverder 生產者
c:consumer 消費者
紅色部分:隊列 先進先出
原理說明:
生產者負責向隊列中添加消息.消費者負責消費隊列中的消息.
消費者通過監聽器,實時監控消息隊列.如果消息隊列中有消息則消費,如果沒有消息 則等待消息.
2.測試代碼:
1.定義Connection
1.1.定義生產者
3.定義消費者:
2.工作模式:
原理說明:
生產者為消息隊列中生產消息,多個消費者爭搶執行權利,誰搶到誰執行.
實用場景:秒殺業務 搶紅包等
測試代碼:
3.發佈訂閱模式:
x:exchange 交換機
P:表示生產者
C1-2:表示多個消費者
原理說明:
當生產者生產消息後,先將消息發往交換機.交換機再將消息發往訂閱了當前消息的隊列,再次有各個隊列的消費者執行.
類似於 廣播
定義消費者::
4.路由模式:
x:表示交換機 type=direct 表示路由
路由模式中,需要定義路由key
原理說明:
1.當生產者發佈消息時,會定義指定的路由key 例如 key:error
2.這時交換機會根據路由key發往滿足條件的隊列中.如果隊列中沒有符合條件的路由key將不能執行該消息.
5.主題模式:
Type:topic 表示主題模式
- * (star) can substitute for exactly one word.
- # (hash) can substitute for zero or more words.
- 有坑 效果一樣
7.訂單實現RabbitMQ
1.引入配置文件:
classpath:jdbc.propertiesclasspath:env.properties /hp月n、 口山閏廷比二曰站叩四瞿二月當“習 classpath:rabbitmq.properties IUe> /value>" v:shapes="圖片_x0020_42">
2.引入生產者
1.引入配置文件
2.定義發送端
3.發送端代碼
通過代碼相rabbitmq中發送數據
4.定義接收端:
引入配置文件
5.定義接收端:
6.測試成功
源碼請加我QQ :1051980588