前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务生态-RPC基础

微服务生态-RPC基础

作者头像
needrunning
发布2019-08-27 16:53:37
5730
发布2019-08-27 16:53:37
举报
文章被收录于专栏:图南科技图南科技

分享一篇Dubbo社区关于RPC基本介绍的文章,同时引出几个简单的思考问题

原文地址

https://github.com/apache/dubbo-website/blob/master/blog/zh-cn/rpc-introduction.md

定义

文中对RPC的定义

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

这里的屏蔽底层网络技术包括 传输协议就是屏蔽TCP/UDP,序列化方式等。

《极客时间》上有一篇关于gRPC介绍中提到一个总结【主流RPC框架】

业界主流的 RPC 框架

业界主流的 RPC 框架整体上分为三类:

支持多语言的 RPC 框架,比较成熟的有 Google 的 gRPC、Apache(Facebook)的 Thrift;

只支持特定语言的 RPC 框架,例如新浪微博的 Motan;

支持服务治理等服务化特性的分布式服务框架,其底层内核仍然是 RPC 框架, 例如阿里的 Dubbo。

RPC框架的目标就是让调用方像调用本地应用一样调用远程服务,而不关心服务提供方在哪里。

对于云计算下的分布式系统而言,远程资源具体在哪里实际上并不是很重要,因为你根本不知道了

起源

在 Nelson 的论文 "Implementing Remote Procedure Calls" 中他提到了几点:

简单:RPC 概念的语义十分清晰和简单,这样建立分布式计算就更容易。 高效:过程调用看起来十分简单而且高效。 通用:在单机计算中过程往往是不同算法部分间最重要的通信机制。

而这个论文发表于30年前,不得不赞叹。

RPC结构

User User-stub RPCRuntime Server-stub Server

RPC结构.png

RPC组件

RPC 服务方通过 RpcServer 去导出(export)远程接口方法,而客户方通过 RpcClient 去引入(import)远程接口方法。

客户方像调用本地方法一样去调用远程接口方法,RPC 框架提供接口的代理实现,实际的调用将委托给代理RpcProxy 。

代理封装调用信息并将调用转交给RpcInvoker 去实际执行。

在客户端的RpcInvoker 通过连接器RpcConnector 去维持与服务端的通道RpcChannel,并使用RpcProtocol 执行协议编码(encode)并将编码后的请求消息通过通道发送给服务方。

rpc-work-principle

rpc-work-principle.png


我们在讨论RPC时,通常会与HTTP接口调用做比较,实际上业界有从业人员对这块是有误解的,HTTP接口调用也是RPC远程调用的一种,是子集关系。

大多倾向于对外使用HTTP RestAPI,对内使用私有的RPC协议。

对外开放的API采用HTTP RestAPI更加标准和规范,而在系统内部使用HTTP RestAPI会存在性能风险。

http-rpc

这里涉及到一个服务调用方式问题

RPC服务调用方式

RPC服务调用方式 分为 1 同步阻塞调用 2 异步非阻塞调用 异步和同步的区分在于是否等待服务端执行完成并返回结果。

这里放一张异步调用时序图

小结

这篇文章从RPC定义开始,从RPC结构,原理和调用方式简单介绍了RPC,RPC在分布式系统构建过程中发挥至关重要的作用,后续我会结合工程实践进一步的深入思考关于RPC,分布式相关的问题。

Dubbo社区文集地址

https://github.com/apache/dubbo-website/tree/master/blog/zh-cn

文章已同步到公众号《图南科技》欢迎关注

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图南科技 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
    • 业界主流的 RPC 框架
    • 起源
    • RPC结构
    • RPC组件
    • rpc-work-principle
    • RPC服务调用方式
    • 小结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档