1.為什麼使用訊息佇列?
如果我們不使用訊息佇列,對於使用者的請求,而是直接落到伺服器上,再通過資料庫或者快取對它進行響應。假如在高併發的場景下,如果沒有快取或者資料庫承受不了這麼大的壓力的話,就會造成相應速度非常緩慢,甚至造成資料庫宕機。但是使用訊息佇列之後,使用者的請求資料傳送給了訊息佇列之後可以立即返回,再由訊息佇列的消費者程序從訊息佇列中獲取資料,非同步寫入資料庫。由於訊息佇列伺服器處理速度快於資料庫,因此響應速度得到大的改善。
2.訊息佇列有什麼缺點?怎麼考慮用不用訊息佇列?
1.系統可用性低。系統可用性在某種程度上降低,為什麼這麼說呢?在加入mq之前,你不用考慮訊息丟失或者說mq掛掉的情況,但是引入mq 之後你就要去考慮了。
2.系統複雜性提高。在引入了mq之後,你就要去考慮訊息丟失了怎麼辦?訊息傳遞進來的順序有沒有改變?訊息有沒有被重複消費?這些問題都使得系統的複雜性提高了。
3.一致性問題。因為訊息佇列有非同步的機制,所以如果訊息傳遞進來之後,但是這條訊息沒有被真正的消費,就會導致資料不一致的問題。
RabbitMQ訊息佇列知識點歸納
官網 rabbitmq是流行的開源訊息佇列系統,用erlang語言開發。rabbitmq是amqp 高階訊息佇列協議 的標準實現 mq全稱為message queue,訊息佇列 mq 是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息來通訊,而無需專用連線來鏈結它們。訊息傳遞指的是程...
佇列知識點
佇列 queue 是一種集合,只有2種操作,1 將元素新增到佇列末尾,2 將元素從頂部取出。1 int size 獲取佇列長度 2 add e offer e 新增元素到隊尾,但是當超過佇列容量,使用add會丟擲異常,offer僅僅返回false。3 remove e poll e 取出隊首元素並刪...
相關知識點
nweb inf uclasses uweb.xml ulib n 從httpservlet 繼承,重寫doget dopost方法 n部署web.xml n 只有乙個物件 n 第一次請求的時候被初始化,只一遍 n 初始化後先呼叫init 方法,只一遍 n 每個請求,呼叫一遍service serv...