grpc 和 http 之间有关系吗?

在工作项目中前后端采用了 grpc 的方式通讯,我们约定一份 .proto 文件,然后进行开发。但由于我本人是前端开发,就导致接口文件基本上都是后端开发来编写的,我用到的时候直接调用生成好的 ts 文件就行了,所以对这方面的理解一直模棱两可。

问题:grpc 的方式和传统的 http 通信方式有什么区别呢?(相较于 http grpc 有什么优劣呢?)

阅读 1.7k
2 个回答

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的中间件相对较少。
  • 跟你过年回家坐飞机,坐火车,开车,回家是一样的道理,起点终点都是一样的。
  • 做的事情是一个,都是实现了在socket之上的网络传输协议和传输的数据的序列化反序列化方式。
  • http http协议,序列化常用格式json、xml等
  • grpc grpc协议,系列化常用格式Protocol Buffers
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进