终于有人把tcp、http、rpc和grpc总结完整了

随着微服务的迅速发展,各大互联网企业也投入到微服务的​运用种。微服务最大的特色是,跨进程、跨服务、跨言语之间的调用,使得咱们能够像调用本地类、函数相同。当微服务具有该特色,将咱们杂乱的事务拆分红不同的服务,​服务之间在相互调用。这也是微服务为什么火的原因之一。
要运用好微服务,不仅仅是对事务的拆分能力要求高,一起对服务之间的通讯也要求高,今日就来给我们总结几种常用的通讯协议,它们分别是什么、有什么优缺陷以及各种协议之间的比照。

前面一篇文章对微服务的架构,做了一个简略的介绍,这一篇就来针对各种常用的通讯协议做一个汇总。一篇文章快速了解微服务架构

什么是tcp

TCP(传输操控协议)是一种面向衔接的、牢靠的、依据字节省的传输层协议。TCP协议具有以下特色:

  1. 面向衔接:TCP协议在数据传输之前需求树立衔接,数据传输完成后需求开释衔接,确保了数据传输的牢靠性和完整性。

  2. 牢靠性高:TCP协议选用承认机制、序列号和校验和等技能,能够确保数据传输的牢靠性和完整性。

  3. 拥塞操控:TCP协议选用拥塞操控算法,能够防止网络拥塞和丢包等问题,确保了数据传输的稳定性和公平性。

  4. 全双工通讯:TCP协议支撑全双工通讯,即客户端和服务器端都能够一起发送和接纳数据,完成了双向通讯。

  5. 高效性:TCP协议选用滑动窗口机制和分段传输技能,能够进步数据传输的功率和功能。

  6. 支撑多种运用协议:TCP协议能够支撑多种运用层协议,例如HTTP、FTP、SMTP等。

  7. 牢靠的过错康复:TCP协议能够对丢掉、重复、损坏和超时等过错进行康复和处理,确保了数据传输的牢靠性和完整性。

TCP协议的数据传输进程如下:

  1. 客户端向服务器端发送SYN(同步)恳求,恳求树立衔接。

  2. 服务器端收到SYN恳求后,向客户端发送SYN+ACK(同步和承认)应对,表明能够树立衔接。

  3. 客户端收到SYN+ACK应对后,向服务器端发送ACK(承认)应对,表明衔接现已树立成功。

  4. 数据传输完成后,客户端和服务器端分别发送FIN(完毕)恳求,恳求开释衔接。

  5. 收到FIN恳求后,另一方发送ACK应对,表明现已收到了完毕恳求。

  6. 两边都收到了对方的ACK应对后,即完成了衔接的开释。

TCP协议具有面向衔接、牢靠性高、拥塞操控、全双工通讯、高效性、支撑多种运用协议等特色,是一种十分重要的传输层协议。

tcp的优缺陷

tcp的长处

TCP(Transmission Control Protocol)是一种面向衔接的、牢靠的、依据字节省的传输层协议,具有以下长处:

  1. 牢靠性高:TCP选用承认机制、序列号和校验和等技能,能够确保数据传输的牢靠性和完整性。

  2. 拥塞操控:TCP选用拥塞操控算法,能够防止网络拥塞和丢包等问题,确保了数据传输的稳定性和公平性。

  3. 全双工通讯:TCP支撑全双工通讯,即客户端和服务器端都能够一起发送和接纳数据,完成了双向通讯。

  4. 高效性:TCP选用滑动窗口机制和分段传输技能,能够进步数据传输的功率和功能。

  5. 支撑多种运用协议:TCP能够支撑多种运用层协议,例如HTTP、FTP、SMTP等。

  6. 牢靠的过错康复:TCP能够对丢掉、重复、损坏和超时等过错进行康复和处理,确保了数据传输的牢靠性和完整性。

  7. 牢靠的次序传输:TCP能够确保数据依照发送的次序进行传输,防止了数据乱序的问题。

  8. 适用于长衔接:TCP适用于长衔接,能够削减树立和开释衔接的开销,进步了网络传输的功率和功能。

