RPCX简介以及正常的RPC流程

一. 什么是 RPCX

RPCX 是一个类似于阿里巴巴 Dubbo 和微博 Motan 的分布式的基于Go语言的 RPC 框架,其支持 Zookepper、Etcd、Consul 等多种服务发现方式,多种服务路由方式, 是目前性能最好的 RPC 框架之一。RPCX官方文档

RPC 全称为 Remote Procedure Call——远程过程调用。

二. 正常的服务调用过程

如下图所示:

RPCX简介以及正常的RPC流程_第1张图片

具体为:

  1. 客户端 Client 发起服务调用请求;
  2. Client Stub 可以理解成一个代理,会将调用方法、参数按照一定格式进行封装,通过服务提供的地址,发起网络请求;
  3. 消息通过网络传输到服务端;
  4. Server Stub 接受来自 Socket 的消息;
  5. Server Stub 将消息进行解包、告诉服务端调用的哪个服务,参数是什么;
  6. 结果返回给 Server Stub;
  7. Server Stub 把结果进行打包交给 Socket;
  8. Socket 通过网络传输消息;
  9. Client Slub 从 Socket 拿到消息;
  10. Client Stub 解包消息将结果返回给 Client。

一个 RPC 框架就是把步骤 2 至步骤 9 都封装起来。

三. 为什么需要 RPC

  1. RPC 可以用 HTTP 协议实现,并且用 HTTP 是建立在 TCP 之上最广泛使用的 RPC,相比于 HTTP 协议,RPC 采用二进制字节码传输,更加高效也更加安全。
  2. 微服务是一种趋势,服务之间通信目前有两种方式,RPC 就是其中一种,RPC 可以保证不同服务之间的互相调用,即使是跨语言跨平台也不是问题,让构建分布式系统更加容易。
  3. RPC 框架都会有服务降级、流量控制的功能,保证服务的高可用。

四. RPCX 的特点

  1. 基于 Net/RPC,可以将 Net/RPC 实现的 RPC 项目轻松的转换为分布式的 RPC。
  2. 插件式设计,可以配置所需的插件,比如服务发现、日志、统计分析等。
  3. 基于 TCP 长连接,只需很小的额外的消息头。
  4. 支持多种编解码协议,如 Gob、Json、MessagePack、Gencode、ProtoBuf 等。
  5. 服务发现:服务发布、订阅、通知等,支持多种发现方式如 ZooKeeper、Etcd 等。
  6. 高可用策略:支持四种调用失败模式:Failfast、Failover、Failtry、Failbackup。
  7. 负载均衡:随机选取、顺序选取、一致性哈希、基于权重的选取、基于网络质量的选取、就近选取等多种负载均衡方式。
  8. 规模可扩展,可以根据性能的需求增减服务器。
  9. 其他:调用统计、访问日志等。

你可能感兴趣的:(RPC,RPCX,框架,Go,RPCX框架,随笔)