天道不一定酬所有勤
但是,天道只酬勤

什么鬼,面試官竟然讓我用Redis實現一個消息隊列?。??

開發十年,就只剩下這套架構體系了??!

什么鬼,面試官竟然讓我用Redis實現一個消息隊列?。??

眾所周知,redis是一個高性能的key-value數據庫,在NoSQL數據庫市場上,redis自己就占據了將近半壁江山,足以見到其強大之處。同時,由于redis的單線程特性,我們可以將其用作為一個消息隊列。本篇文章就來講講如何將redis整合到spring boot中,并用作消息隊列的……

一、什么是消息隊列

“消息隊列”是在消息的傳輸過程中保存消息的容器?!栋俣劝倏啤?/p>

消息我們可以理解為在計算機中或在整個計算機網絡中傳遞的數據。

隊列是我們在學習數據結構的時候學習的基本數據結構之一,它具有先進先出的特性。

所以,消息隊列就是一個保存消息的容器,它具有先進先出的特性。

為什么會出現消息隊列?

  1. 異步:常見的B/S架構下,客戶端向服務器發送請求,但是服務器處理這個消息需要花費的時間很長的時間,如果客戶端一直等待服務器處理完消息,會造成客戶端的系統資源浪費;而使用消息隊列后,服務器直接將消息推送到消息隊列中,由專門的處理消息程序處理消息,這樣客戶端就不必花費大量時間等待服務器的響應了;
  2. 解耦:傳統的軟件開發模式,模塊之間的調用是直接調用,這樣的系統很不利于系統的擴展,同時,模塊之間的相互調用,數據之間的共享問題也很大,每個模塊都要時時刻刻考慮其他模塊會不會掛了;使用消息隊列以后,模塊之間不直接調用,而是通過數據,且當某個模塊掛了以后,數據仍舊會保存在消息隊列中。最典型的就是生產者-消費者模式,本案例使用的就是該模式;
  3. 削峰填谷:某一時刻,系統的并發請求暴增,遠遠超過了系統的最大處理能力后,如果不做任何處理,系統會崩潰;使用消息隊列以后,服務器把請求推送到消息隊列中,由專門的處理消息程序以合理的速度消費消息,降低服務器的壓力。

下面一張圖我們來簡單了解一下消息隊列

由上圖可以看到,消息隊列充當了一個中間人的角色,我們可以通過操作這個消息隊列來保證我們的系統穩定。

二、環境準備

Java環境:jdk1.8

spring boot版本:2.2.1.RELEASE

redis-server版本:3.2.100

三、相關依賴

這里只展示與redis相關的依賴,

Hollis為了防爬蟲以及未經授權的惡意轉載,此處內容已被作者隱藏,請輸入驗證碼查看內容
驗證碼:
請關注本站微信公眾號,回復“驗證碼”,獲取驗證碼。在微信里搜索“Hollis”或者“hollischuang”或者微信掃描右側二維碼都可以關注本站微信公眾號。

(全文完) 歡迎關注『Java之道』微信公眾號
贊(4)
如未加特殊說明,此網站文章均為原創,轉載必須注明出處。HollisChuang's Blog » 什么鬼,面試官竟然讓我用Redis實現一個消息隊列?。??
分享到: 更多 (0)

評論 搶沙發

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

HollisChuang's Blog

聯系我關于我
大乐透复式返奖 湖南快乐十分开奖历史 江苏快三哪个平台信誉好 股票配资介绍 云南快乐十分开奖结果走势图 在线股票交易网站 北京快乐8计划app 配股神配资 平特一肖资料免费管家婆 股票k线组合图解 甘肃快3和值形态走势图