java開發中常見中間件,java中間件技術有哪些

1.什麼是消息中間件

MQ全稱為Message Queue,消息隊列是應用程序和應用程序之間的通信方法。

為什麼使用MQ?

在項目中,可將一些無需即時返回且耗時的操作提取出來,進行異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高系統吞吐量

2.應用場景

2.1 任務異步處理

將不需要同步處理的並且耗時長的操作由消息隊列通知消息接收方進行異步處理。提高了應用程序的響應時間。

2.2 應用程序解耦合

MQ相當於一個中介,通過它讓生產者與消費者交互,將應用程序進行解耦合。

2.3 削峰填谷

如某個系統會往數據庫寫數據,但是數據庫只能支撐每秒1000左右的並發寫入,並發量再高就容易宕機。

在系統低峰期的時候並發也就100多個,但在高峰期時候,並發量會突然激增到5000以上,這個時候數據庫肯定會卡死。

淺談消息中間件,MQ的來龍去脈

這時候,可以使用MQ,消息會被MQ保存起來,然後系統就可以按照自己的消費能力來消費,比如每秒1000個數據,慢慢寫入數據庫,就不會卡死數據庫了。

淺談消息中間件,MQ的來龍去脈

但使用了MQ之後,限制消費消息的速度為1000,但是這樣一來,高峰期產生的數據勢必會被積壓在MQ中,高峰就被「削」掉了。

但是因為消息積壓,在高峰期過後的一段時間內,消費消息的速度還是會維持在1000QPS,直到消費完積壓的消息,這就叫做**「填谷」**

淺談消息中間件,MQ的來龍去脈

3. AMQP 和 JMS

MQ是消息通信的模型;實現MQ的大致有兩種主流方式:AMQP、JMS。

3.1 AMQP

AMQP 是一種協議,更準確地說是一種 binary wire-level protocol(鏈接協議)。與 JMS 的本質差別 : AMQP不從API層進行限定,而是直接定義網絡交換的數據格式。

3.2 JMS

JMS 即Java消息服務(JavaMessage Service)應用程序接口,是一個Java平台中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通信

3.3 AMQP 與 JMS 區別

  • JMS 是定義了統一的接口,來對消息操作進行統一; AMQP是通過規定協議來統一數據交互的格式
  • JMS 限定了必須使用Java語言; AMQP只是協議,不規定實現方式,因此是跨語言的。
  • JMS 規定了兩種消息模式; AMQP的消息模式更加豐富

4.多種消息中間件

常見的消息隊列有如下:

  • ActiveMQ:基於 JMS
  • ZeroMQ:基於 C 語言開發
  • RabbitMQ:基於 AMQP 協議,erlang 語言開發,穩定性好
  • RocketMQ:基於 JMS,阿里巴巴產品
  • Kafka:類似MQ的產品;分佈式消息系統,高吞吐量

RabbitMQ是由erlang語言開發,基於AMQP(Advanced Message Queue 高級消息隊列協議)協議實現的消息隊列,它是一種應用程序之間的通信方法,消息隊列在分佈式系統開發中應用非常廣泛。

RabbitMQ官方地址:http://www.rabbitmq.com/

RabbitMQ提供了6種模式:

簡單模式

work模式

Publish/Subscribe 發佈與訂閱模式

Routing 路由模式

Topics 主題模式

RPC 遠程調用模式;

官網對應模式介紹:https://www.rabbitmq.com/getstarted.html

來源:
https://www.cnblogs.com/MoYu-zc/p/15144660.html

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/229562.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-10 12:30
下一篇 2024-12-10 12:30

相關推薦

發表回復

登錄後才能評論