TCP具有牢靠性高、拥塞操控、全双工通讯、高效性、支撑多种运用协议等长处,是一种十分重要的传输层协议。

tcp的缺陷

TCP(Transmission Control Protocol)尽管具有许多长处,但仍存在以下缺陷:

  1. 较为杂乱:TCP协议的完成较为杂乱,需求考虑到各种网络环境和异常情况,关于开发人员而言学习成本较高。

  2. 传输功率相对较低:TCP选用承认机制、序列号等技能,确保了数据传输的牢靠性和完整性,但也使得数据传输功率相对较低。

  3. 不适用于短衔接:TCP适用于长衔接,关于短衔接的支撑不够友好,会增加树立和开释衔接的开销。

  4. 不适用于实时性要求高的场景:因为TCP选用承认机制和重传机制,无法确保数据的实时性,不适用于实时性要求较高的场景。

  5. 不适用于高负载场景:当网络负载较大时,TCP选用拥塞操控算法或许会导致传输速度下降,影响了数据传输的功率和功能。

  6. 无法支撑播送和多播:TCP协议无法支撑播送和多播,只能进行点对点的数据传输。

TCP尽管具有许多长处,但仍存在一些缺陷,例如传输功率相对较低、不适用于短衔接等。在挑选协议时,需求依据详细的需求和场景进行综合考虑。

什么是rcp

RPC是远程进程调用(Remote Procedure Call)的缩写。它是一种核算机通讯协议,使得程序能够恳求另一个进程或许核算机上的服务,就像调用本地的函数相同,从而完成分布式体系之间的交互和通讯。RPC能够大大简化分布式体系的开发,进步体系的可保护性和可扩展性。

rpc的优缺陷

rpc的长处

RPC具有以下优势:

  1. 笼统屏蔽:RPC结构能够屏蔽底层的网络通讯细节,使得远程调用就像本地调用相同简略。

  2. 可扩展性:RPC结构能够支撑多种协议和编码办法,能够习惯不同场景的需求,一起也能够方便地增加新的功能和服务。

  3. 牢靠性:RPC结构一般会供给各种机制来确保通讯的牢靠性,如超时重试、过错处理等。

  4. 高效性:RPC结构一般运用二进制协议和高效的序列化办法,能够大大削减网络传输的数据量,进步体系的功能。

  5. 言语无关性:RPC结构能够支撑多种编程言语,使得不同言语的程序能够方便地进行交互和通讯。

rpc的缺陷

RPC也有以下缺陷:

  1. 依靠网络:RPC需求经过网络进行通讯,因而对网络的稳定性和推迟要求比较高。

  2. 难以调试:因为RPC是跨进程或许跨核算机的调用,因而调试起来比较困难,需求运用一些特殊的东西和技能。

  3. 数据格局约束:RPC结构一般会约束数据的格局和巨细,假如需求传输大量的数据或许杂乱的数据结构,或许会导致功能问题。

  4. 安全性问题:RPC一般不会供给加密和认证等安全机制,需求在运用层进行处理,不然简略遭到进犯。

  5. 牢靠性问题:RPC结构尽管供给了一些机制来确保通讯的牢靠性,但仍然或许出现通讯失败、丢掉音讯等情况,需求运用程序自己处理。

什么是grpc

gRPC是Google开源的一种高功能、通用的远程进程调用(RPC)结构,依据Protocol Buffers序列化协议进行数据传输。与其他RPC结构比较,gRPC具有以下优势:

  1. 高功能:gRPC选用依据HTTP/2的二进制传输协议,能够完成双向流、头部紧缩和多路复用等特性,进步了网络传输的功率和功能。

  2. 多言语支撑:gRPC支撑多种编程言语,包含C++、Java、Python、Go、Ruby等,能够方便地构建跨言语的分布式体系。

  3. 主动生成代码:gRPC能够依据服务界说文件主动生成客户端和服务器端的代码,大大简化了开发进程。

  4. 可扩展性:gRPC支撑多种负载均衡算法和服务发现机制,能够习惯不同场景的需求。

  5. 安全性:gRPC支撑TLS加密和认证等安全机制,确保通讯的安全性。

  6. 易于运用和保护:gRPC供给了丰厚的文档和东西链,使得开发和保护分布式体系变得愈加简略。

