回覆列表
  • 1 # 工程人9527

    一.訊息匯流排(MQ)  OpenStack的各專案之間透過REST ful API進行通訊;專案內部、不同服務程序之間的通訊,則必須要透過訊息匯流排。軟體從最初的面向過程、面向物件、再到面向服務,要求我們去考慮各個服務之間如何傳遞訊息,借鑑硬體匯流排的概念,引入了訊息匯流排的模式,顧名思義,一些服務向匯流排傳送訊息,其他服務則從總線上獲取訊息。  OpenStack對很多訊息匯流排的開源實現提供了支援,比如RabbitMQ、Qpid等。基於這些訊息匯流排型別,OpenStack oslo.messaging庫實現了以下兩種方式來完成專案內部各服務程序之間的通訊。  遠端過程呼叫(RPC)  透過遠端過程呼叫,一個服務程序可以呼叫其他服務程序的方法,並且有兩種呼叫方式,call和cast。透過call的方式呼叫,遠端方法會被同步執行,呼叫者會被阻塞直到結果返回。透過cast方式呼叫,遠端方法會被非同步執行,結果並不會立即返回,呼叫者也不會被阻塞,但是呼叫者需要利用其他方式查詢這次遠端呼叫的結果。  事件通知(Event Notification)  某個服務程序可以把時間通知傳送到訊息總線上,該訊息總線上所有對此類事件感興趣的服務程序,都可以獲得此事件通知並進行下一步的處理,處理的結果並不會返回給事件傳送者。這種通訊方式,不但可以在同一個專案內部的各個服務程序之間傳送通知,也可以實現跨專案之間的通知傳送。Ceilometer就透過這種方式大量獲取其他OpenStack專案的事件通知,從而進行計量和監控。  1.AMQP(高階訊息佇列協議)  OpenStack支援的訊息匯流排型別中,大部分都是基於AMQP的。AMQP是一個非同步的應用層訊息傳遞開放協議,主要包括了訊息的導向、訊息交換、訊息佇列和路由。對於一個使用了AMQP的中介軟體服務而言,當不同的訊息由生產者(Producer)傳送到Server時,它會根據不同的條件把訊息傳遞給不同的消費者(Consumer)。如果消費者無法接收訊息或者接收訊息不夠快時,它會把訊息快取在記憶體或者磁碟上。  2.基於AMQP實現RPC  3.OpenStack支援的常見訊息匯流排型別  1)RabbitMQ  2)Qpid  3)ZeroMQ  二.SQLAlchemy和資料庫(Shane)

  • 中秋節和大豐收的關聯?
  • 化妝必備什麼?