go如果要和java的通讯,异构语言间的通讯,dubbo有解决方法吗?是用triple协议?
Dubbo可以很好地支持Go和Java之间的服务调用。
Dubbo使用的不是triple协议,而是基于基于TCP的一种简单的序列化协议。
Dubbo支持的通讯方式主要有两种:
基于jsonrpc的远程调用方式。它非常适合跨语言调用。
基于dubbo自定义协议。它提供了比jsonrpc更高效的二进制传输方式。
对于Go与Java之间的调用,可以选择以下两种方式:
Go客户端使用Dubbo的jsonrpc调用方式。
此方式不需要Go端了解Dubbo的内部协议,只要遵循jsonrpc标准即可。
Java提供webservice服务,Go作为客户端调用。
Go可以很方便地调用Java的webservice服务。可以将Java服务暴露为webservice,Go再通过webservice调用。
使用上述两种方式,都可以让Go方便地调用已有的Java Dubbo服务。
Japanese示例:
go
Copy
// Go作为Dubbo jsonrpc的客户端调用
client := dubborgs.NewClient("http://127.0.0.1:20880/jsonrpc")
request := dubborgs.JsonRpcRequest{
Jsonrpc: "2.0",
Id: 1,
Method: "com.service.HelloService.sayHello",
Params: []interface{}{"dubbo"},
}
response := dubborgs.JsonRpcResponse{}
err := client.Call(request, &response)
// Go调用Java的webservice服务
client := soap.NewClient("http://localhost:8080/HelloService?wsdl")
var result string
client.Call("sayHello", "dubbo", &result)
希望以上信息能为您提供参考。欢迎继续提问。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。