grpc的优缺陷

grpc的长处

gRPC是一种高功能、通用的远程进程调用(RPC)结构,具有以下长处:

  1. 高功能:gRPC选用依据HTTP/2的二进制传输协议,能够完成双向流、头部紧缩和多路复用等特性,进步了网络传输的功率和功能。

  2. 多言语支撑:gRPC支撑多种编程言语,包含C++、Java、Python、Go、Ruby等,能够方便地构建跨言语的分布式体系。

  3. 主动生成代码:gRPC能够依据服务界说文件主动生成客户端和服务器端的代码,大大简化了开发进程。

  4. 可扩展性:gRPC支撑多种负载均衡算法和服务发现机制,能够习惯不同场景的需求。

  5. 安全性:gRPC支撑TLS加密和认证等安全机制,确保通讯的安全性。

  6. 易于运用和保护:gRPC供给了丰厚的文档和东西链,使得开发和保护分布式体系变得愈加简略。

  7. 支撑多种序列化协议:gRPC支撑多种序列化协议,包含Google开发的Protocol Buffers序列化协议和JSON等,能够依据实际需求挑选最适合的序列化办法。

  8. 支撑流式数据传输:gRPC支撑双向流、客户端流和服务器端流等多种流式数据传输办法,能够满意不同的事务需求。

gRPC具有高功能、多言语支撑、主动生成代码、可扩展性、安全性、易于运用和保护等长处,是一种十分适合构建分布式体系的RPC结构。

grpc的缺陷

尽管gRPC是一种十分优秀的RPC结构,但仍存在以下缺陷:

  1. 学习曲线较峻峭:比较于传统的RESTful API,gRPC需求运用IDL文件来界说服务和音讯类型,而且需求生成客户端和服务器端的代码,需求掌握这些新的概念和技能。

  2. 不支撑RESTful API:gRPC不支撑依据HTTP的RESTful API,无法与现有的RESTful API进行兼容和集成。

  3. 不支撑浏览器端:gRPC现在不支撑Web浏览器端,因为浏览器不支撑HTTP/2协议。

  4. 依靠Protocol Buffers:gRPC默许运用Google开发的Protocol Buffers序列化协议,假如需求运用其他的序列化协议,则需求自行完成。

  5. 难以调试:因为gRPC选用二进制协议,数据的传输和解析都是以二进制方法进行的,关于调试和排错带来了必定的困难。

  6. 安全性依靠于TLS:尽管gRPC支撑TLS加密和认证等安全机制,但这些机制都依靠于TLS协议,假如TLS协议自身存在缝隙或被进犯,则会影响gRPC的安全性。

gRPC尽管具有许多长处,但仍存在一些缺陷,例如学习曲线较峻峭、不支撑RESTful API等。在挑选RPC结构时,需求依据详细的需求和场景进行综合考虑。

什么是http

HTTP协议是一种依据恳求-呼应模式的运用层协议,用于在Web浏览器和Web服务器之间传递数据。它是一种无状况的协议,每个恳求和呼应都是独立的,没有任何关联性。

HTTP一般运用TCP作为传输层协议,运用端口号80进行通讯。HTTP协议界说了客户端和服务器之间交流的音讯格局和规矩,包含恳求办法、恳求头部、恳求正文、呼应状况码、呼应头部和呼应正文等。

HTTP恳求由三部分组成:恳求行、恳求头部和恳求正文。其间,恳求行包含恳求办法、URL和HTTP版本号;恳求头部包含恳求的附加信息,如Cookie、User-Agent等;恳求正文包含恳求的数据内容,如表单数据、JSON数据等。

