您现在的位置: 365建站网 > 建站教程 > SEO教程 > 什么是RPC协议和HTTP协议的区别

什么是RPC协议和HTTP协议的区别

此节有 227 人学习过     参与评论

什么是RPC协议?

RPC是一种远程过程调用的协议,使用这种协议向另一台计算机上的程序请求服务,不需要了解底层网络技术的协议。

在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器。

早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来。假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能。这不是整人么?于是就出现了IPC(Inter-process communication,单机中运行的进程之间的相互通信)。OK,现在A既然有了画图的功能,B就调用A进程上的画图功能好了,程序员终于可以偷下懒了。

到了网络时代,大家的电脑都连起来了。以前程序只能调用自己电脑上的进程,能不能调用其他机器上的进程呢?于是就程序员就把IPC扩展到网络上,这就是RPC(远程过程调用)了。现在不仅单机上的进程可以相互通信,多机器中的进程也可以相互通信了。


要知道实现RPC很麻烦呀,什么多线程、什么Socket、什么I/O,都是让咱们普通程序员很头疼的事情。于是就有牛人开发出RPC框架(比如,CORBA、RMI、Web Services、RESTful Web Services等等)。


OK,现在可以定义RPC框架的概念了。简单点讲,RPC框架就是可以让程序员来调用远程进程上的代码一套工具。有了RPC框架,咱程序员就轻松很多了,终于可以逃离多线程、Socket、I/O的苦海了。


  • 简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

  • RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯)

  • RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于Http的工作方式)

  • RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。


 一个通用的网络RPC框架,它应该包括如下功能:

1.具有服务的分层设计,借鉴Future/Service/Filter概念
2.具有网络的分层设计,区分协议层、数据层、传输层、连接层
3.独立的可适配的codec层,可以灵活增加HTTP,Memcache,Redis,MySQL/JDBC,Thrift等协议的支持。
4.将多年各种远程调用High availability的经验融入在实现中,如负载均衡,failover,多副本策略,开关降级等。
5.通用的远程调用实现,采用async方式来减少业务服务的开销,并通过future分离远程调用与数据流程的关注。
6.具有状态查看及统计功能
7.当然,最终要的是,具备以下通用的远程容错处理能力,超时、重试、负载均衡、failover……


HTTP是一种超文本传输协议。是WWW浏览器和WWW服务器之间的应用层通讯协议。

 

RPC协议与HTTP协议的区别

1、RPC是一种API,HTTP是一种无状态的网络协议。RPC可以基于HTTP协议实现,也可以直接在TCP协议上实现。

2、RPC主要是用在大型网站里面,因为大型网站里面系统繁多,业务线复杂,而且效率优势非常重要的一块,这个时候RPC的优势就比较明显了。

HTTP主要是用在中小型企业里面,业务线没那么繁多的情况下。

3、HTTP开发方便简单、直接。开发一个完善的RPC框架难度比较大。

4、HTTP发明的初衷是为了传送超文本的资源,协议设计的比较复杂,参数传递的方式效率也不高。开源的RPC框架针对远程调用协议上的效率会比HTTP快很多。

5、HTTP需要事先通知,修改Nginx/HAProxy配置。RPC能做到自动通知,不影响上游。

6、HTTP大部分是通过Json来实现的,字节大小和序列化耗时都比Thrift要更消耗性能。RPC,可以基于Thrift实现高效的二进制传输。

 

SEO网站需要选择怎么样的的框架,需要多方面的评估,再对两种开发框架进行比较,哪种最适合。不要为了使用RPC而每个项目都用RPC,而是要因地制宜,具体情况具体分析。


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (227人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------
SEO教程目录