1隐砸,簡(jiǎn)單介紹與服務(wù)安裝
1.1,背景
在分布式系統(tǒng)中,我們廣泛運(yùn)用消息中間件進(jìn)行系統(tǒng)間的數(shù)據(jù)交換,便于異步解耦〖芗桑現(xiàn)在開(kāi)源的消息中間件有很多.
那么,消息中間件性能究竟哪家強(qiáng)?
帶著這個(gè)疑問(wèn)我衬,我們中間件測(cè)試組對(duì)常見(jiàn)的三類消息產(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ě)磁盤的過(guò)程是線性IO。此時(shí)broker磁盤IO已達(dá)瓶頸缰泡。
- RocketMQ也表現(xiàn)不俗刀荒,吞吐量在11.6w/s,磁盤IO %util已接近100%棘钞。RocketMQ的消息寫(xiě)入內(nèi)存后即返回ack缠借,由單獨(dú)的線程專門做刷盤的操作,所有的消息均是順序?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革屠,安裝
Ubuntu環(huán)境下安裝RabbitMQ
apt-get install rabbitmq-server備注:以上對(duì)比分析,摘自阿里中間件團(tuán)隊(duì)
Kafka排宰、RabbitMQ似芝、RocketMQ消息中間件的對(duì)比 —— 消息發(fā)送性能
http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/
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
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 - 撤銷virtual_host
rabbitmqctl delete_vhost xxx
5.3训唱,用戶管理
- 新建用戶
rabbitmqctl add_user xxx pwd - 刪除用戶
rabbitmqctl delete_user xxx - 改密碼
rabbimqctl change_password {username} {newpassword} - 設(shè)置用戶角色褥蚯,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 用戶名
** Conf 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶訪問(wèn)况增。
** Write 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶讀赞庶。
** Read 一個(gè)正則表達(dá)式match哪些配置資源能夠被該用戶訪問(wèn)。
6澳骤,參考頁(yè)面
rabbitmq安裝歧强、配置與管理
http://blog.csdn.net/huoyunshen88/article/details/33738393rabbitmqctl manual page
http://www.rabbitmq.com/man/rabbitmqctl.1.man.html高可用筆記(4)rabbitmq
https://yq.aliyun.com/articles/68656