HTTP呼应由三部分组成:状况行、呼应头部和呼应正文。其间,状况行包含HTTP版本号、状况码和状况描绘;呼应头部包含呼应的附加信息,如Content-Type、Content-Length等;呼应正文包含呼应的数据内容,如HTML页面、图片等。

HTTP协议具有以下特色:

  1. 简略易用:HTTP协议的音讯格局简略明了,易于了解和运用。

  2. 无状况:HTTP协议是一种无状况协议,每个恳求和呼应都是独立的,没有任何关联性。

  3. 可扩展性:HTTP协议支撑多种恳求办法和呼应状况码,而且能够运用扩展头部来传递附加信息。

  4. 易于缓存:HTTP协议支撑缓存机制,能够削减网络传输的数据量,进步体系的功能。

  5. 安全性较低:HTTP协议一般不供给加密和认证等安全机制,简略遭到中间人进犯和窃听。

http的优缺陷

http的长处

HTTP(超文本传输协议)是一种运用层协议,常被用于Web浏览器和Web服务器之间的通讯。HTTP具有以下长处:

  1. 简略易用:HTTP选用文本协议和恳求-呼应模型,音讯格局简略、易于了解和运用。

  2. 易于扩展:HTTP支撑插件和扩展机制,能够依据需求增加新的功能和特性。

  3. 牢靠性高:HTTP选用TCP协议进行数据传输,确保了数据的牢靠性和完整性。

  4. 杰出的兼容性:HTTP是互联网上最常用的协议之一,几乎一切的浏览器和服务器都支撑HTTP协议,具有杰出的兼容性。

  5. 支撑缓存机制:HTTP支撑缓存机制,能够进步网络传输的功率和功能。

  6. 安全性高:HTTP支撑SSL/TLS加密和认证等安全机制,确保了数据的安全性和隐私性。

  7. 支撑多种媒体类型:HTTP支撑多种媒体类型,例如HTML、XML、JSON等,能够满意不同的事务需求。

综上所述,HTTP具有简略易用、易于扩展、牢靠性高、杰出的兼容性、支撑缓存机制、安全性高、支撑多种媒体类型等长处。这些特性使得HTTP成为了Web运用程序开发中不可或缺的协议之一。

http的缺陷

HTTP(超文本传输协议)尽管具有许多长处,但仍存在以下缺陷:

  1. 传输功率较低:HTTP选用明文传输,音讯格局较为冗长,数据传输功率相对较低。

  2. 安全性较低:HTTP选用明文传输,数据在传输进程中简略被窃听和篡改,安全性较低。

  3. 不支撑双向通讯:HTTP选用恳求-呼应模式,不支撑服务器主动向客户端发送音讯,无法完成双向通讯。

  4. 不支撑流式数据传输:HTTP选用短衔接办法,每次恳求都需求树立一次TCP衔接,无法完成流式数据传输。

  5. 无状况协议:HTTP是一种无状况协议,服务器不能保存客户端的状况信息,每次恳求都需求重新验证身份和权限等信息。

  6. 不支撑服务发现:HTTP没有内置的服务发现机制,需求经过第三方东西或渠道来完成服务发现。

  7. RESTful API约束:RESTful API是依据HTTP协议的一种API规划风格,但因为HTTP协议自身的约束,RESTful API无法彻底满意一切场景的需求。

协议比照

rpc、grpc和http比照

RPC、gRPC、TCP和HTTP是常见的网络通讯协议,它们之间具有以下相同点和不同点,以及各自的优劣势。

  1. 相同点:

(1)都是运用层协议,用于在不同的进程或核算机之间进行数据传输和通讯。

(2)都支撑客户端和服务器端的通讯模式,能够完成分布式体系的构建。

(3)都需求运用特定的音讯格局和规矩来进行数据的传输和解析。

  1. 不同点:

(1)RPC和gRPC是远程进程调用结构,首要用于在不同的进程或核算机之间进行函数调用和数据交流。而TCP和HTTP是基础协议,首要用于数据传输和通讯。

