RPC的一些认识

初识RPC

起因

先是CPU的核心数量变多,CPU分片执行多个进程,多个进程之间分别处理不同的事情,这里的的IPC(Inter-Process Communication)就是进程间通信。IPC最早是出现在UNIX系统中,进程间的通信方式有很多种,其实所有的的通信方式源于共享,机器内部,每个进程是在共享资源。如果有两个CPU就可以让两个进程同时执行,两个进程的执行结果是通过IPC进行传递的,这样就提高了多CPU的优势,以及CPU的利用率。比较火热的微服务就是基于这个思路实现的,讲将单体应用拆拆分成多个应用,分别部署到不同的机器,通过RPC实现进程执行结果的通信。

RPC使技术时代革新的产物,它奠定了构建分布式应用的理论基础。早期的时候,应用的浏览还比较小,可以把功能都部署到同一个服务器上,随着用户群体的增多,单一应用架构在开发的过程中随着系统应用越来越复杂,占用的资源也来越多,部署成本随之增加,而且这种架构导致多个功能模块杂糅在一起显得臃肿,线上质量也无法保证,慢慢的单一应用架构失去了他唯一的优势,并且还暴露出容错性差、可扩展性差等一系列的问题。

单一应用架构不能满足需求,随之垂直应用架构随之而出,将数据和应用分离,将单一应用根据垂直业务的划分拆解成若干互不相干的应用以提升效率。但是当随着业务的发展,出现了不同模块之间业务交互的业务交互需求。为了提高业务的复用性,一些业务被拆解成了子业务,这个时候分布式架构随之出现。

分布式架构提升了服务的灵活性、可复用性,每个服务都可以弹性扩容缩容。除此之外,分布式架构还实现了计算与存储的高可用性,而分布式架构最核心的就是利用RPC解决了服务之间的交互问题。所以RPC带来的效益也正是分布式架构带来的效益。

RPC

RPC(Remote Procedure Call)叫做远程过程调用,利用的是网络从远程计算机上请求服务,也可以理解为把程序的一部分放到其他远程计算机上执行。通过网络通信将调用请求发送至远程机器,有远程机器的系统资源来执行这一部分的程序,最终返回远程计算机上的执行结果。

远程过程调用(RPC)分解

将远程过程调用这一概念分解成“远程过程”和“过程调用”来理解更价值观。

过程调用

过程调用是相对与本地过程来说的,本地过程也可以认为是本地函调用,发起调用的方法和被调用的方法都在统一地址空间或者内存空间内。

而远程调用是指把进程的部分程序逻辑放到其他机器上,也就是常说的业务拆解,让每个服务仅对单个业务负责让每个服务具备独立的可扩展性、可升级性,易于维护。在每台机器上提供的服务被称为远程过程。这个概念使正确构建分布式计算更加容易,为后续的服务化架构风格奠定基础。

过程调用

它包含我们平时见到的方法调用、函数调用,并且用于程序的控制和数据的传输。

而当“过程调用”遇到“远程调用”的时候,意味着过程调用可以跨机器、跨网络的进行程序的控制和数据的传输。

RPC分布式系统的问题

  • 通信延迟:跨机器、网络的进程间通信延迟的概率更大
  • 地址空间被隔离:不同机器内存地址是独立的,无法用指针指向其他机器的内存空间
  • 局部故障:分布式服务器出现故障可能是某个节点出现问题引起,需要有发现并通知哪里有问题的角色。可以引入注册中心。
  • 并发问题:若多个节点同时都对某一个服务发起调用,异步操作调用无法完全控制顺序,就会产生并发问题。

你可能感兴趣的:(后端,rpc,网络协议,网络)