RabbitMQ入門(mén)學(xué)習(xí)1 - 安裝部署

1,簡(jiǎn)單介紹與服務(wù)安裝

1.1,背景

在分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦?,F(xiàn)在開(kāi)源的消息中間件有很多.
那么,消息中間件性能究竟哪家強(qiáng)?
帶著這個(gè)疑問(wèn),我們中間件測(cè)試組對(duì)常見(jiàn)的三類(lèi)消息產(chǎn)品(Kafka、RabbitMQ、RocketMQ)做了性能比較。

1.2,三大常用消息中間件

  • Kafka是LinkedIn開(kāi)源的分布式發(fā)布-訂閱消息系統(tǒng),目前歸屬于Apache定級(jí)項(xiàng)目。Kafka主要特點(diǎn)是基于Pull的模式來(lái)處理消息消費(fèi),追求高吞吐量,一開(kāi)始的目的就是用于日志收集和傳輸。0.8版本開(kāi)始支持復(fù)制,不支持事務(wù),對(duì)消息的重復(fù)、丟失、錯(cuò)誤沒(méi)有嚴(yán)格要求,適合產(chǎn)生大量數(shù)據(jù)的互聯(lián)網(wǎng)服務(wù)的數(shù)據(jù)收集業(yè)務(wù)。
  • RabbitMQ是使用Erlang語(yǔ)言開(kāi)發(fā)的開(kāi)源消息隊(duì)列系統(tǒng),基于AMQP協(xié)議來(lái)實(shí)現(xiàn)。AMQP的主要特征是面向消息、隊(duì)列、路由(包括點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱)、可靠性、安全。AMQP協(xié)議更多用在企業(yè)系統(tǒng)內(nèi),對(duì)數(shù)據(jù)一致性、穩(wěn)定性和可靠性要求很高的場(chǎng)景,對(duì)性能和吞吐量的要求還在其次。
  • RocketMQ是阿里開(kāi)源的消息中間件,它是純Java開(kāi)發(fā),具有高吞吐量、高可用性、適合大規(guī)模分布式系統(tǒng)應(yīng)用的特點(diǎn)。RocketMQ思路起源于Kafka,但并不是Kafka的一個(gè)Copy,它對(duì)消息的可靠傳輸及事務(wù)性做了優(yōu)化,目前在阿里集團(tuán)被廣泛應(yīng)用于交易、充值、流計(jì)算、消息推送、日志流式處理、binglog分發(fā)等場(chǎng)景。

1.3,三大常用消息中間件的對(duì)比結(jié)果

在同步發(fā)送場(chǎng)景中,三個(gè)消息中間件的表現(xiàn)區(qū)分明顯:

  • Kafka的吞吐量高達(dá)17.3w/s,不愧是高吞吐量消息中間件的行業(yè)老大。這主要取決于它的隊(duì)列模式保證了寫(xiě)磁盤(pán)的過(guò)程是線(xiàn)性IO。此時(shí)broker磁盤(pán)IO已達(dá)瓶頸。
  • RocketMQ也表現(xiàn)不俗,吞吐量在11.6w/s,磁盤(pán)IO %util已接近100%。RocketMQ的消息寫(xiě)入內(nèi)存后即返回ack,由單獨(dú)的線(xiàn)程專(zhuān)門(mén)做刷盤(pán)的操作,所有的消息均是順序?qū)懳募?/li>
  • RabbitMQ的吞吐量5.95w/s,CPU資源消耗較高。它支持AMQP協(xié)議,實(shí)現(xiàn)非常重量級(jí),為了保證消息的可靠性在吞吐量上做了取舍。我們還做了RabbitMQ在消息持久化場(chǎng)景下的性能測(cè)試,吞吐量在2.6w/s左右。

1.4,三大常用消息中間件的測(cè)試結(jié)論

在服務(wù)端處理同步發(fā)送的性能上,Kafka>RocketMQ>RabbitMQ。

1.5,安裝

2, 服務(wù)的啟動(dòng)與關(guān)閉

  • 服務(wù)的啟動(dòng)與關(guān)閉
    service rabbitmq-server stop/start/status/restart
  • 啟動(dòng)服務(wù)
    rabbitmq-server –detached
  • 關(guān)閉服務(wù)
    rabbitmqctl stop

