都说grpc是跨语言的一个rpc框架,当团队内部有多种流行编程语言时,那么grpc可以为他们提供通信,今天我们就通过一个Hello World来看看Java和Go是怎么通信的,一起实践吧,只有亲身实践才能更好的掌握,理解。
https://github.com/sunpengwei1992/java_grp
https://github.com/sunpengwei1992/go_common/tree/master/grpc
我们以Go作为服务端,Java作为客户端
准备好Go版的proto文件
下载依赖的moudle,如下地址
google.golang.org/grpc v1.23.1
github.com/golang/protobuf v1.3.2
执行如下命令,生成proto.pb.go文件
protoc --goout=plugins=grpc:. helloworld.proto
服务端实现接口,提供服务
编写服务端代码,并启动服务端
到次为止,Go服务端启动完成,接下来我们准备Java客户端代码
准备好Java版的proto文件,和Go版的区别是多了一些Java的选项,其余的不能改变
新建一个maven项目,配置pom文件,依赖的jar包如下
编译配置如下
开始根据proto文件编译生成java文件,如下图所示,依次点击红色的插件
编写客户端文件,连接Go的服务端,发起请求
上面Java客户端生成的文件不要动,另写一个服务的实现类,代码如下
写一个main方法启动服务端,代码如下
上面go服务端生成的proto文件依然不要变,编写自己的客户端代码,如下
通过一个HelloWorld的案例带领大家实践多语言通过grpc通信,真实场景中,往往非常复杂,还需要大家多多研究,比如,负载均衡,限流,服务降级,protobuffer文件管理,版本升级等各种问题都需要考虑,grpc的专栏也就到这里了,希望大家通过这十篇文章能有有所收获,更加深入的需要大家在实践中自己摸索,思考,总结。想深入交流的可以留言获取我的邮箱地址。