訂閱和消息總線python(消息總線服務)

本文目錄一覽:

python celery 怎麼配置到集群

Celery是一個基於Python的分布式並行處理框架,通過消息總線進行任務調度,非常靈活。

它有輸入和輸出通道,通過輸入通道連接到broker(如AMQP服務Channel)或者通過輸出通道連接到結果的backend(用於獲取結果,不是必須的,因為有的操作只是單向分發任務)。

OpenStack 通用技術有哪些

一.消息總線(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)

SQLAlchemy是Python語言下的一款開源軟件,提供了SQL工具包以及對象關係映射器ORM,這樣SQLAlchemy便能讓Python開發人員簡單靈活地運行SQL操作後台數據庫。

SQLAlchemy主要分成兩部分,SQLAlchemy Core和SQLAlchemy ORM。前者主要包括SQL語言表達式、數據庫引擎、連接池等,其目的是為了實現連接不同的後台數據庫、提交查詢和更新SQL請求去後台執行。SQLAlchemy ORM提供數據映射模式,也就是把程序語言的對象數據映射成數據庫中的關係數據,或者把關係數據映射成對象數據。

需要注意的是,如果程序用了對象關係映射器,雖然好處極多,但程序性能會受到一定影響。因此,對象關係映射是一個可選的模塊,而開發人員即便不用任何對象關係映射也能直接用SQLAlchemy操作數據。

activemq和jms是種什麼關係

JMS是一個用於提供消息服務的技術規範,它制定了在整個消息服務提供過程中的所有數據結構和交互流程。而activemq則是消息隊列服務,是面向消息中間件(MOM)的最終實現,是真正的服務提供者。

jms 的一個標準或者說是一個協議. 通常用於企業級應用的消息傳遞. 主要有topic 消息(1 對多), queue 消息(1對1)。activemq 是一個jms 的實現, apache 出的.

另外還其它的實現 jboss 。

MQ簡介:

MQ全稱為Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過寫和檢索出入列隊的針對應用程序的數據(消息)來通信,而無需專用連接來鏈接它們。消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用於諸如遠程過程調用的技術。排隊指的是應用程序通過隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。其中較為成熟的MQ產品有IBMWEBSPHERE MQ。

MQ特點:

MQ的消費-生產者模型的一個典型的代表,一端往消息隊列中不斷的寫入消息,而另一端則可以讀取或者訂閱隊列中的消息。MQ和JMS類似,但不同的是JMS是SUN JAVA消息中間件服務的一個標準和API定義,而MQ則是遵循了AMQP協議的具體實現和產品。

使用場景:

在項目中,將一些無需即時返回且耗時的操作提取出來,進行了異步處理,而這種異步處理的方式大大的節省了服務器的請求響應時間,從而提高了系統的吞吐量。

JMS簡介:

JMS即Java消息服務(Java Message Service)應用程序接口是一個Java平台中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。Java消息服務是一個與具體平台無關的API,絕大多數MOM提供商都對JMS提供支持。

定義:

JMS(Java Messaging Service)是Java平台上有關面向消息中間件(MOM)的技術規範,它便於消息系統中的Java應用程序進行消息交換,並且通過提供標準的產生、發送、接收消息的接口簡化企業應用的開發,翻譯為Java消息服務。

簡介:

JMS是一種與廠商無關的 API,用來訪問消息收發系統消息。它類似於JDBC(Java DatabaseConnectivity):這裡,JDBC 是可以用來訪問許多不同關係數據庫的 API,而 JMS 則提供同樣與廠商無關的訪問方法,以訪問消息收發服務。許多廠商目前都支持JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,這只是幾個例子。 JMS 使您能夠通過消息收發服務(有時稱為消息中介程序或路由器)從一個 JMS 客戶機向另一個JMS客戶機發送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關該消息的元數據組成。消息主體則攜帶着應用程序的數據或有效負載。根據有效負載的類型來劃分,可以將消息分為幾種類型,它們分別攜帶:簡單文本(TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、字節流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的消息 (Message)。

JMS和MQ的關係:

JMS是一個用於提供消息服務的技術規範,它制定了在整個消息服務提供過程中的所有數據結構和交互流程。而MQ則是消息隊列服務,是面向消息中間件(MOM)的最終實現,是真正的服務提供者;MQ的實現可以基於JMS,也可以基於其他規範或標準。

支持JMS的開源MQ:

目前選擇的最多的是ActiveMQ。

ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規範的 JMS Provider實現,儘管JMS規範出台已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演着特殊的地位。

主要特點:

1. 多種語言和協議編寫客戶端。語言: Java, C, C++, C#, Ruby, Perl, Python, PHP。應用協議: OpenWire,Stomp REST,WSNotification,XMPP,AMQP

2. 完全支持JMS1.1和J2EE 1.4規範 (持久化,XA消息,事務)

3. 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統裡面去,而且也支持Spring2.0的特性

4. 通過了常見J2EE服務器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上

5. 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA

6. 支持通過JDBC和journal提供高速的消息持久化

7. 從設計上保證了高性能的集群,客戶端-服務器,點對點

8. 支持Ajax

9. 支持與Axis的整合

10. 可以很容易得調用內嵌JMS provider,進行測試

11. ActiveMQ速度非常快;一般要比jbossMQ快10倍。

優點:是一個快速的開源消息組件(框架),支持集群,同等網絡,自動檢測,TCP,SSL,廣播,持久化,XA,和J2EE1.4容器無縫結合,並且支持輕量級容器和大多數跨語言客戶端上的Java虛擬機。消息異步接受,減少軟件多系統集成的耦合度。消息可靠接收,確保消息在中間件可靠保存,多個消息也可以組成原子事務。

缺點:ActiveMQ默認的配置性能偏低,需要優化配置,但是配置文件複雜,ActiveMQ本身不提供管理工具;示例代碼少;主頁上的文檔看上去比較全面,但是缺乏一種有效的組織方式,文檔只有片段,用戶很難由淺入深進行了解,二、文檔整體的專業性太強。在研究階段可以通過查maillist、看Javadoc、分析源代碼來了解。

ActiveMQ 是幹什麼的?有什麼作用?能舉個實際開發的例子嗎

ActiveMQ的作用是實現跨網絡的習性與系統劍通信,可以將業務解耦,提供異步消息支持,增加系統並發量。操作方法如下:

1、首先進入到官網下載ActiveMQ安裝包。

2、分系統的,有linux的有windows的,這裡選擇的是windows版本的。

3、將下載的好的安裝包解壓即可使用。

4、解壓後具體的目錄結構如下圖所示。

5、設置ActiveMQ的訪問密碼,打開conf目錄的activemq.xml文件。

6、這裡使用的是UE打開的如下,在該文件中添加密碼用戶!– 添加訪問ActiveMQ的賬號密碼 —  。

原創文章,作者:BYQRG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/324939.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BYQRG的頭像BYQRG
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論