有关http转RPC的问题
老师,我之前碰到过的项目,他们的设计是最前端直接使用gin框架来接受http请求,然后搞一层转发,gin接收到请求后,里面再去调用RPC服务。相当于gin这个项目同时充当了http服务和RPC客户端两个功能。都没用到过gateway这个东西。
这种设计跟gateway相比有啥区别么,我不太懂。。
29
收起
正在回答
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框架里面来。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星