activeMQ個人理解總結
個人理解總結:
activeMQ是什麼?
是Apache公司旗下的一個訊息匯流排
ActiveMQ是一個開源相容Java Message Service (JMS) 1.1面向訊息的中件間. 來自Apache Software Foundation. ActiveMQ提供鬆耦合的應用程式架構.
activeMQ能幹什麼?
用來在服務與服務之間進行非同步通訊的
activeMQ優勢
1.流量肖鋒
2.任務非同步處理
特點:可以解耦合
(學習新技術的三要素:是什麼?能幹什麼?有什麼優勢?)
圖1:
通訊模式:
1.點對點(queue)
》一個訊息只能被一個服務接收
》訊息一旦被消費,就會消失
》如果沒有被消費,就會一直等待,直到被消費
》多個服務監聽同一個消費空間,先到先得
詳解:這個特點的原理是這樣的,在activeMQ
2.釋出/訂閱模式(topic)
》一個訊息可以被多個服務接收
》訂閱一個主題的消費者,只能消費自它訂閱之後釋出的訊息。
》消費端如果在生產端傳送訊息之後啟動,是接收不到訊息的,除非生產端對訊息進行了持久化(例如廣播,只有當時聽到的人能聽到資訊)
圖2:
注:訊息是被推送和拉取的(訊息生產端和消費端),不是mq伺服器去主動傳送的
總:一些簡單常用的應用場景
1.傳送郵件
詳解:
最經典的就是當使用者註冊時,我們就需要用activeMQ來做為中介軟體,當使用者註冊後,我門把使用者的郵箱號和驗證碼等資訊通過activeMQ的生產端傳送到activeMQ的訊息佇列中,而一旦訊息佇列中出現了資料,我們的郵件模組通過實時的監控activeMQ的訊息佇列就能通過消費端獲取到這個資料,染回郵件模組就會自行的去對資料進行解析,給使用者傳送郵件
2.傳送簡訊
詳解:
原理同傳送郵件相同
3.同步索引庫
詳解:
為了緩解資料庫的壓力,我們把經常被呼叫的資料放入索引庫中,當有請求查詢時,我們會先去查詢索引庫,如果索引庫內有資料,那麼我們就不用就資料庫進行查詢,這樣就能大大的減輕伺服器的壓力,可是隨之而來的一個問題是,假如我們伺服器內的資料已經發生了改變,而瀏覽使用者查詢資料時,因為索引庫中已經有資料了,那麼這樣一來資料庫與索引庫的資料就不一致了,那麼怎麼解決這個問題呢?我們想到了通過用activeMQ來監聽資料庫的操作來實現資料庫與索引庫的資料同步,當後臺管理員或房產經紀人對資料庫的資料進行了增刪改的操作時,我們通過activeMQ監聽到了資料的改變,獲取到被修改的資料的id,然後在另一個服務模組中通過這個資料的id去資料庫先查詢一把,然後根據查詢結果進行判斷,再去做索引庫的資料同步。打個比方,如果查詢結果返回的是空,就說明商品已經被刪除,那麼我們就可以根據資料的id去把索引庫中的資料也一併刪除了。
4.同步靜態頁面
詳解:
此原理同上一個同步索引庫是一個原理,目的都是為了減緩伺服器的壓力,我們經過資料分析發現,其實我們的一些商品詳情頁面的資料其實都是大同小異的,完全可以通過freemarker頁面靜態化的模組加上後臺查詢出的資料拼裝成一個靜態頁面,而這些資料從哪來呢?我們經過討論和研究,最後一致認為還是放在緩衝中比較好,這樣一來就能大大的減輕了資料 庫的壓力,而另一個好處是,由於頁面是純靜態頁面,所以頁面上的資料都是死資料,這樣一來就不用像JSP動態頁面那樣需要和後臺資料庫有大量的資料互動,可以最大化的降低伺服器的壓力,其實這個技術已經有很多大型公司在使用了,比如淘寶,京東,網易等,我們要是細心一些就會發現,他們的頁面其實就都是HTML格式的靜態頁面。
相關文章
- 個人總結
- ActiveMQ基本詳解與總結MQ
- gulp個人總結
- 2018年個人總結
- SpringBoot的個人總結Spring Boot
- 2023年個人總結
- 【個人總結】常用技巧
- 爬蟲個人總結爬蟲
- 深入理解Java虛擬機器--個人總結(持續更新)Java虛擬機
- Laravel – Artisan 個人常用總結Laravel
- 個人技術棧總結
- 個人吐血系列-總結MybatisMyBatis
- 2021我的個人總結
- 個人總結-CPU快取快取
- Element-UI個人使用總結UI
- Capistrano + SVN 個人安裝部署總結API
- ARP地址解析協議-個人總結協議
- RESTful 個人理解REST
- 2016 部落格導讀總結&個人感悟
- ES6個人初學總結-XY
- 個人技術棧大體思路總結
- xss原理繞過防禦個人總結
- 20240619打卡-個人總結部落格
- 前端面試(個人收藏總結)CSS篇前端面試CSS
- 前端面試(個人收藏總結)HTML篇前端面試HTML
- 小學期第一週個人總結
- 偽分散式hdfs的配置(個人總結)分散式
- Java | 個人總結的Java常用API手冊彙總JavaAPI
- Java個人知識點總結(基礎篇)Java
- 前端面試(個人收藏總結)javascript篇(二)前端面試JavaScript
- 個人總結——全面的『Python編碼規範』Python
- Swift中Initialization的一些個人總結Swift
- 前端面試(個人收藏總結)javascript篇(一)前端面試JavaScript
- Linux各大發行版個人踩坑總結Linux
- Linux 運維人員最常用 150 個命令總結Linux運維
- Java個人技術知識點總結(框架篇)Java框架
- iOS'Dev的2018年個人總結 | 掘金年度徵文iOSdev
- 網路爬蟲常見問題(個人總結)爬蟲