随着微服务的迅速倒退,各大互联网企业也投入到微服务的应用种。微服务最大的特点是,跨过程、跨服务、跨语言之间的调用,使得咱们可能像调用本地类、函数一样。当微服务具备该特点,将咱们简单的业务拆分成不同的服务,服务之间在互相调用。这也是微服务为什么火的起因之一。
要应用好微服务,不仅仅是对业务的拆分能力要求高,同时对服务之间的通信也要求高,明天就来给大家总结几种罕用的通信协议,它们别离是什么、有什么优缺点以及各种协定之间的比照。
后面一篇文章对微服务的架构,做了一个简略的介绍,这一篇就来针对各种罕用的通信协定做一个汇总。一篇文章疾速了解微服务架构
什么是tcp
TCP(传输控制协议)是一种面向连贯的、牢靠的、基于字节流的传输层协定。TCP协定具备以下特点:
- 面向连贯:TCP协定在数据传输之前须要建设连贯,数据传输实现后须要开释连贯,保障了数据传输的可靠性和完整性。
- 可靠性高:TCP协定采纳确认机制、序列号和校验和等技术,能够保障数据传输的可靠性和完整性。
- 拥塞管制:TCP协定采纳拥塞控制算法,能够防止网络拥塞和丢包等问题,保障了数据传输的稳定性和公平性。
- 全双工通信:TCP协定反对全双工通信,即客户端和服务器端都能够同时发送和接收数据,实现了双向通信。
- 高效性:TCP协定采纳滑动窗口机制和分段传输技术,能够进步数据传输的效率和性能。
- 反对多种利用协定:TCP协定能够反对多种应用层协定,例如HTTP、FTP、SMTP等。
- 牢靠的谬误复原:TCP协定能够对失落、反复、损坏和超时等谬误进行复原和解决,保障了数据传输的可靠性和完整性。
TCP协定的数据传输过程如下:
- 客户端向服务器端发送SYN(同步)申请,申请建设连贯。
- 服务器端收到SYN申请后,向客户端发送SYN+ACK(同步和确认)应答,示意能够建设连贯。
- 客户端收到SYN+ACK应答后,向服务器端发送ACK(确认)应答,示意连贯曾经建设胜利。
- 数据传输实现后,客户端和服务器端别离发送FIN(完结)申请,申请开释连贯。
- 收到FIN申请后,另一方发送ACK应答,示意曾经收到了完结申请。
- 单方都收到了对方的ACK应答后,即实现了连贯的开释。
TCP协定具备面向连贯、可靠性高、拥塞管制、全双工通信、高效性、反对多种利用协定等特点,是一种十分重要的传输层协定。
tcp的优缺点
tcp的长处
TCP(Transmission Control Protocol)是一种面向连贯的、牢靠的、基于字节流的传输层协定,具备以下长处:
- 可靠性高:TCP采纳确认机制、序列号和校验和等技术,能够保障数据传输的可靠性和完整性。
- 拥塞管制:TCP采纳拥塞控制算法,能够防止网络拥塞和丢包等问题,保障了数据传输的稳定性和公平性。
- 全双工通信:TCP反对全双工通信,即客户端和服务器端都能够同时发送和接收数据,实现了双向通信。
- 高效性:TCP采纳滑动窗口机制和分段传输技术,能够进步数据传输的效率和性能。
- 反对多种利用协定:TCP能够反对多种应用层协定,例如HTTP、FTP、SMTP等。
- 牢靠的谬误复原:TCP能够对失落、反复、损坏和超时等谬误进行复原和解决,保障了数据传输的可靠性和完整性。
- 牢靠的程序传输:TCP能够保证数据依照发送的程序进行传输,防止了数据乱序的问题。
- 实用于长连贯:TCP实用于长连贯,能够缩小建设和开释连贯的开销,进步了网络传输的效率和性能。
TCP具备可靠性高、拥塞管制、全双工通信、高效性、反对多种利用协定等长处,是一种十分重要的传输层协定。
tcp的毛病
TCP(Transmission Control Protocol)尽管具备很多长处,但仍存在以下毛病:
- 较为简单:TCP协定的实现较为简单,须要思考到各种网络环境和异常情况,对于开发人员而言学习老本较高。
- 传输效率绝对较低:TCP采纳确认机制、序列号等技术,保障了数据传输的可靠性和完整性,但也使得数据传输效率绝对较低。
- 不适用于短连贯:TCP实用于长连贯,对于短连贯的反对不够敌对,会减少建设和开释连贯的开销。
- 不适用于实时性要求高的场景:因为TCP采纳确认机制和重传机制,无奈保证数据的实时性,不适用于实时性要求较高的场景。
- 不适用于高负载场景:当网络负载较大时,TCP采纳拥塞控制算法可能会导致传输速度降落,影响了数据传输的效率和性能。
- 无奈反对播送和多播:TCP协定无奈反对播送和多播,只能进行点对点的数据传输。
TCP尽管具备很多长处,但仍存在一些毛病,例如传输效率绝对较低、不适用于短连贯等。在抉择协定时,须要依据具体的需要和场景进行综合思考。
什么是rcp
RPC是近程过程调用(Remote Procedure Call)的缩写。它是一种计算机通信协议,使得程序能够申请另一个过程或者计算机上的服务,就像调用本地的函数一样,从而实现分布式系统之间的交互和通信。RPC能够大大简化分布式系统的开发,进步零碎的可维护性和可扩展性。
rpc的优缺点
rpc的长处
RPC具备以下劣势:
- 形象屏蔽:RPC框架能够屏蔽底层的网络通信细节,使得近程调用就像本地调用一样简略。
- 可扩展性:RPC框架能够反对多种协定和编码方式,能够适应不同场景的需要,同时也能够不便地增加新的性能和服务。
- 可靠性:RPC框架通常会提供各种机制来保障通信的可靠性,如超时重试、错误处理等。
- 高效性:RPC框架通常应用二进制协定和高效的序列化形式,能够大大减少网络传输的数据量,进步零碎的性能。
- 语言无关性:RPC框架能够反对多种编程语言,使得不同语言的程序能够不便地进行交互和通信。
rpc的毛病
RPC也有以下毛病:
- 依赖网络:RPC须要通过网络进行通信,因而对网络的稳定性和提早要求比拟高。
- 难以调试:因为RPC是跨过程或者跨计算机的调用,因而调试起来比拟艰难,须要应用一些非凡的工具和技术。
- 数据格式限度:RPC框架通常会限度数据的格局和大小,如果须要传输大量的数据或者简单的数据结构,可能会导致性能问题。
- 安全性问题:RPC通常不会提供加密和认证等平安机制,须要在应用层进行解决,否则容易受到攻打。
- 可靠性问题:RPC框架尽管提供了一些机制来保障通信的可靠性,但依然可能呈现通信失败、失落音讯等状况,须要应用程序本人解决。
什么是grpc
gRPC是Google开源的一种高性能、通用的近程过程调用(RPC)框架,基于Protocol Buffers序列化协定进行数据传输。与其余RPC框架相比,gRPC具备以下劣势:
- 高性能:gRPC采纳基于HTTP/2的二进制传输协定,能够实现双向流、头部压缩和多路复用等个性,进步了网络传输的效率和性能。
- 多语言反对:gRPC反对多种编程语言,包含C++、Java、Python、Go、Ruby等,能够不便地构建跨语言的分布式系统。
- 主动生成代码:gRPC能够依据服务定义文件主动生成客户端和服务器端的代码,大大简化了开发过程。
- 可扩展性:gRPC反对多种负载平衡算法和服务发现机制,能够适应不同场景的需要。
- 安全性:gRPC反对TLS加密和认证等平安机制,保障通信的安全性。
- 易于应用和保护:gRPC提供了丰盛的文档和工具链,使得开发和保护分布式系统变得更加容易。
grpc的优缺点
grpc的长处
gRPC是一种高性能、通用的近程过程调用(RPC)框架,具备以下长处:
- 高性能:gRPC采纳基于HTTP/2的二进制传输协定,能够实现双向流、头部压缩和多路复用等个性,进步了网络传输的效率和性能。
- 多语言反对:gRPC反对多种编程语言,包含C++、Java、Python、Go、Ruby等,能够不便地构建跨语言的分布式系统。
- 主动生成代码:gRPC能够依据服务定义文件主动生成客户端和服务器端的代码,大大简化了开发过程。
- 可扩展性:gRPC反对多种负载平衡算法和服务发现机制,能够适应不同场景的需要。
- 安全性:gRPC反对TLS加密和认证等平安机制,保障通信的安全性。
- 易于应用和保护:gRPC提供了丰盛的文档和工具链,使得开发和保护分布式系统变得更加容易。
- 反对多种序列化协定:gRPC反对多种序列化协定,包含Google开发的Protocol Buffers序列化协定和JSON等,能够依据理论需要抉择最适宜的序列化形式。
- 反对流式数据传输:gRPC反对双向流、客户端流和服务器端流等多种流式数据传输方式,能够满足不同的业务需要。
gRPC具备高性能、多语言反对、主动生成代码、可扩展性、安全性、易于应用和保护等长处,是一种非常适合构建分布式系统的RPC框架。
grpc的毛病
尽管gRPC是一种十分优良的RPC框架,但仍存在以下毛病:
- 学习曲线较平缓:相比于传统的RESTful API,gRPC须要应用IDL文件来定义服务和音讯类型,并且须要生成客户端和服务器端的代码,须要把握这些新的概念和技术。
- 不反对RESTful API:gRPC不反对基于HTTP的RESTful API,无奈与现有的RESTful API进行兼容和集成。
- 不反对浏览器端:gRPC目前不反对Web浏览器端,因为浏览器不反对HTTP/2协定。
- 依赖Protocol Buffers:gRPC默认应用Google开发的Protocol Buffers序列化协定,如果须要应用其余的序列化协定,则须要自行实现。
- 难以调试:因为gRPC采纳二进制协定,数据的传输和解析都是以二进制模式进行的,对于调试和排错带来了肯定的艰难。
- 安全性依赖于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协定具备以下特点:
- 简略易用:HTTP协定的音讯格局简单明了,易于了解和应用。
- 无状态:HTTP协定是一种无状态协定,每个申请和响应都是独立的,没有任何关联性。
- 可扩展性:HTTP协定反对多种申请办法和响应状态码,并且能够应用扩大头部来传递附加信息。
- 易于缓存:HTTP协定反对缓存机制,能够缩小网络传输的数据量,进步零碎的性能。
- 安全性较低:HTTP协定通常不提供加密和认证等平安机制,容易受到中间人攻打和窃听。
http的优缺点
http的长处
HTTP(超文本传输协定)是一种应用层协定,常被用于Web浏览器和Web服务器之间的通信。HTTP具备以下长处:
- 简略易用:HTTP采纳文本协定和申请-响应模型,音讯格局简略、易于了解和应用。
- 易于扩大:HTTP反对插件和扩大机制,能够依据需要增加新的性能和个性。
- 可靠性高:HTTP采纳TCP协定进行数据传输,保障了数据的可靠性和完整性。
- 良好的兼容性:HTTP是互联网上最罕用的协定之一,简直所有的浏览器和服务器都反对HTTP协定,具备良好的兼容性。
- 反对缓存机制:HTTP反对缓存机制,能够进步网络传输的效率和性能。
- 安全性高:HTTP反对SSL/TLS加密和认证等平安机制,保障了数据的安全性和隐衷性。
- 反对多种媒体类型:HTTP反对多种媒体类型,例如HTML、XML、JSON等,能够满足不同的业务需要。
综上所述,HTTP具备简略易用、易于扩大、可靠性高、良好的兼容性、反对缓存机制、安全性高、反对多种媒体类型等长处。这些个性使得HTTP成为了Web利用程序开发中不可或缺的协定之一。
http的毛病
HTTP(超文本传输协定)尽管具备很多长处,但仍存在以下毛病:
- 传输效率较低:HTTP采纳明文传输,音讯格局较为简短,数据传输效率绝对较低。
- 安全性较低:HTTP采纳明文传输,数据在传输过程中容易被窃听和篡改,安全性较低。
- 不反对双向通信:HTTP采纳申请-响应模式,不反对服务器被动向客户端发送音讯,无奈实现双向通信。
- 不反对流式数据传输:HTTP采纳短连贯形式,每次申请都须要建设一次TCP连贯,无奈实现流式数据传输。
- 无状态协定:HTTP是一种无状态协定,服务器不能保留客户端的状态信息,每次申请都须要从新验证身份和权限等信息。
- 不反对服务发现:HTTP没有内置的服务发现机制,须要通过第三方工具或平台来实现服务发现。
- RESTful API限度:RESTful API是基于HTTP协定的一种API设计格调,但因为HTTP协定自身的限度,RESTful API无奈齐全满足所有场景的需要。
协定比照
rpc、grpc和http比照
RPC、gRPC、TCP和HTTP是常见的网络通信协定,它们之间具备以下相同点和不同点,以及各自的优劣势。
- 相同点:
(1)都是应用层协定,用于在不同的过程或计算机之间进行数据传输和通信。
(2)都反对客户端和服务器端的通信模式,能够实现分布式系统的构建。
(3)都须要应用特定的音讯格局和规定来进行数据的传输和解析。
- 不同点:
(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)RPC的劣势在于性能高、可扩展性强、反对多种编程语言、易于保护和开发等。毛病在于安全性较低、调试艰难等。
(2)gRPC的劣势在于性能高、反对多种编程语言、主动生成代码等。毛病在于学习曲线较平缓、不反对RESTful API等。
(3)TCP的劣势在于牢靠传输、反对流式数据传输、应用宽泛等。毛病在于传输效率较低、须要手动解决分包和粘包等问题。
(4)HTTP的劣势在于简略易用、良好的兼容性、反对缓存机制等。毛病在于传输效率较低、不反对双向流式数据传输、安全性较低等。
综上所述,这几种协定各有优劣势,应依据具体的需要来抉择适合的协定。例如,如果须要高性能、反对多种语言、易于保护和开发,能够抉择RPC或gRPC;如果须要牢靠传输、反对流式数据传输,能够抉择TCP;如果须要简略易用、良好的兼容性、反对缓存机制,能够抉择HTTP。
grpc和rpc的比照
gRPC和传统的RPC框架之间有以下区别:
- 通信协议不同:gRPC基于HTTP/2协定进行数据传输,而传统的RPC框架通常应用TCP或UDP等传输层协定。
- 序列化形式不同:gRPC应用Protocol Buffers作为默认的序列化协定,而传统的RPC框架则应用JSON、XML等格局。
- 反对多种语言:gRPC反对多种编程语言,包含C++、Java、Python、Go、Ruby等,而传统的RPC框架通常只反对少数几种语言。
- 高性能:因为采纳了HTTP/2协定和Protocol Buffers序列化协定,gRPC具备更高的性能和效率。
- 主动生成代码:gRPC能够依据服务定义文件主动生成客户端和服务器端的代码,大大简化了开发过程。
- 安全性:gRPC提供了TLS加密和认证等平安机制,保障通信的安全性。
http与tcp的比照
TCP(Transmission Control Protocol)协定和HTTP(Hypertext Transfer Protocol)协定都是互联网中的重要协定,但两者之间存在以下区别:
- 地位不同:TCP协定位于传输层,负责数据的传输;而HTTP协定位于应用层,负责客户端和服务器之间的通信。
- 目标不同:TCP协定的次要目标是保障数据传输的可靠性和完整性;而HTTP协定的次要目标是实现Web浏览器和Web服务器之间的通信。
- 连贯形式不同:TCP协定采纳面向连贯的形式进行数据传输,须要先建设连贯而后再进行数据传输;而HTTP协定采纳无状态的形式进行数据传输,每次申请和响应都是独立的,没有长期的连贯。
- 数据格式不同:TCP协定只负责数据的传输,对数据的内容和格局没有限度;而HTTP协定规定了数据的格局和内容,例如申请头、响应头、音讯体等。
- 端口号不同:TCP协定应用端口号来标识不同的过程或应用程序;而HTTP协定默认应用80端口号进行数据传输。
- 利用场景不同:TCP协定实用于各种数据传输场景,例如文件传输、邮件传输等;而HTTP协定实用于Web浏览器和Web服务器之间的通信,次要用于实现Web页面的拜访和数据交互。