九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
消息隊列中間件的技術選型分析
消息中間件是一種由消息傳送機制或消息隊列模式組成的中間件技術,利用高效可靠的消息傳遞機制進行平臺無關的數據交流,并基于數據通信來進行分布式系統(tǒng)的集成。目前業(yè)界有很多的MQ產品,像RabbitMQ、ActiveMQ、ZeroMQ等都是極好的消息中間件,但是我們在項目中該選擇哪個更適合呢?本文針對以下幾種消息隊列產品作了評估比較:RabbitMQ、ZeroMQ、ActiveMQ、MSMQ、Redis、memcacheQ

題外話:這里我們可以先思考個小問題“Web應用中為什么會需要消息隊列服務?”
在高并發(fā)環(huán)境下,由于來不及同步處理,請求往往會發(fā)生堵塞(主要原因),比如說,大量的insert,update之類的請求同時到達mysql,直接導致無數的行鎖表鎖,甚至最后請求會堆積過多,從而觸發(fā)too many connections錯誤。通過使用消息隊列,我們可以異步處理請求,從而緩解系統(tǒng)的壓力。

RabbitMQ
是使用Erlang編寫的一個開源的消息隊列,本身支持很多的協議:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它變的非常重量級,更適合于企業(yè)級的開發(fā)。是AMQP協議領先的一個實現,它實現了代理(Broker)架構,意味著消息在發(fā)送到客戶端之前可以在中央節(jié)點上排隊。對路由(Routing),負載均衡(Load balance)或者數據持久化都有很好的支持。此特性使得RabbitMQ易于使用和部署,適宜于很多場景如路由、負載均衡或消息持久化等,用消息隊列只需幾行代碼即可搞定。但是,這使得它的可擴展性差,速度較慢,因為中央節(jié)點增加了延遲,消息封裝后也比較大。如需配置RabbitMQ則需要在目標機器上安裝Erlang環(huán)境。

?MQ(ZeroMQ)
號稱最快的消息隊列系統(tǒng),尤其針對大吞吐量的需求場景。是一個非常輕量級的消息系統(tǒng),專門為高吞吐量/低延遲的場景開發(fā),在金融界的應用中經??梢园l(fā)現它。與RabbitMQ相比,ZeroMQ支持許多高級消息場景,但是你必須實現ZeroMQ框架中的各個塊(比如Socket或Device等)。

?MQ(ZeroMQ)能夠實現RabbitMQ不擅長的高級/復雜的隊列,但是開發(fā)人員需要自己組合多種技術框架,技術上的復雜度是對這MQ能夠應用成功的挑戰(zhàn)。ZeroMQ具有一個獨特的非中間件的模式,你不需要安裝和運行一個消息服務器或中間件,因為你的應用程序將扮演了這個服務角色。你只需要簡單的引用ZeroMQ程序庫,可以使用NuGet安裝,然后你就可以愉快的在應用程序之間發(fā)送消息了。但是ZeroMQ僅提供非持久性的隊列,也就是說如果down機,數據將會丟失。其中,Twitter的Storm中使用ZeroMQ作為數據流的傳輸。ZeroMQ非常靈活,但是你必須學習它的80頁的手冊(如果你要寫一個分布式系統(tǒng),一定要閱讀它)。

ZeroMQ沒有中間件架構,不需要任何服務進程和運行。事實上,你的應用程序端點扮演了這個服務角色。這讓部署起來非常簡單,但擔心的是,你沒有地方可以觀察它是否有問題出現。就目前了解到的,ZeroMQ僅提供非持久性的隊列。你可以在需要的地方實現自己的審計和數據恢復功能。

MSMQ
這是微軟的產品里唯一被認為有價值的東西。如果MSMQ能證明可以應對這種任務,他們將選擇使用它。關鍵是這個東西并不復雜,除了接收和發(fā)送,沒有別的;它有一些硬性限制,比如最大消息體積是4MB。然而,通過和一些像MassTransit 或 NServiceBus這樣的軟件的連接,它完全可以解決這些問題。

Jafka/Kafka
kafka(能將消息分散到不同的節(jié)點上)是LinkedIn于2010年12月開發(fā)并開源的一個分布式MQ系統(tǒng),現在是Apache的一個孵化項目,是一個高性能跨語言分布式Publish/Subscribe消息隊列系統(tǒng),而Jafka是在Kafka之上孵化而來的,即Kafka的一個升級版。具有以下特性:快速持久化,可以在O(1)的系統(tǒng)開銷下進行消息持久化;高吞吐,在一臺普通的服務器上既可以達到10W/s的吞吐速率;完全的分布式系統(tǒng),Broker、Producer、Consumer都原生自動支持分布式,自動實現復雜均衡;支持Hadoop數據并行加載,對于像Hadoop的一樣的日志數據和離線分析系統(tǒng),但又要求實時處理的限制,這是一個可行的解決方案。Kafka通過Hadoop的并行加載機制來統(tǒng)一了在線和離線的消息處理,這一點也是本課題所研究系統(tǒng)所看重的。Apache Kafka相對于ActiveMQ是一個非常輕量級的消息系統(tǒng),除了性能非常好之外,還是一個工作良好的分布式系統(tǒng)。