(2)RPC和gRPC一般选用二进制协议和高效的序列化办法,能够大大削减网络传输的数据量,进步体系的功能。而TCP和HTTP一般选用文本协议和依据ASCII码的编码办法,数据传输功率较低。

(3)RPC和gRPC一般需求运用专门的IDL文件来界说服务和音讯类型,而且需求生成客户端和服务器端的代码。而TCP和HTTP没有这个约束,能够直接运用套接字进行通讯。

(4)RPC和gRPC一般需求运用底层的网络库进行封装和完成,例如Netty、Thrift等。而TCP和HTTP一般现已被操作体系封装好,能够直接运用。

  1. 优劣势:

(1)RPC的优势在于功能高、可扩展性强、支撑多种编程言语、易于保护和开发等。缺陷在于安全性较低、调试困难等。

(2)gRPC的优势在于功能高、支撑多种编程言语、主动生成代码等。缺陷在于学习曲线较峻峭、不支撑RESTful API等。

(3)TCP的优势在于牢靠传输、支撑流式数据传输、运用广泛等。缺陷在于传输功率较低、需求手动处理分包和粘包等问题。

(4)HTTP的优势在于简略易用、杰出的兼容性、支撑缓存机制等。缺陷在于传输功率较低、不支撑双向流式数据传输、安全性较低等。

综上所述,这几种协议各有优劣势,应依据详细的需求来挑选适宜的协议。例如,假如需求高功能、支撑多种言语、易于保护和开发,能够挑选RPC或gRPC;假如需求牢靠传输、支撑流式数据传输,能够挑选TCP;假如需求简略易用、杰出的兼容性、支撑缓存机制,能够挑选HTTP。

grpc和rpc的比照

gRPC和传统的RPC结构之间有以下差异:

  1. 通讯协议不同:gRPC依据HTTP/2协议进行数据传输,而传统的RPC结构一般运用TCP或UDP等传输层协议。

  2. 序列化办法不同:gRPC运用Protocol Buffers作为默许的序列化协议,而传统的RPC结构则运用JSON、XML等格局。

  3. 支撑多种言语:gRPC支撑多种编程言语,包含C++、Java、Python、Go、Ruby等,而传统的RPC结构一般只支撑少数几种言语。

  4. 高功能:因为选用了HTTP/2协议和Protocol Buffers序列化协议,gRPC具有更高的功能和功率。

  5. 主动生成代码:gRPC能够依据服务界说文件主动生成客户端和服务器端的代码,大大简化了开发进程。

  6. 安全性:gRPC供给了TLS加密和认证等安全机制,确保通讯的安全性。

http与tcp的比照

TCP(Transmission Control Protocol)协议和HTTP(Hypertext Transfer Protocol)协议都是互联网中的重要协议,但两者之间存在以下差异:

  1. 位置不同:TCP协议坐落传输层,担任数据的传输;而HTTP协议坐落运用层,担任客户端和服务器之间的通讯。

  2. 意图不同:TCP协议的首要意图是确保数据传输的牢靠性和完整性;而HTTP协议的首要意图是完成Web浏览器和Web服务器之间的通讯。

  3. 衔接办法不同:TCP协议选用面向衔接的办法进行数据传输,需求先树立衔接然后再进行数据传输;而HTTP协议选用无状况的办法进行数据传输,每次恳求和呼应都是独立的,没有长期的衔接。

  4. 数据格局不同:TCP协议只担任数据的传输,对数据的内容和格局没有约束;而HTTP协议规定了数据的格局和内容,例如恳求头、呼应头、音讯体等。

  5. 端口号不同:TCP协议运用端口号来标识不同的进程或运用程序;而HTTP协议默许运用80端口号进行数据传输。

  6. 运用场景不同:TCP协议适用于各种数据传输场景,例如文件传输、邮件传输等;而HTTP协议适用于Web浏览器和Web服务器之间的通讯,首要用于完成Web页面的访问和数据交互。