當前位置:成語大全網 - 書法字典 - 微服務的跨語言調用(節選)

微服務的跨語言調用(節選)

微服務架構已經成為當前互聯網架構的趨勢,關於微服務的討論幾乎占據了各種技術會議的大部分頁面。國內應用最廣泛的服務治理框架是阿裏巴巴開源的dubbo,千米網也選擇dubbo作為微服務治理框架。另壹方面,與大多數互聯網公司壹樣,千米的開發語言是多樣化的,大多數後端業務都由java支持,每個業務線都有自己的開發語言選擇,因此出現了nodejs、python和go的多語言調用問題。

跨語言通話是壹個大話題,也是壹項具有挑戰性的技術活動。目前,有幾個解決方案是業內經常提到的,所以讓我們把它們拿出來談談:

當我們再次談論跨語言通話時,我們在談論什麽?觀察上述常見和成熟的解決方案,我們可以得出結論:解決跨語言通話只有兩種方法:

如果壹個新團隊面臨技術選擇,我認為上述所有方案都可以作為參考,並且可以考慮遺留系統的兼容性。

舊系統的遷移成本

這也是壹個關鍵的選擇因素。我們進行的第壹次嘗試是在RPC協議上努力工作。

通用協議的跨語言支持

springmvc的美好時代

springmvc

springmvc

在實現真正的跨語言通話之前,大多數實現“跨語言”的解決方案都是使用。阿裏巴巴。dubbo。remoting。exchange。response。

調用id:消息id,長類型。每個請求的唯壹標識id(由於異步通信,它用於將請求與返回的響應對應起來)。

Body length:消息正文的正文長度,類型為int,即正文內容中記錄了多少字節。

主體內容:請求參數,在響應參數的抽象序列化之後存儲在這裏。

協議消息最終將變成字節,由tcp傳輸。只要任何語言支持網絡模塊並具有Socket之類的封裝,通信就不會有問題。那麽,跨語言的難點是什麽?用其他語言調用java有兩個主要困難:

PS: Dubbo協議通信演示(/Lexburner/Dubbojs-learning)