转载自:https://zhuanlan.zhihu.com/p/29350695
grpc-gateway是一个使用起来很便捷的工具,可以很方便的把grpc接口用HTTP的方式暴露出去。
但在实际使用过程中,也在grpc-gateway里发现了一些问题,比如:
1,灵活性不够,如果有一些比较特殊的需求,在grpc-gateway中能扩展的余地不大;
2,严重依赖protocol buffer,而且必须是protobuf 3;
3,即使grpc服务的接口不变,只是修改HTTP接口定义,也必须重新生成代码,也就必须重新部署,重启服务;
4,只支持JSON格式的输入,不支持传统的kv格式的参数;
5,只支持grpc,嗯。。好吧,这不算问题,但thrift也很普及,是不是?
6,grpc-gateway在错误处理等方面都不够成熟,而且开发者似乎也不是很活跃。。。
Turbo努力解决了上面提到的问题,这是项目的地址:
[vaporz/turbo](https://github.com/vaporz/turbo)
这是文档地址,很贴心很详细,中英双语哦~
[Turbo Documentation](https://vaporz.github.io)
除了提供基本的与grpc-gateway类似的HTTP代理功能,Turbo还可以做到:
1,高度灵活,提供各种基于切面(不是吃的那个“切面”)思想的组件,可以在各个环节进行定制;
2,只依赖grpc,对protocol buffer没有要求,因此,你既可以使用protobuf2,也可以使用protobuf3;
3,HTTP接口的定义,以及与后端接口之间的映射,可以在运行时直接修改,并且立即生效!
4,不仅支持JSON格式的输入,也支持传统的kv格式的输入!
5,不仅支持grpc,还支持thrift!
6,自带命令行工具,一键创建可运行的项目,一键重新生成代码!
Turbo目前仍处于诞生初期,但现在的代码已经经过了认真的测试,认真细致的测试用例让测试覆盖率达到了98%。
当然,测试覆盖率说明不了多少问题,只有经过实战考验的代码才是可靠的!
因此,欢迎大家多多试用,多多吐槽,有任何建议或想法,请在GitHub上开Issue,坐等。
遇到任何问题,我愿意尽力帮助,尽力解决!
谢谢!
有疑问加站长微信联系(非本文作者)