本文主要是通过对 RPC的研究,进行一个 RPC框架设计的笔记。
我个人理解, RPC (remote process connection)是一种分布式通信技术,它将一个应用程序划分为多个独立的服务,然后每个服务通过网络相互通信。每一个服务都有自己的状态、对象、方法等,通过服务的注册中心和发现机制来实现动态的通信。RPC技术将一个庞大的应用程序分解为很多独立的小程序,使得多个应用之间可以进行数据交换,在应用程序之间实现分布式处理。RPC技术在通信领域中占有重要地位,而且使用范围非常广泛。我从以下几个方面来进行介绍:
- RPC的概念
在互联网中, RPC (远程过程调用)是一种标准的通信协议。简单来说,就是将一个复杂的网络服务封装成一个封装好的、易于调用的接口,当客户端调用接口时,通过标准的网络协议来实现服务与服务之间的通信。
RPC可以帮助我们实现分布式应用系统中消息传递、任务调度、数据传输等功能。
- RPC协议
RPC协议是实现分布式应用程序之间通信的基础,因此需要对 RPC协议进行研究,才能更好的实现分布式应用程序之间通信。
RPC协议是一个封装了服务、端口、请求和响应的数据格式,通常使用 XML格式,并支持多种通讯语言。RPC协议有很多种实现方式,在这里我就介绍两种比较流行的实现方式:
面向连接的方式将客户端和服务端连接起来,客户端发送请求并获取响应。这种方式对客户端的要求比较高,当客户端请求较大时容易出现错误,因为连接失败导致的系统崩溃;
非面向连接的方式主要通过使用事件驱动来实现。这种方式比较简单。
- 消息中间件
RPC是一种通信方式,它需要中间件来实现,消息中间件的主要作用就是提供一个通信平台。消息中间件的作用是解决 RPC中的通信问题,它包括:
(1)提供消息传递
(2)负责协调数据发送与接收
(3)解决用户与应用之间的数据通信问题
- RPC的应用场景
RPC在互联网和电信领域都是非常重要的技术,它使得很多传统的分布式计算的场景得以实现,如:分布式缓存、分布式数据库等。
在 RPC领域,我们经常会看到以下几种场景:
应用服务之间通信的时候需要进行注册中心的管理,使用注册中心来提供服务之间的调用,这种方法称为“远程调用”(Remote Sending);
在请求发送到服务端之前需要对请求进行一些处理,这个过程称为“消息传输”(Message Transport)