目录
1、RPC是什么
1.1 概念
RPC(Remote Procedure Call)是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。打个比方:有两台服务器A、B,一个应用在A服务器上部署,其需要调用B服务器上的应用,但是由于不在一个一个服务器(内存空间),不能直接调用,因此需要通过网络来传输调用的语义和数据。RPC主要包含通讯协议、序列化、资源(接口)描述、服务框架、性能、语言支持等方面的内容。
RPC常用于分布式系统中,例如云计算、微服务架构、分布式数据库、消息队列等,它可以让不同的服务之间进行远程调用,从而实现分布式系统的协作。
1.2 RPC的组成部分
图片来源:远程过程调用_百度百科
RPC的组成部分包括:
此外,RPC中还涉及了序列化、反序列化、通信协议、服务接口描述和服务发现等关键方面。
序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,反序列化则是相反的过程。
通信协议定义了客户端和服务器之间的通信规则,包括消息格式、消息传输机制等。
服务接口描述定义了服务的功能和输入/输出参数,以便客户端能够正确地调用服务。服务发现则用于确定客户端如何找到所需的服务。
因此,RPC架构设计需要考虑以下几个方面:(引自RPC是什么?架构设计科普)
-
接口设计:RPC的基础是远程调用,因此接口设计是关键。接口应该设计清晰、简洁、易于理解,并且具有良好的扩展性和兼容性。
-
通信协议:RPC的通信协议需要支持高效的数据传输和序列化,同时也需要支持可靠性和安全性等方面的需求。常用的通信协议有HTTP、TCP、UDP等。
-
数据传输格式:RPC通信的数据需要进行序列化和反序列化。常见的序列化格式有JSON、Protobuf、Thrift等。选用合适的数据传输格式可以提高RPC的性能和扩展性。
-
负载均衡和容错处理:在分布式系统中,服务的负载均衡和容错处理是必不可少的。RPC架构需要考虑如何实现负载均衡和容错处理,例如使用负载均衡算法、使用备用服务等。
-
安全性和可靠性:在RPC架构中,数据的安全性和可靠性也是非常重要的。需要考虑如何保证数据传输的安全性和可靠性,例如使用加密协议、数据压缩等。
RPC架构设计需要综合考虑以上多个方面的需求,并根据实际场景进行选择和实现,以实现高效、可靠、安全、可扩展的RPC系统。
图片来源:RPC是什么?架构设计科普
1.3 常见的 RPC 技术和框架
该段内容引自:花了一个星期,我终于把RPC框架整明白了!-实现一个最简单的rpc框架
RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有:
目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。
下面重点介绍三种:
- gRPC:是 Google 公布的开源软件,基于***的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。
- Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。
- Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是极其鲜明的特色。
1.4 RPC的工作流程
图片来源:花了一个星期,我终于把RPC框架整明白了!-实现一个最简单的rpc框架
2、HTTP是什么
2.1 概念
HTTP,全名为HyperText Transfer Protocol,即超文本传输协议。它是一种请求/响应协议 —— 客户端发出一个请求,服务器响应这个请求并返回。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
2.2 HTTP的消息格式
HTTP消息的格式分为两种:请求消息和响应消息。
1. HTTP请求消息:
HTTP请求消息分为请求消息头和请求实体内容两部分。
(1)请求消息头:
第一行必须由以下三部分组成:
在请求消息头的其他行是请求头字段,每一行的格式是:“头字段”冒号“头字段的值”。请求头以一个空行结束。
(2)请求实体内容:
2. HTTP响应消息:
HTTP响应消息包括状态行、消息报头和响应正文三部分。
以上就是HTTP消息的格式,它是一种通用的互联网协议格式,被广泛应用于Web浏览器和服务器的通信中。
2.3 HTTP响应状态码有哪些
HTTP响应状态码分为5类,每一类有不同的状态码。
1xx:信息响应,表示收到请求并继续处理。
2xx:成功响应,表示请求已被服务器接收、理解并处理。
3xx:重定向响应,要完成请求必须进一步执行的动作。
4xx:客户端错误响应,请求包含语法错误或者无法完成请求。
5xx:服务器错误响应,服务器在处理请求的过程中发生了错误。
其中,常见的HTTP响应状态码包括:
以上是常见的HTTP响应状态码,根据不同的状态码,客户端可以了解服务器的处理结果和相关信息。
3、⭐RPC和HTTP的区别
RPC(Remote Procedure Call)和HTTP(Hypertext Transfer Protocol)是用于不同目的的通信协议。它们之间的主要区别如下:
综上所述,RPC适用于需要高性能、低延迟、复杂数据结构和精确控制的应用程序间通信。而HTTP适用于广泛的互联网应用,如网页浏览、API调用等。选择合适的通信协议取决于具体的需求和场景。
小结
需要注意的是,RPC和HTTP这两个不是并行的概念。RPC是一种设计架构,是为了解决不同服务器之间的调用问题。而HTTP是一种传输协议,RPC框架中也可以使用HTTP作为传输协议,使用的协议不同主要也是为了适应不同的业务场景需求。
参考:
远程过程调用_百度百科
RPC是什么?架构设计科普
谁能用通俗的语言解释一下什么是 RPC 框架? - 知乎
花了一个星期,我终于把RPC框架整明白了!-实现一个最简单的rpc框架
感谢阅读,码字不易,多谢点赞!如有不当之处,欢迎反馈指出,感谢!