rabbitMQ訊息佇列

2022-04-29 10:03:05 字數 3093 閱讀 2343

1、什麼叫星軌?

2、使用訊息佇列

什麼是訊息中介軟體?

#

一星軌表示乙個一線明星出軌所帶來的流量,微博的伺服器現在能同時扛8星軌。

也就是說:8個一線明星同一時間爆出出軌的新聞,微博都能扛得住!微博的流量波動是很難**的,指不定什麼時候出來乙個熱點話題,微博的流量就會垂直上公升,這也是微博和其他**最大的區別。

在特殊的時間點,如雙十一、618、節假日等情況下,工程師們會提前增加n倍的伺服器進行應對,來解決高併發量帶來的伺服器癱瘓等異常,而微博的特殊情況屬於不可預知的。

他們採取的方式都是在流量高峰到來之前擴充更多的伺服器(不少企業都是租用亞馬遜、阿里雲等雲服務提供商的伺服器),用完之後就釋放,這樣能節約不少成本

而微博就很無奈了,因為它無法**流量高峰,誰也不知道明星們啥時候就搞個出軌或是其他新聞出來,流量短時間暴增,微博的伺服器就扛不住了。

下圖是鄧超2023年12月20日刷屏的微博,那一天他的刷屏就把微博伺服器給搞掛了不少!

如何使用「「訊息佇列」來應對大流量高併發下使用者提交內容的入庫問題。
簡單的理解如下圖示:先應用訊息佇列來接收一系列的訪問,再進行分發進行,減緩對伺服器同時的訪問量。

在簡單的舉個例子:

由此可以看出,引入訊息佇列後,使用者的響應時間就等於寫入資料庫的時間+寫入訊息佇列的時間(可以忽略不計),

引入訊息佇列後處理後,響應時間是序列的3倍,是並行的2倍。

佇列是rabbitmq的內部物件,用於儲存訊息。生產者(下圖中的p)生產訊息並投遞到佇列中,消費者(下圖中的c)可以從佇列中獲取訊息並消費。

#

多個消費者可以訂閱同乙個佇列,這時佇列中的訊息會被平均分攤給多個消費者進行處理,而不是每個消費者都收到所有的訊息並處理。

其是乙個軟體,需要安裝,啟動服務端才能使用

安裝後啟動服務:

rabbitmq是訊息**:它接受並**訊息。

您可以將其視為郵局:將要發布的郵件放在郵箱中時,可以確保mailperson先生或女士最終將郵件傳遞給收件人。

以此類推,rabbitmq是乙個郵箱,乙個郵局和乙個郵遞員。

rabbitmq與郵局之間的主要區別在於,它不處理紙張,而是接收,儲存和**資料

訊息的二進位制斑點

。rabbitmq和一般的訊息傳遞使用一些術語。

向訊息中介軟體rabbitmq傳送訊息

#

#!/usr/bin/env python

import

pika

#先建立連線

connection = pika.blockingconnection(pika.connectionparameters('

localhost'))

channel =connection.channel()

#向rabbitmq傳送訊息

channel.queue_declare(queue="

hello")

channel.basic_publish(exchange=''

, routing_key='

hello',

body='

hello world!')

print("

[x] sent 'hello world!'")

connection.close()

接收訊息中介軟體的傳的資訊

#

!/usr/bin/env python

import

pika

connection = pika.blockingconnection(pika.connectionparameters('

localhost'))

channel =connection.channel()

channel.queue_declare(queue='

hello')

#**函式

defcallback(ch, method, properties, body):

print("

[x] received %r

" %body)

#從訊息佇列中取出值

channel.basic_consume(queue='

hello',

auto_ack=true,

on_message_callback=callback)

print('

[*] waiting for messages. to exit press ctrl+c')

#開始進行消費

channel.start_consuming()

切換到cmd終端分別執行兩個py檔案,效果如下:

訊息佇列Rabbitmq

rabbitmq server rabbitmqctl reset rabbitmqctl stop rabbitmqctl stop rabbitmqctl list users rabbitmqctl list queues rabbitmqctl add user user name user...

訊息佇列RabbitMQ

這是乙個很嚴肅的問題。系統之間解除耦合,可以讓不同語言編寫的系統通訊互動 保證伺服器負載不會飆公升。高大上一點就是流量削峰。讓程式變成非同步,提高響應速度。把費時任務放到另乙個程序或執行緒去執行。redis實現 剛開始學習redis時,一看這個鍊錶不就是給佇列準備的嗎?所以,一心扎進去,要寫個佇列出...

RabbitMQ訊息佇列

訊息發布接收流程 接收訊息 工作模式 publish subscribe 發布訂閱模式 發布訂閱publish subscribe和工作模式work queues的區別 routing 路由模式 區別 topics 區別 header 宣告佇列 bean queue inform sms publi...