Go RPC开发指南完整版.docxVIP

  • 0
  • 0
  • 约5.22万字
  • 约 80页
  • 2026-01-15 发布于中国
  • 举报

GoRPC

开发指南

目录

第一部分RPC介绍

GoRPC开发简介

官方RPC库

gRPC介绍其它GoRPC库

第二部分编程起步

RPCX起步

服务器端开发客户端开发

第三部分特性

序列化框架

客户端FailMode客户端路由选择统计与限流

第四部分插件开发

web管理界面性能比较

插件开发

第一部分RPC介绍

GoRPC开发简介其它GoRPC库

GoRPC开发简介

GoRPC开发指南

RPC介绍

国内外知名的RPC框架

RPCvsRESTful

来源(小编注)参考文档

GoRPC开发指南

首先介绍了使用Go官方库开发RPC服务的方法,然后介绍流行gRPC库以及其它一些RPC框架如Thrift等,后面重点介绍高性能的分布式全功能的RPC框架rpcx。读者通过阅读本书,可以快速学习和了解Go生态的RPC开发技术,并且应用到产品的开发中。

RPC介绍

远程过程调用(RemoteProcedureCall,缩写为RPC)是一个计算机通信协议。

该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。

如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,比如JavaRMI。

有关RPC的想法至少可以追溯到1976年以“信使报”(Courier)的名义使用。RPC首次在UNIX平台上普及的执行工具程序是SUN公司的RPC(现在叫ONCRPC)。它被用作SUN的NFC的主要部件。ONCRPC今天仍在服务器上被广泛使用。

另一个早期UNIX平台的工具是“阿波罗”计算机网络计算系统

(NCS),它很快就用做OSF的分布计算环境(DCE)中的DCE/RPC的基础,并补充了DCOM。

远程过程调用是一个分布式计算的客户端-服务器

(Client/Server)的例子,它简单而又广受欢迎。

远程过程调用总是由客户端对服务器发出一个执行若干过程请求,并用客户端提供的参数。执行结果将返回给客户端。

由于存在各式各样的变体和细节差异,对应地派生了各式远程过程调用协议,而且它们并不互相兼容。

为了允许不同的客户端均能访问服务器,许多标准化的RPC系统应运而生了。其中大部分采用接口描述语言(InterfaceDescriptionLanguage,IDL),方便跨平台的远程过程调用。

从上图可以看出,RPC本身是client-server模型,也是一种request-response协议。

有些实现扩展了远程调用的模型,实现了双向的服务调用,但是不管怎样,调用过程还是由一个客户端发起,服务器端提供响应,基本模型没有变化。

服务的调用过程为:

client调用clientstub,这是一次本地过程调用

clientstub将参数打包成一个消息,然后发送这个消息。打包过程也叫做marshalling

client所在的系统将消息发送给server

server的的系统将收到的包传给serverstub

serverstub解包得到参数。解包也被称作unmarshalling

最后serverstub调用服务过程.返回结果按照相反的步骤传给

client

国内外知名的RPC框架

RPC只是描绘了Client与Server之间的点对点调用流程,包括stub、通信、RPC消息解析等部分,在实际应用中,还需要考虑服务的高可用、负载均衡等问题,所以产品级的RPC框架除了点对点的RPC协议的具体实现外,还应包括服务的发现与注销、提供服务的多台Server的负载均衡、服务的高可用等更多的功能。

目前的RPC框架大致有两种不同的侧重方向,一种偏重于服务治理,另一种偏重于跨语言调用。

服务治理型的RPC框架有AlibabDubbo、Motan等,这类的RPC框架的特点是功能丰富,提供高性能的远程调用以及服务发现和治理功能,适用于大型服务的微服务化拆分以及管理,对于特定语言

(Java)的项目可以十分友好的透明化接入。但缺点是语言耦合度较高,跨语言支持难度较大。

跨语言调用型的RPC框架有Thrift、gRPC、Hessian、Finagle等,这一类的RPC框架重点关注于服务的跨语言调用,能够支持大部分的语言进行语言无关的调用,非常适合于为不同语言提供通用远程服务的场景。但这类框架没有服务发现相关机制,实际使用时一般需要代理层进行请求转发和负载均衡策略控制。

\hDubbo是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的RP

文档评论(0)

1亿VIP精品文档

相关文档