3,服務(wù)的狀態(tài)查看

  • 查看rabbitmq-server的狀態(tài)
    rabbitmqctl status

  • 隊(duì)列信息,Queueinfoitem可以為:name, durable,auto_delete,arguments,messages_ready,messages_unacknowledged,messages,consumers,memory
    rabbitmqctl list_queues [-p vhostpath] [queueinfoitem ...]

  • Exchange信息,Exchangeinfoitem有:name ,type,durable,auto_delete,internal,arguments
    rabbitmqctl list_exchanges [-p vhostpath][exchangeinfoitem ...]

  • Binding信息,Bindinginfoitem有:source_name,source_kind,destination_name,destination_kind,routing_key,arguments
    rabbitmqctl list_bindings [-p vhostpath][bindinginfoitem ...]

  • Connection信息,Connectioninfoitem有:recv_oct,recv_cnt,send_oct,send_cnt,send_pend等
    rabbitmqctl list_connections [connectioninfoitem ...]

  • Channel信息,Channelinfoitem有consumer_count,messages_unacknowledged,messages_uncommitted,acks_uncommitted,messages_unconfirmed,prefetch_count,client_flow_blocked
    rabbitmqctl list_channels [channelinfoitem ...]

4,Web管理工具

rabbitmqctl是rabbitmq自帶的一個(gè)cli式的管理命令。盡管挺好用的,但是不夠直觀。
rabbitmq還自帶了一個(gè)web管理工具rabbitmq_management,默認(rèn)沒(méi)有開(kāi)啟,需要手動(dòng)開(kāi)啟。

rabbitmq-plugins enable rabbitmq_management
service rabbitmq-server restart

用瀏覽器打開(kāi)http://192.168.1.89:15672/
默認(rèn)賬號(hào)guest,密碼guest

rabbitmq web page

5,高級(jí)配置管理

5.1,插件管理

  • 開(kāi)啟某個(gè)插件
    rabbitmq-plugins enable xxx
  • 關(guān)閉某個(gè)插件
    rabbitmq-plugins disable xxx
  • 注意:重啟服務(wù)器后生效。

5.2,virtual_host管理

  • 新建virtual_host
    rabbitmqctl add_vhost xxx
  • 撤銷(xiāo)virtual_host
    rabbitmqctl delete_vhost xxx

5.3,用戶(hù)管理

  • 新建用戶(hù)
    rabbitmqctl add_user xxx pwd
  • 刪除用戶(hù)
    rabbitmqctl delete_user xxx
  • 改密碼
    rabbimqctl change_password {username} {newpassword}
  • 設(shè)置用戶(hù)角色,Tag可以為administrator, monitoring, management
    rabbitmqctl set_user_tags {username} {tag ...}

5.4,權(quán)限管理

  • 權(quán)限設(shè)置
    set_permissions [-p vhostpath] {user} {conf} {write} {read}
    ** Vhostpath Vhost路徑
    ** user 用戶(hù)名
    ** Conf 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶(hù)訪(fǎng)問(wèn)。
    ** Write 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶(hù)讀。
    ** Read 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶(hù)訪(fǎng)問(wèn)。

6,參考頁(yè)面

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,544評(píng)論 19 139
  • 關(guān)于消息隊(duì)列,從前年開(kāi)始斷斷續(xù)續(xù)看了些資料,想寫(xiě)很久了,但一直沒(méi)騰出空,近來(lái)分別碰到幾個(gè)朋友聊這塊的技術(shù)選型,是時(shí)...
    預(yù)流閱讀 586,598評(píng)論 51 787
  • 本文轉(zhuǎn)載自http://dataunion.org/?p=9307 背景介紹Kafka簡(jiǎn)介Kafka是一種分布式的...
    Bottle丶Fish閱讀 5,583評(píng)論 0 34
  • 分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦?,F(xiàn)在開(kāi)源的消息中間件有很多,前段時(shí)間我們自...
    請(qǐng)叫wo小爺閱讀 1,114評(píng)論 0 1
  • 姓名:周小蓬 16019110037 轉(zhuǎn)載自:http://blog.csdn.net/YChenFeng/art...
    aeytifiw閱讀 34,897評(píng)論 13 425

友情鏈接更多精彩內(nèi)容