HTTP和RPC

客户端A向服务器B通过Socket代码发送数据。

一般会选择TCP或者UDP。

因为TCP是安全可靠的连接服务。

Socket本身是一个代码库。内有socket_stream方法,支持字节流。

bind()方法绑定ID端口,connect()创建连接,send()发送数据,recv()接收数据

一说字节流就不得不提到二进制。因为二进制无边界就会产生粘包问题。如果将无边界转变成有边界呢?那就是消息头和消息体。消息头内存放的协议就是http协议和RPC。

HTTP是超文本传输协议。访问多家服务器。多用于浏览器

RPC是远程服务调用。多用于C端访问自家服务器。目的是像调用本地方法一样调用远端方法。公司内部微服务调用

两者不同

服务发现

      建立连接的前提是知道ip和端口号

     RPC有专门的 中间服务 保存服务名和ip信息。比如consul、etcd、redis         coreDNS

底层连接原理

    以http1.1为例。建立连接之后会一直保持keep alive。

    RPC是在基础上有一个连接池,在请求量大的时候,建立多条连接放入连接池,在发数据的时候,从池里拿取一条连接,用完放回去下次再使用。说连接池想到的就是提升网络性能

传输内容

      结构体传输——JSON——序列化

     http文本传输,以网页为主,一般传输的是字符串传输。在body当中,使用Json来序列化结构体数据

    rpc,可以采用体积更小的protobuf或者其他序列化协议去保存结构体数据

 HTTP现在主流的是1.1

gRPC底层基于http2.0。http2.0是2015年出来的

时间线:tcp——http——rpc——http2.0——grpc是2015年出来的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值