概述

SOFARPC 提供应用之间的点对点服务调用功能。

产品特性

  • 高可用

    SOFARPC 提供软件负载均衡的能力,它是对等服务调用的调度器,会帮助服务消费方在这些对等的服务提供方中合理地选择一个来执行相关的业务逻辑。

  • 高容错

    一切服务调用的容错机制均由软负载和配置中心控制,这样可以在应用系统无感知的情况下,帮助服务消费方正确选择健康的服务提供方,保障全站的稳定性。

基本功能

主要为用户提供下述功能:

  • 多种服务路由方式:包括软负载、硬负载、直连等。

  • 负载均衡:支持随机策略、考虑长连接、权重等负载均衡策略。

  • 多种调用方式:支持同步、单向、回调、泛化等多种调用方式。

  • 多种编程界面:支持 XML、动态客户端、Standalone 模式等多种编程界面。

  • 流量转发:支持应用之间的流量转发。

  • 链路追踪:支持网格外部应用调用网格内部应用并形成一个完整的链路追踪信息

  • 链路数据透传:支持应用调用上下文中存放数据,达到整个链路上的应用都可以操作该数据。

  • 故障剔除:目前支持 bolt 协议。它会自动监控 RPC 调用的情况。

协议支持

SOFARPC 支持不同的通讯协议,目前主要包括:

  • BOLT:是蚂蚁集团开放的,基于 Netty 开发的网络通信框架。

  • RESTful:基于 HTTP 一种设计框架。

  • Dubbo:开源分布式服务框架

  • H2C:开放的网络通信框架。

实现原理

SOFARPC 中的远程调用是通过服务模型来定义服务调用双方的。服务分为:

  • 服务消费方:对应 RPC 的调用端,可以理解为调用客户端,即 “引用 (Reference)”。

  • 服务提供方:对应 RPC 的被调用端,可以理解为调用服务端。即 “服务 (Service)”。

SOFARPC 实现原理示意图

原理图

上述原理说明如下:

  1. register service:当一个 SOFARPC 的应用启动的时候,如果发现当前应用需要发布 RPC 服务的话,那么 SOFARPC 会将这些服务注册到服务注册中心上,如上图中 Service 指向 SOFARegistry。

  2. subscribe service:当引用这个服务的 SOFARPC 应用启动时,会从服务注册中心订阅到相应服务的元数据信息。

  3. notify service:服务注册中心收到订阅请求后,会将发布方的元数据列表实时推送给服务引用方,如上图中 Registry 指向 Reference。

  4. invoke:当服务引用方拿到地址以后,就可以从中选取地址发起调用了,如上图中 Reference 指向 Service。