日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

openstack rabbitmq

發(fā)布時(shí)間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openstack rabbitmq 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

這兩天研究了一下,OpenStack的工作原理,并著重調(diào)研了一下RabbitMQ在OpenStack中扮演的角色。

首先,OpenStack中模塊Volume Control、Network Controller、ComputeController以及Scheduler之間的通信是通過AMQP協(xié)議實(shí)現(xiàn),消息由RabbitMQ作為中間件轉(zhuǎn)發(fā),以一種RPC(Remote Process Call)的方式進(jìn)行的。具體可見圖

其中用戶在dashboard中進(jìn)行的操作通過Nova.api、Glance.api等調(diào)用Volume、Network、ComputeController等模塊,上圖中是一個(gè)邏輯結(jié)構(gòu),可以看出這種基于RPC的松耦合調(diào)用可以不用關(guān)心某些模塊是否在本機(jī),Openstack的多個(gè)模塊間可以輕易以分布式的方式解決。

以Nova為例,每一個(gè)Nova服務(wù)都會(huì)在初期建立兩個(gè)隊(duì)列,兩個(gè)隊(duì)列同時(shí)與相同的exchange(名稱叫做Nova、類型為Topic)綁定,但是二者的RoutingKey不同也就是Topic不同,格式分別為NODE-TYPE.NODE-ID以及NODE-TYPE,其二者功能也有所不同,并且由于采用RPC結(jié)構(gòu),所以當(dāng)操作完成,結(jié)果會(huì)以Direct的方式回復(fù)給服務(wù)調(diào)用方。該流程是RabbitMQ在Openstack中實(shí)現(xiàn)的核心思想,具體圖示如下:

其中Invoker可以看做Nova.api,發(fā)出指令,這里TopicConsumer會(huì)以一個(gè)subscriber的身份注冊(cè)到相應(yīng)隊(duì)列上,當(dāng)隊(duì)列有消息過來時(shí),會(huì)及時(shí)Push給Consumer,當(dāng)Worker處理完成,則會(huì)返回結(jié)果,以Direct方式(即雙方Routing Key相同且唯一)回復(fù)給Invoker,完成RPC全部流程。

其實(shí)針對(duì)于OpenStack而言,RabbitMQ并不是唯一選擇,任何基于AMQP協(xié)議的消息隊(duì)列都可以作為該中間件存在于OpenStack之中。

由于上文提到了以Topic方式進(jìn)行消息分配(exchange),這里就對(duì)RabbitMQ的消息分配模式進(jìn)行簡(jiǎn)單介紹:

1、Direct Exchange queue綁定到exchange上,發(fā)送與接收方(訂閱該Queue)必須使用一個(gè)完全相同的Routing Key才行

2、Fanout Exchange 不關(guān)心Routingkey是什么,只要Queue與該exchange綁定,接收方(訂閱該Queue)就會(huì)收到該消息。

3、Topic Exchange 對(duì)Routing key進(jìn)行加工,引入了兩個(gè)符號(hào)* #,*匹配任意一個(gè)詞,#可匹配一個(gè)或多個(gè)詞,這樣queues以一個(gè)高級(jí)的Routing Key命名方式與exchange綁定,針對(duì)自己感興趣的Topic進(jìn)行訂閱。

這樣我們就明白了為何Openstack中用topic模式的原因,拿Exchange Nova為例,這上面有六個(gè)queue與之綁定,分別是Network、Network.xxx、queue通過這些不同的RoutingKey來獲取不同Topic的消息。

最后還要澄清幾個(gè)概念

Connection:連接,是針對(duì)于RabbitMQ的AMQP客戶端與之建立的,類似于一個(gè)DB的connection

Channel:在Connection基礎(chǔ)上的輕量級(jí)的信道

Exchange、Queue、RoutingKey,下圖很好的解釋了三個(gè)名詞的概念,這里以一個(gè)RoutingKey將Queue Binding到一個(gè)Exchange上,一個(gè)Exchange與一個(gè)Routingkey共同確定了一個(gè)到達(dá)queue上的route。

rabbitmq的命令可以參考http://www.2cto.com/os/201206/137847.html?fw_key=20EAF9E5E8BB84D5
參考資料:

http://docs.openstack.org/developer/nova/devref/rpc.html

http://www.rabbitmq.com/getstarted.html

http://www.infoq.com/articles/AMQP-RabbitMQ

http://wenku.baidu.com/view/800285ea0975f46527d3e19b.html

http://en.wikipedia.org/wiki/RabbitMQ

http://sunjun041640.blog.163.com/blog/static/25626832201031822459205/

http://zhb1208.iteye.com/blog/1330658

代碼:http://sillycat.iteye.com/blog/1579464
PS:
RabbitMQ的管理界面可以通過下面命令安裝

/usr/lib/rabbitmq/lib/rabbitmq_server-2.7.1/sbin/rabbitmq-plugins enable rabbitmq-management

之后重啟rabbitmq,登錄?http://server-name:55672?可以看到友善的管理界面

轉(zhuǎn)載于:https://my.oschina.net/scalewing/blog/169477

總結(jié)

以上是生活随笔為你收集整理的openstack rabbitmq的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。