杂学

HTTP,TCP, socket,RPC 与gRPC都是啥?

2018-04-19  本文已影响3925人  RichardBillion

TCP/HTTP与socket

首先回顾下计算机网络的五(七)层协议:物理层、数据链路层、网络层、传输层、(会话层、表示层)和应用层。那么从协议上来讲:

而socket 是针对TCP或UDP的具体接口实现,提供了在传输层进行网络编程的方法。

以上内容我们应该都听说的比较多了,下面主要来谈一谈RPC。

什么是RPC?

RPC(Remote Procedure Call)是远程过程调用,比如说现在有两台服务器A, B,一个在A服务器上的应用想要调用B服务器上的应用提供的某个,由于不在两个方法不在一个内存空间,不能直接调用,需要通过网络表达调用的语义和传达调用的数据。常存在于分布式系统中。

为何有http协议之后,还要RPC调用?

RPC跟HTTP不是对立面,RPC中可以使用HTTP作为通讯协议。RPC是一种设计、实现框架,通讯协议只是其中一部分。

RPC的本质是提供了一种轻量无感知的跨进程通信的方式,在分布式机器上调用其他方法与本地调用无异(远程调用的过程是透明的,你并不知道这个调用的方法是部署在哪里,通过PRC能够解耦服务)。RPC是根据语言的API来定义的,而不是基于网络的应用来定义的,调用更方便,协议私密更安全、内容更小效率更高。

http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议 进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先(基于TCP协议的情况下)就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统 一化的操作。第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑。

RPC 中要解决的问题:

常见名词小结

名词 特点
RPC 远程过程调用(分布式、微服务间的方法调用)
HTTP 无状态,每次请求都要发送一个request,服务器响应之后就断掉(http header中的keep-alive指的是tcp)
TCP 面向连接,三次握手保证通信可靠
UDP 非面向连接,不可靠,速度快(可以手动对数据收发进行验证,IM系统多采用,QQ)
socket TCP协议的接口实现,面向传输层进行网络编程

单独来谈一谈gRPC

gRPC是谷歌开源的一个 RPC 框架,面向移动和 HTTP/2 设计。

和很多RPC系统一样,服务端负责实现定义好的接口并处理客户端的请求,客户端根据接口描述直接调用需要的服务。客户端和服务端可以分别使用gPRC支持的不同语言实现。

ProtoBuf 具有强大的IDL(interface description language,接口描述语言)和相关工具集(主要是protoc)。用户写好.proto描述文件后,protoc可以将其编译成众多语言的接口代码。

补充:HTTP/2介绍

新特性:

推荐阅读:

上一篇下一篇

猜你喜欢

热点阅读