簡體   English   中英

協議緩沖區:通過GRPC發送任意結構

[英]Protocol Buffers: Send arbitrary structure over GRPC

我的目標是創建一個接收JSON對象(嵌套和任意性質)的API,將它們打包到google/protobuf/struct.proto結構中,並使用GRPC發送它們。 一切都很好,好的jsonpb庫涵蓋了編組過程。

問題出現在GRPC服務器(接收方)中,為了方便使用,它將struct.proto對象解壓縮為普通的golang數據結構,因此它與其他各種嵌套對象一起成為map[string]interface{}

因此,當我嘗試將對象轉換回struct.proto並將其發送回客戶端時,幾乎沒有選擇。 我發現了一個使用反射的轉換器,它有一個我無法完全捕捉到的錯誤(與無法區分數據類型有關,它把嵌套的東西視為interface {}), 這個

在敲了好幾個小時之后,我開始懷疑這是否是最好的方法。 我需要將struct.proto對象轉換為方便的對象並將其轉換回去,是否有更好的方法在保持嵌套功能的同時盡可能快地進行轉換?

奇怪的是,struct.proto易於轉換為一種方式,而很難進行相反的轉換。 必須是因為提取對象元數據的唯一方法是通過反射。 而且缺少泛型使其更加困難。

使用JSON會降低性能,並且gob並不是一個選擇,因為該協議必須盡可能通用。 我能想到的最后一次機會是找到另一個編組器,並通過protobuf將數據作為原始字節發送,然后在服務器中將其解組。

歡迎任何幫助,謝謝。

編輯1:

我認為最終我將必須實現在protobuf定義中具有多個編組協議和字節數組的可能性,以便服務器和客戶端以他們可以支持的最快速度進行協商……這將使我能夠使用gob和jbson作為后備。 評論?

GRPC服務器應該解壓字節成細末結構的定義在這里 您能否提供有關為什么看到map[string]interface{}更多信息?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM