grpc 和 http 之间有关系吗?-灵析社区

古典研发君

在工作项目中前后端采用了 grpc 的方式通讯,我们约定一份 .proto 文件,然后进行开发。但由于我本人是前端开发,就导致接口文件基本上都是后端开发来编写的,我用到的时候直接调用生成好的 ts 文件就行了,所以对这方面的理解一直模棱两可。 问题:grpc 的方式和传统的 http 通信方式有什么区别呢?(相较于 http grpc 有什么优劣呢?)

阅读量:173

点赞量:0

问AI
HTTP和gRPC是两种不同的网络通信协议,它们在设计理念、性能、使用场景等方面各有优劣。 HTTP的优势: 1. 广泛兼容性 :HTTP是互联网上使用最广泛的协议,几乎所有的网络设备、浏览器都支持HTTP。 2. 简单易用 :基于文本的协议,易于开发和调试。 3. 无状态 :每个请求都是独立的,不需要保持状态,易于扩展。 4. 丰富的中间件生态 :如缓存、负载均衡、安全认证等。 5. 支持多种数据格式 :如JSON、XML等,灵活性高。 HTTP的劣势: 6. 性能 :相比二进制协议,基于文本的HTTP协议在数据传输上不够高效。 7. Header冗余 :每次请求都需要携带完整的Header信息,增加了传输的数据量。 8. 同步阻塞 :传统的HTTP请求是同步的,客户端在等待响应期间无法进行其他操作。 gRPC的优势: 9. 高性能 :基于HTTP/2协议,使用二进制传输,数据包体积小,解析速度快。 10. 流式通信 :支持双向流、服务器流和客户端流,适用于需要高并发的场景。 11. 服务端推送 :服务器可以主动向客户端推送信息。 12. 定义明确的接口 :使用Protocol Buffers定义服务接口和消息格式,接口更加规范和严格。 13. 多语言支持 :支持多种编程语言,便于跨语言的服务调用。 gRPC的劣势: 14. 复杂性 :相对于HTTP,gRPC的使用和调试更加复杂。 15. 浏览器支持 :虽然gRPC-Web可以用于浏览器,但原生gRPC在浏览器中的支持并不好。 16. 中间件生态 :相较于成熟的HTTP中间件生态,gRPC的中间件相对较少。