简单了解RPC框架

71 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情

随着互联网的迅速发展,互联网企业规模逐步扩大,业务量激增,原有的单体应用逐渐无法满足发展需求,服务/微服务架构渐渐成为主流,而服务间大多采用RPC的方式进行调用。通过RPC框架,可以实现业务与业务之间的通信,实现服务间的协调和数据交换[17]。RPC是远程过程调用协议,可理解为客户端能够在不了解细节的情况下,以如同调用本地对象的方式调用远程机器上的对象。

为了实现客户端对于RPC框架的“透明”调用,RPC框架会提供一个代理(proxy)来对消息的格式、网络协议、调用过程等细节进行管理。不同的RPC框架在设计上都会有一定的差异,例如生成Stub的方式、服务的注册管理方式、服务发现方式、采用的网络协议等,但是基本的思路都是一致的。

使用RPC框架的优势

(1)具有跨语言的能力。调用方无需关心远程机器上的应用程序是以何种语言编写的,无论服务提供方是用何种语言实现的服务,调用方通过RPC框架进行服务调用都应成功,且收到的结果会以调用方使用的语言可理解的形式描述。这一优势使得用其他语言实现的服务也可以调用本文设计实现的基于GO语言的搜索引擎。

(2)无需关心信息格式。类似于本地调用,调用方会传入参数到远程机器对象,RPC框架会对调用方需要传入的参数进行处理并以某种格式传输至远程机器,调用方无需关心服务提供者收到的消息格式的构成。

(3)透明的网络协议与网络I/O模型。概括的说,RPC就是为了让用户在调用远程服务时如同在调用本地服务,因此,在网络传输过程中使用HTTP或是TCP或是UDP等协议都不需要调用方关心。调用过程中,使用何种网络I/O模型也不需要调用方关注。

框架选型

架构是服务于业务的。在对框架的特性、性能、技术支持、成熟度、社区活跃度等多维度进行综合考量、对多个RPC框架如GRPC、thrift、rpcx等进行对比后,决定采用GRPC框架来为本文设计的搜索引擎提供框架支撑。