發布日期:2022-05-11 點擊率:26
一、消息中間件相關知識
1、概述
消息隊列已經逐漸成為企業IT系統內部通信的核心手段。它具有低耦合、可靠投遞、廣播、流量控制、最終一致性等一系列功能,成為異步RPC的主要手段之一。當今市面上有很多主流的消息中間件,如老牌的ActiveMQ、RabbitMQ,炙手可熱的Kafka,阿里巴巴自主開發RocketMQ等。
2、消息中間件的組成2.1 Broker
消息服務器,作為server提供消息核心服務2.2 Producer
消息生產者,業務的發起方,負責生產消息傳輸給broker, 2.3 Consumer
消息消費者,業務的處理方,負責從broker獲取消息并進行業務邏輯處理2.4 Topic
主題,發布訂閱模式下的消息統一匯集地,不同生產者向topic發送消息,由MQ服務器分發到不同的訂閱者,實現消息的 廣播2.5 Queue
隊列,PTP模式下,特定生產者向特定queue發送消息,消費者訂閱特定的queue完成指定消息的接收2.6 Message
消息體,根據不同通信協議定義的固定格式進行編碼的數據包,來封裝業務數據,實現消息的傳輸
3 消息中間件模式分類3.1 點對點
PTP點對點:使用queue作為通信載體
說明:
消息生產者生產消息發送到queue中,然后消息消費者從queue中取出并且消費消息。
消息被消費以后,queue中不再存儲,所以消息消費者不可能消費到已經被消費的消息。 Queue支持存在多個消費者,但是對一個消息而言,只會有一個消費者可以消費。3.2 發布/訂閱
Pub/Sub發布訂閱(廣播):使用topic作為通信載體
說明:
消息生產者(發布)將消息發布到topic中,同時有多個消息消費者(訂閱)消費該消息。和點對點方式不同,發布到topic的消息會被所有訂閱者消費。
queue實現了負載均衡,將producer生產的消息發送到消息隊列中,由多個消費者消費。但一個消息只能被一個消費者接受,當沒有消費者可用時,這個消息會被保存直到有一個可用的消費者。
topic實現了發布和訂閱,當你發布一個消息,所有訂閱這個topic的服務都能得到這個消息,所以從1到N個訂閱者都能得到一個消息的拷貝。
4 消息中間件的優勢 4.1 系統解耦
交互系統之間沒有直接的調用關系,只是通過消息傳輸,故系統侵入性不強,耦合度低。4.2 提高系統響應時間
例如原來的一套邏輯,完成支付可能涉及先修改訂單狀態、計算會員積分、通知物流配送幾個邏輯才能完成;通過MQ架構設計,就可將緊急重要(需要立刻響應)的業務放到該調用方法中,響應要求不高的使用消息隊列,放到MQ隊列中,供消費者處理。4.3 為大數據處理架構提供服務
通過消息作為整合,大數據的背景下,消息隊列還與實時處理架構整合,為數據處理提供性能支持。4.4 Java消息服務——JMS
Java消息服務(Java Message Service,JMS)應用程序接口是一個Java平臺中關于面向消息中間件(MOM)的API,用于在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。
JMS中的P2P和Pub/Sub消息模式:點對點(point to point, queue)與發布訂閱(publish/subscribe,topic)最初是由JMS定義的。這兩種模式主要區別或解決的問題就是發送到隊列的消息能否重復消費(多訂閱)。
5 消息中間件應用場景5.1 異步通信
有些業務不想也不需要立即處理消息。消息隊列提供了異步處理機制,允許用戶把一個消息放入隊列,但并不立即處理它。想向隊列中放入多少消息就放多少,然后在需要的時候再去處理它們。5.2 解耦
降低工程間的強依賴程度,針對異構系統進行適配。在項目啟動之初來預測將來項目會碰到什么需求,是極其困難的。通過消息系統在處理過程中間插入了一個隱含的、基于數據的接口層,兩邊的處理過程都要實現這一接口,當應用發生變化時,可以獨立的擴展或修改兩邊的處理過程,只要確保它們遵守同樣的接口約束。5.3 冗余
有些情況下,處理數據的過程會失敗。除非數據被持久化,否則將造成丟失。消息隊列把數據進行持久化直到它們已經被完全處理,通過這一方式規避了數據丟失風險。許多消息隊列所采用的”插入-獲取-刪除”范式中,在把一個消息從隊列中刪除之前,需要你的處理系統明確的指出該消息已經被處理完畢,從而確保你的數據被安全的保存直到你使用完畢。5.4 擴展性
因為消息隊列解耦了你的處理過程,所以增大消息入隊和處理的頻率是很容易的,只要另外增加處理過程即可。不需要改變代碼、不需要調節參數。便于分布式擴容。5.5 過載保護
在訪問量劇增的情況下,應用仍然需要繼續發揮作用,但是這樣的突發流量無法提取預知;如果以為了能處理這類瞬間峰值訪問為標準來投入資源隨時待命無疑是巨大的浪費。使用消息隊列能夠使關鍵組件頂住突發的訪問壓力,而不會因為突發的超負荷的請求而完全崩潰。5.6 可恢復性
系統的一部分組件失效時,不會影響到整個系統。消息隊列降低了進程間的耦合度,所以即使一個處理消息的進程掛掉,加入隊列中的消息仍然可以在系統恢復后被處理。5.7 順序保證
在大多使用場景下,數據處理的順序都很重要。大部分消息隊列本來就是排序的,并且能保證數據會按照特定的順序來處理。5.8 緩沖
在任何重要的系統中,都會有需要不同的處理時間的元素。消息隊列通過一個緩沖層來幫助任務最高效率的執行,該緩沖有助于控制和優化數據流經過系統的速度。以調節系統響應時間。5.9 數據流處理
分布式系統產生的海量數據流,如:業務日志、監控數據、用戶行為等,針對這些數據流進行實時或批量采集匯總,然后進行大數據分析是當前互聯網的必備技術,通過消息隊列完成此類數據收集是最好的選擇。
6 消息中間件常用協議6.1 AMQP協議
AMQP即Advanced Message Queuing Protocol,一個提供統一消息服務的應用層標準高級消息隊列協議,是應用層協議的一個開放標準,為面向消息的中間件設計。基于此協議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產品,不同開發語言等條件的限制。
優點:可靠、通用6.2 MQTT協議
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成為物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和致動器(比如通過Twitter讓房屋聯網)的通信協議。
優點:格式簡潔、占用帶寬小、移動端通信、PUSH、嵌入式系統6.3 STOMP協議
STOMP(Streaming Text Orientated Message Protocol)是流文本定向消息協議,是一種為MOM(Message Oriented Middleware,面向消息的中間件)設計的簡單文本協議。STOMP提供一個可互操作的連接格式,允許客戶端與任意STOMP消息代理(Broker)進行交互。
優點:命令模式(非topicqueue模式) 6.4 XMPP協議
XMPP(可擴展消息處理現場協議,Extensible Messaging and Presence Protocol)是基于可擴展標記語言(XML)的協議,多用于即時消息(IM)以及在線現場探測。適用于服務器之間的準即時操作。核心是基于XML流傳輸,這個協議可能最終允許因特網用戶向因特網上的其他任何人發送即時消息,即使其操作系統和瀏覽器不同。
優點:通用公開、兼容性強、可擴展、安全性高,但XML編碼格式占用帶寬大6.5 其他基于TCP/IP自定義的協議
有些特殊框架(如:redis、kafka、zeroMq等)根據自身需要未嚴格遵循MQ規范,而是基于TCPIP自行封裝了一套協議,通過網絡socket接口進行傳輸,實現了MQ的功能。
7 常見消息中間件MQ介紹7.1 RocketMQ
阿里系下開源的一款分布式、隊列模型的消息中間件,原名metaq,3.0版本名稱改為RocketMQ,是阿里參照kafka設計思想使用java實現的一套mq。同時將阿里系內部多款mq產品(Notify、metaq)進行整合,只維護核心功能,去除了所有其他運行時依賴,保證核心功能最簡化,在此基礎上配合阿里上述其他開源產品實現不同場景下mq的架構,目前主要多用于訂單交易系統。
具有以下特點:
能夠保證嚴格的消息順序提供針對消息的過濾功能提供豐富的消息拉取模式高效的訂閱者水平擴展能力實時的消息訂閱機制億級消息堆積能力
官方提供了一些不同于kafka的對比差異: 7.2 RabbitMQ
使用Erlang編寫的一個開源的消息隊列,本身支持很多的協議:AMQP,XMPP, SMTP,STOMP,也正是如此,使的它變的非常重量級,更適合于企業級的開發。同時實現了Broker架構,核心思想是生產者不會將消息直接發送給隊列,消息在發送給客戶端時先在中心隊列排隊。對路由(Routing),負載均衡(Load balance)、數據持久化都有很好的支持。多用于進行企業級的ESB整合。7.3 ActiveMQ
Apache下的一個子項目。使用Java完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,少量代碼就可以高效地實現高級應用場景。可插拔的傳輸協議支持,比如:in-VM, TCP, SSL, NIO, UDP, multicast, JGroups and JXTA transports。RabbitMQ、ZeroMQ、ActiveMQ均支持常用的多種語言客戶端 C++、Java、.Net,、Python、 Php、 Ruby等。7.4 Redis
使用C語言開發的一個Key-Value的NoSQL數據庫,開發維護很活躍,雖然它是一個Key-Value數據庫存儲系統,但它本身支持MQ功能,所以完全可以當做一個輕量級的隊列服務來使用。對于RabbitMQ和Redis的入隊和出隊操作,各執行100萬次,每10萬次記錄一次執行時間。測試數據分為128Bytes、512Bytes、1K和10K四個不同大小的數據。實驗表明:入隊時,當數據比較小時Redis的性能要高于RabbitMQ,而如果數據大小超過了10K,Redis則慢的無法忍受;出隊時,無論數據大小,Redis都表現出非常好的性能,而RabbitMQ的出隊性能則遠低于Redis。7.5 Kafka
Apache下的一個子項目,使用scala實現的一個高性能分布式Publish/Subscribe消息隊列系統,具有以下特性:
快速持久化:通過磁盤順序讀寫與零拷貝機制,可以在O(1)的系統開銷下進行消息持久化;高吞吐:在一臺普通的服務器上既可以達到10W/s的吞吐速率;高堆積:支持topic下消費者較長時間離線,消息堆積量大;完全的分布式系統:Broker、Producer、Consumer都原生自動支持分布式,依賴zookeeper自動實現復雜均衡;支持Hadoop數據并行加載:對于像Hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。
7.6 ZeroMQ
號稱最快的消息隊列系統,專門為高吞吐量/低延遲的場景開發,在金融界的應用中經常使用,偏重于實時數據通信場景。ZMQ能夠實現RabbitMQ不擅長的高級/復雜的隊列,但是開發人員需要自己組合多種技術框架,開發成本高。因此ZeroMQ具有一個獨特的非中間件的模式,更像一個socket library,你不需要安裝和運行一個消息服務器或中間件,因為你的應用程序本身就是使用ZeroMQ API完成邏輯服務的角色。但是ZeroMQ僅提供非持久性的隊列,如果down機,數據將會丟失。如:Twitter的Storm中使用ZeroMQ作為數據流的傳輸。
ZeroMQ套接字是與傳輸層無關的:ZeroMQ套接字對所有傳輸層協議定義了統一的API接口。默認支持 進程內(inproc) ,進程間(IPC) ,多播,TCP協議,在不同的協議之間切換只要簡單的改變連接字符串的前綴。可以在任何時候以最小的代價從進程間的本地通信切換到分布式下的TCP通信。ZeroMQ在背后處理連接建立,斷開和重連邏輯。
特性:
無鎖的隊列模型:對于跨線程間的交互(用戶端和session)之間的數據交換通道pipe,采用無鎖的隊列算法CAS;在pipe的兩端注冊有異步事件,在讀或者寫消息到pipe的時,會自動觸發讀寫事件。批量處理的算法:對于批量的消息,進行了適應性的優化,可以批量的接收和發送消息。多核下的線程綁定,無須CPU切換:區別于傳統的多線程并發模式,信號量或者臨界區,zeroMQ充分利用多核的優勢,每個核綁定運行一個工作者線程,避免多線程之間的CPU切換開銷。
二、主要消息中間件的比較
綜合選擇RabbitMq
轉載:
Copyright 2007-
2021 cyzone.cn All rights reserved 京ICP證號 京ICP備-1號 京ICP備-9號 京ICP備-10號 新出發京零字第朝號
愛奇清科(北京)信息科技有限公司 地址:北京市朝陽區利澤西街東湖國際中心A座9層 | 網絡文化經營許可證(京網文[2018]2153-213號)
違法和不良信息舉報電話:010- 舉報郵箱:db@cyzone.cn
京公網安備
號
營業執照
出版物經營許可證
收藏
查看我的收藏
0
有用+1
已投票
0
無線傳感器網絡中間件技術
語音
編輯
鎖定
討論
上傳視頻
上傳視頻
《無線傳感器網絡中間件技術》是2011年科學出版社出版的圖書,作者是王汝傳、孫力娟。
書 名
無線傳感器網絡中間件技術
作 者
王汝傳、孫力娟
出版社
科學出版社
出版時間
2011年6月
頁 數
260 頁
開 本
16 開
ISBN
目錄
1
內容簡介
2
目錄
無線傳感器網絡中間件技術內容簡介
編輯
語音
《無線傳感器網絡中間件技術》可作為物聯網和無線傳感器網絡領域的研究人員以及廣大對物聯網和無線傳感器網絡感興趣的工程技術人員的參考用書,也可作為普通高等院校通信工程、電子信息、計算機等專業的高年級本科生和研究生教材。《無線傳感器網絡中間件技術》是作者對多年從事無線傳感器網絡中間件相關技術研究和國家863項目成果的總結,共9章。本書首先介紹了無線傳感器網絡的基本概念和關鍵技術、常用的無線傳感器網絡操作系統以及典型的無線傳感器網絡中間件,探討了無線傳感器網絡中間件體系結構設計方法和典型的中間件體系結構,詳細介紹了作者的研究成果——基于agent的無線傳感器網絡中間件disware以及基于disware的中間件平臺軟件meshide,探討了無線多媒體傳感器網絡中間件技術和基于無線傳感器網絡的普適計算中間件技術,最后給出了多個典型的無線傳感器網絡中間件應用實例。出版社是科學出版社。
[1]
無線傳感器網絡中間件技術目錄
編輯
語音
《無線傳感器網絡中間件技術》前言第1章無線傳感器網絡概述1.1無線傳感器網絡的概念1.2無線傳感器網絡的特征1.3無線傳感器網絡的發展與現狀1.3.1發展簡史1.3.2研究現狀1.3.3發展趨勢1.4無線傳感器網絡的關鍵技術1.4.1拓撲控制1.4.2路由協議1.4.3mac協議1.4.4網絡安全1.4.5定位1.4.6時間同步技術1.4.7數據管理技術1.4.8數據融合技術1.5無線傳感器網絡的應用前景參考文獻.第2章無線傳感器網絡操作系統2.1無線傳感器網絡操作系統tinyos2.1.1tinyos簡介2.1.2nesc語言2.1.3tinyos的執行模型2.1.4tinyos的通信機制2.1.5tinyos應用程序開發與發布2.2無線傳感器網絡操作系統mantisos2.2.1mantisos簡介2.2.2 mantisos的體系架構2.2.3 mantisos的通信機制2.2.4mantios應用程序開發與發布2.3無線傳感器網絡操作系統sos2.3.1sos簡介2.3.2sos的系統架構2.3.3sos的通信機制2.3.4sos應用程序開發與發布參考文獻第3章無線傳感器網絡中間件體系結構3.1無線傳感器網絡中間件體系結構概述3.2體系結構設計原則3.3無線傳感器網絡中間件設計方法與比較3.4現有的無線傳感器網絡中間件體系結構3.4.1基于agent的中間件體系結構3.4.2基于分簇的中間件體系結構3.4.3基于組件的中間件體系結構3.4.4基于oos的中間件體系結構參考文獻第4章典型的無線傳感器網,絡中間件4.1agilla4.2cougar4.3dfuse4.4dsware4.5impala4.6irisnet4.7milan4.8sensorware4.9tinydb4.10其他中間件參考文獻第5章基于agent的無線傳感器網絡中間件disware5.1基于移動agent的中間件技術5.1.1移動agent及其運行平臺5.1.2基于移動agent的無線傳感器網絡中間件需求分析5.1.3無線傳感器網絡移動agent平臺的優缺點5.2安全中間件技術5.2.1無線傳感器網絡面臨的安全攻擊5.2.2無線傳感器網絡的安全需求5.2.3無線傳感器網絡的數據傳輸安全機制5.3disware中間件軟件的設計與實現5.3.1disware總體架構的設計5.3.2異構操作系統互通信問題5.3.3基于移動agent的中間件平臺的實現5.3.4agent指令系統第6章disware中間件平臺軟件meshide6.1eclipse平臺概述6.1.1eclipse平臺體系結構6.1.2 eclipse主要功能模塊6.1.3 eclipse插件實現6.2無線傳感器網絡集成開發平臺meshide概述6.3無線傳感器網絡集成開發平臺meshidefortinyos6.3.1平臺設計目標和功能分析6.3.2 meshidefortinyos模塊設計6.3.3 tinyosenvironment編譯環境模塊設計6.3.4meshidefortinyos平臺運行6.3.5meshidefortinyos應用實例6.4無線傳感器網絡集成開發平臺meshidefornsware6.4.1平臺設計目標和功能分析6.4.2 meshidefornsware平臺架構6.4.3meshⅢefor顛sware模塊設計6.4.4 meshidefornsware平臺運行6.4.5 meshidefornsware應用實例參考文獻第7章無線多媒體傳感器網絡中間件技術7.1無線多媒體傳感器網絡概述7.1.1無線多媒體傳感器網絡的產生和發展7.1.2基本概念與體系結構7.1.3wmsin特點7.1.4影響wmsn設計的因素7.1.5典型應用7.2wmsn中間件設計需求7.3一種基于agent的wmsn中間件7.3.1參考體系結構7.3.2多媒體數據動態重配置處理7.3.3網絡資源動態重配置參考文獻第8章基于無線傳感器網絡的普適計算中間件技術8.1普適計算中間件8.1.1普適計算概述8.1.2普適計算中間件的定義8.1.3普適計算中間件的特點8.1.4普適計算中間件的研究現狀8.2基于無線傳感器網絡的普適計算中間件設計8.2.1體系結構8.2.2關鍵技術8.3中間件應用實例8.3.1自助旅游服務系統設計8.3.2系統實現參考文獻第9章無線傳感器網絡中間件應用9.1基于中間件的醫療健康護理系統9.1.1應用背景的概述9.1.2無線醫療傳感節點的設計9.1.3系統架構9.1.4系統實現9.2基于中間件的環境監測系統9.2.1應用背景概述9.2.2環境監測節點的設計與實現9.2.3系統架構9.2.4系統實現9.3基于多媒體中間件的智能家居應用系統9.3.1應用背景的概述9.3.2多媒體節點的設計9.3.3系統架構9.3.4系統實現參考文獻B
詞條圖冊
更多圖冊
參考資料
1.
無線傳感器網絡中間件技術
.京東[引用日期2020-03-20]
《無線傳感器網絡中間件技術》是作者對多年從事無線傳感器網絡中間
件相關技術研究和國家863項目成果的總結,共9章。本書首先介紹了無線傳
感器網絡的基本概念和關鍵技術、常用的無線傳感器網絡操作系統以及典型
的無線傳感器網絡中間件,探討了無線傳感器網絡中間件體系結構設計方法
和典型的中間件體系結構,詳細介紹了作者的研究成果——基于Agent的無
線傳感器網絡中間件DisWare以及基于DisWare的中間件平臺軟件MeshIDE,
探討了無線多媒體傳感器網絡中間件技術和基于無線傳感器網絡的普適計算
中間件技術,最后給出了多個典型的無線傳感器網絡中間件應用實例。
《無線傳感器網絡中間件技術》可作為物聯網和無線傳感器網絡領域的
研究人員以及廣大對物聯網和無線傳感器網絡感興趣的工程技術人員的參考
用書,也可作為普通高等院校通信工程、電子信息、計算機等專業的高年級
本科生和研究生教材。
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原