您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
微服务间如何进行远程方法调用?
 
作者:寒暄
  3158  次浏览      22
 2021-1-28 
   
 
编辑推荐:
本文主要介绍了RPC机制和实现过程、调用具有与本地调用类似的形式、RPC框架的组成、RPC和HTTP概念解析等相关内容。
本文来自于微信 IT技术小屋,由火龙果软件Anna编辑、推荐。

RPC机制和实现过程

服务实例之间主要通过轻量级的远程调用方式来实现,比如RPC

RPC (Remote Procedure Call,远程过程调用协议)

是一种通过网络从远程计算机程序上请求服务

而不需要了解底层网络技术的协议

RPC是远程过程调用的方式之一

涉及调用方和被调用方两个进程的交互

1984年

Birrell和Nelson在ACM Transactions on Computer Systems期刊上发表了名为“Implementing remote procedure calls”的论文

RPC远程过程调用是指计算机A上的进程,调用另外一台计算机B上的进程的方法。其中,A上的调用进程被挂起,而B上的被调用进程开始执行对应方法,并将结果返回给A;计算机A接收到返回值后,调用进程继续执行。

RPC让程序之间的远程过程调用具有与本地调用类似的形式

当read 实际是本地调用时

read函数由链接器从依赖库中提取出来接着链接器会将它链接到该程序中虽然read中执行了特殊的系统调用

但调用方并不知道read函数的具体实现和行为

当read 实际是一个远程过程时

调用方程序中需要引入read 的接口定义称为客户端存根(client-stub)

远程过程底层将参数打包成网络消息并发送到远程服务器交由远程服务执行对应的方法

RPC框架的组成

分布式架构所需要的企业内部通信模块

往往采用私有协议来设计和研发

私有协议可以最大程度地降低成本,提升性能,提高灵活性与效率

协议包括的必要字段与主要业务负载字段

通信功能特性的支持

协议的升级机制

RPC和HTTP概念解析

RPC和HTTP都是微服务间通信较为常用的方案之一RPC和HTTP并不完全是同一个层次的概念

RPC是远程过程调用

其调用协议通常包括序列化协议和传输协议·序列化协议有基于纯文本的XML和JSON

二进制编码的Protobuf和 Hessian

传输协议是指其底层网络传输所使用的协议

比如TCP、HTTP

可以看出HTTP是RPC的传输协议的一个可选方案

为什么传输层协议会使用自定义的 TCP协议呢?

首先想到HTTP是无状态、无连接的

所以每次进行通信都要建立和断开连接这会影响通信效率

实际上HTTP协议是支持连接池复用的

能建立一定数量的连接并且保持连接不会断开不用频繁建立和断开连接

因此连接问题并不是优先选择自定义TCP协议的真正原因

自定义TCP协议可以灵活地对协议字段进行定制减少非必要字段的传输,减少网络开销

而HTTP协议则包含了过多无用的信息

HTTP/1.0 200OK
Content-Type: text/plainContent-Length: 137582
Expires: Thu, 05 Dec 202016:00:00 GMT
Last-Modified: Wed, 5 August 2020 15:55:28 GMTServer: Apache/1.3.3.7(Unix) (Red-Hat/Linux)
html>
<body>
Hello World
</body>
</html>

 

常见的PRC框架

目前流行的开源 RPC框架有

阿里巴巴的 Dubbo

Google的gRPC

Facebook的Thrift

Twitter的 Finagle等

Go RPC:

原生支持的RPC远程调用机制

非常适合你了解和学习RPC的入门框架

gRPC:

基于HTTP2.0协议的支持众多常见的编程语言提供了强大的流式调用能力

Thrift:

主要是一个跨语言的服务开发框架具有高性能和稳定性的特点

小结

介绍了微服务之间的远程方法调用过程

然后讲解了RPC框架的组成

最后还简单介绍了目前主流的RPC框架

 
   
3158 次浏览       22
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
大数据平台下的数据治理
如何设计实时数据平台(技术篇)
大数据资产管理总体框架概述
Kafka架构和原理
ELK多种架构及优劣
最新课程
大数据平台搭建与高性能计算
大数据平台架构与应用实战
大数据系统运维
大数据分析与管理
Python及数据分析
更多...   
成功案例
某通信设备企业 Python数据分析与挖掘
某银行 人工智能+Python+大数据
北京 Python及数据分析
神龙汽车 大数据技术平台-Hadoop
中国电信 大数据时代与现代企业的数据化运营实践
更多...