HTTP和grpc对比
- 对于简单的 Web 应用程序或传输不要求低延迟和高吞吐量的场景,HTTP 是一种可靠且广泛支持的选择。对于需要高性能、跨语言和复杂服务治理的场景,gRPC 是一种更好的选择。
1. 什么是rpc
- 远程过程调用(remote procedure call),一种,使得程序可以请求另一个进程或计算机的服务,如同调用本地函数一样,实现分布式系统之间的交互和通讯。(主要应用于分布式系统,提高系统的可维护性和可扩展性)
- 分布式:将系统拆分成多个独立的服务,各服务之间独立,提高系统扩展性以及性能。
grpc
- 谷歌开源的rpc框架,基于Protocol buffers序列化协议进行数据传输,高性能、多语言、安全、易维护适合构建分布式系统
- 与其他rpc框架相比:
- 基于HTTP/2协议,可实现头部压缩、多路复用、双向流等特性,提高网络传输效率和性能.
- 采用了HTTP/2协议和Protocol Buffers序列化协议,gRPC具有更高的性能和效率
- 高性能:二进制传输以及高效序列化方式,大大减少网络传输数据量,提高性能,而tcp和http基于文本协议和基于ASCII码的编码方式,传输效率较低
- 支持多种编程语言和自动转换代码(根据服务定义文件自动生成两端代码)。
- 安全性,支持TLS加密和认证安全机制,保障通信安全。
TCP、HTTP总结
TCP传输层协议(三次握手四次挥手)
- ACK标志位,确认字段值是否有效,1为有效,0为失效
- SYN标志位,请求连接
- FIN标志位,断连请求
- seq,随机序号确认,返回+1
HTTP应用层协议(基于tcp协议)
HTTP1.0
优点简单易用,数据传输不要求低延迟或高吞吐量的场景
- 连接无法复用,有并行请求必须建立多个TCP连接
- 队头阻塞、无法设置优先级(因为请求响应都是按照顺序队列进行,一旦前方无法响应,就会造成拥堵延迟)
- 头部臃肿
HTTP2.0
- 多路复用、头部压缩、二进制传输
- HTTP/2 的二进制分帧层突破了这一限制,所有的请求和响应都在同一个 TCP 连接上发送:客户端和服务器把 HTTP 消息分解成多个帧,然后乱序发送,最后在另一端再根据流 ID 重新组合起来。
SSL、TLS、mTLS
- SSL,secure socket layer 安全套接字层,通信协议,加密数据流
- TLS,transfer layer secure 传输层安全协议,由SSL加密协议发展而来,TLS三大组成加密、身份验证、数据完整性
- 相互TLS协议(或mTLS)是一种强化的身份验证方法。它通过验证双方是否拥有正确的私钥来确保网络连接两端的双方都是其所声称的身份