Apache ActiveMQ
ActiveMQ居于兩者(RabbitMQ & ZeroMQ)之間,類似于ZemoMQ,它可以部署于代理模式和P2P模式。類似于RabbitMQ,它易于實現高級場景,而且只需付出低消耗。
ActiveMQ被譽為Java世界的中堅力量。它有很長的歷史,而且被廣泛的使用。它還是跨平臺的,給那些非微軟平臺的產品提供了一個天然的集成接入點。然而,它只有跑過了MSMQ才有可能被考慮。如需配置ActiveMQ則需要在目標機器上安裝Java環(huán)境。

需要注意一點的是ActiveMQ的下一代產品為Apollo,Apollo以ActiveMQ原型為基礎,是一個更快、更可靠、更易于維護的消息代理工具。Apache稱Apollo為最快、最強健的STOMP(Streaming Text Orientated Message Protocol,流文本定向消息協議)服務器。 
Apollo的特性如下: 
支持Stomp 1.0和Stomp 1.1協議
主題和隊列
隊列瀏覽器
主題持久訂閱
鏡像隊列
可靠的消息傳遞
消息過期和交換
消息選擇器
JAAS驗證
基于ACL的授權
支持SSL/TLS,證書驗證
REST Management API

Redis
是一個Key-Value的NoSQL數據庫,開發(fā)維護很活躍,雖然它是一個Key-Value數據庫存儲系統(tǒng),但它本身支持MQ功能,所以完全可以當做一個輕量級的隊列服務來使用。對于RabbitMQ和Redis的入隊和出隊操作,各執(zhí)行100萬次,每10萬次記錄一次執(zhí)行時間。測試數據分為128Bytes、512Bytes、1K和10K四個不同大小的數據。實驗表明:入隊時,當數據比較小時Redis的性能要高于RabbitMQ,而如果數據大小超過了10K,Redis則慢的無法忍受;出隊時,無論數據大小,Redis都表現出非常好的性能,而RabbitMQ的出隊性能則遠低于Redis。

MemcacheQ
持久化消息隊列memcacheq(簡稱mcq)是一個輕量級的消息隊列,MemcacheQ的特性:
1 簡單易用
2 處理速度快
3 多條隊列
4 并發(fā)性能好
5 與memcache的協議兼容。這就意味著只要裝了memcache的extension就可以了,不需要額外的插件。
6 在zend framework中使用也很方便。


最終,這幾個產品:
1. 都有各自客戶端API或支持多種編程語言;
2. 都有大量的文檔;
3. 都提供了積極的支持。
4. ActiveMQ、RabbitMQ、MSMQ、Redis都需要啟動服務進程,這些都可以監(jiān)控和配置,其他幾個就有問題了
5. 都相對提供了良好的可靠性(一致性)、擴展性和負載均衡,當然還有性能

這里就不瞎扯了,下面附上一組從網上截取的測試結果。顯示的是發(fā)送和接受的每秒鐘的消息數。整個過程共產生1百萬條1K的消息。測試的執(zhí)行是在一個Windows Vista單機上進行的。

就像你看到的,ZeroMQ和其它的不是一個級別。它的性能驚人的高。盡管這樣,但這個產品不提供消息持久化、無法方便存儲及監(jiān)控中間過程,需要自己實現審計和數據恢復,因此在易用性和HA上不是令人滿意。結論很清楚:如果你希望一個應用程序發(fā)送消息越快越好,你選擇ZeroMQ。當你不太在意偶然會丟失某些消息的情況下更有價值。

本文博主未來往事更希望(也不是很希望很希望)選擇使用的是Rabbit,Rabbitmq內置了ha,如果組建cluster,負載均衡之類的問題就無需擔憂了同時可以設置隊列鏡像。但這種事情是應該做更多的測試,你最終會有一個最愛,我所聽到的、讀到的各種關于Rabbit的事情讓我覺得它應該是最佳選擇。

其他一些隊列列表,這里就不再一一分析,如果需要了解更多可自行google。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
各類MQ比較
4 款消息隊列軟件產品大比拼
消息隊列性能對比——ActiveMQ、RabbitMQ與ZeroMQ
分布式之消息隊列復習精講
消息隊列選型[首選Kafka](備選:RabbitMQ/NSQ/RocketMQ/disque/Kafka)
阿里面試官:什么是消息隊列,為什么用消息隊列,用了有什么問題
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服