grpc 泛化调用
使用 dubbo 时,我们可能会用到泛化调用,具体细节这里不再展开,golang 的 grpc 调用和 dubbo 类似,需要知道接口以及出入参信息,不过本文的关注点是泛化调用,即知道这些信息的前提下,不需要 pb 文件,然后直接去调用。
server 端的改造
默认情况下,grpc server 并不支持反射,需要手动开启:
reflection.Register(grpcServer)
没错,就这么简单,这么一行即可。
client 端调用
grpc 原生并不支持泛化调用,但是 grpcurl 可以,你看到的文档一般都是先在 server 端开启反射的支持,然后使用 grpcurl 来调用等,本文是把 grpcurl 集成到 golang 项目中去使用,然后实现泛化调用。
安装依赖
编写代码
|
|
ReflectHandler 的定义
|
|
上面的代码可直接拿去使用,其中 sayHello 的定义如下:
最后更新于