以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景
前言
當前真正學習消息中間件,當前已經走到了,可以簡單的使用,網上有很多那種復雜的高可用的架構,但是那些都是對于一些比較大型的項目來說的。
對于一些小型的項目可能用不到那么大的架構,于是我們需要從最簡單的入手。
一個是要讓我們明白,什么樣的情況下我們會使用到消息中間件,應該使用消息的哪一種模式。
一個是要明白,使用消息中間件會有什么好處,同時會帶來什么樣的弊端。
最后要會舉一反三,這樣的情況我們可以使用消息中間件,那么以后實際項目中肯定不會有一模一樣的場景,那么那樣的場景可以使用,或者說使用效果最好。
?
應用場景
先列舉所有應用場景,然后挑幾個重點進行實際代碼的模擬。
我在網上找了一圈,發現文字描述中一共有五個大的方向。
異步處理,應用解耦,流量削鋒,日志處理和消息通訊。
異步處理:是指把原本直接調用接口拿到返回值的方式轉變成異步的發送消息,然后接收到消息后執行。
應用解耦:是指將原來的多步的連續操作,分開,分成多個消息發送,然后分別執行,互相之間沒有耦合了。
流量削鋒:是指將原來的高并發直接操作數據庫的請求變成消息隊列保存起來,然后之后依次慢慢執行。
日志處理:是指將不同服務器的日志通過消息的形式發送,然后統一進行維護打印和管理。
消息通訊:是指發送通信消息的時候使用消息中間件維護隊列,比如你聊qq的時候,一個說一句,就能維護在一個消息隊列中讓消息有次序的排列,或者是走訂閱通知的形式的消息通訊。
?
然后我找了一些了一些產品(先說明我不是打廣告啊,不喜歡你就跳過就行了)
阿里云有消息中間件的產品賣,我看了一下
他們提供的應用場景是這些
分布式事務是指:原來在一個項目中可以實現一個事務執行到底,但是當項目很大牽扯多個數據庫多個項目的時候,要保證事務的一致性,那么就需要做分布式的事務,簡單說就是保證多個項目的不同操作同時成功,同時失敗。
物聯網應用跟我們沒啥關系,有興趣可以自己去了解。
實時計算是指:通過數據總線接收需要處理的數據,然后進行數據計算,最后統一存儲,一條龍服務,強調的是實時性。
大規格緩存同步:其實就是緩存同步,使用訂閱模式,讓一個修改同時作用于多個緩存。
?
我覺得這樣下來基本上所有常用的應用場景都包括進去了。
?
?
優點
其實我們看見消息中間件的使用場景,基本已經明白了它所處的優點,其中解耦是其中一個重要的優點,將業務拆分。
然后是異步,把以前同步處理的形式轉換成異步的。
是橫向擴展,可以有多臺服務器去消費消息,擴展方便。
順序保證,因為是隊列的形式,那么消息肯定得乖乖排隊,所以一定會有一個先后順序,從而保證一些場景使用安全。
?
缺點
消息中間件肯定會有瓶頸,當隊列到達一定的數量處理的時間等會出現問題。
當消息中間件本身出現問題,或者因為服務器宕機等問題,消息中間件停止運行。
網上有很多在使用消息中間件時丟失消息的說法,雖然實際我沒有遇到過,但是我也不能100%保證沒有問題。
消息重復發送或者被重復處理時怎么辦?消息冪等性的問題。
消息發送不成功是否會影響當前業務。
?
其他問題本人經驗不足還在學習,等實際使用之后,再做出總結。
對于高可用,分布式的架構處理,以后還會進行深入的學習。
總結
以上是生活随笔為你收集整理的以ActiveMQ为例JAVA消息中间件学习【4】——消息中间件实际应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ehcache(06)监听器
- 下一篇: 如何衡量持续交付