非常大的單片Django應用程序。所有組件都使用相同的數據庫。我們需要分離服務,以便我們可以獨立升級系統的某些部分而不影響其餘部分。
我們使用RabbitMQ作爲Celery的經紀商。
現在我們有兩種選擇:使用REST接口
- HTTP服務。
- JSONRPC了AMQP的事件循環服務
我的團隊朝着HTTP傾斜,因爲這是他們所熟悉的,但我認爲使用RPC over AMQP的優點遠大於它。
AMQP爲我們提供了輕鬆添加負載均衡和高可用性的功能,並保證消息傳遞。
而使用HTTP,我們要創建客戶端的HTTP包裝與REST接口的工作,我們必須把在一個負載平衡器,爲了有HA等
隨着AMQP我可以建立基礎設施剛產生服務的另一個實例,它將連接到與其他實例相同的隊列,以及bam,HA和負載平衡。
我錯過了我對AMQP的想法嗎?
我們結束了HTTP/REST。我真的很想去AMQP路線,因爲它非常適合我們的建築,但我的團隊不想嘗試新的東西,這是一個無賴。 使用HTTP代替AMQP和RPC開發Redudant和高度可用的SOA系統需要做很多工作。 – jreid42
@pinepain我認爲有一件事要提及(如果Iam錯誤,請糾正我),如果使用AMQP,您可以將消息推送到目標位置,就像您不能使用HTTP一樣(使用請求響應方法) – rayman
@rayman HTTP和AMQP是不同的概念,所以我不希望使用這些標準進行比較。 – pinepain