기금넷 공식사이트 - 경제 뉴스 - 마이크로서비스 교차 언어 호출(발췌)

마이크로서비스 교차 언어 호출(발췌)

마이크로서비스 아키텍처는 인터넷 아키텍처의 최신 트렌드가 되었으며, 다양한 기술 컨퍼런스에서 마이크로서비스에 대한 논의가 거의 대부분의 페이지를 차지합니다. 중국에서 가장 일반적으로 사용되는 서비스 거버넌스 프레임워크는 Alibaba의 오픈 소스 dubbo입니다. Qianmi.com도 마이크로서비스 거버넌스 프레임워크로 dubbo를 선택했습니다. 반면, 대부분의 인터넷 회사와 마찬가지로 Qianmi의 개발 언어는 다양합니다. 대부분의 백엔드 비즈니스는 Java로 지원되며 각 비즈니스 라인에는 nodejs, Python 및 go와 같은 자체 개발 언어가 있습니다. 다국어 통화 문제.

다국어 통화는 큰 주제이자 매우 어려운 기술 작업입니다. 현재 업계에서 자주 언급되는 솔루션은 다음과 같습니다.

다국어 통화에 관해 이야기할 때 무엇을 말하는 걸까요? 위에서 언급한 보다 일반적이고 성숙한 솔루션을 살펴보면 언어 간 통화를 해결하기 위한 아이디어는 두 가지뿐이라는 결론을 내릴 수 있습니다.

새로운 유형의 팀이 기술 선택에 직면하면 위에서 언급한 모든 솔루션을 참고용으로 포함할 수 있으며, 레거시 시스템의 호환성 문제도 고려할 수 있습니다.

기존 시스템을 마이그레이션하는 데 드는 비용

이것도 핵심 선택 요소입니다. . 우리의 첫 번째 시도는 RPC 프로토콜에 대한 작업이었습니다.

공통 프로토콜에 대한 교차 언어 지원

springmvc의 옛 시절

springmvc

springmvc

아직 구현되지 않았습니다. 진정한 언어 간 호출 전에 "언어 간"을 달성하기 위한 대부분의 솔루션은 .alibaba.dubbo.remoting.exchange.Response

호출 id: 메시지 ID, 긴 유형을 사용하는 것입니다. 각 요청의 고유 식별 ID(요청과 반환된 응답을 일치시키는 데 사용되는 비동기 통신 방법으로 인해)

본문 길이: 메시지 본문의 길이, int 유형, 즉 레코드 본문 내용에는 몇 바이트가 있습니까?

본문 내용: 요청 매개변수, 응답 매개변수는 추상 직렬화 후에 여기에 저장됩니다.

프로토콜 메시지는 결국 바이트로 변환되어 TCP를 사용하여 전송됩니다. 모든 언어가 네트워크 모듈을 지원하고 소켓과 같은 캡슐화가 있는 한 통신에는 문제가 없습니다. 그렇다면 교차 언어의 어려움은 무엇입니까? 다른 언어에서 Java를 호출할 때 두 가지 주요 어려움이 있습니다:

ps: dubbo 프로토콜 통신 데모(/lexburner/Dubbojs-Learning)