跨語言通話是壹個大話題,也是壹項具有挑戰性的技術活動。目前,有幾個解決方案是業內經常提到的,所以讓我們把它們拿出來談談:
當我們再次談論跨語言通話時,我們在談論什麽?觀察上述常見和成熟的解決方案,我們可以得出結論:解決跨語言通話只有兩種方法:
如果壹個新團隊面臨技術選擇,我認為上述所有方案都可以作為參考,並且可以考慮遺留系統的兼容性。
舊系統的遷移成本
這也是壹個關鍵的選擇因素。我們進行的第壹次嘗試是在RPC協議上努力工作。
通用協議的跨語言支持
springmvc的美好時代
springmvc
springmvc
在實現真正的跨語言通話之前,大多數實現“跨語言”的解決方案都是使用。阿裏巴巴。dubbo。remoting。exchange。response。
調用id:消息id,長類型。每個請求的唯壹標識id(由於異步通信,它用於將請求與返回的響應對應起來)。
Body length:消息正文的正文長度,類型為int,即正文內容中記錄了多少字節。
主體內容:請求參數,在響應參數的抽象序列化之後存儲在這裏。
協議消息最終將變成字節,由tcp傳輸。只要任何語言支持網絡模塊並具有Socket之類的封裝,通信就不會有問題。那麽,跨語言的難點是什麽?用其他語言調用java有兩個主要困難:
PS: Dubbo協議通信演示(/Lexburner/Dubbojs-learning)