1. 程式人生 > >訊息佇列中介軟體記錄

訊息佇列中介軟體記錄

僅作為個人學習筆記,遊客勿噴。

訊息佇列

訊息佇列有無數開源實現,一般沒必要自己實現。zmq也好rabbitmq也好甚至redis也好,找一個合適的裝上用就行

就好像rdbms/nosql一樣

技術都是解決問題的,訊息佇列解決的是將突發大量請求轉換為後端能承受的佇列請求,比如你的伺服器一秒能處理100個訂單,但秒殺活動1秒進來1000個訂單,持續10秒,在後端能力無法增加的情況下,你可以用訊息佇列將總共10000個請求壓在佇列裡,後臺consumer按原有能力處理,100秒後處理完所有請求(而不是直接宕機丟失訂單資料)

所以說首先別自己實現訊息佇列(在你用過各種訊息佇列,還看過一兩份原始碼之前),其次沒有合適的需求別用訊息佇列

找本資料結構的書看看,佇列是一種資料結構,內部是用陣列或連結串列實現的,佇列的特點是隻能隊頭放入,隊尾取出,即先入先出,具體應用看下生產者消費者

通俗的說,就是一個容器,你把訊息丟進去,不需要立即處理。然後有個程式去從你的容器裡面把訊息一條條讀出來處理。訊息佇列,可以是activeMQkafka之類的,也可以是資料庫的一張任務表。

個人覺得訊息佇列,主要有兩個作用:

降低耦合

訊息可以暫時存在在訊息佇列中,等待訊息接收者根據自身的負載處理能力控制處理訊息的處理速度,減小在大併發訪問時候的壓力。

Simple Queue

簡單佇列 (simple queue) 可以對內網或者外網 IP 地址進行流量控制

SOLACE 訊息中介軟體基於硬體的訊息中介軟體——Solace

訊息中介軟體是一種由訊息傳送機制或訊息佇列模式組成的中介軟體技術,利用高效可靠的訊息傳遞機制進行平臺無關的資料交流,並基於資料通訊來進行分散式系統的整合。與其它中介軟體技術不同(例如ORB 和RPC),一般來說,訊息中介軟體並不要求系統具備一個可靠的底部傳輸層,而是通過以訊息的形式收發應用程式資料來連線運行於不同系統上的應用程式。資訊可以同步傳送,也支援非同步傳送。在非同步方式下,應用程式並不需要訊息即時即刻傳送到對方,只是由MOM 確保把資訊以訊息的方式傳送到適當的目的地,並且只傳一次。 訊息中介軟體屬於中介軟體的一種,擁有中介軟體的主要特點,但是自身的工作機制又具有特殊性,主要特點包括以下6 個方面:

(1)非同步傳送;

(2)(2)防禦通訊;

(3)(3)併發執行;

(4)(4)日誌通訊;

(5)(5)多種通訊方式;

(6)(6)應用程式與網路複雜性相隔離。 

DNS

DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議執行在UDP協議之上,使用埠號53。在RFC文件中RFC 2181對DNS有規範說明,RFC 2136對DNS的動態更新進行說明,RFC 2308對DNS查詢的反向快取進行說明。

CDN

CDN的全稱是Content Delivery Network,即內容分發網路。其基本思路是儘可能避開網際網路上有可能影響資料傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網路各處放置節點伺服器所構成的在現有的網際網路基礎之上的一層智慧虛擬網路,CDN系統能夠實時地根據網路流量和各節點的連線、負載狀況以及到使用者的距離和響應時間等綜合資訊將使用者的請求重新導向離使用者最近的服務節點上。其目的是使使用者可就近取得所需內容,解決 Internet網路擁擠的狀況,提高使用者訪問網站的響應速度。