有关http转RPC的问题

有关http转RPC的问题

老师,我之前碰到过的项目,他们的设计是最前端直接使用gin框架来接受http请求,然后搞一层转发,gin接收到请求后,里面再去调用RPC服务。相当于gin这个项目同时充当了http服务和RPC客户端两个功能。都没用到过gateway这个东西。


这种设计跟gateway相比有啥区别么,我不太懂。。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

从节点功能上来说没有区别,都是一个http服务的节点,充当了RCP的客户端。区别仅仅在于实现的框架不同。

grpc gateway是个非常简单的http服务的实现。“一键”完成基于http json的rest接口到内部基于protobuf的rpc接口的转化。但是可定制的内容相对少一些,也没有接入gin的生态。

gin的话,在生态和工具链,自定义程度都比grpc gateway要高,而格式转化这部分其实现难度也不大,自研也是一种可行的方案。

不过gin和grpc gateway也是可以协作的。在https://git.imooc.com/class-108/coolcar/src/master/server/gateway/main.go#L87 我们看到gateway的runtime.ServeMux其实是一个标准的http.Handler接口的实现。我们可以使用gin.WrapH函数,把ServerMux包装后纳入gin框架里面来。

  • 爱吃apple的阿狸 提问者 #1

    懂了,又好像没懂,相当于两者都差不多,gateway一键傻瓜式实现,gin的话可自定义,扩展性更好,对吧?

    后面协作,gateway也是基于go的原生http库,所以gin也可以直接warp一下。


    协作的部分,感觉似懂非懂,毕竟没有实际操作过,我现在才学到gateway一半,大概等我看完了,就可能了解更多了吧。。。。。感谢老师!

    2021-12-05 12:03:32
  • 爱吃apple的阿狸 提问者 #2

    哦,对了老师,那么实际生产环境是推荐使用grpc-gateway么?,我想问的是,是教学方便所以使用grpc-gateway,还是我以后项目上线也可以使用这种方式? 

    相比grpc-gateway,go框架自己搞http转rpc层,会更好维护吧(毕竟大部分程序猿了解go的框架,不太了解gateway吧,可能)

    2021-12-05 12:15:08
  • ccmouse 回复 提问者 爱吃apple的阿狸 #3

    grpc-gateway还是一套比较简单的框架,掌握他很快,所以不用担心其他程序员不了解的问题。由于它暴露了标准的http.Handler接口,和其他框架兼容也没有什么问题,建议在项目中使用的。

    可扩展性,其实我在课上也做了自定义Marshaller,自定义头部,以及grpc.DialOption的使用,普通的扩展性需求也能够胜任。

    2021-12-09 19:50:09
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师