當前位置:編程學習大全網 - 編程語言 - 微服務跨語言調用(摘選)

微服務跨語言調用(摘選)

微服務架構已成為目前互聯網架構的趨勢,關於微服務的討論,幾乎占據了各種技術大會的絕大多數版面。國內使用最多的服務治理框架非阿裏開源的 dubbo 莫屬,千米網也選擇了 dubbo 作為微服務治理框架。另壹方面,和大多數互聯網公司壹樣,千米的開發語言是多樣的,大多數後端業務由 java 支撐,而每個業務線有各自開發語言的選擇權,便出現了 nodejs,python,go 多語言調用的問題。

跨語言調用是壹個很大的話題,也是壹個很有挑戰的技術活,目前業界經常被提及的解決方案有如下幾種,不妨拿出來老生常談壹番:

當我們再聊跨語言調用時我們在聊什麽?縱觀上述幾個較為通用,成熟的解決方案,可以得出結論:解決跨語言調用的思路無非是兩種:

如果壹個新型的團隊面臨技術選型,我認為上述的方案都可以納入參考,可考慮到遺留系統的兼容性問題

舊系統的遷移成本

這也關鍵的選型因素。我們做出的第壹個嘗試,便是在 RPC 協議上下功夫。

通用協議的跨語言支持

springmvc的美好時代

springmvc

springmvc

在沒有實現真正的跨語言調用之前,想要實現“跨語言”大多數方案是使用 .alibaba.dubbo.remoting.exchange.Response

invoke id:消息 id, long 類型。每壹個請求的唯壹識別 id(由於采用異步通訊的方式,用來把請求 request 和返回的 response 對應上)

body length:消息體 body 長度, int 類型,即記錄 Body Content 有多少個字節

body content:請求參數,響應參數的抽象序列化之後存儲於此。

協議報文最終都會變成字節,使用 tcp 傳輸,任何語言只要支持網絡模塊,有類似 Socket 之類的封裝,那麽通信就不成問題。那,跨語言難在哪兒?以其他語言調用 java 來說,主要有兩個難點:

ps:dubbo 協議通訊demo( /lexburner/Dubbojs-Learning )

  • 上一篇:如果撒哈拉的沙漠全部變成了樹林,那是災難還是幸運?
  • 下一篇:Python調用R編程——rpy2
  • copyright 2024編程學習大全網