2017-06-21 98 views
0

所有之間的通信:一個獨立的服務器ApacheMesos主機和客戶端

我正在一個獨立的服務器,它應該能夠通過HTTP POST請求去跟Mesos主&客戶端上。
我設置了Jersey REST服務器。我最初的計劃是使用JSON/XML來映射實體,因爲這被廣泛使用。

不過,我找到了一些通信的兼容性問題,

  1. 我產生從* .proto文件的Java類。 我嘗試通過REST(帶有JSON)調用來創建一個Event.Offers對象,但得到一些數據流反序列化錯誤。 我認爲這是因爲生成的類的複雜結構。它們不是POJO的,例如他們沒有公共構造函數。

  2. 「src/cli/execute.cpp」將「ContentType」設置爲「PROTOBUF」。
    我認爲在大多數情況下,Mesos內部使用「PROTOBUF」,而不是JSON。

因此,鑑於上述問題,
我應該落實我與ProtocolBuffer服務器,這是一個更好的辦法?我認爲這將完全兼容Mesos ... 或者我應該嘗試將PROTOBUF轉換爲JSON內Mesos?

任何人都可以提供一些建議嗎?我對這一點感到困惑。

非常感謝

+0

這個用例究竟是什麼?爲什麼不使用Mesos APis? – Tobi

+0

我的老闆想要這個。她想要一個可以管理多個Mesos羣集的全局服務器。 – MyCoy

+0

我的問題是關於protobufs ...你可以包裝HTTP API。管理多臺服務器只是指向正確的Mesos Master URL。這聽起來太複雜了,你所描述的很複雜。 – Tobi

回答

0

您應該使用protobuf的。

Protobuf只是Mesos定義API的一種方式。 Mesos可以處理二進制序列化的protobuf請求或JSON。 Mesos在版本2中使用protobuf(將會升級到3),並且沒有從protobuf v2到JSON的標準序列化,並且Mesos不完全支持v3 JSON映射,請參閱MESOS-5995。從理論上講,您可以手動創建JSON,但使用protobuf可以保證您將使用正確版本的API併爲您處理序列化。

In documentation有一些示例說明通信是怎樣的。沒有正確的頭文件Mesos會拒絕請求。

與Scheduler和Executor HTTP API類似,操作員端點只接受HTTP POST請求。請求主體應使用JSON(Content-Type: application/json)或Protobuf(Content-Type: application/x-protobuf)進行編碼。

Here您可以在不同的使用案例中找到與Mesos通信的示例庫:scheduler,executor,operator。

Here你可以找到我的教育目的調度程序使用JSONs。它是用Go編寫的,並試圖將所有內容都放在一個地方,只有一個對Protobuf的依賴。

+0

感謝您的確認,ProtoBuf是我正在處理的方法。 – MyCoy