赞
踩
在工作中,HTTP、WebSocket 和 RPC 是三种常见的协议或通信方式,根据资料查阅,本文主要记录它们的区别及其适用的使用场景
HTTP(Hypertext Transfer Protocol)是一种用于分布式、协作、超媒体信息系统的应用层协议。它是万维网(WWW)的基础,通过它,客户端(通常是浏览器)和服务器之间可以进行通信。
WebSocket是一种在单个TCP连接上进行全双工通信的协议。它由HTML5引入,旨在解决HTTP的实时性和效率问题。
RPC(Remote Procedure Call)是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
RPC的核心并不在于使用什么协议。目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。
通过RPC能解耦服务,这才是使用RPC的真正目的。RPC的原理主要用到了动态代理模式,至于http协议,只是传输协议而已。简单的实现可以参考spring remoting,复杂的实现可以参考dubbo。
特性 | HTTP | WebSocket | RPC |
---|---|---|---|
通信模式 | 请求-响应 | 全双工通信 | 请求-响应(可以是同步或异步) |
连接管理 | 每次请求建立新连接(HTTP/1.1支持持久连接) | 持久连接 | 持久连接(取决于底层协议) |
数据传输 | 文本或二进制 | 文本或二进制 | 序列化后的数据(JSON、XML、二进制) |
实时性 | 较差 | 优秀 | 良好 |
使用场景 | 网页浏览、API调用、文件下载 | 实时聊天、在线游戏、数据推送 | 分布式系统、跨语言调用、高性能服务 |
HTTP协议是互联网的基石,主要用于浏览器与服务器之间的通信。典型的使用场景包括:
WebSocket协议适用于需要实时数据传输的应用场景。典型的使用场景包括:
RPC协议用于分布式系统中远程服务调用。典型的使用场景包括:
可以理解为RPC框架是一种软件框架或者库,用于简化在不同计算机或者进程之间进行远程调用的过程。
如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了:首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销等。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。